deepseek-harness 学习手册
← 返回 8.3 把工程约定写成 AI 可执行的形式
工程文化 · 8.3›Skill 07 · dsh-trim-cot-leakage
9 min

dsh-trim-cot-leakage

一个只有 AI 时代才会存在的 skill:清理那些读起来像泄漏出来的思考记录的散文——八类模式、一份保留清单、一条判据。

最后核对于 v0.1.1-rc.2 · commit b150a551b8 · 2026-08-22

这是 .agents/skills/dsh-trim-cot-leakage/SKILL.md 的中文精读——本站最喜欢的一个 skill,因为它处理的问题只有 AI 时代才存在:模型写的散文,经常读起来像一段泄漏出来的思考记录。

什么是「思维链泄漏」

思维链泄漏(chain-of-thought leakage)是这样的散文:它的视角是写作那场会话而不是仓库本身——引用只有那场会话才能看到的产物、叙述这次改动而不是当前状态、或者跟一个已经离开的 reviewer 争辩。

修复方式从来不是「一删了之」

段落只要还带事实子句,就要先把每个事实重述到能在 HEAD 上独立成立,再删掉周围的「记录」;完全不带事实的段落(一个审计编号、一段控制流复述)才整段删。必备背景:dsh-prose-standard 拥有本 skill 所套用的「完整命题」规则;「committed-artifact-citations」决策记录拥有引用规则的理由。

唯一的判据

对每个可疑段落问一句:一个站在 HEAD 的读者,在看不到任何会话记录、PR 线程、未提交草稿的情况下,能解析每个引用、验证每个断言吗?

不能——把幸存的事实以仓库视角重述,删掉其余。能——不管听起来多「历史」,都不算泄漏。但要注意:可解析只是过了本 skill 的门槛;在现状类表面(README、docs、JSDoc)上,一个可解析的变更故事仍然是变更叙述,由第 3 类规则把它路由到它该去的家。

八类泄漏

  1. 死掉的设计会话引用——(decision 7)、(audit C2)、design §4.7、plan §1.4、阶段标签(T4、W3、P-I)、「the design ledger」、"(B ruling)"。决策有已提交的属主就按名字和路径引用;否则删掉引用,把它的事实子句重述到独立成立。
  2. 栈与 PR 视角——「本栈靠后的某个 PR」「本 PR 新增」「上一个 commit」。陈述已落地的机制或扩展点;推迟的工作移进 TODO 标记或 issue 引用。
  3. 变更叙述与版本戳——「以前是」「不再」「旧的 X」,以及指示性时间戳(「v1」「这次砍」「今天」「现在」在与过去状态对比时)。陈述现在的行为;已修复的回归写成现在时的反事实(「没有 X 就会发生 Y」),绝不写成仓库史(「以前是 Y」)。
  4. review 编排——「Rejected in review:」「reviewer 已确认」、草稿序数(「本 note 的 v5」)、轮次归属。幸存的决策与理由以纯事实保留;删掉谁在什么时候说的。
  5. 对着 reviewer 的辩解——「这个强转是安全的——它只是……」「这是对的,因为……」。在注释里论证自己正确,读者是 reviewer 而不是维护者。要么陈述让代码安全的那个不变量,要么代码本身能展示就删掉注释。
  6. 复述与推导记录——控制流叙述(「先 X,再 Y」)、测试走读、显而易见分支的证明。删掉;只保留非显而易见的契约或不变量。
  7. 对冲与规划残留——「大概暂时够用」「应该够了」、没有标记的推迟。提升为 TODO/FIXME,或重述成真实的边界;删掉对冲语气。
  8. 写作语言混入——整体英文的散文里混着未翻译的工作语言片段(端、设计稿、---- 私有 ---- 分隔符),或中文文件里反向混入。翻译或删除。

什么不算泄漏(保留清单)

没人把关的引用清理会双向翻车:误删耐久引用,漏掉死引用。以下保留规则照字面执行(references/examples.md 逐条校准):

工作流

  1. 范围与排除按 dsh-prose-standard:要求显式 scope;绝不碰 vendor/、.agents/notes/archived/、已记录的 fixture 与快照——录制下来的模型输出和封存的历史保留原始声音。
  2. 先只读审计:跑召回电池(references/recall-batteries.md,带 --hidden 让 .agents/ 也被搜到),然后对每条命中做语义判断。电池是探针不是定义——最初大清理的每一轮都发现了电池漏掉的案例,所以还要不带预设模式地读范围内最稠密的散文(模块 JSDoc、README、Agent Note)。
  3. 修复从属主开始,按表面区分:生成的目录 → 改源头 JSDoc 或生成器模板再重新生成;类型等价围栏 → 改源头 JSDoc,再重贴双语两页(verify-type-equiv 钉住它们);双语对 → 更新对侧并按 dsh-translate-docs 重录;模型可见字符串 → 措辞即行为,标记为需要快照支撑的改动,而不是悄悄改写。
  4. 删之前,枚举段落的命题(prose-standard),并查过度纠正陷阱(references/examples.md#overcorrection-traps):把义务裁成背书、把假设升格为已发布特性、删掉真实事实、丢掉出处。
  5. 验证:重跑电池,预期只剩被认可的保留、本 skill 自己的目录、属主 note 里引用的证据;确认每个剩余引用在 HEAD 可解析;跑触达表面的门禁(docs 走 doc-sync,另有 verify-type-equiv、verify-translation-pairing)。
← 返回 8.3 把工程约定写成 AI 可执行的形式
目录

本页

Skill 07 · dsh-trim-cot-leakage