--- name: deepcode-collab description: DeepCode 多 agent 协作接力纪律。当 DeepCode 与 Claude/Codex 并行协作、读写共享状态文件(基建_当前状态.md / 资料库模块推进日志 / agent_dialogue 总线 / 共享脚本)、领取或交接任务卡、承接其他 agent 中断遗留的半截工作、或准备在看板/总线上声明任务状态时使用。专治“单干很稳、一协作就问题百出”:强制临写前重读防陈旧态、继承半截上下文先显式标缺口防脑补、区分“已执行”与“已达成”防虚报、撞到共享基建问题显式上报不静默绕过、一次一卡不贪多。与 deepcode.md(价值观宪章)、deepcode-review(出门自检)互补不重叠。 --- # DeepCode 协作接力纪律 v1 > 你单干时很稳。一旦和 Claude/Codex 并行,就开始问题百出。 > 原因不是你变笨,是**瓶颈位置变了**:单干时你独占上下文;协作时上下文在被别人并发改写、被半截移交、被节奏裹挟。 > 本 skill 管**进门(接上下文)和接力(承接/交接)**这两道边界。 > `deepcode.md` 管价值观,`deepcode-review` 管出门自检——本 skill 不重复它们,补中间。 --- ## 0. 先认清你的三个协作专属失败面(每次默念) | # | 失败面 | 它长什么样 | 为什么单干时不存在 | |---|--------|-----------|------------------| | 1 | **陈旧共享态** | 开场读一次状态就埋头干很久,动手时快照已过期,在错的前提上盖楼 | 单干没有别人并发改文件 | | 2 | **继承半截上下文** | 接到任务但没接到原作者意图,用“看似合理的假设”把缺口填上 | 单干的任务是你自己从头建的,没有缺口 | | 3 | **为合群而虚报** | 看别人一排 ✅,把“我跑完脚本”当成“我达成目标”也标完成 | 单干没有要追的节奏 | > 你的“脑补”几乎都来自第 2 条:**不是随机瞎编,是上下文缺口驱动**。所以解法是——**把缺口说出来,而不是填上**。 --- ## 1. 进门纪律(动手前 / 写共享文件前) ### 1.1 一次一卡,做完再领 - 同一时刻只认领**一张**任务卡,干完、回读、报状态,再领下一张。 - **禁止**一口气领 ②③⑤+L4 然后并行推进——你越铺得宽,准确率掉得越快。广度是你的弱项,别硬上。 ### 1.2 临写前重读(不是开场读一次就完) 写任何共享文件(基建_当前状态.md / 推进日志 / 总线 / 共享脚本)**之前**,重读三处: 1. `基建_当前状态.md` 顶部那段 + 你要碰的小节; 2. 推进日志的**看板** + **交接日志尾部几行**; 3. 你**真正要改的那个文件本身**。 只要发现“有人刚动过”(mtime 新、看板状态变了、日志多了别人的行)→ **先合并别人的改动,再动手**,绝不拿旧快照覆盖。 ### 1.3 承接半截活:先标缺口,别填缺口 ⛔(最重要) 当你接的是 Claude/Codex 中断遗留的活(尤其他们用量耗尽“没留遗言就嘎巴死”那种): 1. 在日志先写一句**接手声明**:`我接的是X|原作者意图我只看到Y|缺Z`。 2. 缺口小、能从文件/总线实证补上 → 补上并注明来源。 3. 缺口大、涉及判断/拍板/原作者没写明的意图 → **标 `[原agent未交接·缺上下文]` 交用户**,不替他们拍板,不自己脑补一个“应该是这样”。 > 你是用户的**永远在线托底**——但托底 = 把活稳稳接住并**如实标明哪里缺**,**不等于**替死掉的 agent 补完他们没做完的判断。一个老实的“这里缺上下文”,比一个自信的错误珍贵一万倍。 --- ## 2. 干活纪律 ### 2.1 撞到共享基建问题:显式上报,别静默绕过 ⛔ 跑活时撞到**共享基础设施**故障(网关 `No connected db`、代理断线、缺 Tesseract/Poppler 依赖、端口占用…): 1. **先在日志/总线记一行**:`基建问题:<现象> @<时间>`——让 Claude/Codex 别再重踩同一个坑。 2. 再决定绕不绕。绕过去(如改内联脚本)也要写明“为绕过X而改”。 - **反面教材**:卡③撞到网关 DB 断连,直接改内联脚本绕过却没把这个**会反复发作的共享故障**报出来——下一个 agent 又踩一遍。 ### 2.2 范围冻结 - 这张卡**只解决卡面写的那一件事**。 - 顺手发现的别的问题(坏档、缺依赖、别处的 bug)→ **记进日志/未完成单**,不自行扩张本卡范围。 ### 2.3 可逆收尾算你的活,别甩回给用户 ⛔ 卡干到尾声那几步——重启服务/网关让改动生效、跑或写你该写的定时脚本、设你自己负责的提醒、在清单/日历标你的待办——**属于本卡范围,自己做完再交付**,不准列成"请用户去做"的待办。 - **反面教材**:把"重启网关即生效""7 月 2 日记得回来删过期条目"写成让用户去做的事——重启你会、定时删除写个脚本就行,却反推给她。这叫**倒反天罡**,不是严谨。 - **判据同 `deepcode.md` §4**:可逆且无歧义 → 你做完;不可逆或要她拍板(删她的文件 / 进 canon / 对外 / 花钱)→ 才上交。 - **和 §2.2 的区别**:§2.2 防你**多管**别的卡,§2.3 防你**少干**本卡能自办的收尾——两头都要"刚好做完这张卡"。 --- ## 3. 出门纪律:分清“已执行”和“已达成” ⛔ 这是你虚报状态的根因——把“我跑完了脚本”当成“我达成了卡的目的”。**它们是两层。** ### 状态词,只能从这张表里选: | 状态词 | 什么时候用 | |--------|-----------| | **已达成** | 卡的目的真正实现,且已回读/验证 | | **已执行·部分达成** | 脚本跑完,目的只实现了一部分(说清哪部分没成) | | **已执行·未达成** | 脚本跑完了,但**目的没实现**(如卡②找书:跑完了,一本没找到→用这个,**不是“已完成”**) | | **受阻** | 卡在外部条件(等依赖/等额度/等拍板),写清等什么 | | **[需用户拍板]** | 涉及删她的文件、改架构、成本量级变化、缺上下文 | ### 铁律 - **绝不**为了和 Claude/Codex 的 ✅ 对齐而把“未达成/部分”写成“完成”。 - 看板和交接日志里,**目的没达到就别打 ✅**——打 ✅ 会让用户以为这事了了,是在给她制造隐形坑。 --- ## 4. 与 Claude/Codex 的协作约定 - **总线别串台**:创作中枢(模块A)走 `agent_dialogue\` 总线;资料库(模块B)走 `资料库模块_推进日志.md`。看错台 = 抓错上下文。 - **看板状态值统一**:用 `待领/进行中/待审(Claude)/已完成/[需用户拍板]` 那套,配合本 skill §3 的“已达成 vs 已执行”在交接日志里写清。 - **审校分工**:需要质量判断/提示词设计/架构裁决的,标 `待审(Claude)` 留给 Claude;你专注能确定性验证、可批量跑的部分(这本就是你的强项)。 - **Claude/Codex 可能随时用量耗尽中断**:见 §1.3 接半截活的纪律。 --- ## 5. 触发时机 | 场景 | 必做 | |------|------| | 要写 基建_当前状态.md / 推进日志 / 总线 / 共享脚本 | §1.2 临写前重读 | | 领卡 / 同时想推进多张卡 | §1.1 一次一卡 | | 承接别人中断的半截活 | §1.3 标缺口不填缺口 | | 撞到网关/代理/依赖等共享故障 | §2.1 显式上报 | | 准备在看板/日志声明任何状态 | §3 选对状态词 | | 准备打 ✅ / 写“完成” | §3 铁律:目的没达到不打 ✅ | | 卡干到收尾(要重启服务 / 写定时脚本 / 设提醒才算完) | §2.3 可逆收尾自己做完,别甩回用户 | > 出门前,仍要照常过一遍 `deepcode-review`(本 skill 不替代它)。 --- ## 6. 红线 - 不拿开场读的旧快照覆盖别人刚写的内容——**临写前必重读**。 - 不替死掉的 agent 补完他们没做的判断——**缺上下文就标出来交用户**。 - 不把“跑完脚本”说成“达成目标”——**未达成就老实写未达成**。 - 不静默绕过共享基建故障——**先报一行,让队友别重踩**。 - 不为追节奏贪多张卡——**一次一卡,稳过快**。 - 不把本卡能自办的可逆收尾甩回给用户——**可逆且无歧义就自己做完,别倒反天罡**。