从0到1:企业级AI项目迭代日记 Vol.08|当协作的摩擦力开始被量化
第八天讨论的焦点不再是“还能做什么”而是“为什么总是互相踩踏”。代码合并痛苦、记忆上下文被覆盖、多个AI会话串消息、一个bug改四五次改不好……这些摩擦力第一次被摆上台面被量化、被分析、被尝试用规范和工具解决。这一天项目真正开始面对一个企业级协作的核心难题当AI成为主力编码者人类如何让多个AI不互相打架。一、禅道自动化与Skill共享让问题管理不靠手动会议一开始就发现禅道上的任务状态没有更新。有人手动写第一批但效率太低有人自己写了skill通过API操作禅道并提出把这种skill拿出来共享。禅道有官方API只要账号密码就能用不一定要MCP。这意味着问题管理正在从“人工手动更新”走向“自动化同步”。这是项目规范化的一小步但很关键。二、规范、测试、CI用规则和门禁卡住覆盖昨天合并代码的痛苦让一个人感叹“关键是受伤的总是我”。于是今天在CLAUDE.md里加了一条核心规范禁止覆盖。目的很明确——让AI在合并时不再随意覆盖别人的代码。不过需要注意如果不重新打开会话AI可能不会重新加载这个md文件所以今天开发时需要主动让它重载或重开会话。同时今天还提了一个硬性要求自己的功能自己写测试用例。并在CI里加了一条门禁合并后如果有测试用例没通过就不允许提交。这两件事加在一起是把质量控制前移到自动化流程里让AI和人类都遵守同一个门槛。三、记忆模块独立与模块边界原则干净才能减少踩踏今天暴露了一个具体问题之前从记忆里抽出来的上下文被人覆盖了导致记忆丢失。原因是什么如果每个功能块是干净的、独立的被覆盖的概率会降低很多。于是有人重新改了一版记忆模块明确要求完全独立不依赖其他模块只做通信。写代码时就要注意——要么做成可调用的模块要么是独立服务要么提供MCP功能要么是插件。这样基本不会覆盖到别人的代码。当然有些功能确实跨多个模块比如权限那就只是API调用核心逻辑仍在自己的模块里。这条思路指向一个更清晰的设计原则模块边界清晰才能减少协作踩踏。四、部署流程标准化打包、版本、镜像让发布可重复今天还梳理了部署流程让所有人都知道怎么发布项目根目录执行打包脚本生成tar.gz包版本号自动演进在K8s应用模板里选择环境上传版本确定系统自动升级集群版本注意除了静态定义还要打镜像并推送因为拉取策略依赖版本号tag。压缩包版本和镜像版本对应推送后自动拉取。这套流程标准化后任何人或AI都可以按照规范发布不再依赖“某个人知道怎么做”。五、AI协作的几把扳手worktree并行、模型选型、消息排查今天还分享了一组实用工具和经验worktree并行改bug利用Git worktree实现工作空间隔离。skill会帮你在当前目录下创建功能分支并开子目录worktree让AI在里面修bug多个worktree可以并行处理不同问题最后用另一个skill合并回test分支。这特别适合让AI同时修改多个不冲突的问题避免代码覆盖。AI改bug能力对比Claude改一个bug可能改很多次都改不好尤其是当bug不在表面上时。而GPT-5.4在改顽固bug方面更强——扫描颗粒度更细关联周边代码的解耦能力更强集成测试能力也更强。建议遇到改不动的bug可以切到CodexGPT-5.4去试。消息队列串扰昨天一个真实案例——调度agent去执行任务agent回复说完成了但日志显示还在工作中。原因是NATS消息串了别的agent的回复被当前会话订阅到了。AI改了四五次相关代码都没改好最后引导它去检查整个消息流才找到根因。这提醒我们AI擅长局部优化但跨模块的链路问题需要全局视角。六、会话层记忆的讨论与发布压力今天还发起了一个设计讨论现在的记忆以用户为维度没有会话层导致/new命令实际上没有作用——写Java和写Python的上下文会混在一起。有人提出需要增加会话层短期记忆。但立刻有人质疑消息队列是异步的如果用户想打断一个已经发出的任务怎么打断异步系统很难取消已经在队列中的任务。这个问题暂时没有答案但提出来本身就有价值。最后今天有发布压力原定一周出一个版本今天必须给出来。尽管完善度不够还是要尽量让系统“不要有明显的问题”。这是现实的压力也是敏捷迭代的节奏。回顾第八天禅道自动化 → 问题管理不靠人工CLAUDE.md规范 CI门禁 → 规则与自动化卡口记忆模块独立 → 模块干净才能减少覆盖部署流程标准化 → 发布可重复worktree并行 模型选型 消息排查 → AI协作的实用扳手会话层讨论 → 交互灵活性的深层问题所有这些都指向同一个事实当多个AI在同一套代码库上协作摩擦力是真实存在的。第八天没有彻底解决它们但第一次系统性地把它们摆上了桌面并开始用规范、工具、流程来逐个击破。这是第八天。《从0到1企业级AI项目迭代日记》记录一个企业级 AI 项目从创意、架构到落地的真实过程。不讲神话只记录进化。