项目交接(Project Handoff · v3 存储模型)是一套让接收方(agent / LLM)能接上手的多维交接技能,它把交接理解为不止于未决项的整体移交,并维护项目根目录下的 .handoff/ 纯文本存储。
用途: 当需要接手或继续之前的工作、在新 session 进入已有项目、进行跨会话或跨工具移交、或开启尚无工作存储的新项目时,该技能提供对应的读取与写入相位。它同时维护一个「让接收方接得上」的多维交接件,而非单一的待办清单。
9 槽结构: 存储由 9 个固定槽位构成:S1 status、S2 summary、S3 actions、S4 pitfalls、S5 confirm(运行时,不入盘)、S6 decisions、S7 commands、S8 scope、S9 exit。基础设施包括 index(脚本生成)、next(「下一步唯一一条」指针)、unconfirmed(未能确认账本)、closed(归档)与 log(使用快照)。维度闭合:槽位固定,槽外信息归入 unconfirmed,不即兴开槽。
存储布局: .handoff/ 目录下包含单文件槽 index、status、summary、scope、exit、next,以及目录 actions/<域>.jsonl、pitfalls/<域>.jsonl、commands/<用途>.jsonl、decisions/<id>.md、unconfirmed.jsonl、closed/,还有 prev/<slot>(单文件槽覆写前的自动快照,供回读用)。条目为 JSONL,键序固定:id、created、summary,可选 status、blockedBy、topic、src、detail;归档行追加 closed/outcome。id 形如 <type><6 位>,type 与槽对应(t→actions、p→pitfalls、c→commands、d→decisions、u→unconfirmed、q→closed),全槽唯一、永不复用,由脚本分配。
CLI 与门禁: 所有条目只经 scripts/handoff.py(python3)写入。子命令包括 init、index、check、log、add、set、edit、rm、close、next、unconfirmed、scope、confirm、filter、view、export、import。add 与 close 是唯一写入口,日期由脚本加盖、id 由脚本分配,LLM 无从编造。check 作为相位门禁校验:9 槽齐全、index 与文件计数一致、id 全局唯一、日期规则(created ≤ closed ≤ today,禁未来日)、next 有效;不过即非零退出,相位不得前进。next 支持自动补位,策略确定性可复算(候选池为 live actions 排除 blocked,排序依据有效档、created、id;超期每满 30 天升一档),补位或留空均打印依据。
运行方式与相位: 接手或继续之前的工作读 references/resume.md;交接、收尾、跨会话或跨工具移交读 references/handoff.md;新项目或尚无工作存储时读 references/init.md(仅显式调用,非自主命中);发现旧模型(HANDOFF.md / HANDOFF-ARCHIVE/ / .handoff/fp.*)时先走 references/migrate.md(一次性,仅显式调用)。迁移先于交接:有旧模型时应告知用户并请求迁移,同意后先走 migrate 建存储,勿先建空存储或在旧模型上直接交接。
关键设计原则: P1 不删(只追加,closed 永不重写,移除仅在关闭序内原子完成);P2 可重建(index 由脚本重建,不生成、不落盘第二副本);P3 不静默(每次运行输出读到/写入/未能确认,confirm 为双向确认)。只记不可推导项:可读的用指针,读不到的才记,交接的意义即免重读仓库。confirm 是机检 read-back,脚本出题、脚本判卷,不 PASS 即交接未完成;题面每次调用重新随机抽取,先出题后作答必须两次带同一 --seed。
限制与约束: 不假设 git、语言、工具或布局,需用则先探测。未决语义唯一落点在 .handoff/(白名单硬契约),其余处的待办文本仅为候选。源登记表闭合,只有 scope 登记的源被读;check 校每条登记可解析。index 永不手写。set 用于单文件槽(status/summary/exit)写入,整槽覆写、无追加语义,并带空内容与骤降两道守卫。纠错经 edit(改安全字段,id/created/closed 不可改)与 rm(移入 trash 并记 void 防 id 复用)。崩溃最坏产生重复,按 id 去重、closed 胜,绝不丢。反模式包括手改条目、手填日期或自选 id、在 .handoff/ 之外写未决、手写第二份视图当交接件。无 python3 时询问用户安装,或降级为最小 sh。
项目约定:任何建立或使用存储的相位(init/migrate/交接)都要确保 AGENTS.md 含「未决项只写 .handoff/」一节,无则新建,以防持续偏移。