Anthropic优化工具描述,Claude在SWE-bench刷新纪录,好工具应为Agent而生

Anthropic 工程团队通过改进工具描述与设计流程,显著提升 Claude 在软件工程基准 SWE-bench 上的表现。其核心方法是将工具视为“确定性系统与非确定性 Agent 的新型契约”,并...

人工智能 阅读量: 1.36万

Anthropic 近期在软件工程能力评估基准 SWE-bench 上刷新了自身模型 Claude 的成绩——这一提升并非源于模型架构升级或更大规模训练,而来自一个看似微小却至关重要的改动:重新设计并优化了工具(Tool)的描述与接口规范。该成果源自其内部工程实践,并已公开为一套可复用的工具开发方法论,揭示了当前 AI Agent 应用落地中常被忽视的底层关键环节。

SWE-bench 是一个面向真实 GitHub 仓库问题的端到端软件修复评测集,要求模型理解问题、检索代码、生成补丁并验证结果,过程中需频繁调用外部工具(如搜索、代码编辑、执行环境)。此前,即便强大多模态模型也常因工具使用不当而失败:参数填错、调用顺序混乱、被冗余返回数据淹没,甚至因工具描述模糊而产生幻觉式推理。

Anthropic 团队指出,问题根源在于工具设计思维的错位:传统 API 面向人类开发者,追求功能完备与接口严谨;而 Agent 是非确定性系统,其行为受提示词、上下文长度与工具描述共同塑造。因此,工具不应是“现有 API 的简单封装”,而应是一种新型契约——连接确定性后端与非确定性智能体的桥梁。

文章配图

为实现这一转变,Anthropic 提出一套三阶段闭环工作流:原型构建、评估驱动、Agent 协同优化。

第一阶段是快速搭建原型。团队使用 Claude Code(Anthropic 推出的本地开发工具)接入 MCP(Model Context Protocol)服务器,将 SDK 文档(尤其是结构化良好的 llms.txt 格式文档)输入模型,由其辅助生成初步工具封装。随后在 Claude Desktop 或本地环境中直接测试调用链路。这一阶段不求完美,重在暴露实际交互中的“卡点”:例如用户问“今天要带伞吗?”,Agent 是否能正确触发天气查询而非凭空回答?是否因城市信息缺失而陷入循环追问?

第二阶段是构建真实场景评估体系。团队强调避免“玩具级”沙盒任务,转而设计需连续调用数十次工具的复杂任务流,并为每个任务配备可验证结果(如补丁能否通过 CI 测试)。评估时采用标准 LLM API 调用循环,同时启用交错思考(interleaved thinking)模式——即让 Agent 在调用工具前先输出推理步骤,这显著提升了决策透明度与准确性。除准确率外,指标还涵盖运行时长、token 消耗、工具调用频次与报错类型,这些数据成为后续优化的直接依据。

第三阶段最具启发性:让 Agent 参与工具重构。团队将评估过程中的完整转录(含工具调用请求与响应)汇总输入 Claude Code,指令其“一次性重构多个工具,确保实现与描述一致”。实践中发现,LLM 常能识别出人工编写的矛盾描述或低效 schema。例如,早期网页搜索工具中,Claude 会习惯性在 query 参数末尾追加“2025”,导致搜索结果偏差;经修正工具描述后,该行为消失。值得注意的是,团队严格划分训练集与留出测试集,防止过拟合。结果显示,无论工具最初由研究员手写还是由 Claude 生成,经过此流程优化后性能均进一步提升;在内部 Slack、Asana 等工具集成测试中,Claude 优化版表现反超人工版本。

基于上述实践,Anthropic 提炼出“好工具”的五条核心原则,其中前三条尤为关键:

评估驱动的工具优化循环:原型→评估→运行→分析

其一,选对工具,而非堆砌工具。常见误区是将所有 API 端点无差别暴露。但 Agent 的上下文窗口有限,无法高效处理海量返回数据。以通讯录为例,“list_contacts”返回全部 1,842 条记录会迅速耗尽 token;而“search_contacts(name='张三')”仅返回一条精准结果,更符合人类直觉与 Agent 认知负荷。

其二,工具命名即意图表达。图3对比显示,“List_contacts”易引发 Agent 误判为“遍历全部”,而“search_contacts”明确指向单次精准查询。团队建议采用动词+名词结构(如 message_contact、create_project),并统一命名空间(如 asana_search、jira_search),避免歧义。

其三,合并高频操作,减少调用次数。理想工具应封装常见多步任务。例如,一个“submit_code_review”工具可同时完成代码提交、关联 PR、添加评论三步,而非让 Agent 分别调用三个独立接口。这不仅降低错误概率,也节省推理成本。

选对工具而非堆工具:list_contacts vs search_contacts 对比示意图

此外,原则还强调工具边界清晰、避免功能重叠,以及提供充分示例(而非仅 schema 定义)。尤其重要的是,工具描述必须包含“典型失败场景”的预防性说明——例如注明“勿在 query 中附加年份,除非用户明确指定时间范围”,此类细节往往决定 Agent 行为的稳定性。

这一方法论的价值远超 Anthropic 内部应用。当前大量企业正将 Agent 集成至客服、研发、运营流程,但工具层的粗糙设计已成为落地瓶颈。许多团队投入巨资训练大模型,却在工具接口上沿用旧有 RESTful 规范,导致 Agent “高智商低执行力”。Anthropic 的实践表明:提升 Agent 实用性,70% 的工作不在模型侧,而在工具侧。

行业观察者指出,该思路与微软 Copilot Studio、Google Vertex AI Agent Builder 的演进方向趋同——从“模型为中心”转向“工具-模型协同优化”。未来,工具定义语言(如 Tool Calling Schema v2)、自动化评估框架(如 EvalScope)、以及面向 Agent 的 IDE 插件,或将构成新一代 AI 开发基础设施的核心组件。

技术演进从来不是单点突破。当 Claude 因一段更精准的工具描述而在 SWE-bench 上跃升数个百分点时,它提醒我们:在通往通用智能体的路上,最朴素的工程细节,往往藏着最关键的突破口。