Agent逻辑错位导致的“伪指令”陷阱与校验方案
我目前的思路是直接放弃让 LLM 单独决策,给它套一个“确定性校验层(Confirmer)”。逻辑很简单:把概率性的推理压进硬性的程序规则里。如果模型试图更新记忆,必须强制通过文本匹配校验。比如,引用的句子必须同时包含 replaced 或 superseded 等变更词,且必须与规则范围词在同一句内。只要逻辑链条断裂,校验层直接拦截。
具体的实现逻辑伪代码如下:
def check_memory_update(proposed_finding, original_doc):
# 1. 强制原文逐字匹配检查
if not is_verbatim_quote(proposed_finding.quote, original_doc):
return False # 2. 变更词与作用域词的同句校验 (Relation-span clause)
change_keywords = ["replaced", "superseded", "deprecated", "no longer", "instead"]
scope_term = proposed_finding.target_rule_scope
if not contains_both_in_same_sentence(proposed_finding.quote, change_keywords, scope_term):
return False
# 3. 置信度硬阈值限制
if proposed_finding.confidence < 0.60:
return False
return True
当然,这套“语义+硬规则”的双层架构也不是万能的。如果文档中规则 A 与规则 B 存在隐性逻辑冲突,但又没出现显性的变更词,目前的校验逻辑依然会失灵。这种case只能降级人工介入。
想看相关实验数据和实现思路,去 GitHub 搜相关的 memory gate 研究即可:https://github.com/search?q=LLM+memory+gate+verification
对于追求系统稳定性的开发者来说,别指望靠调 Prompt 解决这类问题,得靠架构。
promptcube3.com