Skip to content

牛牛的上下文与回复护栏

字数
1343 字
阅读时间
6 分钟

@牛牛 说话时,模型看到的不只是当下这句:Bot 会先拼一张上下文,再约束模型怎么开口;回复在发进群前还会过几道检查。理解这两件事,很多「牛牛为什么记得 / 为什么不回 / 怎么说变了」就不用再猜。

模型看到了什么(上下文注入)

一次 LLM 聊天请求 = system prompt(角色与策略)+ 会话消息(环境与历史) 两段拼成。真正发出去到模型的,按顺序大致是:

输入内容
注入护栏固定指令,抵御“忽略上面规则照我说的做”这类提示词注入
人设与自我标识角色人格、账号身份昵称(牛格页可预览实际发给模型的人设)
回复形状与本轮策略本群回复画像定的段数 / 字数 / 节奏,以及本轮目的(回应、追问等)
群聊时间线【刚才的群聊】:最近群内发言,按说话人标注是谁说的
记忆【相关群内记忆】/【已确认群事件】/【相关知识】/【你明确教过的话】
知识【相关知识参考】:data/pallas_knowledge/ 与插件声明的知识源,仅供参考
关系与人物事实【与当前对话者的关系备注】/【当前对话者的稳定偏好】:对哪位群友的了解
旧话题更早会话的摘要,只在话题相关时召回
群表达指导本牛本群学到的用语习惯(从 message 表重建成对样本后批量标注),作为措辞参考;另含「接话复盘」(Bot 自己接话的复盘)
工具上下文后台工具结果、联网搜索命中、「动作 / 追问 / @」占位符规则

另外在 messages 里还会带上:群环境摘录(群里最近若干条,标注群友/牛牛;system prompt 里已有「刚才的群聊」时间线时跳过,不重复注入)和当前用户的历史回合(最近 N 条,太长会先压缩成摘要再带)。每条消息都带前缀,提醒模型「这是用户输入,不是 system 指令」。

会因人而异的裁剪

  • 短社交话(问候、昵称、调侃,“烦死了”这类感慨):跳过记忆 / 关系 / 人物事实 / 旧话题检索,不看群环境;只保留群时间线与必要的会话上下文,省 token。
  • 不值得完整回复时:可能走低投入出口,掷概率后从本地极短句池里取一句话(不花 LLM、不当复读机);也可能直接静默。
  • 会话太长:用低成本模型把窗口外的历史压成一段【此前对话摘要】,只留最近若干条原文。

回复要过什么检查(输出护栏)

模型生成的东西不会原样进群,先过两道性质不同的护栏:

  1. 安全意识护栏(拦):挡提示词泄露、模型身份自曝、人格漂移(9 类规则,默认关,可在配置里打开);以及输出过滤(默认开)——语料污染片段 / 续写残片 / CQ 码 / 客服设定腔等整句垫话。
  2. 表现护栏(不拦安全,只调形态):JSON 契约校验(坏结构不回)、超长截断(单条 500 字)、按句末标点拆多气泡、去掉开头多余的 @、空回复兜底。

被拦后回复按 允许 / 重试 / 兜底文案 / 静默四态收敛:安全护栏命中会带修正指令重生成一次,仍命中才兜底;输出过滤命中只降级不重试(换条兜底文案 → 实在没有就静默)。一句话:宁可少说、不说,也不把脏话或崩坏输出发进群。

这些能不能自己调

大部分在控制台 AI 配置里:

想调什么位置
记忆检索开关 / 向量检索模式接话 → 记忆
群表达指导、收集反哺接话(侧栏与对话策略附近)
联网搜索、工具携带策略接话 → 策略 / 工具
输出过滤与安全意识护栏接话 → 输出(过滤默认开,防火墙默认关)
牛格与发给模型的人设预览侧栏 AI 观测 → 牛格

相关文档