L1 提取指令(instruction)缺少"场景限定"选项,导致用户的有场景限制的偏好被泛化为全局规则
问题背景
在真实对话中,用户常常在特定场景下表达对输出格式的要求。例如在准备即时通讯文本时,用户说"这里不要用表格,因为我是要直接粘贴发给朋友的"——用户明确给出了场景限制(即时通讯),但 L1 提取后的 instruction 记忆却丢失了这个场景限定,变成了"用户要求 AI 不要使用表格"这一全局规则。
这个问题不是 LLM "没看懂"用户的意思,而是 extraction prompt 的优先级设计没有给"带场景标签的规则"留位置。
现象
L1 提取后的 instruction 型记忆可能包含从完整对话中脱离开关的后过度泛化偏好,例如将特定场景中的格式偏好提取为全局行为规则,且 priority 较高。这些记忆被召回后,会影响 AI 在所有场景下的输出行为。
根因分析
在 src/core/prompts/l1-extraction.ts 中,instruction 类型的 priority 体系设计为:
priority 值:
-1(极其严格的全局死命令)
90-100(核心行为规则)
70-80(重要要求)
< 70(临时要求,直接丢弃)
整个评分体系只有两条路径:要么作为"全局规则"保留(70-100 分),要么作为"临时要求"丢弃(< 70 分)。没有第三条路径:把规则记下来,但明确标注其适用场景。
当 LLM 看到一条带有明确场景限制的用户表述时,面临两难:
- 打 70-100 分存为全局规则 → 丢失场景限制,过度泛化
- 打 < 70 分丢弃 → 可能丢掉真实有用的偏好信息
LLM 倾向于"宁可多存不少存",因此选择了第一条。
同时,L1 conflict detection prompt(l1-dedup.ts)的 merge 逻辑同样没有考虑"同一规则不同场景"的情况,导致相同的丢失场景问题可能通过合并操作被进一步强化。
建议方案
-
在 instruction 型记忆中增加可选的 scope 字段,用于标注规则的适用场景限制。例如:
{
"content": "用户要求 AI 在生成用于即时通讯的文本时尽量少用表格",
"type": "instruction",
"priority": 80,
"scope": "当需要生成通过即时通讯渠道发送的文本时"
}
-
更新 extraction prompt,在 instruction 类型的提取指南中增加一条:如果用户的指令带有明确的场景限定词(如"微信发送的时候"、"电话沟通的时候"),LLM 应提取并记录该场景限定,不得泛化为全局规则。
-
调整 priority 策略:增加一种中间 priority(如 50-70)用于"场景限定规则",与"全局规则"和"临时要求"形成三档体系。
-
召回侧适配:在 recall 时,如果 instruction 带有 scope 字段,应结合当前对话的场景上下文判断该规则是否适用,避免在不相关场景中误触发。
L1 提取指令(instruction)缺少"场景限定"选项,导致用户的有场景限制的偏好被泛化为全局规则
问题背景
在真实对话中,用户常常在特定场景下表达对输出格式的要求。例如在准备即时通讯文本时,用户说"这里不要用表格,因为我是要直接粘贴发给朋友的"——用户明确给出了场景限制(即时通讯),但 L1 提取后的 instruction 记忆却丢失了这个场景限定,变成了"用户要求 AI 不要使用表格"这一全局规则。
这个问题不是 LLM "没看懂"用户的意思,而是 extraction prompt 的优先级设计没有给"带场景标签的规则"留位置。
现象
L1 提取后的 instruction 型记忆可能包含从完整对话中脱离开关的后过度泛化偏好,例如将特定场景中的格式偏好提取为全局行为规则,且 priority 较高。这些记忆被召回后,会影响 AI 在所有场景下的输出行为。
根因分析
在
src/core/prompts/l1-extraction.ts中,instruction 类型的 priority 体系设计为:整个评分体系只有两条路径:要么作为"全局规则"保留(70-100 分),要么作为"临时要求"丢弃(< 70 分)。没有第三条路径:把规则记下来,但明确标注其适用场景。
当 LLM 看到一条带有明确场景限制的用户表述时,面临两难:
LLM 倾向于"宁可多存不少存",因此选择了第一条。
同时,L1 conflict detection prompt(
l1-dedup.ts)的 merge 逻辑同样没有考虑"同一规则不同场景"的情况,导致相同的丢失场景问题可能通过合并操作被进一步强化。建议方案
在 instruction 型记忆中增加可选的
scope字段,用于标注规则的适用场景限制。例如:{ "content": "用户要求 AI 在生成用于即时通讯的文本时尽量少用表格", "type": "instruction", "priority": 80, "scope": "当需要生成通过即时通讯渠道发送的文本时" }更新 extraction prompt,在 instruction 类型的提取指南中增加一条:如果用户的指令带有明确的场景限定词(如"微信发送的时候"、"电话沟通的时候"),LLM 应提取并记录该场景限定,不得泛化为全局规则。
调整 priority 策略:增加一种中间 priority(如 50-70)用于"场景限定规则",与"全局规则"和"临时要求"形成三档体系。
召回侧适配:在 recall 时,如果 instruction 带有 scope 字段,应结合当前对话的场景上下文判断该规则是否适用,避免在不相关场景中误触发。