AI 协作项目管理技能 · 设计蓝图
一套让 AI 接手项目时「读得少、接得上、赖不掉」的协作协议。不绑定平台、不绑定语言、不依赖任何服务。
核心命题
项目可以复杂沉重,接手成本不随之增长。
「接手成本」用字符量,不用文件数量——文件数恒定 ≠ 成本恒定。
解决什么问题
| 问题 | 本包的解法 |
|---|---|
| 换人 / 换 AI / 隔几周回来,要从头讲一遍背景 | 指针链:任务卡 → 交接记录 → 索引;接手只读卡与它指向的那一篇 |
| 上下文越用越贵,读进来的东西一路付费 | 封顶装置:STATE 字数 · 索引热区行数 · 留痕尾部行数 · 单卡字符 · 接手包字符 · 蓝图长度 |
| 「我改好了」但没人能验证 | 锚源原则:锚的值必须由被审计者之外产生(机器码 / 时钟 / commit 哈希);声明不算证据 |
| 门禁写了没人跑,跑了也没人看 | 脚本即门禁:退出码 0/1/2/3,并由变异自检证明它真的会红 |
| 规范写着,执行者不知道,评审也没标准 | 判据(可机检)与风格(靠人读)分家,每条条款登记执行者 |
| 大事没想清楚就动手,返工全废 | 设计两件套:先一屏蓝图定方向,再补详述留理由;未批准不生成执行卡 |
由哪些部分组成(三层)
① 协议正文 references/ 答案都在这里;改协议改这里(权威源) ② 门禁与工具 scripts/ ci/ 可执行、看退出码;机械步骤不手改共享文件 ③ 骨架与附录 templates/ adapters/ examples/ 按需实例化 / 按栈落地 / 范例库骨架
四个可独立使用的子能力
只要其中一件也行;最小集与「单独使用时缺哪些门禁」见 MANIFEST.md。
项目在哪 / 代码在哪 / 按什么规则运转 —— 一个文件即可用
一件事一张卡;单文件即可用,接上索引与门禁则升为工作区
先定方案:一屏蓝图给人看方向,详述留理由;未批准不生成执行卡
判据(可机检)+ 风格(靠人读)两本;脚本可单独拷进项目跑
2 · 接手链路
接手一项工作到底读什么、读多少、凭什么不增长。
指针链(承重墙)
任务卡「上次交接」 ──▶ reports/ 一篇交接记录 ──▶ 索引 [接力] 行
- 记录只写本任务需要的信息:不贴 diff、不复制代码。
- 索引行是入口不是内容:它保证「这个编号的活在哪一篇记录里」永远可查。
- 链条断了走恢复流程(补全 / 重连 / 标「数据待补」,禁止伪造)。
接手只做三件事
① 读任务卡 tasks/<卡>.md 定位工作,不漫读全项目 ② 沿指针读一篇 reports/<卡上指向的那篇> 不够用才多读 ③ 需要全局判断时 STATE.md / MAP.md 首次接手 / 跨模块 / 整体审视
成本口径:单位是字符
| 项 | 实测某真实项目 |
|---|---|
| 单张任务卡 | 中位 5,445 字符 · 最大 22,002 |
| 指针记录(一篇) | 中位 3,505 字符 |
| 接手最小集(卡 + 记录) | 中位 ≈ 8,900 字符 |
封顶装置(都是上限,不是可扩容量)
| 封顶 | 管什么 |
|---|---|
capacity.state_max_chars | STATE 快照字数 |
capacity.index_hot_rows | 索引热区行数 |
capacity.report_archive_threshold | reports 归档触发篇数 |
capacity.card_max_chars | 单张任务卡字数(卡是定位与指针,不是档案) |
capacity.onboarding_max_chars | 接手包(卡 + 指针记录)字数 |
capacity.reviews_hot_lines | 留痕尾部行数 |
capacity.blueprint_max_lines · blueprint_max_para_chars | 设计蓝图长度与段落 |
不得以「更完整 / 更全面」为由调大——这是封顶装置的意义所在。量尺由 overview.py 的「接手包」一行给出。
3 · 门禁与脚本
门禁是什么、什么时候跑、凭什么信它。
分界线:调用即执行 / 常驻自动触发
| 本包怎么做 | |
|---|---|
| 随包提供、默认启用 | 协议正文、模板、可执行脚本(校验 / 提交门禁 / 索引双写 / 归档 / 对账 / 度量 / 机器戳) |
| 不实现、也不默认启用 | 运行时守护进程、权限系统、定时或事件驱动地自动跑、把 AI 行为实时管住的持续监督 |
退出码即结论
0 = 全通过 放行 1 = 有[问题] 阻断(确定性不成立) 2 = 仅[待核] 不阻断(无法确定性判定,交人或模型) 3 = 脚本自身错误 阻断(脚本坏了和检查失败一样不能放行)
输出三态 [通过] / [问题] / [待核],另设 [建议](只提示、不计数)。
变异自检:先证明门禁会红
selftest_gates.py 注入故障,断言每个门禁在自己的故障下必须变红(13 个用例,秒级)。
形态 = 运行面
| 形态 | 提交流程 | 跑什么 |
|---|---|---|
| 卡片模式 | 不做(一行交接流水) | 不跑脚本 |
| light 轻量工作区 | 三项:记录 / 卡 / 索引 | closeout.py → check_closeout.py · check_index.py |
| standard / coordination | 四项(+快照) | 上面全部 + reconcile.py · validate_workspace.py · audit_all.py |
| 只写代码 | — | code_metrics.py |
多跑不只会浪费,还会制造噪声(例如给只有 MAP 的项目报「缺快照」)。完整矩阵见 references/onboarding.md §4.0。
脚本一览
| 脚本 | 作用 |
|---|---|
overview.py | 一屏全貌(含接手包成本、人检账龄)—— 视图,恒返回 0 |
validate_workspace.py | 结构、配置、人检标记与到期、设计区、容量口径 |
check_closeout.py | 提交门禁(6+1 块 / 移卡存在 / 索引已登记 / 快照) |
check_index.py | 索引完整性(编号 / 类型 / 指针 / 冷热一致) |
reconcile.py | 三方一致性(快照 ↔ 记录 ↔ 索引)+ 时间锚 + 容量 |
code_metrics.py | 代码度量门禁;--exemptions 导出回查清单 |
closeout.py | 机械步骤:建卡 / 记录骨架 / 索引双写 / 归档 / 设计归档 / 留痕滚动 |
audit_all.py | 全盘核查入口:编排 + 机器戳留痕 + 超期自查 |
setup.py | 首次配置向导(四问:git 备份 / 核查周期 / 工作流外脚本 / 首张卡) |
stamp.py | 机器戳与 AI 标识(时间锚 / 身份锚) |
new_local.py | 项目专属脚本脚手架 |
selftest_gates.py | 门禁变异自检 |
即插即用:原样复制即可,不改路径(全部来自参数)、不改阈值(取自实例 MAP → config)、仅依赖 Python 3 标准库。
4 · 产物与留痕
有哪些产物、哪些名字不能改、留痕该怎么读。
工作区产物
{WORKSPACE_ROOT}/<项目名>/
├── SKILL.md / MANIFEST.md / config.yml 入口与配置(随包复制)
├── references/ scripts/ 协议正文与门禁副本(逐字复制,不改)
├── MAP.md 环境 / 规则 / 协议速记 / 路径注册表(低频写,永不记进展)
├── STATE.md 当前快照(人读区 3 行 + AI 区;字段级更新,禁整文件覆盖)
├── REVIEWS.md 元数据通道:复盘 / 版本 / 恢复登记(追加式)
├── tasks/ 任务卡(每卡一文件)
├── reports/ 交接记录(每次提交一篇)
├── INDEX.md 索引热区(最近若干行)
├── designs/ 设计区(详述 + 蓝图;archives/ 放走完流程的)
├── examples/ 范例库(按需;project/ 与 external/ 两分区)
├── archives/ INDEX_archived.md(冷区全量)+ done/(完成卡)
└── tools/ 可选工具区(只放规范)
冻结区(改名即破坏功能)
| 类别 | 冻结值 | 谁在消费 |
|---|---|---|
| 任务卡字段 | 承接 · 进度锚点 · 上次交接 · 已提炼 · 代码根路径 · 涉及 · 设计偏离 · 派发摘录 · 验收状态 | 指针校验 / 断链修复 / 提交门禁 |
| 交接 6+1 块名 | 本次需求 · 本次涉及工程信息 · 改动点 · 验证结果 · 数据影响 · 下一步 · 任务卡更新 | 提交门禁逐块校验 |
| 索引列 | 编号 · 日期 · 类型 · 主题 · AI · 交接文件 | 索引校验 / 指针悬空检测 |
| 类型标记 | [接力] [完成] [废弃] [里程碑] | 索引类型校验 |
| 编号格式 | 分支码 XX0000(两位大写字母 + 4~5 位数字) | 编号校验 / 审计 ID 锚 |
| 设计区文件名 | 详述 <主题>.md · 蓝图 <主题>.blueprint.md | 成对性校验 / 设计归档 |
| 目录名 | tasks/ reports/ archives/ archives/done/ designs/ designs/archives/ tools/ references/ scripts/ scripts/local/ | 全部脚本 / MAP 路径注册表 |
留痕不是读物
留痕(审计与追责的原料)与读物(手册 / 快照 / 卡)是两类东西。把留痕当读物,成本随项目年龄线性增长。
| 留痕产物 | 读取面 | 封顶 / 处置 |
|---|---|---|
REVIEWS.md | 只读尾部若干行 | capacity.reviews_hot_lines,超限跑 closeout.py reviews-archive |
reports/ | 只读卡上指向的那一篇 | 归档阈值,超限跑 closeout.py archive-reports |
archives/INDEX_archived.md | 按编号定点查 | 冷区不设上限(它不被整读) |
designs/archives/ | 按主题定点查 | 活跃设计区由归档保持清空 |
档案红线
reports/与archives/下文件禁删禁移;唯一例外=归档流程,且移后必须同步索引行指向。REVIEWS.md只追加;滚动归档只做「先写冷区、后截热区」,不删除任何内容。- 数据诚实边界:恢复不出的内容标「数据待补」,禁止伪造。
5 · 设计域
要先定方案时怎么做,为什么是两份文件。
一份设计 = 两份文件
| 文件 | 收什么 | 谁看 | 变化节奏 |
|---|---|---|---|
详述 designs/<主题>.md | 叙述:范围 / 非目标 / 不变式 / 迁移与回滚 / 验证证据 / 决策理由 | AI 执行时对照 | 定点改,只动受影响的行 |
蓝图 designs/<主题>.blueprint.md | 结构:模块与依赖图 / 文件清单 / 数据流 / 改动点 / 里程碑 | 人看(确认方向) | 整篇重写,一轮一版 |
成本纪律(设计对话为什么贵,怎么省)
诊断:贵不在写长文,在每轮修订都重新输出全文——方向未定时的长文,方向一变全废。
① 先蓝图、后详述 方向没定之前不写详述(蓝图短、改得快、给人看得懂) ② 蓝图整篇重写 每轮固定输出物是蓝图(一屏);详述只吃增量,禁止整篇重发 ③ 改动留一行为什么 改详述时补一行「> 修订:<理由>(<机器戳>)」
生命周期与批准门禁
草案 → 评审中 → 已批准 / 已拒绝 / 已废弃
- 只有「已批准」的设计卡才能生成执行任务卡;执行卡回填
DESIGN-ID。 - 拆卡:一张设计卡可拆成多张执行卡;拆出的每个
TASK-ID登记回设计卡的「拆分出的执行卡」字段——这个字段是归档门禁的判据,不是备注。
设计区与设计归档
designs/ ← 活跃设计
<主题>.md ← 详述
<主题>.blueprint.md ← 蓝图
archives/ ← 设计归档(详述与蓝图一起移)
| 归档触发条件 | 机器判据 |
|---|---|
| ① 已拆分成全部任务 | 状态=已批准 且「拆分出的执行卡」非「—」且每个 TASK-ID 都能在 tasks/ 或 archives/done/ 找到 |
| ② 设计作废 | 状态 ∈ {已废弃, 已拒绝} |
6 · 代码规范域
写代码的规矩有几本、谁在执行、范例从哪来。
两本,按判据形态分家
| 文件 | 收什么 | 形态 |
|---|---|---|
references/code-quality.md | 三档阈值 / 豁免机制 / 覆盖率 / 依赖方向 / 异常自愈 / 注释规范 | 有阈值、可机检,违反即打回 |
references/code-style.md | 命名 / 版面 / 抽象复用 / 重构三回合 / 范例库 / 提交信息 | 靠人读,评审时对照 |
级别([强制]/[推荐]/[参考])说的是「违反的后果」,不是「能不能机检」——两本都会出现 [强制]。
三档语义(唯一一套数值)
| 档 | 含义 | 落点 |
|---|---|---|
| 推荐线 | 理想目标,不强制 | 静态分析平台与人工评审提示 |
| 预警区 | 允许存在,但必须写明未拆分原因 | 不阻断;理由由定期回查判真伪 |
| 拦截线 | 只卡明显失控的代码 | 流水线以非零退出码阻断 |
工具只配拦截线:配两套数值必然互相矛盾;用流水线阻断「未达推荐线」会把规范变成官僚成本。数值唯一权威=实例 MAP 规则段 → config/defaults.yml。
每条条款都要有执行者
四类:脚本(本包机检)· 平台(CI / 静态分析 / 覆盖率)· 人检(判断类)· 未实现(规范债务)。
gen_views.py 第 7 节核对:正文引用了却没登记执行者的键会报红。| 已由脚本机检 | 由平台 / 人执行 |
|---|---|
| 函数行数 · 嵌套 · 圈复杂度 · 文件长度 · 注释密度 · 豁免理由真伪 · 扫描覆盖 · 依赖方向 | 覆盖率(CI 工具)· 豁免回查(人检)· 重复代码提取线(评审锚点) |
约束对象的边界
- 受约束的是项目业务代码(交付物本身);
- 技能包自带的工作流 / 工具脚本不在门禁范围内——它们的正确性由变异自检保证,不由三档阈值保证;
- 需要时仍可手工度量,那些读数是参考,不构成「违反本规范」。
范例库:两个分区,必须分开
| 分区 | 放什么 | 入库门槛 | 用途 |
|---|---|---|---|
examples/project/ | 本项目自己沉淀的范例 | 必须过流水线 + 评审 | 可当模板抄 |
examples/external/ | 外部参考(别处看到的好代码) | 不要求在通过状态,但必须登记来源与许可 | 恒为「参考·未验证」,只作参考 |
混放等于把未验证的东西标成项目标准。要当模板的唯一路径:改写进本项目 → 过流水线与评审 → 作为 project/ 条目重新入库。
落地与机检
- 按栈落地:
adapters/python|java|javascript.md(工具映射 + 阈值→参数 + 可复制配置样例); - 流水线接线:
ci/(Python 一份、多语言一份;先跑变异自检证明门禁活着,再跑核查); - 机检脚本:
scripts/code_metrics.py(可单独拷进项目使用,阈值有脚本内兜底且与 config 逐键对齐)。
7 · 强耦合与不变量
改这个技能之前必读的一页。下面这些耦合是有意的——解开会直接破坏功能。
判据:先说清什么是坏耦合、什么是好耦合
| 类型 | 特征 | 处置 |
|---|---|---|
| 坏耦合 | 一处改动要靠人记住去同步另一处 | 解耦(或改成机器可查) |
| 好耦合 / 功能契约 | A 存在是因为 B 要读它;改 A 必须同步改 B,且机器读得到 | 禁止解耦,必须登记 |
禁止解耦清单(解开会怎样)
| 契约 | 谁在读它 | 解开会怎样 |
|---|---|---|
| 任务卡字段名 / 交接块名 | 提交门禁、指针校验、断链修复、恢复流程 | 门禁逐块校验全失效;指针链断;恢复无从下手 |
| 实例 MAP 规则段的配置标签 | 全部脚本的取值顺序 | 脚本读不到阈值 → 回落出厂默认 → 每个项目被迫用同一套数值 |
| 记录指针链(卡 → 记录 → 索引行) | 接手流程、对账、恢复 | 「接手只读两处」的承重墙倒塌,成本重新随项目规模增长 |
| 索引冷热双写与移行规则 | 索引校验、归档、接手 | 冷热计数对不上;[接力] 行被移出 → 接手断链 |
| 速查表 ↔ 细则 | 任务简报、接手者 | 高频规则不再就地可读,每次都要翻全文 |
| 冻结目录名 / 设计区文件名 | 全部脚本、MAP 路径注册表 | 脚本找不到文件;设计两件套成对性失效 |
scripts/ ↔ scripts/local/ 边界 | 升级流程 | 项目专属脚本被升级覆盖(丢工作);或项目改动混进包内 |
| 可选能力开关(设计卡 / 稳定 ID / 角色矩阵) | 协作模式、校验脚本 | 能力开关是按需启用,不是复杂度;删掉等于砍掉升级路径 |
改造门禁(六条,缺一不得动手)
① 目的 —— 说清要解决什么;说不出就停 ② 交叉影响 —— grep 全包列出同步清单(字段名 / 块名 / 路径改名必做) ③ 体量 —— 只加现有机制覆盖不了的 ④ 反例 —— 想清楚它会怎么被误用 ⑤ 可执行 —— 能机检的给脚本,不能的标 #人检 ⑥ 回滚 —— 说清怎么退回去
核心不变量(不得删除 / 弱化 / 改语义)
1. 记录指针链:卡「上次交接」→ 记录「下一步」→ 索引 [接力] 行 2. 分层索引:热区只留最近若干行,冷区保有全量;行移入不删除 3. 每篇记录最多被读一次(读后写回卡) 4. 档案只进不出(唯一例外=归档流程,且移后同步索引指向) 5. 数据诚实边界:恢复不出的标「数据待补」,禁止伪造
审计锚源原则
锚的值必须由被审计者之外产生。自报的值(人名、自选编号)不构成锚。
| 锚 | 产生者 | 强度 |
|---|---|---|
| 时间锚 | 时钟(写戳即产生) | 中;与 commit 时间互证可升强 |
| ID 锚 | 编号规则 + 索引全量 | 中;靠全量可查 |
| 身份锚 | stamp.py --ai-id(平台 + 机器码) | 有 git 时为强,无 git 为弱(能写文件者也能写同形戳) |
| 凭证锚 | 版本控制的 commit 哈希 | 强——唯一能到强档的锚 |
这条原则管着三处设计:人检标记不写人名(写机器戳)、开关的承诺由痕迹核实(不靠声明)、身份标识由脚本产生(AI 不得自报)。
8 · 边界与非目标
它不做什么、要什么前提、单独用时缺哪些门禁。写清楚边界不是谦虚——缺门禁要让人知道,不能让人以为还有。
使用前提
只有两条:本地文件系统 + 命令 / 文件执行能力(能落盘目录、读写任务卡与记录)。
平台无关:不依赖任何平台私有接口、技能系统或 API——技能系统有则装,无则按文档读取。
不适用
- 无本地文件能力的场景:网页对话 / 移动端 / 纯对话 / API 裸调;
- 单轮问答与代码片段生成(本包管的是跨会话接续)。
不做什么(设计上的非目标)
| 不做 | 为什么 |
|---|---|
| 实时监督 AI | 文档协议做不到;监督是脚本层的职责。文档层换的是事后可审计:不拦你,但你做了什么一定留痕 |
| 运行时守护进程 / 权限系统 | 需要平台能力,一打包就绑死平台;且它承诺「防呆」,一旦失效比没有更危险 |
| 判语义 | 脚本只回答确定性判据;语义类一律输出 [待核] 交人或模型——误报掩盖真实问题是门禁的首要失效原因 |
| 替人裁决 | 冲突、废弃、归档的争议由管理者裁定;脚本只给证据与状态 |
| 平台定时 / 可视化 / 报告实现 | 强依赖平台,只登记规范(tools/),不随包实现 |
单独使用时的门禁缺口(诚实声明)
| 子能力 | 单独使用时缺什么 |
|---|---|
| 只有 MAP | 无快照一致性校验(没有 STATE / 记录 / 索引可对账) |
| 单文件任务卡 | 全部门禁都不跑(无索引、无快照、无归档)——一个文件就是全部,靠人读卡 |
只拷 code_metrics.py | 读不到实例 MAP 的阈值,用脚本内兜底值(与 config/defaults.yml 逐键一致) |
| 设计卡单独用 | 无批准门禁强制(协作模式开关关闭时,设计卡可当方案笔记用) |
三种形态的边界(升级即扩集,历史不回写)
| 形态 | 有什么 | 没有什么 |
|---|---|---|
| 卡片模式 | 一个卡片文件 | 索引 / 快照 / 记录 / 脚本 / 门禁 |
| light 轻量工作区 | 任务卡 + 交接记录 + 索引(含冷区)+ 设计区(按需) | MAP / STATE / REVIEWS |
| standard / coordination | 上面全部 + MAP / STATE / REVIEWS | — |
脚本的适用边界
- 门禁脚本只读不写(overview / validate_workspace / check_closeout / check_index / reconcile / code_metrics),可多进程、多 AI 同时跑;
- 写工作区的脚本(
closeout.py各子命令)不可并发:同一工作区同一时刻只允许一个写者; - 崩溃退出码为 3,与「有 [问题]」分开——别把脚本崩了读成项目有问题。
9 · 怎么用 / 反馈
第一次对话怎么开始,遇到问题往哪儿说。
从哪儿开始用
第一次对话 判定形态(卡片 / light / standard) references/onboarding.md §1 写代码 速查卡 + 判据 + 跑一次度量 references/cheatsheet.md 接手一项工作 读卡 → 沿指针读一篇记录 → 需要时读 STATE SKILL.md 接手只做三件事 提交 提交流程(三项或四项,看形态)→ 跑提交门禁 references/workflow.md §4 改这个技能 先过改造门禁六条 references/change-control.md §A
四个子能力,单独用也行
只要其中一件也可以:地图一个文件即成立;单文件任务卡不跑任何脚本;设计卡两份文件即成立;代码规范可只拷两个脚本进项目。
各自的最小文件集与单独使用时失效的门禁,见 MANIFEST.md 的「子能力与最小集」——缺口写在明处,不让人以为还有。
反馈
用这个技能遇到问题、或有改进建议,请发邮件到 2576124003@qq.com。
- 项目内部的问题先记进工作区
REVIEWS.md(元数据通道,追加式),提级时一并附上; - 属于包本身的缺陷(条款矛盾、脚本误报、门禁失效)请直接发信,并尽量附上:跑的哪个脚本、退出码、能复现的最小形态。
包结构一览
SKILL.md / MANIFEST.md / README.md / BLUEPRINT.md / LEGACY_ONBOARDING.md 入口层 references/ 14 份协议正文(权威源) 答案层 scripts/ 15 个脚本 + local/(项目自定义,升级不覆盖) 执行层 blueprint/ 设计蓝图分页 02~08(第 1 页即 BLUEPRINT.md) 展示层 templates/ 9 份骨架(MAP/STATE/INDEX/REVIEWS/任务卡/设计卡+蓝图/交接/单文件卡) adapters/ 按栈落地附录(python / java / javascript) examples/ 范例库骨架(project/ 与 external/ 两分区) config/ defaults.yml(出厂默认值,不是运行时真值) ci/ 流水线接线样板(含多语言一份) tools/ 可选工具规范(只登记不实现) archives/ 归档说明
设计蓝图 · 分页视图 · 内容与技能包同步(版本见包内 MANIFEST.md)