843773296-rgb

handoff-before-compact

上下文到 80% 就先写交接,再压缩。**压缩是察觉不到的** —— 压完之后的我读不出缺了什么,摘要看起来完整、自洽、没有窟窿。 这个技能只管一件事:把「摘要留不下的东西」单独写进 HANDOFF.md。 核心判据:**一条未验证的预判,和一条验过的结论,在摘要里长得一模一样。** 触发方式:/handoff-before-compact,或用户说「写交接」「刷一下 HANDOFF」 「快满了」「压缩前准备一下」。 自动触发:交接门禁(hooks/handoff-gate.mjs)在上下文过 80% 且交接过期时 拦住收工,并点名要求跑这个技能。

843773296-rgb 0 Updated 1mo ago
GitHub

Install

npx skillscat add 843773296-rgb/lanxiu-yunshang-agent/handoff-before-compact

Install via the SkillsCat registry.

SKILL.md

压缩前先交接

这个技能在防什么

上下文满了会自动压缩。压缩保的是「读起来连贯」,不保「哪些事还没验」。

压完之后的我拿到一份摘要:结构完整、前因后果俱全、没有任何一处写着
「这里缺了点东西」。于是我接着往下干 —— 而这时候已经没了的,是:

  • 判据:当时为什么这么判。摘要会留下结论,压掉理由。
    下一轮要改这个决定时,不知道原来是权衡过的还是随手定的。
  • 作废的结果:「那一轮读的是建到一半的库,结论不作数」。
    摘要很容易压成「跑过了」。
  • 未验证的预判:「预计会减到 48 个」和「已经减到 48 个」,
    在摘要里长得一模一样。

最后这条是要害,也是整个方法的判据:
两个必须触发相反动作的状态,在表示上一模一样。
「预判」要触发的下一步是「去验」,「结论」要触发的下一步是「往下用」。
摘要把它们写成同一句话,下一轮就会拿预判当事实用。

交接里写什么(六项)

不要复述摘要能留下的东西。 做了什么、改了哪些文件、踩了什么坑,
自动摘要留得住,重写一遍是浪费。只写下面六项:

1. 未验证的预判 —— 每条都要带「怎么验」

写成这样,不要写成结论句:

🔮 预判:工具从 60 减到 48。没验。
验法:把 13 个冻结流程按「中间结果要不要经过模型」逐条重判,数出来对一下。

关键是那个「🔮」和「没验」—— 让预判在形状上就跟结论不一样,
这样摘要再怎么压,也压不成一句肯定的话。

2. 判据 —— 为什么这么判,不是判了什么

工具 vs 技能的分界线是「中间结果要不要经过模型」,
不是「实现里有几步」(后者是代码的形状,不是信息的流向 —— 这条栽过)。

判据比结论值钱:结论会过期,判据能重新算出新结论。

3. 作废的结果 —— 跑过但不算数的

❌ 那轮门禁读的是重建到一半的库,结果不作数,别拿它当基线。

摘要不会主动标这个,因为它看起来就是一次正常的运行。

4. 禁区 —— 说好不能碰的

逐字抄,别转述。转述会把「只读」变成「尽量别改」。

5. 下一步的第一个动作 —— 具体到能直接执行

不写「继续优化工具」,写:

打开 backend/api.py,从 任务查询 那 5 个开始,按判据逐条标「工具 / 技能」。

6. 悬而未决的问题 —— 等人拍板的

换货差价退回原渠道还是退余额?等业务定,定之前别写实现。

怎么写

  1. 先读现有的 HANDOFF.md —— 这是刷新不是重写。
    已经写过且仍然成立的,原样留着;只改变化了的。
  2. 顶部写一行:最后刷新:<日期> · 上下文 <X>% · 本次变化:……
  3. 六项按顺序写,每项没有内容就写「无」,不要省略标题 ——
    少一个标题,下一轮读的人不知道是「没有」还是「忘了写」。
  4. 写完在回复最后单独写一行,原样告诉用户:
    「交接已刷新,建议现在输入 /compact」

为什么最后那一行必须是我说给用户听的

模型没有办法自己触发压缩。 /compact 是用户键入的命令,
没有对应的工具。门禁能拦住我不收工,能逼我写交接,
但压缩这一步只能由人按下去。

所以流程的最后一环是一句话交接给人。不说这句,就会一直拖到
自动压缩在某个随机时刻触发 —— 那时候交接虽然写好了(门禁保证的),
但触发点不由人选,可能正好在一件事做了一半的时候。

自测

门禁自身带 10 条自测,写在 hook 里而不是外挂脚本(外挂的会跟本体分家,
改了本体忘了改脚本,脚本就慢慢烂掉 —— 而烂掉的样子和好着的样子一模一样)。

node ~/.claude/hooks/handoff-gate.mjs --selftest

7 个咬合破坏点验过,每个红的都正好是对应那一条。

Categories