人设漂移守护判断留痕+安全基线补编造身份禁令 #116
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Parent
#103 第四批清单:31 条实现类落差 + 9 条待拍板(条目 21、22)
What to build
两条独立的守护类缺口,均零前置、零依赖,合成一片:
一、人设漂移守护判断留痕:ADR-0021 拍板的"判断结论带简短理由(供
/why)"与"判断失败记入/why标注'判断失败'"在 origin/main 上一件都没落地——DriftVerdict.reason与"judge_failed"状态在 5 处调用点全部只读.status、.reason直接丢弃。候选被否决时运维和用户看不到任何痕迹,且 fail-closed 意味着一次 LLM 超时会静默吞掉一整批候选而无迹可查。二、安全基线补编造身份禁令:ADR-0022 于 2026-07-08 拍板要往
SECURITY_BASELINE固定文本里补一条约束——不得编造 persona/backstory/Knowledge/Persona Lore 之外的核心身份类事实——从未写进去,"用户问你几岁 → 模型现编 18 岁 → 下轮又编 22 岁"这条最常见的人设崩塌路径当前无人拦。Acceptance criteria
一、人设漂移守护判断留痕
reflection._commit_lesson(画像候选、技能候选两处)、delta.pyKnowledge 候选、learned_sticker.py、cross_platform_pull.pull_cross_platform_profilereflection._commit_lesson当前没有收 chat_id(只收了get_persona(attempt.chat_id)的结果),需补上才能按 chat 留痕cross_platform_pull.pull_cross_platform_profile的 docstring 明写"本函数只管跑一次…不写存储",要留痕需把 verdict 回传给调用方__init__::_run_cross_platform_pull(签名/返回类型需相应调整)/why出口渲染这条留痕(explain.py加渲染函数 + 人话表穷举守卫,同既有惯例)DriftVerdict.reason字段删掉或简化——原文是 ADOPTED 条款,删字段等于静默推翻已拍板决策;若实现期仍认为不该留 reason,必须先在 ADR-0021 追加更新节推翻,不能默不作声地做原文(docs/adr/0021-persona-drift-guard.md「决策」节):
二、安全基线补编造身份禁令
security.py::SECURITY_BASELINE追加第五条 bulletSECURITY_BASELINE常量被注入到三个消息构造点——那三个既有测试文件已覆盖这点,新加内容天然被覆盖,不构成有效验证)原文(docs/adr/0022-security-baseline.md「更新(2026-07-08 第三方项目对照 grill)」节):
同 ADR「决策」节边界约束(一并抄入 AC):
Blocked by
None — can start immediately