进三 Tool System:给 Agent 装手脚

进三 Tool System:给 Agent 装手脚

本章目录

03.1 Function Calling 与 Structured Output:模型怎么"学会"调函数

呼应 §03.3。补一句底层:模型不是你教它调函数,是训练时就学会了"输出符合 Schema 的 tool_use JSON"。你给工具清单(名字+参数类型),它生成调用;Structured Output(类型化输出,§03.3.1)是把返回也锁死成结构。

两者区别一句话:Function Calling 管"它想调啥",Structured Output 管"它返回啥样"

03.2 一次工具调用背后,经历了什么(以 Claude Code 为例)

你以为"调个工具"是一瞬间。其实是四步往返:

① 模型输出 tool_use(要调啥、参数)
② Harness 收到,在沙箱里真正执行
③ 执行结果包成 tool_result 返回
④ 模型带着结果进入下一轮推理

经验:所谓"Agent 卡",常卡在 ②③——工具慢、权限弹窗、沙箱起不来。优化工具侧,比优化模型侧见效快。

03.3 工具太多选不准?Deferred Loading 与动态工具集

2026 年 4 月,TianPan 一篇文给了个扎心数据:工具一多,LLM 选工具的准确率能跌到 13%。把所有工具 Schema 塞进上下文,既烧钱又选错。

解法三家共认:

  • Deferred Loading(懒加载):先只给少数常用工具,用到再加载。
  • 动态工具检索:按用户意图,从几百个工具里检索最相关的 5–10 个塞进去。
  • 路由层:用小模型先做"选工具"这道分类,再交大模型。
方案 思路 标叔的结论
全塞 简单但笨 工具>20 就崩
懒加载 用到才给 大多数场景够
动态检索 按意图挑 工具成百上千必上

03.4 MCP 的工程真相:协议很好,也有硬伤

§03 把 MCP 吹成 USB-C。补个平衡视角——2026 年 6 月 lonae《MCP 工程实战》从五维扒了硬伤:

硬伤 表现 工程解法
传输 早期 stdio 难上云、难流式 换 Streamable HTTP 传输
鉴权 没有统一 auth 标准 网关层补 OAuth
上下文膨胀 工具 Schema 全塞爆窗口 懒加载(03.3)
发现 没有原生服务注册 中心化 registry
可观测 中间过程黑盒 链路追踪补齐

核心建议:MCP 是方向,但别神话。接之前先想清:鉴权谁管?流式怎么推?失败了咋办?

03.5 Skills:Agent 时代的知识分发系统

这是 2026 很新的一种形态:把"某件事的 know-how"打包成可插拔的 Skill——里面是 prompt、流程、参考文档。Agent 需要时加载,像给人发一本操作手册。

它解决的是:知识不再写死在系统提示里,而是按需分发。你给 Agent 装 100 个 Skill,它一次只激活相关的两三个。

经验:Skill 本质是"上下文工程的产物"。它让"知识"从沉重提示,变成轻便、可版本化、可分享的模块。

03.6 你敢让 AI 直接跑 rm -rf 吗?四层防线

呼应 §07 七层安全。落到"执行"这一层,生产级权限要四道:

  1. 允许清单:只允许白名单命令/工具。
  2. 沙箱:在隔离环境跑,炸了不影响宿主。
  3. 人工审批:删库、外发、转账必须人点确认。
  4. 审计日志:做了啥全留痕、可撤销。

注意:永远别给 Agent 一个"全权限 Shell + 你的主账号"。宁可每步问你。