AI Agent 干不好活,不是它笨,告诉你一个残忍的现实,是你给他的工具太难用了

你有没有发现,我们手头那个号称能"自动化一切工作流"的 AI 代理,怎么有时候聪明得像个博士后,有时候又蠢得像个铁憨憨?

让它"总结一下昨天的会议纪要,然后发给项目组",它能给你整出个花来。但让它"找到上个月跟 A 客户的所有合同附件,打包发我",它就开始装死,要么找不到文件,要么发错人。

我一度怀疑是不是我用的模型不行,或者我的 Prompt 写得不够"咒语化"。

直到我刷到 Anthropic 那帮人发的一篇技术博客,我一下就悟了。

问题根本不在 AI 本身,而在我们给它的"工具"太烂!

这就好比,你给了个绝世天才一把生锈的锤子,让他去造火箭。他不是不会,是手里的家伙事儿根本不对。有句俗语叫做,巧妇难为无米之炊,恐怕说的就是这个道理。

我们正处在一个奇妙的节点。Agent不再是玩具,它们开始成为我们真正的"数字员工"。但怎么给这位新员工配一套好用的"办公用品",直接决定了它是个"神助攻"还是"猪队友"。

那篇博客,就是 Anthropic 交出的"Agent装备采购指南"。我啃完之后,也感觉醍醐灌顶。今天就把我的思考和一些"偷学"来的心法,跟你唠唠。


写代码,是给机器看;写工具,是给"人"看

我们平时写代码,是给机器看的,指令要清清楚楚,1 就是 1,2 就是 2。getWeather("NYC") 就必须是纽约的天气,不能有二话。

但给 AI 写工具,完全不是一回事。

这更像是在给一个"聪明但有点随性"的同事写工作手册。你跟他说:"帮我看看今天要不要带伞",他可能会:

  1. 老老实实调用天气工具,然后告诉你"要带"。
  2. 凭常识跟你说"最近老下雨,带上吧"。
  3. 甚至反问你一句:"你在哪个城市?"

他可能看懂了你的工具,也可能没看懂,甚至可能脑补出一些你没想到的用法。

这就是所谓的"非确定性"。我们写工具,不再是建立一个冷冰冰的"函数约定",而是在和一个有自己想法的"智能体"沟通。

这个认知转变,是所有一切的开始。我估计你还没看懂我再说啥,别着急,继续看。你肯定能明白


我"偷学"到的几条"工具心法"

Anthropic 的工程师们搞了大量的内部测试,对比了"人类专家写的工具"和"AI 自己优化后的工具",发现后者性能居然更好。

这说明什么?说明我们人类对 AI 的"脑回路"有太多想当然了。

他们总结了几条原则,我觉得特别接地气,直接拿来就能用:

1. 工具不是越多越好,要"少而精"

这是个反常识的点。我们总觉得给 AI 的工具越多,它能力越强。大错特错!

想象一下,你要在通讯录里找"张三"。如果你的工具是 list_all_contacts(),返回几千个联系人,让 AI 自己一个一个去看,它得把"脑容量"(上下文窗口)全耗在这上面,跟大海捞针一样。

正确的做法是什么?直接给它一个 search_contact_by_name(name) 的工具。

Anthropic 的建议是,把多个步骤合并成一个"高级工具"。比如,别搞什么 list_usersfind_free_timecreate_event,直接来一个 schedule_meeting_with(participants, topic),让它自己搞定所有事。把复杂的逻辑封装在工具内部,而不是让 AI 在外面瞎折腾。这似乎和我们一贯提倡的单一职责原则是相违背的,这正是我们应该转变的思路之一,因为 我们要应对 AI 的非确定性,所以我们在提供工具给他获取上下文时,尽量的做到能够一个工具给的就别让他组合,我想稍微有点概率论尝试的人都在懂得我说什么,连续几次做对,对于 AI 太难了,但是做对一次,相对来讲还算简单。

2. 给工具分个"家",别让它们"打架"

未来一个 AI 可能会对接几十个服务,几百个工具。如果你的工具都叫 searchcreate,AI 直接就懵了,不知道该用哪个。

所以,命名空间很重要!asana_search_tasksslack_search_messagesgithub_search_repos... 一目了然。这就像给工具贴上了明确的标签,AI 一看就知道该去哪个工具箱里拿东西。别说是 AI,就是人,清晰的命名也很重要。

3. 别扔给 AI 一堆乱码,要说"人话"

这一点我踩过无数坑。工具返回一堆 user_id: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"file_uuid: "x7y8z9..."

你让 AI 怎么记?它哪知道 a1b2c3d4 是张三还是李四?

直接返回自然语言!名字、描述、关键信息... 让 AI 能直接理解。如果实在需要 ID,可以加个参数,让 AI 选择要"简洁版"还是"详细版"的回复。就像这样:

  • 简洁版:"张三,产品经理,负责XX项目。"
  • 详细版:"{id: 'a1b2c3d4', name: '张三', role: '产品经理', project: 'XX项目'}"

AI 需要的时候再要 ID,平时就给它看人话。这能省下大量宝贵的"脑容量"。

4. AI 的"脑容量"是有限的,别浪费

AI 的上下文窗口就像我们的短期记忆,记不住太多东西。所以你的工具返回结果,一定要"减肥"。

分页、过滤、截断... 这些功能必须安排上。如果结果太长,就给它个提示:"结果太长被截断了,你可以缩小搜索范围再试试"。

错误信息也要写得"有用"。别动不动就抛个 Error 500,或者一长串代码堆栈。直接告诉它:"你输入的日期格式不对,请用 'YYYY-MM-DD' 的格式,比如 '2025-09-11'。" AI 看了才能改。

5. 这是最最最重要的一点:把工具描述当成"说明书"来写!

工具的描述和参数定义,就是 AI 唯一能看懂的"说明书"。你必须把它写得像给一个新员工培训一样。

  • 别用缩写user 不如 user_id 清晰。
  • 讲清楚上下文:这个工具是干嘛的?在什么场景下用?和其他工具有什么关系?
  • 给个例子:在描述里直接给一个正确的调用示例,效果拔群。

Anthropic 甚至说,他们仅仅通过优化工具描述,就让 Claude 在一个专业编程基准测试(SWE-bench)上达到了 state-of-the-art 的水平。你说这玩意儿重不重要?


写在最后,一些不成熟的思考

我们以前写软件,追求的是稳定、可控、逻辑严密。现在给 AI 写工具,追求的却是"易用"、"启发"、"符合直觉"。

这感觉就像从造一台精密的钟表,变成了培养一个有点个性的孩子。你不能完全控制它,但你可以通过给它好的"玩具"(工具)和好的"教育"(描述),引导它往更聪明的方向成长。

Anthropic 说了,要搞评估,要反复迭代,让 AI 自己优化自己的工具... 听着就头大,这工作量可不小。

这些道理听起来都挺对的,但实际操作起来呢?我的小项目,真有必要搞得这么复杂吗?还是说,这只是巨头们的"军备竞赛"?

我有点不确定。我只是觉得,合理就好,现在做事情,首先,凡事得讲就一个 ROI.

我们到底是在创造一个更听话、更高效的"工具",还是在培养一个更独立、甚至有点不可预测的"伙伴"?

如果它真的变得很"聪明",聪明到能自己优化工具,甚至自己创造工具... 那我们这些"工具制造者",又该何去何从?

相关推荐
passerby60611 小时前
完成前端时间处理的另一块版图
前端·github·web components
KYGALYX1 小时前
服务异步通信
开发语言·后端·微服务·ruby
掘了1 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅1 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅2 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
爬山算法2 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
崔庆才丨静觅2 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment2 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅2 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊2 小时前
jwt介绍
前端