工具与外部能力
这一篇只看工具层和外部能力接入层。
这里真正要解决的不是“支持多少种插件”,而是几种完全不同来源的能力,怎样被压成同一批运行时对象,再被 Agent、Workflow、WebApp、OpenAPI 和微信入口一起复用。
适合谁读:已经看过 Agent 主链,接下来想知道运行时里的 Tool、API、MCP、Workflow 能力到底怎样汇到一起的人。
读前建议:先读 Agent 运行时与记忆机制,再看这一篇会更容易把工具层挂回主链。
先建立阅读坐标
- 这篇在主线里的位置:第四篇,用来回答“外部能力怎样统一进入平台运行时”。
- 带着这三个问题读:
- 为什么平台统一的是运行时接口,而不是存储结构。
- Builtin Tool、API Tool、MCP Tool、Workflow Tool 为什么可以并存。
- 为什么同一套工具装配链必须被 Agent、Workflow 和多入口一起复用。
- 先记住的对象:
BaseTool、StructuredTool、MCPManagedTool、WorkflowTool。 - 如果时间有限,优先看:整条闭环、第 1 节、第 5 节、第 7 节和第 9 节。
先看整条闭环
这条链里有几个固定边界:
- 工具来源并没有被强行统一。
- 统一的是
args_schema和BaseTool运行时接口。 - 平台配置里只保存“引用关系”,不直接保存工具实例。
- 调试、正式运行、Workflow 节点调用,尽量走同一套实例化逻辑。
1. 先把能力来源拆开
这个仓库里,工具和外部能力至少有四种来源:
| 来源 | 资产形态 | 存储位置 | 运行时落点 |
|---|---|---|---|
| Builtin Tool | YAML + Python 实现 | 仓库文件 | BaseTool |
| API Tool | 自定义 OpenAPI JSON + 拆分后的接口记录 | ApiToolProvider / ApiTool | StructuredTool |
| MCP Tool | MCP 服务配置 + discovery 后的工具目录 | MCPServer / MCPTool | MCPManagedTool |
| Workflow Tool | 已发布工作流图 | Workflow.graph | WorkflowTool |
真正写入应用配置的,不是这些工具的完整定义,而是一组轻量引用:
{
"type": "builtin_tool",
"provider_id": "tongyi",
"tool_id": "qwen_image_generation",
"params": {
"model": "qwen-image-max",
"size": "1664*928"
}
}
也就是说,运行时工具永远是“临时装配出来”的,不是直接把数据库或 YAML 原样当执行对象。