Skip to content

Tool 模型

Agent Tool 把经常被混成“工具”的概念拆成多层。

问题示例
Declaration什么能力可以被调用?get_weatherread_filebrowser.clickgenerate_image
Interface工具如何 validate、authorize、execute、stream、render 与 persist?strict schema、read-only classifier、progress mapper、result mapper。
Surface当前上下文可见哪些声明?turn tools、task tools、skill-activated tools、tenant-limited tools、deferred tools。
InvocationAgent 实际请求了什么?arguments、actor、policy refs、native call id、status。
Permission decision这次调用被 allow、deny、ask 还是 delegated?Rule decision、classifier decision、human approval、passthrough。
Scheduling何时运行、能否并发?Parallel reads、exclusive writes、interrupt behavior、sibling failure policy。
Execution它如何被执行?MCP server、本地原生命令、browser executor、API adapter、model task。
Result返回了什么?text、structured JSON、resource refs、artifact refs、errors、telemetry refs。
Persistence/rendering输出如何展示与存储?Inline result、persisted preview、UI card、transcript search text。

可移植实现即使面对只暴露单一对象的 provider,也应该保留这些层次。

身份

tool_id 用于可移植声明,原生 id 放在 external_mappings。不要为了统一命名而丢失 MCP tool、OpenAPI operation、browser action、provider function、CLI command 或 A2A task/artifact 的原始身份。

选择

工具选择依赖上下文。一个工具可以存在于 catalog,但因为 policy、setup、模型能力、任务范围,或需要先 deferred discovery,而不进入当前 surface。

输入边界

不要把工具输入当作单一可变对象。保持模型给出的参数与 observable、permission、final call input 分离。

结果

工具结果可以是 final、partial、denied、rejected、redacted、too large、synthetic,或被转换成 durable artifact。Result envelope 应说明发生了哪一种情况,而不是只返回普通文本。

Draft standard for portable agent tool declarations, runtime interfaces, invocations, progress, results, permissions, scheduling, and audit refs.