Skip to content

工具目录

相关文档: 函数系统 — 函数与工具的区分 | role.yaml 参考 — 角色定义参考 | CLI 参考 — 命令行工具

Rolebox 在运行时注册约 80 个内置工具,涵盖代码智能(LSP)、会话管理、记忆存储、任务调度、资产查询、网络请求等能力域。每个工具均通过 defineTool()src/platform/ports/tool-factory.ts)定义,使用 Zod Schema 声明参数,LLM 可直接调用。

LSP 工具(代码智能)

v0.17.0 引入 — 32 个 LSP 协议工具,覆盖诊断、导航、补全、重构、格式化等能力(CHANGELOG.md:200)

共 32 个工具,通过 createAllLspTools()src/lsp/index.ts:117)批量注册,基于 LSP 协议与编辑器语言服务器交互。

工具名说明定义文件
lsp_diagnostics获取文件或全部打开文档的诊断信息(错误/警告/提示)src/lsp/tools/diags.ts
lsp_goto_definition跳转到符号定义位置src/lsp/tools/nav.ts
lsp_goto_type_definition跳转到符号类型定义位置src/lsp/tools/nav.ts
lsp_goto_implementation跳转到符号实现位置src/lsp/tools/nav.ts
lsp_goto_declaration跳转到符号声明位置src/lsp/tools/nav.ts
lsp_find_references查找符号在全部文件中的引用src/lsp/tools/nav.ts
lsp_document_highlights高亮当前文件中符号的所有出现src/lsp/tools/nav.ts
lsp_document_symbols列出当前文件中定义的所有符号src/lsp/tools/symbols.ts
lsp_workspace_symbols搜索整个工作区的符号src/lsp/tools/symbols.ts
lsp_hover获取符号的类型签名与文档src/lsp/tools/hover.ts
lsp_signature_help获取函数/方法的参数签名信息src/lsp/tools/hover.ts
lsp_completion获取指定位置的代码补全建议src/lsp/tools/completion.ts
lsp_prepare_rename准备重命名符号(验证可行性)src/lsp/tools/rename.ts
lsp_rename在工作区范围内重命名符号src/lsp/tools/rename.ts
lsp_code_actions获取指定范围的可用代码操作src/lsp/tools/code-actions.ts
lsp_execute_code_action按标题执行指定代码操作src/lsp/tools/code-actions.ts
lsp_format_document格式化整个文档src/lsp/tools/format.ts
lsp_format_range格式化指定范围src/lsp/tools/format.ts
lsp_prepare_call_hierarchy准备调用层级src/lsp/tools/hierarchy.ts
lsp_incoming_calls获取调用当前符号的调用者src/lsp/tools/hierarchy.ts
lsp_outgoing_calls获取当前符号调用的被调用者src/lsp/tools/hierarchy.ts
lsp_type_hierarchy_supertypes获取类型的父类型src/lsp/tools/hierarchy.ts
lsp_type_hierarchy_subtypes获取类型的子类型src/lsp/tools/hierarchy.ts
lsp_folding_ranges获取文档的折叠范围src/lsp/tools/structure.ts
lsp_selection_ranges获取指定位置的层级选择范围src/lsp/tools/structure.ts
lsp_semantic_tokens获取语义 Token(语法高亮信息)src/lsp/tools/structure.ts
lsp_code_lens获取代码镜头(运行/测试命令)src/lsp/tools/lens.ts
lsp_inlay_hints获取内联提示(类型/参数名)src/lsp/tools/lens.ts
lsp_document_links获取文档中的可点击链接src/lsp/tools/lens.ts
lsp_document_colors获取文档中的颜色信息src/lsp/tools/lens.ts
lsp_servers列出所有 LSP 服务器及其状态src/lsp/tools/server-mgmt.ts
lsp_restart_server按语言 ID 重启指定 LSP 服务器src/lsp/tools/server-mgmt.ts

lsp_diagnostics

获取诊断信息。

参数(src/lsp/tools/diags.ts:16

参数类型必需说明
filePathstring文件绝对路径,省略时聚合所有打开文档
severity"error" | "warning" | "information" | "hint" | "all"最低严重级别过滤,默认 "all"

返回格式: 格式化的诊断表格(文件名、行号、严重级别、消息)。

示例

typescript
// 获取特定文件的全部错误
lsp_diagnostics({ filePath: "/project/src/app.ts", severity: "error" })
// → "File: file:///project/src/app.ts\n| Severity | Line | Message |\n| ..."

// 聚合所有打开文档的诊断
lsp_diagnostics({ severity: "warning" })

lsp_goto_definition

跳转到符号定义。

参数(src/lsp/tools/nav.ts,通过工具内的 Zod schema 定义)

参数类型必需说明
filePathstring文件绝对路径
linenumber0-based 行号
characternumber0-based 字符偏移

返回格式: 格式化的位置列表(文件、行、列)。

lsp_workspace_symbols

搜索工作区符号。

参数(src/lsp/tools/symbols.ts

参数类型必需说明
querystring搜索查询

返回格式: 按符号种类分组的列表。

lsp_find_references

查找符号引用。

参数

参数类型必需说明
filePathstring文件绝对路径
linenumber0-based 行号
characternumber0-based 字符偏移
includeDeclarationboolean是否包含声明,默认 true

返回格式: 位置列表 + 上下文代码片段。

lsp_completion

获取代码补全。

参数(src/lsp/tools/completion.ts

参数类型必需说明
filePathstring文件绝对路径
linenumber0-based 行号
characternumber0-based 字符偏移
maxItemsnumber最大返回数,默认 20

返回格式: 补全项目列表(标签、类型、详情、文档)。

lsp_code_actions

获取代码操作。

参数(src/lsp/tools/code-actions.ts

参数类型必需说明
filePathstring文件绝对路径
startLinenumber起始行(0-based)
startCharnumber起始字符(0-based)
endLinenumber结束行(0-based)
endCharnumber结束字符(0-based)
kindstring操作种类过滤(如 "quickfix"

lsp_format_document / lsp_format_range

格式化文档。

参数lsp_format_document

参数类型必需说明
filePathstring文件绝对路径

返回格式: 变更行数摘要或完整格式化内容。

lsp_rename

重命名符号。

参数(src/lsp/tools/rename.ts

参数类型必需说明
filePathstring文件绝对路径
linenumber0-based 行号
characternumber0-based 字符偏移
newNamestring新的符号名

返回格式: 修改的文件数量与编辑位置摘要。

lsp_hover

获取悬浮信息。

参数(src/lsp/tools/hover.ts

参数类型必需说明
filePathstring文件绝对路径
linenumber0-based 行号
characternumber0-based 字符偏移

返回格式: 类型签名与文档字符串。

lsp_servers

列出 LSP 服务器状态。

参数(src/lsp/tools/server-mgmt.ts

无参数。

返回格式: 服务器列表(语言 ID、状态、PID、运行时长)。


会话工具(Session Tools)

v0.17.0 引入 — 10 工具会话管理套件,含 4 个 omo 兼容工具和 6 个独有工具(CHANGELOG.md:198)

共 6 个工具(含 4 个别名),通过 buildCanonicalTools()src/platform/tool-assembly.ts:91-109)注册。

工具名说明定义文件
session_list列出所有会话,支持日期过滤src/session/session-browse-tools.ts
session_search全文搜索会话消息src/session/session-browse-tools.ts
session_read读取会话完整转录src/session/session-inspect-tools.ts
session_info获取会话综合信息src/session/session-inspect-tools.ts
session_diff获取会话的变更差异src/session/session-inspect-tools.ts
session_fork在指定消息处分叉会话src/session/session-inspect-tools.ts
session_inspectsession_info 的别名src/platform/tool-assembly.ts:107
session_changessession_diff 的别名src/platform/tool-assembly.ts:108
session_branchsession_fork 的别名src/platform/tool-assembly.ts:109

通用参数模式(通过 ToolContext 自动注入)

会话工具使用 ISessionClient 接口操作 opencode 的会话存储。directory 参数通常从 ToolContext 自动获取,部分工具支持通过 project_path 显式指定。

session_list

参数(src/session/session-browse-tools.ts:15

参数类型必需默认说明
limitnumber20最大返回数(1-100)
from_datestringISO 8601 开始日期
to_datestringISO 8601 结束日期
project_pathstring当前目录按项目目录过滤

返回格式: Markdown 表格(会话 ID、标题、消息数、日期、时长)。

示例

typescript
session_list({ limit: 5, from_date: "2026-01-01" })
// → | Session ID | Title | Messages | Created | Duration |

参数(src/session/session-browse-tools.ts:62

参数类型必需默认说明
querystring搜索文本
session_idstring限定单个会话搜索
case_sensitivebooleanfalse是否大小写敏感
limitnumber20最大结果数
include_tool_outputbooleanfalse是否搜索工具调用输出

返回格式: 排序后的匹配结果,含上下文摘录和高亮匹配项。

session_read

参数(src/session/session-inspect-tools.ts:20

参数类型必需默认说明
session_idstring会话 ID
include_todosbooleanfalse包含待办列表
include_thinkingbooleanfalse包含推理过程
include_tool_resultsbooleanfalse包含工具调用输出
limitnumber全部最大消息数
offsetnumber0跳过的消息数
role_filter"user" | "assistant"按角色过滤
tool_filterstring按工具名子串匹配过滤

session_info

参数(src/session/session-inspect-tools.ts:77

参数类型必需说明
session_idstring会话 ID

返回格式: 综合信息(Token 用量/成本/工具调用频率/模型分布/文件修改/待办进度)。

session_diff

参数(src/session/session-inspect-tools.ts:126

参数类型必需说明
session_idstring会话 ID
message_idstring截断到指定消息

返回格式: Unified diff。

session_fork

参数(src/session/session-inspect-tools.ts:146

参数类型必需说明
session_idstring要分叉的会话 ID
message_idstring分叉点消息 ID(默认最末条)

返回格式: 分叉结果(原会话信息 + 新会话信息)。


记忆工具(Memory Tools)

v0.20.0 引入 — 4 个记忆工具(memory_write/recall/list/update),SQLite + FTS5 持久化(CHANGELOG.md:140)

4 个工具,使用 MemoryStoresrc/memory/store.ts)持久化到本地文件系统。

工具名说明定义文件
memory_write写入新的记忆条目src/memory/tools.ts:7
memory_recall全文搜索记忆src/memory/tools.ts:61
memory_list列出记忆摘要src/memory/tools.ts:110
memory_update更新已有记忆条目src/memory/tools.ts:153

memory_write

参数(src/memory/tools.ts:11

参数类型必需默认说明
titlestring简短标题(最长 200 字符)
contentstringMarkdown 格式内容
category"decision" | "preference" | "fact" | "lesson" | "note""note"分类
scope"workspace" | "role""role"共享范围
tagsstring[]标签
relevance"high" | "medium" | "low""medium"相关性

返回格式: 包含记忆 ID 的确认消息。

示例

typescript
memory_write({
  title: "DB connection string",
  content: "PostgreSQL at localhost:5432, user=app",
  category: "fact",
  scope: "workspace",
  tags: ["database", "config"],
  relevance: "high"
})
// → "Memory written. ID: abc123"

memory_recall

参数(src/memory/tools.ts:65

参数类型必需默认说明
querystring全文搜索查询
scope"workspace" | "role" | "both""both"搜索范围
categorystring分类过滤
limitnumber10最大结果(1-50)

返回格式: 排序后的记忆条目列表(ID、标题、分类、相关性、内容摘要)。

memory_list

参数(src/memory/tools.ts:114

参数类型必需默认说明
scope"workspace" | "role" | "both""both"
categorystring
limitnumber20最大结果(1-100)
sort"recent" | "relevance" | "accessed""recent"

memory_update

参数(src/memory/tools.ts:157

参数类型必需说明
idstring要更新的记忆 ID
titlestring
contentstring
category"decision" | "preference" | "fact" | "lesson" | "note"
tagsstring[]
relevance"high" | "medium" | "low"

调度工具(Dispatch Tools)

v0.10.0 引入 — 事件驱动 Dispatch 引擎,支持同步/后台分发、审批、指标与进度报告(CHANGELOG.md:316)

通过 buildCanonicalTools()src/platform/tool-assembly.ts:113-130)条件注册。

工具名说明定义文件
dispatch向子代理分发任务(同步/后台)src/dispatch/tools.ts:13
dispatch_output获取已完成后台任务的结果src/dispatch/tools.ts:116
dispatch_cancel取消运行中的后台任务src/dispatch/tools.ts:262
dispatch_approve批准等待人工审批的任务src/dispatch/tools.ts:280
dispatch_reject拒绝等待人工审批的任务src/dispatch/tools.ts:311
dispatch_metrics获取调度子系统运行时指标src/dispatch/tools.ts:347
dispatch_status查询任务活跃度或汇总表src/dispatch/query/task-status.ts:49
dispatch_progress发送进度事件src/dispatch/progress/progress-tools.ts
dispatch_stream查询累积的进度事件src/dispatch/progress/progress-tools.ts

dispatch

参数(src/dispatch/tools.ts:21

参数类型必需说明
subagentstring目标子代理 ID
promptstring任务提示词
run_in_backgroundboolean是否后台运行
descriptionstring人类可读的任务描述
session_idstring续做之前任务的 ID
timeout_msnumber后台任务超时(毫秒)

返回格式

  • 同步执行:子代理返回的原始文本
  • 后台执行:任务 ID 和会话 ID,提示等待 <system-reminder>

示例

typescript
// 后台分发
dispatch({
  subagent: "emperor--jinyiwei--ui",
  prompt: "Create a button component with blue accent color",
  run_in_background: true,
  description: "UI button component"
})
// → "Background task launched.\nTask ID: bg_xxx\n..."

// 续做已有任务
dispatch({
  subagent: "emperor--jinyiwei--ui",
  prompt: "Continue from where you left off",
  run_in_background: true,
  session_id: "bg_xxx"
})

dispatch_output

参数(src/dispatch/tools.ts:120

参数类型必需默认说明
task_idstring要查询的任务 ID
max_charsnumber16000内联最大字符数
offsetnumber0读取起始偏移
limitnumber从 offset 读取最大字符数
tailboolean读取末尾内容

dispatch_metrics

参数(src/dispatch/tools.ts:351

参数类型必需默认说明
format"summary" | "json""summary"输出格式
export_pathstringJSON 导出路径

调度查询工具(Dispatch Query & Budget)

v0.21.0 引入 — 任务搜索、图可视化、预算查询、时间线、导出、并发与重试工具(CHANGELOG.md:89)

ToolServicesrc/core/services/tool-service.ts:70-87)以 extraTools 注册。

工具名说明定义文件
task_search搜索调度任务历史src/dispatch/query/task-search.ts
task_graph可视化调度任务依赖树src/dispatch/query/task-graph.ts
task_budget查询 Token/成本预算状态src/dispatch/budget/task-budget.ts
task_chronology按时间分桶显示任务活动src/dispatch/query/task-chronology.ts
task_export导出已完成任务的完整结果src/dispatch/query/task-export.ts
task_concurrency查看并发槽位状态src/dispatch/concurrency/task-concurrency.ts
task_retry重试失败的任务src/dispatch/query/task-retry.ts

参数(src/dispatch/query/task-search.ts:17

参数类型必需默认说明
querystring全文搜索(不区分大小写)
status"pending" | "running" | "completed" | "error" | "cancelled" | "timeout"状态过滤
agentstring子代理名精确匹配
parent_sessionstring父会话 ID 过滤
from_datestringISO 8601 开始日期
to_datestringISO 8601 结束日期
limitnumber20最大结果(1-100)
include_resultbooleanfalse包含结果预览

task_retry

参数

参数类型必需默认说明
task_idstring要重试的任务 ID
modify_promptstring在原始提示前追加的内容
reset_budgetbooleanfalse重置预算计数器

dispatch_checkpoint

创建或更新任务执行检查点。

参数

参数类型必需说明
task_idstring任务 ID
phasestring当前阶段标签
completed_itemsstring[]已完成项
remaining_itemsstring[]待处理项
metadataRecord<string, unknown>自定义元数据

函数状态工具(Function State Tools)

2 个工具,由 ToolService 注册。

工具名说明定义文件
function_state查询当前会话的函数状态机src/function/function-state.ts
function_graph可视化函数依赖关系/状态机图src/function/function-graph.ts

function_state

参数

参数类型必需默认说明
session_idstring当前会话检查的会话 ID
include_artifactsbooleantrue包含制品文件状态
include_evidencebooleantrue包含证据观察标签

资产管理工具(Asset Tools)

v0.21.0 引入 — 6 个资产查询工具,覆盖搜索/检查/验证/热重载/组合分析/引用搜索(CHANGELOG.md:89)

6 个工具,用于查询和操作 Rolebox 资产(技能、函数、引用)。

工具名说明定义文件
asset_search按关键词搜索资产src/asset/asset-search.ts:145
asset_inspect按精确名称查看单个资产src/asset/asset-inspect.ts:264
asset_validate验证所有资产的完整性src/asset/asset-validate.ts:278
asset_hot_reload触发资产热重载src/asset/hot-reload.ts:10
skill_compose分析技能组合的冲突与引用去重src/asset/skill-compose.ts:194
reference_search在引用文档中全文搜索src/utils/reference-search.ts:113

参数(src/asset/asset-search.ts:154

参数类型必需默认说明
querystring搜索关键词(AND 逻辑)
type"skill" | "function" | "reference" | "all""all"资产类型过滤
role_idstring按角色 ID 限定
limitnumber20最大结果(1-50)

示例

typescript
asset_search({ query: "compose", type: "skill" })
// → "## Asset Search Results: compose\n\n| Name | Type | Role | Description |\n| ..."

asset_inspect

参数(src/asset/asset-inspect.ts:269

参数类型必需说明
namestring资产精确名称
type"skill" | "function" | "reference"资产类型

asset_validate

参数(src/asset/asset-validate.ts:286

参数类型必需默认说明
role_idstring全部限定检查的角色
fixbooleanfalse尝试自动修复

asset_hot_reload

参数(src/asset/hot-reload.ts:17

参数类型必需默认说明
type"skill" | "function" | "reference" | "role""role"资产类型
namestring特定资产名称

skill_compose

参数(src/asset/skill-compose.ts:202

参数类型必需默认说明
skill_namesstring[]要分析组合的技能名称
check_conflictsbooleantrue检查工具权限冲突

参数(src/utils/reference-search.ts:119

参数类型必需默认说明
querystring子串匹配搜索
case_sensitivebooleanfalse
limitnumber10最大结果(1-50)
context_linesnumber2上下文行数(0-10)
role_idstring限定角色

网络工具(Web Tools)

v0.22.0 引入 — web_search/web_read/web_fetch 三件套,支持多渲染引擎与 SSRF 防护(CHANGELOG.md:47)

3 个工具,支持 SSRF 防护、多种渲染引擎、内容格式转换。

工具名说明定义文件
web_search搜索网络信息(Jina/DDG/Wikipedia/npm/HN)src/web/web-search.ts:22
web_read读取 URL 并转换为 LLM 友好的 Markdownsrc/web/page-read.ts:24
web_fetch全面 HTTP 客户端,支持多引擎多格式src/web/web-fetch.ts:368

参数(src/web/web-search.ts:28

参数类型必需默认说明
querystring搜索查询(最长 500 字符)
source"auto" | "jina" | "duckduckgo" | "wikipedia" | "npm" | "hackernews""auto"搜索源
max_resultsnumber5最大结果(1-10)

返回格式: 排序后的搜索结果(标题、URL、摘要、来源)。

示例

typescript
web_search({ query: "React 19 new features", max_results: 3 })
// → "## Search Results for \"React 19 new features\"\n1. [React 19](https://react.dev/) ..."

web_read

参数(src/web/page-read.ts:30

参数类型必需默认说明
urlstring页面完整 URL
selectorstringCSS 选择器提取特定内容
engine"default" | "browser""default"渲染引擎

返回格式: 干净的 Markdown 文本,Jina Reader 为首选后端。

web_fetch

参数(src/web/web-fetch.ts:379

参数类型必需默认说明
urlstring完整 URL(http/https)
format"markdown" | "text" | "html" | "json" | "raw" | "auto""auto"输出格式
engine"default" | "browser" | "jina" | "reader""default"渲染引擎
selectorstringCSS 选择器
timeoutnumber30超时秒数(1-120)
max_sizenumber51200最大输出字节数(1KB-5MB)
headersRecord<string, string>自定义请求头
include_metadatabooleanfalse包含页面元数据

行哈希编辑工具(Hashline Tools)

v0.17.0 引入 — hashline_read/hashline_edit,内容哈希锚定文件编辑(CHANGELOG.md:202)

2 个工具,实现基于内容哈希的精确文件编辑。通过 buildCanonicalTools() 注册(src/platform/tool-assembly.ts:76-77)。

工具名说明定义文件
hashline_read读取文件并返回带内容哈希锚点的行src/hashline/hashline-read.ts:6
hashline_edit基于 LINE#HASH 锚点编辑文件src/hashline/hashline-edit.ts

hashline_read

参数(src/hashline/hashline-read.ts:22

参数类型必需说明
filePathstring文件绝对路径
offsetnumber1-based 起始行(省略=全量读取)
limitnumber最大返回行数

返回格式: version(SHA-256)、hashWidthtotalLines、每行以 LINE#HASH|content 格式标注。

hashline_edit

参数

参数类型必需说明
filesArray要编辑的文件列表
files[].filePathstring文件绝对路径
files[].versionstring上一次 hashline_read 的版本
files[].editsArray编辑操作列表
edits[].op"replace" | "append" | "prepend"操作类型,默认 "replace"
edits[].posstring视情况LINE#HASH 锚点
edits[].linesstring | string[]视情况替换/插入的内容

返回格式: 版本哈希、每个文件的统一差异(diff)、添加/删除行数、锚点重映射信息。


信号与上下文工具

v0.22.0 引入 — signal 通用带外控制信号 + context_assemble 跨域搜索组装(CHANGELOG.md:50)

工具名说明定义文件
signal发出带外控制信号(完成/审批/阻塞等)src/signal/signal-tool.ts:45
context_assemble跨域搜索并组装上下文块src/dispatch/query/context-assemble.ts

signal

参数(src/signal/signal-tool.ts:52

参数类型必需说明
type"answer" | "need_approval" | "blocked" | "need_clarification" | "handoff" | "progress" | "revise_needed" | "escalate"信号类型
payloadRecord<string, unknown>可选的附带数据

信号类型分类

  • 终止信号: answer, revise_needed, escalate — 满足 continue_until 条件
  • 暂停信号: need_approval, blocked, need_clarification — 设置 paused 证据标签
  • 交接信号: handoff — 触发非终止的手递交接
  • 信息信号: progress — 仅记录,无状态转换

返回格式: 确认消息(信号类型、记录的函数数、状态转换说明)。

context_assemble

参数

参数类型必需默认说明
topicstring搜索主题/查询
max_tokensnumber4000Token 预算
sources("memory" | "asset" | "task" | "session")[]所有源搜索域

核心要点

维度关键信息
工具总数约 80 个内置工具,分 10 大领域
最大领域LSP 工具——32 个,是最大的工具域
独有工具hashline 编辑、dispatch 套件、会话工具、记忆工具、Function Graph 等为 rolebox 独有
工具 vs 函数工具是 TypeScript 代码(LLM 直接调用),函数是提示词模板(用户通过 `
注册方式所有工具通过 ToolService.init() 在运行时注册,Zod Schema 定义参数

工具与函数的区分

Rolebox 中有两个相似的机制:

维度工具(Tool)函数(Function)
定义位置TypeScript defineTool()Markdown 文件或 role.yaml
注册方式运行时 ToolService.init()通过 rolesFunctionsMap 静态注册
调用者LLM 内部调用用户通过 |函数名| 语法调用
实现TypeScript 代码提示词模板
典型用途系统级操作(读文件、查 LSP)工作流驱动的状态机步骤

函数系统有独立的生命周期(状态机、自动激活、条件过渡),工具则直接执行。详细内容见函数系统角色定义

下一步

基于 MIT 许可协议发布