Files
UHD_Media_Tool/docs/plan/12-lessons.md
T

27 lines
3.5 KiB
Markdown

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