agentic_huge_data_base / wiki
页面 jcode · 2.3 工具注册表与内置工具·DeepWiki 中文全文译文

2.3 · 工具注册表与内置工具(Tool Registry and Built-in Tools)

代理式研究运行时 · 聚焦本章的模块关系、源码依据与实现要点。

项目jcode 章节2.3 状态全文译文 模块记忆与上下文、接口与服务契约、界面与交互、智能体运行时
源码线索
  • crates/jcode-protocol/src/notifications.rs
  • src/background.rs
  • src/bin/harness.rs
  • src/bus.rs
  • src/mcp/client.rs
  • src/mcp/manager.rs
  • src/mcp/mod.rs
  • src/mcp/protocol.rs
  • src/mcp/tool.rs
  • src/message/notifications.rs
模块标签
  • 记忆与上下文
  • 接口与服务契约
  • 界面与交互
  • 智能体运行时
  • 系统架构

章节正文

工具注册表与内置工具

工具注册表与内置工具

相关源文件

本章引用的主要源码文件:

  • crates/jcode-protocol/src/notifications.rs
  • src/background.rs
  • src/bin/harness.rs
  • src/bus.rs
  • src/mcp/client.rs
  • src/mcp/manager.rs
  • src/mcp/mod.rs
  • src/mcp/protocol.rs
  • src/mcp/tool.rs
  • src/message/notifications.rs
  • src/protocol/notifications.rs
  • src/server/file_activity_tests.rs
  • src/server/state.rs
  • src/server/tests.rs
  • src/skill.rs
  • src/tool/agentgrep.rs
  • src/tool/agentgrep/args.rs
  • src/tool/agentgrep/context.rs
  • src/tool/agentgrep/render.rs
  • src/tool/agentgrep_tests.rs
  • src/tool/apply_patch.rs
  • src/tool/bash.rs
  • src/tool/bg.rs
  • src/tool/codesearch.rs
  • src/tool/conversation_search.rs
  • src/tool/edit.rs
  • src/tool/glob.rs
  • src/tool/grep.rs
  • src/tool/ls.rs
  • src/tool/lsp.rs
  • src/tool/mcp.rs
  • src/tool/mod.rs
  • src/tool/multiedit.rs
  • src/tool/patch.rs
  • src/tool/read.rs
  • src/tool/skill.rs
  • src/tool/task.rs
  • src/tool/tests.rs
  • src/tool/write.rs
  • src/tui/app/remote_notifications.rs

工具注册表是 jcode 智能体所有可执行能力的中央编排点。它管理着多种多样的工具集合,涵盖从本地文件系统操作、Shell 执行到复杂的多智能体协调以及模型上下文协议(MCP)集成。

注册表架构

Registry 结构体 src/tool/mod.rs:54-58 作为工具、技能和 CompactionManager 的容器。它通过 Arc 在会话间共享,同时在克隆时会创建一个新的 CompactionManager,从而为子智能体提供隔离 src/tool/mod.rs:60-70

工具分类

注册表将工具组织为三个主要层级:

  1. 基础工具:无状态的共享工具(例如 readgrepbash),它们只初始化一次并缓存在 OnceLocksrc/tool/mod.rs:109-112
  2. 会话级工具:需要会话特定状态的工具,例如 subagent 工具(实现为 SubagentTool),它需要访问会话的提供者和注册表 src/tool/task.rs:16-19
  3. MCP 工具:由外部模型上下文协议服务器提供的动态工具。这些工具通过 McpManagementToolMcpManager 集成到注册表中 src/tool/mcp.rs:26-29
工具特质

所有工具都必须实现 Tool 特质 src/tool/mod.rs:47-47,该特质定义了:

  • name():大语言模型(LLM)使用的标识符(例如 "bash")。
  • parameters_schema():定义工具输入要求的 JSON Schema。
  • execute():一个异步函数,用于处理输入并返回 ToolOutput src/tool/mod.rs:48-48
ToolContext 与执行安全

当工具被执行时,它会收到一个 ToolContext src/tool/mod.rs:47-47。该上下文提供了:

  • 路径解析:工具会将会话工作目录的相对路径解析为绝对路径。
  • 输出截断:为防止上下文窗口耗尽,工具会强制执行限制。例如,bash 工具的 MAX_OUTPUT_LEN 为 30,000 个字符 src/tool/bash.rs:22-22
  • 进度追踪:工具可以向系统 Bus 发送进度更新 src/bus.rs:32-40
工具数据流:从大语言模型到执行

下图展示了自然语言请求如何被转换为代码层面的工具执行。

工具执行管线

jcode · 工具数据流:从大语言模型到执行 · 图 1
jcode · 工具数据流:从大语言模型到执行 · 图 1

来源:src/tool/mod.rs:54-70, src/tool/agentgrep.rs:171-180, src/tool/task.rs:77-85

内置工具目录

jcode 包含超过 30 个内置工具。它们按功能领域进行分类。

文件系统与搜索

这些工具提供了智能体与代码库交互的主要接口。

工具用途关键逻辑
read读取文本、图像或 PDF,并显示行号。normalize_read_range src/tool/read.rs:59-117
write创建或覆盖文件。WriteTool src/tool/mod.rs:188-188
edit应用搜索/替换编辑。EditTool src/tool/mod.rs:130-130
multiedit跨多个文件应用多项编辑。MultiEditTool src/tool/mod.rs:134-135
ls列出目录内容。LsTool src/tool/mod.rs:146-146
glob查找匹配模式的文件。GlobTool src/tool/mod.rs:144-144
grep搜索文本模式。GrepTool src/tool/mod.rs:145-145
agentgrep结构感知搜索(grep、find、outline、trace)。AgentGrepTool src/tool/agentgrep.rs:163-180
apply_patch应用统一差异补丁。ApplyPatchTool src/tool/mod.rs:141-143
系统与执行

用于与宿主操作系统和后台进程交互的工具。

工具用途关键逻辑
bash执行 Shell 命令并解析进度。TokioCommandJCODE_PROGRESS src/tool/bash.rs:19-28
bg管理后台任务(列出、等待、取消、状态)。BackgroundTaskManager src/tool/bg.rs:7-8
browser控制无头浏览器会话。BrowserTool src/tool/mod.rs:148-148
lsp查询语言服务器协议以获取符号信息。LspTool src/tool/mod.rs:169-169
websearch搜索网络信息。WebSearchTool src/tool/mod.rs:159-161
webfetch从 URL 获取内容。WebFetchTool src/tool/mod.rs:153-155
协调与记忆

用于多智能体工作流和长期知识检索的工具。

工具用途关键逻辑
subagent生成专门的子智能体(回答/压缩/完整)。SubagentTool::execute src/tool/task.rs:126-195
swarm与群组中的其他智能体通信。CommunicateTool src/tool/mod.rs:174-177
memory查询或更新语义记忆。MemoryTool src/tool/mod.rs:184-184
skill_manage加载、列出和重新加载"技能"(提示集)。SkillTool::execute src/tool/skill.rs:69-93
mcp管理 MCP 服务器连接(列出、连接、重新加载)。McpManagementTool src/tool/mcp.rs:88-101

来源:src/tool/mod.rs:116-188, src/tool/bash.rs:145-157, src/tool/task.rs:77-85, src/tool/bg.rs:125-142

智能体到系统的映射

下图将大语言模型使用的高级工具名称桥接到它们调用的具体 Rust 模块和系统实体。

工具到系统实体的映射

jcode · 智能体到系统的映射 · 图 2
jcode · 智能体到系统的映射 · 图 2

来源:src/tool/bash.rs:19-19, src/tool/read.rs:191-191, src/tool/task.rs:1-2, src/background.rs:36-40, src/tool/mcp.rs:3-4

后台任务管理

BackgroundTaskManager src/background.rs:36-39 允许工具异步运行。它使用基于文件的存储来实现崩溃恢复,将任务状态写入 .status.json 文件 src/background.rs:83-85bg 工具与该管理器交互,使智能体能够等待任务完成或查看输出尾部 src/tool/bg.rs:43-98

来源:src/background.rs:36-85, src/tool/bg.rs:125-142