通用 Agent Tool Adapter
已有 Agent 不必经 MCP 或启动 HTTP 服务。应用创建 Graph 后,导入 @devcodex/capability-graph/tools 的 createGraphTools,将 definitions 转为宿主工具格式,将调用转发给 call。
前置是你已有一个能发送工具定义、接收调用、回送结果的 Agent。只有模型 API 客户端、还没有工具循环时,先实现宿主自己的循环;本包不提供 Agent 运行时。
完成第一次工具调用
graph 的完整创建/释放流程见快速开始。每个定义含 name/description/inputSchema/outputSchema,自包含 Draft2020 Schema。definitions 只读,调用返回 {ok:true,data} 或 {ok:false,error},复用 SDK 语义。
call(name,args?,options?) 默认 args 为 {};options.signal/timeoutMs 控制 match。未知/禁用工具明确报错。默认五工具;createGraphTools(graph,{enableMatch:true}) 要求 Graph 已配置模型,才增加第六个 match。
宿主当前模型读 Catalog、选择 ID、Resolve;不需要二次模型调用。Adapter 借用 Graph,不关闭它,不动态注册 Provider 中所谓执行工具。接入特定 Agent 的工具格式由调用方转换。
把定义映射到宿主工具格式
以下是放在已创建graph的应用中的接入片段。宿主字段因框架而异,这里以常见的function工具形状展示映射,最终以你的宿主公开接口为准,不虚构统一Agent注册API。
这里的name/arguments_是本例一次调用,不是自动执行能力。实际Agent应将已校验的工具名和参数传给call,并把outcome按宿主要求回送。outputSchema由需要它的宿主另行采用,不能把GraphTools的{ok,data/error}外壳说成原始ResolveResult。
未知/禁用工具会得到 ok:false,error.code:'CG_INPUT_INVALID';创建时enableMatch:true却无executor会同步抛CG_MODEL_NOT_CONFIGURED/config。definitions不是Provider能力列表,模型从Catalog选择能力后仍调用同一个resolve工具。
验证接线与处理失败
结束时由应用关闭 Graph;Adapter 没有独立服务或端口。工具定义转换只是格式映射,真实宿主的工具调用与多轮继续需在对应框架验证。