更多文章

AI 与开发者相关深度内容

AI Coding Agent 怎么接项目才不乱:issue、repo、浏览器验证和测试要怎么分工

AI Coding Agent 最容易出问题的地方,不是它不会写代码,而是你把整个项目丢给它以后,任务边界乱了。它一边读 issue,一边改 repo,一边跑命令,一边打开浏览器,一边解释测试结果。如果没有分工,最后你很难知道它到底哪里做对了、哪里开始猜了、哪里需要人工接管。

这篇不讨论哪个 coding agent 最强,而是讲怎么把 AI Coding Agent 接进真实项目。我们把一个任务拆成四层:issue、repo、浏览器验证和测试。只要这四层分清,Claude Code、Codex、OpenHands、Cursor、Aider 或其他 coding agent 都更容易用。

先给一张分工表

层级 Agent 可以做什么 人应该保留什么
issue 重写需求、拆任务、找验收标准 确认优先级和真实业务意图
repo 找文件、解释结构、提出改动计划 决定是否接受改动范围
coding 小步修改、补测试、更新文档 review diff 和架构边界
browser 打开本地页面、截图、走低风险流程 判断体验和高风险操作
tests 跑指定测试、解释失败、建议修复 判断是否扩大回归范围

这张表的核心是:Agent 可以推进信息和执行,但不应该独占判断。尤其是业务意图、架构边界、高风险操作和最终 merge,仍然应该有人看。

第一步:issue 要先变成可执行任务

很多 coding agent 做坏,是因为一开始 issue 就太含糊。比如:

优化文章页体验。

这句话对人也不够清楚,对 agent 更容易发散。更好的写法是:

文章详情页移动端标题和摘要间距过大,请收紧标题区高度。验收标准:iPhone 宽度下首屏能看到标题、摘要、发布时间和正文第一段开头;不改桌面布局;不碰数据层。

我会让 Agent 先做 issue 整理,而不是直接改代码:

  • 这次要解决什么问题
  • 哪些文件可能相关
  • 哪些文件不应该碰
  • 验收标准是什么
  • 需要跑哪些检查

如果它连这一步都说不清,就不要让它继续改。

第二步:repo 阶段只让它找路,不急着动手

进入 repo 后,Agent 的第一件事应该是定位,不是修改。

我会让它输出这样一张表:

文件 为什么相关 预计动作
template / component 页面结构在这里 小改布局
css / style 间距和移动端样式在这里 改少量规则
test / smoke 可能有页面测试 跑或补一条
data / db 不相关 不碰

这张表很重要。它能防止 Agent 从一个小 UI 问题一路改到数据层、路由层、构建配置。真正好用的 coding agent,不是改得多,而是知道哪些不该改。

第三步:coding 阶段要小步,不要一次大改

我会要求 Agent 每次只做一个小闭环:

  1. 改一个点
  2. 说明为什么改
  3. 跑一个相关检查
  4. 给出 diff 摘要
  5. 再决定下一步

如果它一次改 12 个文件,还顺手重构命名、改格式、补一堆不相关文案,这通常不是效率高,而是风险高。

Coding Agent 最适合做的不是“大手术”,而是:

  • 小 bug 修复
  • 明确 UI 调整
  • 文档同步
  • 测试补齐
  • 重复性迁移
  • 有清楚验收标准的功能切片

不适合第一轮交给它的,是需求还没定、架构还在争论、权限风险很高、数据迁移不可逆的任务。

第四步:浏览器验证要独立出来

如果任务涉及页面,浏览器验证不要混在“我已经改完代码”的一句话里。要单独成为步骤。

可以让 Agent 或 Browser Agent 做:

  • 打开 localhost 页面
  • 截图
  • 检查关键文字是否存在
  • 点击低风险按钮
  • 验证表单错误提示
  • 比较移动端和桌面

但这些事情要有边界:

可以 不建议
打开页面截图 真实支付
填表但不提交 删除数据
检查按钮是否存在 发布内容
跑 smoke path 改生产配置

浏览器验证的价值,是把“代码看起来对”变成“页面真的能用”。但最后的体验判断,尤其是复杂设计和业务流程,仍然需要人看。

第五步:测试结果要让 Agent 解释,但别让它无限修

Agent 跑测试很有用,但也容易陷入“一个失败修一个,再引入另一个失败”的循环。我的做法是给它最多两轮自动修复机会。

情况 处理方式
明确的小失败 让 Agent 修一轮
第二次仍失败 要求总结原因,暂停人工看
失败范围扩大 立即停
测试和需求无关 不让它顺手改

测试阶段最重要的是解释失败,而不是盲修。一个好的 coding agent 应该告诉你:失败是什么、可能原因是什么、它建议改哪里、风险是什么。

一个完整接入流程

我会把 coding agent 接项目写成这样:

  1. issue intake:把需求改成可验收任务
  2. repo scan:找相关文件和不该碰的边界
  3. plan:给 3-5 个小步骤
  4. edit:每次只改一个小块
  5. test:跑最相关检查
  6. browser verify:页面任务必须截图或走 smoke path
  7. summarize:列出改了什么、没改什么、风险
  8. human review:人看 diff、页面、测试结果

这个流程看起来比“直接让 agent 改”慢,但长期更快。因为它让错误更早暴露,也让人知道什么时候该介入。

最后怎么判断接得好不好

一个 coding agent 接项目接得好,会有几个特征:

  • 它先问清任务,不急着改
  • 它能说清哪些文件相关,哪些不碰
  • 它每次改动很小
  • 它能跑检查并解释失败
  • 它能用浏览器验证页面
  • 它能在不确定时停下来
  • 人 review diff 时不需要重新理解整个项目

如果反过来,它总是大改、乱碰文件、测试失败还继续猜、页面没看就说完成,那就不是工具不够强,而是接入方式太乱。

AI Coding Agent 的价值不是替你取消工程流程,而是把 issue、repo、浏览器和测试这些环节串得更顺。分工越清楚,它越像队友;分工越乱,它越像一个很勤快但容易跑偏的实习生。

三种任务不要第一批交给 Coding Agent

为了避免一开始就翻车,我会明确把三类任务排除在第一批之外:

任务 为什么不适合第一批
大范围架构重构 影响面太大,Agent 很难判断隐性约束
不可逆数据迁移 出错成本高,回滚复杂
需求还没定的产品功能 Agent 会把模糊需求写成确定代码

这些任务不是永远不能用 Agent,而是不能作为“建立信任”的第一批。第一批应该选低风险、范围小、验收清楚的任务。等团队知道 Agent 的风格、弱点和复查成本以后,再逐步扩大范围。

一个可复制的 issue 模板

如果你想让 Coding Agent 稳定一点,可以把 issue 写成这样:

字段 内容
背景 为什么要改
目标 这次只解决什么
不做 明确哪些不碰
相关页面 / 文件 如果已知,直接列出来
验收标准 怎么判断完成
必跑检查 pytest / npm test / smoke path / screenshot
风险点 权限、数据、性能、兼容性

这个模板的价值是把“人脑里的边界”提前写出来。Agent 不是不会努力,而是不知道哪些努力是多余的。边界越清楚,它越不容易乱跑。

让 Agent 输出交付摘要,而不是只说完成

每次任务结束,我会要求 Agent 输出 5 件事:

  1. 改了哪些文件
  2. 为什么改这些文件
  3. 跑了哪些检查
  4. 哪些检查没跑,为什么
  5. 还剩什么风险需要人工看

如果它只说“已完成”,这个结果不可用。真实项目里,交付摘要和代码本身一样重要。因为 reviewer 要靠它快速判断是否值得继续看 diff,是否要补测,是否要退回。

一个实用评分表

每个 Coding Agent 试用 5 次后,可以用这张表评估:

维度 低分表现 高分表现
边界感 经常改不相关文件 明确说哪些不碰
可复盘 只给结果 给步骤、测试、风险
小步执行 一次大改很多文件 每次改动聚焦
测试习惯 不跑检查或乱跑 跑最相关检查并解释
浏览器验证 页面任务只看代码 能截图、走 smoke path
停止能力 失败后继续乱修 失败扩大时停下来

如果一个 Agent 在边界感和停止能力上低分,就算它写代码很快,也不适合接核心项目。速度只有在可控前提下才有意义。

最后再补一句很实际的判断:如果你每次看完 Agent 的改动都要重新读完整个项目,说明它没有省时间;如果你只需要看它标出的文件、截图、测试和风险清单,就说明接入方式开始对了。

← 返回更多文章