Chapter 10

Tools:注册、过滤、调度、拦截与执行流水线

目标不是背 API,而是建立能从顶层设计一路推导到源码细节的心智模型。读完本章,你应该能解释“为什么这样设计”,而不仅是“代码在哪里”。

1. Tool Definition = 模型契约 + Host 执行

一个工具至少包含:名称、描述、参数 schema、输出声明、execute;还可以有 scheduler metadata、timeout、finalize、UI presentation。Registry 保存完整定义,但给模型的只是明确 allowlist 后的 schema。

2. 执行流水线

model tool_call ↓ validate / resolve visible tool tools/pre-execute ← approval / policy / rewrite ↓ tools/execute ← actual executor or wrapper ↓ tools/post-execute ← normalize / audit ↓ final immutable result ↓ session tool/result

3. 为什么要 pre/execute/post 三段

权限审批、沙箱、遥测、重试、结果脱敏这些横切能力,不应塞进每个工具实现。事件流水线让策略插件统一拦截,同时保持工具本身只关心业务。

4. Tool visibility 也是 scope

Registry 可以全局注册一批工具,再按 agent scoped restriction 控制实际暴露集。这比每个 agent 各自复制 registry 更容易保持单一实现和统一观察。

5. Code Mode 的架构意义

当工具很多时,给模型直接暴露全部 schema 成本高。DSH 的 Code Mode 把可用工具生成为 SDK 文本并通过运输工具调用,这是“模型接口层”的一种替换策略,不改变底层 tool registry。

源码定位:Tool Registry · packages/core/tools/README.md
打开官方源码/文档