1人3周干完4个月活:AI Agent、worktree与CI实战复盘
1. 一个人三周干完四个月的活到底省在哪了先把这个项目的底牌摊开说一个企业级交付项目正常配置是4人团队、2个月工期实际执行是1个人带着3个AI Agent、3周完成。这不是标题党是我自己跑完的一个真实项目节奏。关键词里出现的AI Agent、worktree、CI、code review、RAG基本覆盖了这个项目从开发到交付的全部关键环节。我先把结论放在前面AI Agent能帮你省掉的主要是三类时间——重复性的代码搬运、机械性的配置调整、以及大量等反馈的空转时间。但它省不掉的是架构决策、需求拆解、以及最终的质量判断。很多人对AI Agent的期待是我说一句话它全干完实际用下来你会发现它更像一个执行力极强但需要明确指令的初级工程师你给它的边界越清晰它的产出越接近可用。这篇文章适合三类人看一是正在评估要不要把AI Agent引入日常交付的开发者二是已经在用但觉得没省多少时间的人三是想搞清楚AI Agent在真实项目里到底怎么落地、哪些环节能扛、哪些环节会翻车的技术负责人。我会把整个项目的推进逻辑、每个环节的具体操作、以及踩过的坑全部拆开讲不藏私。先交代一下项目的技术背景方便你判断可迁移性。这是一个典型的企业内部系统交付后端是Python技术栈前端是常规的Web界面数据库用PostgreSQL部署走容器化。项目本身不算特别复杂但涉及多个模块的联调、权限体系、以及一套基于RAG的知识库检索功能。正常4人分工是1个后端、1个前端、1个全栈、1个测试兼运维。我用AI Agent替代的主要是后端和测试的部分工作量前端和架构决策仍然由我自己把控。为什么是3个Agent而不是1个或5个这是我在项目启动前花了半天时间想清楚的问题。Agent数量太少任务会串行排队等待时间反而变长数量太多上下文切换和结果合并的成本会吃掉收益。3个是我实测下来比较舒服的配置一个负责代码生成和重构一个负责测试用例和CI流水线一个负责文档和知识库检索。它们之间有明确的分工边界不会互相打架。提示Agent的数量不是越多越好关键看你的任务能不能被清晰切分成互不依赖的块。如果任务本身耦合度高加Agent只会增加协调成本。接下来我会按项目推进的实际顺序把每个阶段怎么用Agent、为什么这么用、以及实际效果如何一层层讲清楚。你看完应该能直接套用到自己的项目里而不是只停留在AI Agent很厉害的层面。2. 开工前的任务切分为什么我坚持先画边界再动手2.1 把4人2个月拆成可并行的任务块4人2个月的工作量换算成人力大约是320人时。我的目标是用3周、每周投入约40小时也就是120人时完成。这意味着AI Agent需要帮我压缩掉至少60%的工作量。这个目标听起来激进但拆解之后是可行的。我做的第一件事是把整个项目按交付物而不是角色来切分。传统4人分工是按角色切的——后端、前端、测试、运维。但AI Agent不擅长理解角色边界它擅长理解具体的输入输出。所以我重新切成了这样几块数据层数据库表结构、迁移脚本、种子数据接口层REST API的定义、实现、参数校验业务逻辑层核心业务规则、状态机、权限判断前端交互层页面组件、表单、状态管理测试层单元测试、集成测试、端到端测试部署层容器配置、CI流水线、环境变量管理文档层API文档、部署文档、知识库内容切完之后我标注了每一块的可Agent化程度。数据层、测试层、部署层、文档层的可Agent化程度最高因为它们的规则明确、模式固定。业务逻辑层和前端交互层次之需要我给出更详细的指令。架构设计和需求拆解则完全由我自己做不交给Agent。这个标注过程大概花了2小时但它决定了后面3周的效率。很多人用AI Agent效率不高就是因为跳过了这一步直接让Agent帮我写个系统结果Agent只能给你一堆看起来对但跑不起来的代码。2.2 三个Agent的角色定义与工具边界我给三个Agent分别起了名字方便在对话中区分Builder负责代码生成和重构Verifier负责测试和CIScribe负责文档和知识库。名字不重要重要的是每个Agent的职责边界和它能调用的工具。Builder的权限是读写代码文件、执行本地构建命令、查看Git历史。它不能直接推送到远程仓库所有代码变更必须经过我review。Verifier的权限是运行测试、查看CI日志、读取代码但不能修改。Scribe的权限是读写文档文件、查询知识库、读取代码但不能修改。为什么要限制权限因为Agent在拥有写权限时会倾向于自作主张地修改它认为有问题的地方。我踩过一次坑Builder在实现一个接口时顺手把另一个不相关的工具函数也重构了导致那个函数的调用方全部报错。从那以后我就给每个Agent划了明确的文件读写范围。注意给Agent的权限要遵循最小必要原则。它能读的代码范围可以大但能写的范围一定要小并且每次写入后都要有review环节。2.3 用worktree隔离并行任务避免互相踩脚关键词里出现了worktree这是我在这个项目里用得最爽的一个Git特性。简单说git worktree允许你在同一个仓库下检出多个工作目录每个目录对应不同的分支互不干扰。这跟git branch的区别在于branch只是分支指针你切换分支时工作目录的内容会变而worktree是实实在在的多个目录你可以同时在两个目录里改代码不需要来回切换。为什么这个特性对AI Agent场景特别重要因为三个Agent可能同时在不同的模块上工作。如果它们共用一个工作目录就会出现文件冲突、构建缓存污染、测试互相干扰的问题。用worktree之后每个Agent有自己的工作目录Builder在feature/api目录下写接口Verifier在test/integration目录下跑测试Scribe在docs/update目录下写文档三者完全隔离。具体操作是这样的# 在主仓库下创建三个worktree git worktree add ../project-builder feature/api git worktree add ../project-verifier test/integration git worktree add ../project-scribe docs/update # 查看所有worktree git worktree list每个worktree是独立的目录但共享同一个.git仓库。这意味着分支管理、提交历史、远程同步都是统一的但工作区是隔离的。Agent在各自目录里操作不会互相影响。实测下来这个配置让并行效率提升了至少40%。在没有worktree之前我需要在不同分支间来回切换每次切换都要重新构建、重新跑测试光等待时间就浪费了大量精力。用worktree之后三个Agent可以真正并行工作我只需要在最后合并时处理冲突。2.4 任务分发的节奏控制任务分发不是一次性把三周的任务全丢给Agent而是按天为单位滚动分发。每天早上我花30分钟做三件事回顾昨天的产出、调整今天的任务优先级、给每个Agent分配当天的具体任务。为什么按天而不是按周因为Agent的上下文窗口有限任务周期太长会导致它忘记前面的约定。按天分发可以保证每个任务都在Agent的上下文范围内产出质量更稳定。另外每天回顾产出可以及时发现偏差避免错误累积到周末才发现。我用的任务描述模板是这样的任务实现用户权限校验中间件 输入见docs/permission-spec.md 输出middleware/auth.py包含单元测试 约束 - 不修改现有中间件 - 错误码遵循docs/error-codes.md - 测试覆盖率不低于80% 验收标准pytest tests/test_auth.py 全部通过这个模板的关键是约束和验收标准。没有约束Agent会自由发挥没有验收标准你无法判断它是否完成。这两项写清楚Agent的产出可用率能从50%提升到85%以上。3. Builder的工作流代码生成只是起点review才是关键3.1 从接口定义到实现Agent能扛多少Builder承担了后端接口的主要实现工作。我的做法是先自己写接口定义OpenAPI规范然后让Builder根据定义生成实现代码。为什么不直接让Builder设计接口因为接口设计涉及业务理解和系统边界的判断这是Agent目前最薄弱的环节。它生成的接口往往技术上正确但业务上不合理。接口定义我写得比较细包括路径、方法、请求参数、响应结构、错误码。Builder拿到定义后生成的内容包括路由注册、参数校验、业务逻辑骨架、数据库操作、以及单元测试。实测下来一个中等复杂度的接口约100行代码Builder能在5分钟内生成初版我review和调整需要10分钟。相比自己从零写约40分钟效率提升是明显的。但这里有个关键点Builder生成的代码不能直接用。它生成的代码大约有70%是可直接用的20%需要小改10%需要重写。那10%通常是业务逻辑的边界情况处理比如并发时的数据一致性、权限的细粒度判断、异常的分层处理。这些是Agent的盲区必须由我来补。我举个具体例子。Builder生成的一个订单状态更新接口逻辑是检查订单存在→检查状态合法→更新状态→返回结果。看起来没问题但它漏掉了并发场景两个请求同时更新同一订单时可能出现状态覆盖。我加了一个乐观锁的版本号校验问题才解决。这种并发问题Agent不会主动考虑除非你在任务描述里明确要求。3.2 代码review的自动化与人工分工关键词里有code review这是保证质量的核心环节。我的做法是分两层第一层是自动化检查第二层是人工review。自动化检查用CI流水线跑包括代码格式检查black、isort、静态类型检查mypy、安全扫描bandit、单元测试覆盖率。这些检查在每次提交时自动触发不通过就不允许合并。这一层能过滤掉大约60%的低级问题比如格式错误、类型不匹配、明显的安全漏洞。人工review我只看三件事业务逻辑是否正确、边界情况是否处理、代码是否可维护。格式和类型问题交给自动化工具我不浪费时间在这些上面。人工review的时间控制在每个接口10分钟以内重点看Builder容易出错的地方。这里有个经验让Builder自己先review一遍。我在任务描述里加了一条提交前自查要求Builder在生成代码后自己检查一遍是否有明显的逻辑错误、是否有未处理的异常、是否有硬编码的配置。这个自查环节能再过滤掉一部分问题减少我的人工review负担。3.3 重构任务的Agent化处理项目进行到第二周时我发现早期的几个接口实现风格不统一有的用了依赖注入有的直接实例化。这种不一致在后期维护时是灾难。我让Builder做了一次统一重构。重构任务的描述比新功能开发更考验指令的精确性。我的做法是先给出一个标准范例然后要求Builder把所有接口改成和范例一致。范例是我自己写的一个接口包含了依赖注入、错误处理、日志记录的完整模式。Builder拿到范例后逐个文件对比修改。实测下来Builder重构了12个接口文件耗时约40分钟我review花了30分钟。如果我自己做大概需要3小时。效率提升约2.5倍。但要注意重构后的代码必须跑全量测试确保没有破坏现有功能。这一步不能省。提示重构任务一定要有标准范例否则Agent会按自己的理解重构结果可能比原来更乱。3.4 Builder翻车实录那些它搞不定的场景Builder不是万能的我踩过几次坑值得分享。第一次翻车是数据库迁移脚本。我让Builder根据模型定义生成迁移脚本它生成了一个能跑的脚本但没有考虑数据回滚。如果迁移失败数据库会处于不一致状态。后来我要求所有迁移脚本必须包含upgrade和downgrade两个方向并且downgrade要经过测试。第二次翻车是异步任务处理。Builder生成的异步任务代码用了asyncio.create_task但没有处理任务异常。如果任务内部抛异常异常会被静默吞掉导致问题难以排查。我后来在任务描述里明确要求所有异步任务必须有异常捕获和日志记录。第三次翻车是配置管理。Builder把数据库连接字符串硬编码在了代码里。虽然功能能跑但这是严重的安全隐患。我后来在CI流水线里加了一个检查扫描代码中是否有硬编码的敏感信息。这三次翻车的共同点是Agent只关注功能能跑不关注生产可用。所以你的任务描述里必须包含生产环境的要求否则Agent的产出只能算demo级别。4. Verifier的测试与CI让机器守住质量底线4.1 测试用例的自动生成与人工补充Verifier的核心工作是生成测试用例并维护CI流水线。测试用例的生成逻辑是读取接口定义和实现代码生成覆盖正常路径和异常路径的测试。正常路径包括参数合法、权限充足、数据存在的情况异常路径包括参数非法、权限不足、数据不存在、并发冲突等情况。Verifier生成的测试用例大约覆盖了70%的场景剩下的30%需要我补充。我补充的主要是业务规则的边界测试比如订单金额刚好等于限额、跨模块的集成测试比如下单后库存是否正确扣减、以及性能相关的测试比如批量操作的响应时间。这里有个技巧让Verifier先列出测试场景清单我确认后再生成代码。这样避免它生成一堆无关的测试浪费CI时间。清单确认环节大概花5分钟但能节省后面大量的测试维护成本。4.2 CI流水线的搭建与优化CI流水线我用的是GitHub Actions关键词里的github ci配置由Verifier生成初版我调整了触发条件和缓存策略。流水线包含这几个阶段阶段工具耗时失败处理代码格式检查black isort30秒阻止合并静态类型检查mypy1分钟阻止合并安全扫描bandit45秒阻止合并单元测试pytest3分钟阻止合并集成测试pytest testcontainers5分钟阻止合并构建镜像docker build2分钟警告整个流水线跑完约12分钟。这个时间是可以接受的因为它在后台运行不阻塞我的工作。但如果流水线超过20分钟就需要优化了否则会拖慢迭代节奏。优化CI的关键是缓存。我把依赖安装、构建产物、测试数据库都做了缓存第二次跑流水线时能节省约60%的时间。Verifier生成的初版没有缓存配置是我后来加的。注意CI流水线的失败信息要清晰。我要求Verifier在测试失败时输出具体的失败原因和复现步骤而不是只报一个测试失败。这样我排查问题的时间能减少一半。4.3 测试覆盖率不是越高越好很多人追求100%的测试覆盖率我在这个项目里的目标是80%。为什么不是100%因为最后20%的覆盖率往往需要大量的mock和边界构造投入产出比很低。我把覆盖率目标定在80%但要求核心业务逻辑的覆盖率必须达到95%以上。Verifier会生成覆盖率报告我每周检查一次。如果某个模块的覆盖率低于目标我会让Verifier补充测试。但如果是工具类、配置类这种一眼就能看出对错的代码覆盖率低一点也无所谓。4.4 Verifier的边界它测不出什么Verifier能测出代码的逻辑错误但测不出业务理解错误。举个例子我让Verifier测试一个折扣计算接口它生成的测试全部通过但后来发现折扣规则理解错了——我要求的是满减它实现的是打折。这种错误测试是发现不了的因为测试用例本身也是基于错误的理解生成的。所以我的做法是关键业务逻辑的测试用例我自己写。Verifier负责生成常规的、模式化的测试我负责补充业务规则相关的测试。这样分工既保证了覆盖率又保证了测试的有效性。5. Scribe与RAG知识库文档和检索的自动化5.1 文档生成的自动化流程Scribe负责生成三类文档API文档、部署文档、知识库内容。API文档从代码注释和接口定义自动生成用的是OpenAPI规范。部署文档从CI配置和容器配置生成。知识库内容是项目相关的业务规则、常见问题、操作指南。文档生成的触发时机是每次代码合并到主分支后Scribe自动更新相关文档。这样保证文档和代码同步不会出现代码改了文档没改的情况。实测下来这个自动化流程节省了我大约每周4小时的文档维护时间。但文档质量需要我把关。Scribe生成的文档往往过于技术化缺少业务背景和使用场景。我会在生成后补充一段为什么需要这个功能和什么情况下使用的说明让文档对非技术人员也友好。5.2 RAG知识库的搭建与检索优化关键词里的RAG检索增强生成在这个项目里用于构建一个内部知识库让团队成员可以快速查询项目相关的信息。知识库的内容包括业务规则、接口说明、部署流程、常见问题。RAG的基本原理是把文档切分成小块用嵌入模型转成向量存到向量数据库。查询时把问题也转成向量在数据库里找最相似的文档块然后把文档块和问题一起送给大模型生成回答。我用的技术栈是文档切分用LangChain的文本分割器嵌入模型用开源的sentence-transformers向量数据库用ChromaDB生成模型用本地部署的开源模型。整套方案跑在一台普通开发机上不需要GPU。检索优化的关键是切分策略。我试过按固定长度切分每500字一块效果一般因为会把一个完整的规则切到两个块里。后来改成按语义切分按段落和标题切分检索准确率明显提升。另外我给每个文档块加了元数据来源、更新时间、相关模块检索时可以按元数据过滤进一步提高准确率。5.3 RAG的瓶颈与应对RAG不是银弹我踩过的瓶颈主要有三个。第一个瓶颈是检索不准。用户问订单超时怎么处理检索出来的却是订单创建流程。原因是超时这个词在文档里出现的频率低向量相似度不高。我的应对是在文档里补充同义词和常见问法比如在订单超时的文档里加上订单过期订单失效等表述。第二个瓶颈是上下文长度限制。检索出来的文档块加上问题可能超过模型的上下文窗口。我的应对是限制检索返回的文档块数量最多3块并且对文档块做摘要压缩只保留关键信息。第三个瓶颈是知识更新滞后。文档更新后向量数据库需要重新索引。我的应对是把索引更新集成到CI流水线里每次文档变更后自动触发重新索引。这样保证知识库始终是最新的。提示RAG的效果很大程度上取决于文档质量。如果文档本身写得含糊不清RAG也检索不出有用的信息。所以先把文档写好再考虑RAG。5.4 知识库的维护节奏知识库不是建好就完事了需要持续维护。我的做法是每周花30分钟检查知识库的检索日志看看哪些问题检索不到答案哪些答案不准确。然后针对性地补充或修改文档。另外我让Scribe在每次代码合并后自动检查相关文档是否需要更新。如果代码变更涉及业务规则Scribe会提醒我更新知识库。这个提醒机制避免了知识库和实际系统脱节。6. 三周交付的节奏复盘与可复用的经验6.1 每周的实际产出与时间分配第一周完成数据层、接口层、以及核心业务逻辑。Builder生成了约60%的代码我review和补充了40%。Verifier搭建了CI流水线Scribe生成了初版文档。周末时系统的基本功能已经能跑通。第二周完成前端交互层、测试层、以及RAG知识库。前端部分我投入的时间比较多因为Agent生成的前端代码需要大量调整。测试层由Verifier主导我补充了业务规则的测试。RAG知识库在这一周搭建完成。第三周完成部署层、文档层、以及全量测试和修复。这一周主要是联调和修复Agent的参与度降低我的参与度提高。最后三天做了完整的端到端测试和部署验证。时间分配上我自己的时间大约60%用于review和调整30%用于架构和业务决策10%用于写关键代码。Agent的时间大约70%用于生成20%用于自查10%用于等待我的指令。6.2 哪些环节Agent真的省了时间省时间最明显的三个环节代码生成节省约60%时间、测试用例生成节省约70%时间、文档生成节省约80%时间。这三个环节的共同点是规则明确、模式固定、不需要业务判断。省时间不明显的环节架构设计Agent基本帮不上忙、业务逻辑实现需要大量review和调整、前端交互Agent生成的代码需要大量修改。这些环节的共同点是涉及业务理解和用户体验需要人的判断。6.3 如果重来一次我会怎么调整如果重来一次我会做三个调整。第一更早引入worktree。我是在项目第二周才开始用worktree的如果第一周就用并行效率会更高。第二更严格地限制Agent的写权限。早期我给Builder的写权限太大导致它修改了一些不该修改的文件。后来收紧权限后问题少了很多。第三更早建立RAG知识库。我是在第二周才搭建知识库的如果第一周就建好团队成员查询信息会更方便减少沟通成本。6.4 给准备尝试的人几条实在建议如果你准备在自己的项目里尝试AI Agent我的建议是先从一个小模块开始不要一上来就全项目铺开。小模块跑通了再逐步扩大范围。另外任务描述的质量直接决定Agent的产出质量花时间写好任务描述比花时间改Agent的产出更划算。还有一点不要期待Agent能替代你的思考。它能替代的是执行不是决策。架构怎么设计、需求怎么拆解、质量怎么把控这些仍然是你的工作。把Agent当成一个执行力强但需要明确指令的助手你的预期就对了。最后分享一个我在这个项目里养成的小习惯每天结束前花10分钟把当天Agent的产出和问题记录下来。三周下来这份记录成了我优化Agent工作流的最重要依据。哪些任务描述写得好、哪些环节容易翻车、哪些工具组合效率高全在里面。这个习惯看起来简单但坚持下来你对Agent的掌控力会明显提升。