本阶段的核心命题 工具面决定产品上限。 模型再强,也只能在你给它的能力集合里行动;能力集合的粒度、命名、返回值和错误语义,直接决定了它能不能把任务做对。
这一阶段的产出,是产品经理最容易展现独特价值的地方——工具契约是产品定义,不是研发实现细节。
一个工具不是"一个 API",是一份给模型看的契约:
| 要素 | 要求 | 常见错误 |
|---|---|---|
| 名称 | 动词+宾语,语义唯一 | getData、query、process 这类名字等于没有 |
| 描述 | 说清何时用、何时不用,而不只是"这个接口做什么" | 直接抄 API 文档 |
| 参数 Schema | 类型、枚举、必填、格式、默认值、示例 | 全用 string;相对日期没有解析约定 |
| 返回值 | 结构固定、字段可预期、信息量适中 | 把上游 JSON 原样透传 |
| 错误语义 | 分类 + 人读原因 + 可执行的下一步 | 抛原始堆栈 |
| 副作用与幂等 | 明确标注是否改变世界、是否可重复调用 | 不标,导致重试变成重复下单 |
描述写不清楚 = 工具不存在 模型选工具靠的就是名称和描述。一个功能正确但描述含糊的工具,表现等同于没有这个工具——甚至更糟,因为它会在错误的场景被选中。Anthropic 在 Writing effective tools for AI agents 里给出的结论正是这一条:好工具是被刻意、清晰地定义出来的,且要节制地使用 Agent 的上下文。
大多数工具描述只写"能做什么",不写"不该用它做什么"。补上后一句,选错工具的概率会明显下降。例如:
get_published_fare:查询指定 OD + 日期的公布运价(航司对外发布的价目)。 不要用它查客户端在售价格——在售价格受渠道、库存、加价策略影响,与公布运价不同,请用 search_client_price。
| 粒度 | 例子 | 优点 | 代价 |
|---|---|---|---|
| 原子 API 级 | queryFlightList / queryCabinList / queryPrice | 灵活、复用性高 | 模型要自己编排多步,出错面大、token 多 |
| 业务动作级 | search_flights_with_price(od, date, cabin) | 一次调用完成一件事 | 灵活性下降 |
| 任务级 | plan_trip(自然语言需求) | 模型几乎不用编排 | 变成"套壳",边界模糊、难评测 |
判据:看这一步失败时,模型能不能自己修。
产品经理的默认起点 从业务动作级开始,只在实测发现"模型需要更细的控制"时才下沉,或"模型总是编排错"时才上浮。直接把内部微服务一比一暴露成工具,是最常见也最贵的错误——它把内部架构的复杂度全部转嫁给了模型。
这是最容易被忽略、但对成本和正确率影响最大的一项。
三条规则:
反面案例的识别方法:统计每个工具单次返回的平均 token 数。超过一两千 token 的只读工具,基本都有精简空间。
| 属性 | 设计要点 |
|---|---|
| 并行调用 | 无依赖的查询应当支持并行;工具本身要能并发安全 |
| 串行依赖 | 参数依赖前一步结果的工具,描述里要写清依赖("需要先调用 X 拿到 flight_no") |
| 幂等性 | 所有有副作用的工具必须支持幂等键。这是重试机制存在的前提 |
| 超时 | 工具要有自己的超时,且超时错误要与"失败"区分——超时可能已经生效了 |
| 副作用标注 | 至少三级:只读 / 可撤销写 / 不可撤销写。权限与确认策略按这个分级挂(阶段 11) |
超时是最阴险的一类错误 "占座请求超时"意味着可能占了也可能没占。如果 Agent 直接重试,用户可能被占两个座;如果直接放弃,可能白白占了一个座不释放。正确设计:超时后先查询状态再决定,且这条逻辑要写在工具契约里,不能指望模型自己想到。
模型产生 tool_use 后,不应直接调用业务函数。生产级执行链至少要区分:
三个关键判断:
每一道关都要单独可观察 最终只记录“工具失败”不够。要能区分参数校验、权限拒绝、Hook 阻塞、Sandbox 失败、业务错误和结果转换失败,并挂回父 Agent / Subagent 的调用链。
完整案例见 Claude Code:工具执行链。教程中的精确关卡数量是特定快照事实,不是需要背诵的行业标准。
MCP(Model Context Protocol)定义了 Agent 客户端与外部能力服务端之间的通信协议:
| 角色 | 职责 |
|---|---|
| Host | 承载模型与会话的应用(如 Claude Code、桌面 App) |
| Client | Host 内负责与某个 Server 通信的连接器 |
| Server | 提供 Tools / Resources / Prompts 的服务端 |
价值在于多对多变成一对多:N 个 Agent 客户端 × M 个能力提供方,从 N×M 的适配工作量降到 N+M。
截至 2026-08,MCP 的当前规范版本是 2026-07-28,官方称之为发布以来最大的一次修订。产品经理需要知道的几条:
| 变化 | 内容 | 产品含义 |
|---|---|---|
| 协议核心无状态化 | 移除协议级会话与 Mcp-Session-Id、移除 initialize/initialized 握手 | Server 可以按普通 HTTP 服务做水平扩容,不必粘性会话 |
| server/discover | 客户端先发现服务端支持的版本与能力,再决定怎么用 | 版本协商从"握手"变成"发现",兼容策略要重写 |
| 列表结果可缓存 | 列表响应带缓存提示与确定性顺序 | 工具列表不必每次全量拉取,冷启动更快 |
| Mcp-Method / Mcp-Name 头 | 方法名与工具名走 HTTP 头 | 网关可以在头上做路由与鉴权,这对企业内网关是关键能力 |
| MRTR(多轮往返请求) | 服务端→客户端的请求(sampling、elicitation)不再依赖常开的双向流 | 部署形态更简单,更适合无状态基础设施 |
| Tasks / MCP Apps 升级为一等公民 | — | 长任务与富交互进入协议本体 |
| 授权收紧 | OAuth 相关要求更严 | 企业接入的合规路径更清晰,但改造成本也在这里 |
落地前请核对官方规范原文 上表来自 2026-07-28 规范发布公告与随后的路线图公告。部分特性的弃用状态(如 Roots / Sampling / Logging)在二手报道中说法不一,涉及改造决策时请以 modelcontextprotocol.io 的规范页 与官方博客为准。本讲义写作时间 2026-08-25。
MCP Server 不只提供 Tools,也可能提供会改变模型行为的 Instructions。产品设计要把它当作外部输入处理:
Claude Code 的实现案例见 Claude Code:扩展面。
| 解决什么 | 谁在用 | |
|---|---|---|
| API | 系统间调用 | 程序 |
| MCP | Agent 客户端 ↔ 能力服务端的标准接线 | Agent 运行时 |
| Plugin / Extension | 给某个具体 Harness 加能力 | 该 Harness |
| Skill | 给模型提供怎么做的知识与流程 | 模型 |
| A2A | Agent ↔ Agent 通信 | 多 Agent 系统 |
产品判断:MCP 不是壁垒 接得上 20 个 MCP Server 不等于产品变强。协议是降低接入成本的公共品——一旦成为公共品,它就不再是差异化来源。真正的壁垒在:工具背后的独家数据与业务闭环、工具契约的质量、以及围绕它的评测与治理。
这一判断在 2026 年更明确了:A2A 于 2026-08-17 转入 Linux Foundation 旗下的 Agentic AI Foundation,与 MCP 一起走向中立治理。协议正在变成基础设施,而基础设施不给任何人护城河。
Skill 解决的问题和 Tool 不同:Tool 提供"能做什么",Skill 提供"该怎么做"。
Anthropic 的 Agent Skills 用三级渐进式披露组织内容:
| 级别 | 内容 | 何时加载 |
|---|---|---|
| 一级 | YAML frontmatter(name + description) | 用于能力发现,只够判断“要不要用它”;具体注入位置不视为稳定契约 |
| 二级 | SKILL.md 正文 | 模型认为相关时加载 |
| 三级 | 目录内的其他文件 | 需要时按路径读取 |
这套结构的产品意义:让"知识很多"和"上下文很贵"这两件事同时成立。
本仓自己就是这套方法的实践场:.claude/skills/ 有 35+ 个 Skill,其 name / description 强制保持英文,是本仓为索引与触发匹配制定的约定,不是 Claude Code 官方要求所有 Skill 元数据必须使用英文。
Skill 元数据也可以承载运行语义 Claude Code 的案例表明,Skill 元数据不只用于触发,还可能决定模型、推理强度、执行 Agent、上下文隔离、工具白名单、路径触发和自带 Hook。基础教程不要求记具体字段,但产品方案必须回答:这个 Skill 在什么上下文、以什么权限、由谁执行、过程是否回流主会话。
完整案例见 Claude Code:Skills / Plugins / MCP / Commands。
第五条:技能规模化之后是治理问题,不是写作问题 OWASP 为技能生态单列了一份 Agentic Skills Top 10(AST01–AST10),其中 AST09「无治理」 描述的场景很具体:技能被个人随手安装,组织既没有清单、没有审批流程,也没有审计轨迹,安全团队完全没有可见性。
这条对本仓直接适用——35+ 个 Skill 已经越过了"随手写几个"的规模。阶段 5 实践里创建 Skill 时,顺手回答三个问题:谁能装、装了谁知道、能不能查到它做过什么。注意 AST 与 ASI(阶段 11 的 Agentic 应用十大风险)是两份独立清单,编号别混。
当工具数量增长到几十个,工具定义本身就成了上下文负担——这是"工具面也要做上下文工程"的直接体现。
三种解法:
| 解法 | 做法 | 代价 |
|---|---|---|
| 分组/命名空间 | 按域分组,按会话类型只暴露相关组 | 需要提前知道用户意图 |
| Tool Search | 工具定义按需检索加载 | 多一次检索延迟;检索错就没工具用 |
| Code Execution 模式 | 把大量 API 变成代码里的库,让模型写代码调用 | 上下文省得多,但沙箱要求高(阶段 11) |
本仓已有资料 Tool Search 与 Codex:注册、路由与延迟加载 讲的是同一个问题的两种实现。
| 误区 | 纠正 |
|---|---|
| "把 API 都暴露成工具就行了" | 内部架构复杂度会全部转嫁给模型 |
| "工具描述是研发写的" | 描述是产品定义,决定模型行为 |
| "返回越全越好" | 返回是上下文成本,也是注意力稀释源 |
| "接了 MCP 就有生态了" | 协议是公共品,不构成壁垒 |
| "Skill 就是提示词模板" | 核心机制是渐进式披露与触发匹配 |
| "工具报错让模型自己想办法" | 错误信息必须给出可执行的下一步 |
| "重试是研发的容错逻辑" | 有副作用的工具没有幂等键,重试就是重复执行 |
| "只读工具没风险" | 只读工具的返回内容是提示词注入的主要载体(阶段 11) |
| "Schema 合法就可以执行" | 还要过业务校验、Hook、权限、执行环境与结果转换 |
| "MCP Server 只提供工具" | 它也可能注入 Instructions,属于供应链和上下文治理面 |
| 资料 | 出处 | 读它拿什么 |
|---|---|---|
| Writing effective tools for AI agents | Anthropic,2025-09-11 | 本阶段主教材:工具设计的评测驱动方法 |
| Equipping agents for the real world with Agent Skills | Anthropic,2025-10-16 | Skill 的设计原则与创作指南 |
| The Complete Guide to Building Skills for Claude | Anthropic 资源库 | 三级渐进式披露的完整说明 |
| OWASP Agentic Skills Top 10(AST01–AST10) | OWASP | 技能包生态的十类风险,与 ASI 系列是两份独立清单,别混编号 |
| MCP 2026-07-28 规范发布公告 | MCP 官方博客 | 本次大改的权威说明 |
| MCP 新路线图 | MCP 官方博客,2026-08-23 | 渐进式发现与 Agent 授权的方向 |
本仓已有资料: