微信扫码
添加专属顾问
我要投稿
揭秘Claude Code强大背后的核心设计理念,Anthropic团队分享AI Agent开发的实战经验。核心内容: 1. Claude Code成功的两大关键:强大的Agent模型与定制化工具 2. 大语言模型三大核心能力的差异化发展现状 3. 工具设计对AI Agent能力上限的决定性作用
Anthropic 的工程团队又发表了一篇 AI Agent 相关的技术文章——《Anthropic 官方分享:为 AI 智能体打造高效工具——让 AI 智能体来帮忙》。他们家的文章我每篇都至少看三遍,绝对是学习 AI Agent 开发的必读材料,毕竟,目前地表最强的 Coding Agent Claude Code 就出自他们之手,全是宝贵的一手实战经验。
很多人好奇 Claude Code 为什么这么强?其实秘诀可以归结为两点:
强大的 Agent 模型 + “量身定制”的高效工具
你可能会说,编程能力和上下文工程也很重要。没错,但如今强大的编程能力已是一线大模型的基础标配;而所谓的“上下文工程”,如果你深入去看 Claude Code 的实现,会发现其核心也是通过工具来巧妙管理的。它并没有什么花哨的技巧,就是把会话信息和工具集交给模型,让模型自己决定下一步是调用工具还是输出结果。
在深入聊工具之前,我们得先明白,现在的大语言模型已经分化出了不同的能力:
这些能力有时会存在“冲突”。比如像 Gemini 2.5 Pro 代码能力和写作能力都很强,但 Agent 能力却一般,导致基于它之上的 Gemini CLI 表现平平;与之相对的 GPT-5、Claude 4 的 Agent 能力非常强大,但写作表现反而一般,尤其是 GPT-5,写出来的文章简直没法看。
我想未来的发展趋势还是向更通用、更均衡的方向发展,目前 GPT-5 就在尝试这个方向,但还不够成熟;GPT-6 或许可以实现这样的突破。接下来期待一下 Gemini 3.0 和 DeepSeek R2,希望能给我们带来一些惊喜。
当一个模型具备了强大的 Agent 能力后,工具就成了它的手和脚,决定了它能力的上限。没有趁手的工具,再聪明的 Agent 也寸步难行。
这就是为什么 Claude Code 即使换成其他具备 Agent 能力的国产模型,表现依然不俗。因为它那套为编程场景精心设计的十几个工具,组合起来几乎能覆盖所有编程任务。
现在如果如果你要开发一个 Agent 应用,除非你非得用特定模型,大家起点都差不多,这些模型的价格也都能接受,反倒是工具成了成败的关键。
现在,让我们回到 Anthropic 的文章,看看他们总结的五大核心原则,学习如何打造“神器”级工具。
工具并非越多越好。一个常见的误区是把现有的 API 简单封装成工具丢给 Agent。这完全没考虑到 Agent 的“思考”方式。
Agent 的“上下文”是它有限的“内存”,而传统程序的内存则近乎无限。
文章举了一个例子:在一个地址本里找联系人。
list_contacts()
,它会返回所有联系人,Agent 不得不逐一“阅读”,极大浪费了宝贵的上下文空间。Contactss(name="Jane")
,它直奔主题,只返回相关结果,就像我们人类会按字母索引查找一样。核心思想:用一个强大的复合工具,替代多个单一功能的小工具。
list_users
、list_events
、create_event
三个工具。schedule_event
工具,它在内部完成查找参会者、检查日历、创建会议等一系列操作。这样做既能减少工具数量,避免 Agent“选择困难”,又能将复杂的中间步骤“黑盒化”,大大降低 Agent 犯错的概率。
当工具变多时,Agent 很容易混淆。清晰的命名空间(给工具名加上统一的前缀或后缀)能像路牌一样引导 Agent 做出正确选择。
之前 Manus 有一篇《AI 智能体的上下文工程:构建高效 Agent 的七个宝贵教训》里面也提到类似的技巧,借助统一的前缀为工具分组。
例如,通过服务和资源来划分:
asana_search
vs jira_search
asana_projects_search
vs asana_users_search
这种方式能显著降低模型调用错误工具的概率。
工具返回给 Agent 的信息,质量远比数量重要。Agent 更擅长处理自然语言,而不是看不懂的机器 ID。
文章里的例子一针见血:
user_id: "8a7b9c1d-f2e3-4a5b-8c6d-7e8f9a0b1c2d"
。Agent 很难理解和利用这个信息。user_name: "Jane Doe"
,或者至少是更易于处理的 0 索引 ID。一个更高级的技巧是,让 Agent 自己决定需要多详细的信息。可以在工具中加入一个 response_format
参数:
enum ResponseFormat {
DETAILED = "detailed", # 返回所有细节
CONCISE = "concise" # 只返回核心信息
}
这样 Agent 就可以按需索取,灵活又高效。
上下文空间寸土寸金,除了保证返回信息的质量,控制数量也至关重要。
举个 Claude Code 的细节,如果你一个代码文件少于 2000 行(实际可能有出入), Claude 会直接一次性加载到上下文中,如果超过这个数,那么它就会先调用代码检索工具,从文件中检索出跟上下文相关的一部分代码读取,根据需要可能多次读取,这样就算面对十万行以上的代码文件(我自己测试过),也能正常工作,而不是马上爆掉上下文。这就是典型的 Token 效率优化。
前面提到的 Manus 的那篇文章,也有过类似的分享:将文件系统作为外部上下文,就是把长的内容存到文件系统中,上下文中只保留文件路径,需要的时候再完整读取或者部分读取。
另一个被很多人忽略的细节是错误信息。当工具调用失败时,一个好的错误提示能引导 Agent 自我纠错。
{ "error": "InvalidInput" }
(Agent:错在哪了?我该怎么办?🤔){
"error": "Invalid date",
"message": "Date '2022-01-01' is in the past. Please provide a future date."
}
(Agent:原来是日期错了,我马上改!👍)好的错误信息不仅告诉 Agent “出错了”,还告诉它 “错在哪” 以及 “如何修复”。
嗯,Manaus 那篇文章也提到了保留并利用错误信息进行纠错。
工具的描述(Description)和参数说明,是 Agent 理解工具用途的唯一途径。这本身就是一种“提示工程”。
文章建议,你应该像向一位新入职的同事解释这个工具一样来写描述。把所有潜在的歧义、专业术语、使用前提都讲清楚。
user
(是用户 ID?用户名?还是邮箱?)user_id
或 user_email
Anthropic 文章中透露,Claude Sonnet 3.5 在权威的 SWE-bench 编程评测中能取得 SOTA 成绩,其中一个关键因素就是他们对工具描述进行了精确的优化,从而大幅降低了模型的错误率。
打造高效的 Agent 工具是一个需要反复迭代和评估的系统工程。它要求我们转变思维,从为确定性系统编程,转向为非确定性的 Agent 设计“交互界面”。
当然,这篇文章的内容远不止我总结的这些,强烈建议你阅读原文和翻译版本,相信会有更多收获。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-09-13
Docling将pdf转markdown以及与AI生态集成
2025-09-12
从“代码补全”到“知识对齐”:Qoder Repo Wiki 迎来重磅升级
2025-09-12
基于智能体的自适应资损防控体系 - 淘工厂实践(二)
2025-09-12
运维老王:创业第十年,我用Elevo找回内心翻腾的梦想
2025-09-12
大模型可观测1-5-10:发现、定位、恢复的三层能力建设
2025-09-12
Qwen3-Next:用混合注意力和高稀疏 MoE 把训练与推理成本打下来
2025-09-12
阿里推出夸克医疗大模型:医考70%高分背后,RAG为何是“压舱石”?
2025-09-12
GPT-4o-mini 调用参数终极优化手册
2025-08-21
2025-06-21
2025-08-21
2025-08-19
2025-06-19
2025-06-15
2025-07-29
2025-09-08
2025-08-19
2025-08-20
2025-09-12
2025-09-11
2025-09-11
2025-09-09
2025-09-09
2025-09-08
2025-09-08
2025-09-07