3.5 KiB
3.5 KiB
多子代理并行开发的经验记录(2026-09-27/28,v0.1 → v0.2.1)
供后续派活时直接引用。每条:现象 → 代价 → 规则。
工作区与提交
- 多个子代理共用一个工作树,
deno fmt/biome --write全仓跑会改到别人未提交的文件 → 三次发生,合并时要人工核对 → 规则:只对自己改动的路径跑格式化;禁止全仓--write。 git add -A或在别人暂存后git commit会把别人的改动带进自己的提交 → 一次文案改动被并进文档提交 → 规则:只git add <自己的路径>;提交前git status核对。- 跨模块的共享文件(
routes.ts、nav.ts、layout.tsx、api.ts、modules/index.ts、测试表清单)是冲突热点 → 规则:指定唯一 owner,其他人只用 Edit 追加一行且先重读;或先由一路把骨架/契约提交再并行。 - 大改动用独立 worktree + 分支 + 独立测试库(C2-A 做法)最干净;合并由协调者做 → 规则:改动面大或需要长时间的路,默认 worktree;迁移编号在合并时重排。
- 子代理"越界"改了范围外文件很常见(为了让测试过)→ 规则:prompt 里明确"越界改动要在汇报里列出",协调者合并时逐条看。
测试与 CI
- 多路同时对共享开发库跑 PG 测试会互相删 schema("schema 不存在")→ 根因是迁移器扫全库 schema(W10 修),但并发仍会拖慢和偶发 → 规则:每个测试文件唯一 schema + 只看目标 schema;并行子代理各自起临时 PG 容器(端口 5544x)跑 ci。
- 全量 ci 从 75s 涨到 450s(PG 测试串行化 + 数量增长)→ 规则:子代理只跑相关包/文件测试,全量 ci 由协调者或收尾那一路跑;考虑把 e2e 拆成单独任务。
- 编译产物与源码运行不一致:
deno compile --exclude-unused-npm漏掉 MCP SDK 子路径模块,ci 全绿但镜像启动即崩 → 规则:ci 必须包含"编译产物启动自检";打 tag 前先起一次容器。 - 隔离 worktree 里 ci 全绿 ≠ main 全绿(别人未提交/未合入)→ 规则:合并后协调者再跑一次全量 ci 才打 tag。
设计与文档
- 并行实现前没先统一类型/契约,三路各映射一套(W1 的 domain/contracts/agent 三套能力定义)→ 多花一轮 W2-0 打底 → 规则:先打底(契约 + 模块骨架 + 映射包),再并行。
- 前端按"未提交的后端契约"猜着写(FE-5 引用 fe3-web 分支文件、W3-3 本地镜像 schema)→ 集成时返工 → 规则:契约先行 20 分钟内提交;前端只依赖已合入的 contracts。
- 用户品味类要求(文案、IA)要尽早定规范并机器检查(token 守卫、标点脚本、术语表)→ 后补代价大(两轮 660 处 + 828 处)→ 规则:新页面开发前先读 glossary 与 human-copy 规范,ci 里
check:copy --strict。 - 每个子代理的结论必须落文档(runbook / porting 账本 / plan),协调者不依赖子代理对话记录续活 → 规则:prompt 末尾固定要求"更新对应 runbook 与状态标注"。
参考实现的使用
- "照抄 MP"要精确到函数级对照与差分测试(标题识别 216 例、过滤规则 2112 例、缓存语义),否则会"自己发明" → 规则:移植类任务必须交付 porting 账本 + 差分快照,偏离只允许记录在案的类别。
- 上游许可要先核(MovieClaw 只有 v0.27.0 及之前是 MIT;MP 站点定义加密;@openworkflow/dashboard 是 Proprietary)→ 规则:引入任何上游资产前先出许可结论。