AI Agent进入开发流程以后,一个很明显的变化是:

它能调用的工具越来越多了。

现在一个 Coding Agent 可能同时具备:

  • 搜索代码;

  • 读取文件;

  • 修改文件;

  • 执行终端命令;

  • 运行测试;

  • 查看 Git Diff;

  • 分析日志。

看起来工具越多,能力应该越强。

但真实项目里很快会出现另一个问题:

Agent会调用工具,不代表它一定会在正确的时间选择正确的工具。

有时候真正影响效率的,不是“有没有工具”,而是:

先用哪个,后用哪个。


一、工具越多,错误路径也会变多

假设项目启动失败。

Agent可以选择:

直接改代码
查看错误日志
搜索相关函数
检查配置
运行测试

这些动作都可能有价值。

但顺序不同,结果可能完全不同。

如果错误其实来自环境变量,Agent却第一步直接修改业务逻辑,就容易出现:

真正问题没解决
↓
代码又产生新变化
↓
排查范围扩大

所以工具数量增加以后,真正重要的是:

先判断当前缺少什么证据。


二、搜索通常应该先于修改

例如出现:

用户状态更新后页面没有变化。

最直接的冲动可能是修改:

updateUser()

但更稳的方式是先搜索:

updateUser
UserUpdated
cache
invalidate

先确认:

  • 谁调用它;

  • 后面有没有缓存;

  • 有没有事件;

  • 有没有其他消费者。

搜索的作用不是解决问题。

而是:

缩小问题范围。

没有先建立影响范围,就直接修改,往往更容易漏掉关联逻辑。


三、日志适合回答“实际发生了什么”

代码只能告诉你:

理论上应该怎么运行。

日志更适合告诉你:

实际到底运行到了哪里。

例如流程应该是:

请求
↓
Service
↓
数据库
↓
缓存刷新

但日志发现:

请求
↓
Service
↓
数据库
↓
结束

那问题范围已经明显缩小。

这时候再去检查缓存逻辑,比重新阅读整个项目高效很多。

所以出现运行时问题时:

日志往往比直接改代码更有价值。


四、测试不是只用来“最后验证”

很多Agent工作流会把测试放在最后:

改完代码
↓
运行测试

但测试其实也可以用于定位问题。

例如某个Bug只在:

test_order_timeout

中复现。

那么Agent可以先单独运行这个测试,再根据失败信息分析。

这样测试就从:

验收工具

变成:

定位工具。

尤其是大型项目,不一定每次都要先跑完整测试集。


五、终端命令不是越多越好

Agent能执行Shell以后,很容易出现:

查目录
跑测试
查依赖
重新安装
重新构建
再运行

看起来很忙。

但如果这些命令没有围绕一个明确假设,就会产生大量噪声。

更合理的是:

我怀疑依赖版本不一致,所以先检查版本。

然后再执行对应命令。

也就是说:

先有判断,再调用工具。

而不是先执行一堆命令,再从结果里碰运气找线索。


六、不同问题适合不同工具

可以简单理解成:

不知道代码在哪里

优先:

搜索。

知道代码位置,但不知道实际运行结果

优先:

日志。

怀疑某个行为已经被破坏

优先:

测试。

需要确认环境、版本或文件状态

优先:

终端。

已经找到根因

最后才进入:

代码修改。

这样工具之间就形成了一条比较清楚的执行路径。


七、为什么“直接改代码”经常不是第一步?

因为修改代码是一种高成本动作。

一旦修改:

  • Diff会增加;

  • 测试范围扩大;

  • 新变量出现;

  • 原来的问题可能被掩盖。

而搜索、日志、测试这些动作更多是在获取证据。

所以一个成熟Agent工作流应该尽量做到:

先用低风险工具获取信息,再用高影响工具执行修改。


八、工具选择其实是在做“信息增益”

每次调用工具之前,都可以问:

这个动作能不能让我更接近根因?

例如:

执行:

git status

可以确认文件状态。

搜索:

UserService

可以找到调用关系。

运行指定测试:

test_user_login

可以确认Bug是否稳定复现。

如果一个工具调用不能明显增加有效信息,就可能只是无效操作。

所以真正好的工具选择,核心不是数量。

而是:

每一步是否增加了新的证据。


九、可以让Agent先说明为什么要调用这个工具

复杂任务里,可以增加一条规则:

每次调用重要工具前,请先说明:

1. 当前判断是什么;
2. 为什么选择这个工具;
3. 希望得到什么信息;
4. 如果结果不符合预期,下一步做什么。

这样Agent就不容易陷入:

不断调用工具
↓
不断得到新信息
↓
但任务越来越乱

执行过程也更容易被人工Review。


十、工具调用顺序可以形成固定流程

面对普通Bug,可以先采用:

理解问题
↓
搜索相关代码
↓
查看调用关系
↓
检查日志或复现
↓
运行针对性测试
↓
确认根因
↓
修改代码
↓
再次测试

并不是所有问题都必须严格按照这套顺序。

但核心思想一致:

先定位,再修改。


十一、工具越强,选择能力越重要

当Agent只能生成代码时,问题比较简单:

这段代码写得好不好?

当Agent同时能:

  • 搜索;

  • 执行;

  • 测试;

  • 修改;

  • 提交;

问题就变成:

它是否选择了正确的执行路径?

因为错误的工具顺序可能导致:

  • 无效命令越来越多;

  • Diff越来越大;

  • 排查方向不断变化;

  • 最终成本反而更高。


最后

AI Agent工具越来越多,并不意味着开发效率会自动提高。

真正决定效果的,可能越来越不是:

“它会不会调用工具。”

而是:

“它什么时候知道应该调用哪个工具。”

搜索适合缩小范围。

日志适合确认实际行为。

测试适合验证假设。

终端适合检查运行环境。

代码修改应该发生在根因逐渐明确之后。

所以未来一个真正成熟的 Coding Agent,不只是拥有更多工具。

还应该具备一种更重要的能力:

根据当前证据,选择下一步最有价值的工具。

这才是从“能执行”走向“会执行”的关键区别。


持续更新 Codex、Claude Code、AI Agent 与大模型开发工作流实战内容,更多深度内容和稳定订阅渠道欢迎搜索关注「孤狼GPT」。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐