Skip to content

4.1 工具设计模式

引言:给 Agent 合适的工具

架构设计好了,首先得给 Agent 合适的工具。

工具是 Agent 与世界交互的唯一接口。工具设计得不好,Agent 再聪明也无用武之地——就像给一个外科医生递了一把锤子。


Anthropic 的五条工具设计原则

  1. 从 Agent 的视角写描述 — 工具描述是写给 LLM 看的"API 文档",不是写给人的。用 Agent 能理解的语言描述输入、输出和副作用。

  2. 一个工具做一件事 — 单一职责原则。一个工具既查数据库又发邮件,Agent 就很难判断何时该用哪个功能。

  3. 用枚举代替自由文本 — 参数尽量用枚举类型,减少 Agent 的决策空间。status: "open" | "closed" 远比 status: string 安全。

  4. 把隐式约定变成显式参数 — 如果工具调用有一个"大家都默认"的行为,把它变成显式参数。避免 Agent 靠猜来使用工具。

  5. 工具间避免重叠 — 两个工具做类似的事,Agent 会在选择上犹豫甚至选错。合并或明确区分。


反模式 vs 正确做法

工具描述写给人看LLM 理解偏差从 Agent 视角重写描述
一个工具做三件事选择困难 + 副作用多拆成三个独立工具
参数全是 stringAgent 猜格式,易出错用枚举、数字类型、正则约束
隐式默认行为Agent 不知道有默认值显式参数 + 描述默认值
工具职责重叠Agent 选错工具合并或严格区分
工具返回纯文本Agent 难以解析返回结构化 JSON
没有错误码约定Agent 不知道失败原因统一错误格式 + 可操作的错误信息

MCP 协议:工具生态的统一标准

Model Context Protocol(MCP)是 Anthropic 提出的开放协议,让 AI 模型以标准方式连接外部工具和数据源。

MCP 生态增长

  • 2024 年 11 月开源发布
  • 6 个月内 GitHub Star 突破 50K
  • 已有 5000+ 社区 Server 实现
  • 主流 IDE 全部接入(VS Code、JetBrains、Cursor)
  • 从 Claude 专属走向行业通用标准

MCP 的核心价值

  • 标准化:一套协议对接所有工具,不需要为每个模型写适配器
  • 可组合:MCP Server 可以像乐高一样组合,构建复杂工作流
  • 可复用:写一次 Server,所有支持 MCP 的客户端都能用

MCP Server 设计要点

好的 MCP Server
单一职责一个 Server 解决一个领域
资源 + 工具既能读取数据,也能执行操作
完善的 Schema参数类型、约束、示例齐全
错误友好返回 Agent 可理解和可操作的错误信息

本节小结

📌 本节核心要点

  • 工具描述是写给 LLM 的文档,要站在 Agent 视角设计
  • 单一职责 + 枚举参数 + 显式约定 = 好工具
  • MCP 是工具生态的统一标准,正在成为行业基础设施
  • 工具设计不好,再好的架构也无法落地

思考题

  1. 你现有的 Agent 工具,描述是写给人看还是写给 LLM 看的?试试从 Agent 视角重写一个。
  2. 有没有两个工具在做类似的事?如果 Agent 选错了,后果是什么?
  3. 如果要为你的项目写一个 MCP Server,你会选择哪个领域?为什么?

下一节预告

工具设计好了,但如果 Agent 拿着工具乱来怎么办?下一节我们谈安全与护栏。

下一节:安全与护栏