AGENT HARNESS

工具、技能、MCP —— Agent 的'手'

Function Call → Skill 抽象 → MCP 协议,Agent 拿什么干活的演化路径。

作者 栗子 更新于 2026 年 5 月 约 7 分钟
CHAPTER 06

支柱三:工具、技能、MCP —— Agent 的"手"

大脑再聪明,没有手也只能想,不能做。这一章讲 Agent 如何获得操作世界的能力。

6.1 工具(Tool)的本质

抛开各种术语包装,工具的本质就一行:

工具 = 一段对 LLM 可见的 schema + 一段背后真正执行的代码

schema 长这样(OpenAI / Claude 的 function calling 协议都类似):

{
  "name": "get_weather",
  "description": "查询某个城市当前的天气情况",
  "parameters": {
    "city": { "type": "string", "description": "城市名,例如 杭州" }
  }
}

LLM 看到这段 schema 之后,知道:哦,我可以调一个叫 get_weather 的东西,传一个 city 字符串。当用户问"杭州现在多少度"时,它会输出一段 JSON:{"name": "get_weather", "args": {"city": "杭州"}}。Harness 接到这段 JSON,去真正的天气 API 调一下,把结果塞回模型。模型再用人话回答用户。

6.2 描述比代码更重要

新手最容易忽略的:工具的 描述(description) 比工具的代码实现更影响 Agent 表现。LLM 选不选这个工具,几乎全看 description 写得好不好。

  • 写清楚 什么时候 用、什么时候不 用。
  • 给反例("不要用这个工具去做 X,那是 Y 工具的活")。
  • 参数描述里写出格式约束、单位、典型取值范围。
  • 能给一两个调用示例最好。

6.3 MCP:工具协议的"USB-C"

2024 年底 Anthropic 提出 MCP(Model Context Protocol),被业界迅速接纳为工具协议的事实标准。它解决的痛点很直白:以前每接一个新工具都要写一遍胶水代码(OpenAI 一套、Claude 一套、LangChain 一套),太累。MCP 把工具发现 / 调用 / 返回都标准化成一个 protocol,工具开发者只写一次,所有支持 MCP 的 Agent 都能用。

到 2026 年,钉钉、GitHub、Slack、Notion、各家数据库、各类浏览器自动化都已经有官方或社区的 MCP server。在 Agent 工程里,"接一个新外部能力 = 找有没有现成 MCP server"已经成了第一反应。

i

"技能(Skill)"和工具的区别:工具是单次调用(查天气、发邮件),技能是组合工具完成更复杂任务的"小程序"(写周报、做竞品调研)。技能内部可以再调用工具、调用其它技能。skill 通常带一份指令模板(SKILL.md)告诉 Agent 怎么用。

📌

产品参照:

· Claude Code:MCP 的标杆消费方,原生 MCP client,"接外部能力 = 装一个 MCP server"已经成了官方推荐路径。

· 悟空(钉钉):把"Skill"做成显式的一级公民 —— 内置技能市场(DWS / 多维表 / 钉盘 / 审批等),用户可在企业内安装 / 共享 / 发布技能;技能内部既能调原生工具,也能挂载企业自有 MCP server。第 6.4 节描述的"Skill = 工具组合"在悟空里就是产品形态。

💡 阅读小贴士:蓝色虚线下划线的词都是术语,点击查看通俗解释。