工具

本页定义 Holon 面向模型的工具接口的当前契约:工具家族、权限分类、 schema/分发对齐,以及结果信封约定。

内置面向模型工具的机器可读清单是 model-tool-schema-inventory.json; 它的版本策略和刷新流程记录在 模型工具 schema 清册参考。

Last verified: 2026-05-27 against src/types.rs ToolCapabilityFamily, src/tool/tools/mod.rs builtin_tool_definitions(), src/tool/spec.rs, src/tool/dispatch.rs.

源 RFC

工具家族(ToolCapabilityFamily)

工具按能力家族分组,用于权限门控:

家族工具权限
CoreAgentWaitFor、GetAgent、SendAgentMessage、Enqueue、CreateTimer、ListTimers、GetTimer、CancelTimer、ListTasks、TaskStatus、TaskInput、TaskOutput、TaskStop、ListModelProviders、ListProviderModels、工作项工具、MemorySearch、MemoryGet所有 Agent profile
LocalEnvironmentExecCommand、ExecCommandBatch、ApplyPatch、ViewImage、GenerateImage、GetWorkspaceState、SwitchWorkspace、CreateWorktree所有 profile
AuthorityExpandingAttachWorkspace、DetachWorkspace、RemoveWorktree公有具名 Agent
WebWebFetch、WebSearch、XSearch所有 profile
AgentCreationCreateAgent、InvokeAgent公有具名 Agent
ExternalTriggerCreateExternalTrigger、CancelExternalTrigger所有 profile

操作者通知记录、投递回调和 UI 渲染仍是运行时拥有的能力。它们不属于面向模型的 工具清单;NotifyOperator 有意不出现在内置工具注册表和机器可读 schema 清单中。 ExternalTrigger 工具目前遵循同样的模式:它们在注册表中可分发,但不在面向模型的 接口中。

完整工具列表

工作项平面

工具用途
CreateWorkItem创建一个新的 open 工作项
UpdateWorkItem修改 objective、plan_status、todo_list
PickWorkItem设置当前焦点
GetWorkItem读取单个工作项,带计划预览
ListWorkItems按过滤器查询
CompleteWorkItem按 ID 完成一个自己拥有的目标;把同轮次的 assistant 文本提升为其规范完成报告
WaitFor记录任务、外部或操作者等待状态并让出

任务控制平面

工具用途
ExecCommand启动 shell 命令
ExecCommandBatch运行有界的顺序命令批次
ListTasks紧凑的活跃任务摘要,输出有界
TaskStatus单任务生命周期快照
TaskOutput有界输出预览,可选阻塞等待
TaskInput向交互式任务发送输入
TaskStop停止正在运行的任务

Agent 平面

工具用途
GetAgent读取当前 Agent 平面摘要
WaitFor记录显式等待状态后发出轮次结束信号
Enqueue安排自我后续消息
CreateAgent创建一个长期、可寻址的 Agent
SendAgentMessage向获授权 Agent 持久发送异步消息
InvokeAgent向常驻 Agent 发送并等待消息,或创建返回结果的受监督子 Agent

定时器平面

工具用途
CreateTimer创建一个独立或重复的定时器
ListTimers列出该 Agent 最近的定时器
GetTimer按 id 读取一个定时器
CancelTimer取消一个活跃定时器

模型平面

工具用途
ListModelProviders列出已配置或已发现的模型提供商
ListProviderModels列出某个提供商可选用的模型

图像平面

工具用途
GenerateImage根据文本提示生成一张图像
ViewImage校验本地图像并记录其元数据

工作区平面

工具用途
GetWorkspaceState读取绑定、活跃投影、worktree 和占用情况
AttachWorkspace附加工作区绑定但不切换
DetachWorkspace解除绑定;活跃目标回退到 agent home
SwitchWorkspace激活已有的工作区或 execution root
CreateWorktree创建或安全复用链接的 worktree
RemoveWorktree安全移除已注册的干净 worktree
ApplyPatch对文件应用统一 diff 补丁

记忆平面

工具用途
MemorySearch搜索 Agent 记忆来源
MemoryGet按 source_ref 获取精确记忆内容

Web 平面

工具用途
WebFetch抓取 HTTP/HTTPS URL
WebSearch网络搜索
XSearch搜索公开的 X 帖子

工具定义契约

每个工具由一个 BuiltinToolDefinition 定义:

BuiltinToolDefinition {
    family: ToolCapabilityFamily,
    spec: ToolSpec { name, description, input_schema, freeform_grammar },
}

关键契约:

输入与结果分离

Holon 严格区分工具的启动输入与结果元数据:

关键契约:

结果信封

工具执行返回一个 ToolResult,可序列化为 JSON,或渲染为人类可读回执:

ExecCommand 结果带有额外字段:disposition、exit_status、 initial_output_preview,以及 task_handle(在提升为 command_task 时)。

WaitFor 交付模式与等待所有权

WaitFor 记录显式等待状态并让出当前轮次。每次调用必须显式指定交付模式:

核心契约:

已知缺口