文件行号
internal/agent/phantom_verify.go L446-454(reset 清空 categoriesRun——agent.go:1281 每轮 run 入口)+ L510-546(detectPhantomClaims 唯一豁免 = categoriesRun 本轮武装,无任何回指前轮的语言豁免)+ L77(tests?\s+pass(ed|es)? 正则)+ L391-411(类别武装);config.go L392-398 + verify.go:514(ClaimsSupervision 默认 false——opt-in);internal/agent/permission_deny_streak.go L54-59(isPermissionDeniedResult 前缀匹配)+ L51-53(注释自认涵盖 "user-rejection / no-handler variants")+ L82/L87("[mode-guard] ... denied by the permission policy. Current permission mode" + "call switch_mode..." 建议);agent_tool.go 三处文案:L38(policy blocked)/L100(User rejected the request)/L111(No approval handler)——三者共用 Permission denied for tool 前缀全计数
问题
案 A(Low·默认关闭,跨轮误报):phantom_verify 把跨轮合法回指真实验证判为幻影
- 轮 1 跑
go test ./... 全绿 → 轮 2 入口 reset → 用户问"刚才构建没问题吧?" → agent 答 "Yes — the tests passed." → categoriesRun[test]=false → 注入幻影验证警告——同一 session 早前真实执行过的合法引用被干扰
- 复核加重一项 + 降级一项:初审所述 "earlier/already/previously 退避词表" 根本不存在(grep 零匹配——初审虚构的缓解项,实际比描述更糟);但复核降级 Low——ClaimsSupervision 默认关闭(opt-in)、advisory max 2/run、"重跑验证"建议本身无害仅浪费一次迭代
修:跨轮豁免(session 级而非 run 级类别武装)或加真实回指词表。
案 B(Low-Med,归因混淆·方向性建议错误):permission_deny_streak 把用户主动拒绝归因为权限模式策略——建议 switch_mode 接近诱导绕过用户意愿
- 三种拒绝(策略拦截/用户拒绝/无审批句柄)共用前缀全计数 streak=3 → 注入 "denied by the permission policy. Current permission mode" + "If this mode is not what you intend, call switch_mode"——用户明确说"不"后被归因为模式问题,switch_mode 不会改变用户拒绝、反而可能诱导 agent 切更宽松模式绕过用户判断
- 正确方向:用户拒绝应询问意图/换方案(:87 兜底句部分正确:"stop repeating the denied operation and choose an allowed alternative");策略拦截才该建议换模式
- 触发:auto 模式下用户连续 3 次点拒绝(Ask→Deny)——训练/纠偏 agent 的正常交互
修:按文案区分拒绝来源(User rejected 不计入 streak 或注入不同 guidance)。
干净项与附注
plan_abandon_detect 无立案疑点(触发守卫完备:完成声明+≥3 步+类别级零证据三重门;#490 保守语义为文档化取舍;FilesEdited 覆盖 edit/write/multi_edit)。plan_drift:接线/阈值/一次性消费/与 goal_drift 分工全对(workCorpus 含 textBuf 的文本启发式为 charter 允许的漏报方向;rename 旧名误报孤例发生率低——均记录不立案)。phantom_verify:isError 不 arm/分类动词表/#572/#1150 在位;类别整轮有效不因后续编辑失效(P3)为设计边界。placeholder_check:delta/moved/注释豁免/接口 stub/接线全对;文档扩展名无豁免(README 裸 "TODO"/"XXX" 误报,Low 附注)。
严重程度
Low + Low-Med
独立复核确认:reset 点/正则/武装机制原文、退避词表不存在(grep 零匹配——推翻初审缓解项)、ClaimsSupervision 三处默认关闭核证、三处拒绝文案前缀匹配矩阵、switch_mode 建议方向性推演。初审幻觉记录(第十三轮):虚构退避词表——复核以 grep 零匹配实证推翻。
文件行号
internal/agent/phantom_verify.goL446-454(reset 清空 categoriesRun——agent.go:1281 每轮 run 入口)+ L510-546(detectPhantomClaims 唯一豁免 = categoriesRun 本轮武装,无任何回指前轮的语言豁免)+ L77(tests?\s+pass(ed|es)?正则)+ L391-411(类别武装);config.go L392-398 + verify.go:514(ClaimsSupervision 默认 false——opt-in);internal/agent/permission_deny_streak.goL54-59(isPermissionDeniedResult 前缀匹配)+ L51-53(注释自认涵盖 "user-rejection / no-handler variants")+ L82/L87("[mode-guard] ... denied by the permission policy. Current permission mode" + "call switch_mode..." 建议);agent_tool.go 三处文案:L38(policy blocked)/L100(User rejected the request)/L111(No approval handler)——三者共用Permission denied for tool前缀全计数问题
案 A(Low·默认关闭,跨轮误报):phantom_verify 把跨轮合法回指真实验证判为幻影
go test ./...全绿 → 轮 2 入口 reset → 用户问"刚才构建没问题吧?" → agent 答 "Yes — the tests passed." → categoriesRun[test]=false → 注入幻影验证警告——同一 session 早前真实执行过的合法引用被干扰修:跨轮豁免(session 级而非 run 级类别武装)或加真实回指词表。
案 B(Low-Med,归因混淆·方向性建议错误):permission_deny_streak 把用户主动拒绝归因为权限模式策略——建议 switch_mode 接近诱导绕过用户意愿
修:按文案区分拒绝来源(User rejected 不计入 streak 或注入不同 guidance)。
干净项与附注
plan_abandon_detect 无立案疑点(触发守卫完备:完成声明+≥3 步+类别级零证据三重门;#490 保守语义为文档化取舍;FilesEdited 覆盖 edit/write/multi_edit)。plan_drift:接线/阈值/一次性消费/与 goal_drift 分工全对(workCorpus 含 textBuf 的文本启发式为 charter 允许的漏报方向;rename 旧名误报孤例发生率低——均记录不立案)。phantom_verify:isError 不 arm/分类动词表/#572/#1150 在位;类别整轮有效不因后续编辑失效(P3)为设计边界。placeholder_check:delta/moved/注释豁免/接口 stub/接线全对;文档扩展名无豁免(README 裸 "TODO"/"XXX" 误报,Low 附注)。
严重程度
Low + Low-Med
独立复核确认:reset 点/正则/武装机制原文、退避词表不存在(grep 零匹配——推翻初审缓解项)、ClaimsSupervision 三处默认关闭核证、三处拒绝文案前缀匹配矩阵、switch_mode 建议方向性推演。初审幻觉记录(第十三轮):虚构退避词表——复核以 grep 零匹配实证推翻。