https://gitlab.synchro.net/main/sbbs/-/commit/135f08f0f5e1146d28b3c9ed
Modified Files:
ctrl/chat_llm.ini exec/chat_llm.js chat_llm_irc.js
Log Message:
chat_llm: stop the IRC guru volunteering wrong/unsolicited answers
Two changes to make the guru a far more reluctant, more accurate
unprompted participant on IRC, prompted by live #synchronet logs where
it (a) answered questions one user had explicitly aimed at another, and
(b) confidently restated others' mistakes as fact.
1. directed_at_other() (chat_llm_irc.js): a question addressed to a
specific other participant ("nelgin: why are you changing ip?") is a
person-to-person exchange, not a room question -- the bot no longer
arms an intervention on it. is_nick_ping only caught a BARE "Nick?";
this catches "Nick: <content>" / "Nick, <content>" where Nick is a
seen channel member that isn't the bot.
2. Two-layer confidence gate for unprompted interventions only (direct
questions are answered best-effort as before):
- In-prompt SKIP escape: the volunteering generation is told to answer
only if the retrieved docs explicitly support a correct answer and
to never restate an asker's assumption as fact; otherwise it emits
SKIP and the bot stays silent (and persists nothing). No extra
round-trip. (ctx.volunteering -> build_messages; is_volunteer_abstain
nulls the reply in chat_session.)
- 14B fact-check (verify_volunteer_answer): a 7B feels "grounded" off a
merely-related chunk and confirms false premises anyway (observed: a
bogus mods/exec load path off a chunk about mods shadowing exec). Any
non-declined answer is fact-checked by a stronger model that must
return VERIFIED; fails closed (any error/ambiguity -> silence). Reuses
relay_rewrite_model, kept transient (keep_alive 0) so the warm chat
model isn't evicted. New ini knobs: intervention_verify[_model|_prompt].
Also adds an anti-sycophancy clause to the IRC grounding for all replies:
don't agree with or repeat a user's claim unless the docs support it.
Live-validated: the false-premise "mods/exec" question now abstains
(3/3), an ungroundable question abstains, and legitimate groundable
questions (SBBSecho, transfer protocols, BinkP) still answer.
Co-Authored-By: Claude Opus 4.8 <
noreply@anthropic.com>
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net