DeepSeek Harness — 内置模型工具(Tool)分类整理

分析对象:packages/**/src 下所有经 defineTool(...) / ctx.tools.register(defineTool(...)) 注册、或运行时注入的模型侧工具。 排除:测试 fixture、浏览器端 UI 占位工具、zod schema 字段名(误报)。 所有工具均由独立「消费方」插件注册,底层能力提供方(Provider)可在不改工具契约的前提下替换。


一、总览(按能力族分组的工具数)

能力族工具(模型名)数量
文件系统 fsread write edit str_replace_editor glob grep read_image7
Shell shellbash pwsh(各自另有 persistent 形态)2(+2)
持久终端 terminalterminal_open terminal_close terminal_read terminal_send terminal_list terminal_signal6
代码执行 code-runtimerun_code(保留传输,注册表构造,非 defineTool)1
网络检索 webweb_search web_fetch2
代码智能 lsplsp1
技能 skillskill1
子智能体 subagentspawn_teammate(→list_agents/send_message/wait_agent/interrupt_agent/report) list_agents send_message interrupt_agent report6
Agent Teams experimentalspawn_teammate list_agents wait_agent interrupt_agent team_task_create team_task_get team_task_list team_task_update8
工作流 workflowworkflow ralph2
目标 goalcreate_goal get_goal update_goal3
提醒 scheduleschedule_create schedule_delete schedule_list3
待办 todotodo_write1
后台任务 jobsjob_kill job_list job_output3
会话检索 session-querysession_event_read session_event_search session_event_trace session_search session_trace5
人机交互 interactionask_user_question1
计划模式 planexit_plan_mode(运行时注入,plan 模式专属)1
运行时自修改 extensionscordis_define cordis_inspect_list cordis_inspect_query cordis_inspect_self cordis_run cordis_stop cordis_undefine7

注:spawn_teammatesubagentexperimental/tool-agent-team同名不同实现(后者为隐式根 Agent Teams 形态,带任务板);bash/pwsh 各自有一次性与持久化(tool-*-persistent)两种注册,default spine 选其一。


二、逐工具明细(模型名 · 所属插件 · 能力说明)

文件系统 fs/

工具所属包说明
readfs/tool-fs/src/read.ts读取 UTF-8 文本文件,返回带行号内容。
writefs/tool-fs/src/write.ts创建或整体替换 UTF-8 文本文件。
editfs/tool-fs/src/edit.ts通过替换字面文本编辑已有 UTF-8 文本文件。
str_replace_editorfs/tool-str-replace-editor/src/index.ts精准替换编辑器:view create str_replace insert 四种命令。
globfs/tool-fs-search/src/glob.ts按 glob 模式查找文件路径,仅返回文件路径(不含目录)。
grepfs/tool-fs-search/src/grep.ts用 ripgrep 正则搜索文件内容,返回匹配行及行号。
read_imagefs/tool-fs/src/read-image.ts读取 PNG/JPEG/WebP/GIF 并返回图像本身(需当前模型支持图像)。

Shell 执行 shell/

工具所属包说明
bashshell/tool-bash/src/index.ts(一次性)/ shell/tool-bash-persistent/src/index.ts(持久)执行 bash 命令;persistent 形态偏好相对路径、与后台任务集成。
pwshshell/tool-pwsh/src/index.ts(一次性)/ shell/tool-pwsh-persistent/src/index.ts(持久)执行 PowerShell 命令(Windows 进程语义)。

持久终端 terminal/

工具说明
terminal_open从已注册后端类型创建持久化、归属隔离的终端会话(跨工具调用保持状态)。
terminal_close关闭终端并等待其拥有的进程树全部退出。
terminal_read读取终端保留输出的有界页(不发送输入)。
terminal_send向终端发送文本,默认提交回车并等待提示符。
terminal_list列出当前 Agent 拥有的持久终端会话。
terminal_signal向终端当前前台进程组发送允许的信号。

代码执行 code-runtime/

工具说明
run_code保留传输(registry 构造,非 defineTool)。执行模型编写的单个程序,捕获 stdout 与返回值;Code Mode 下仅此工具可直接调用,并附带生成的 SDK。

网络检索 web/

工具说明
web_searchctx.web 提供方(DeepSeek / Exa / Perplexity)做网络搜索。
web_fetch抓取指定 HTTP(S) URL 内容并解码为文本。

代码智能 lsp/

工具说明
lsp查询语言服务器做精准代码导航。仅 4 个语义操作:goToDefinition findReferences goToImplementation hover;行列为基于 1 的 UTF-16 坐标(findReferences 含声明处)。

技能 skill/

工具说明
skill加载可用技能的完整指令。在按名称执行某技能任务前应先用确切技能名调用此工具。

子智能体 subagent/

工具说明
spawn_teammate委派一个后台子 Agent(进程内 spawn/fork 或进程外 ACP/Claude-Code/Codex/SDK 后端)。
list_agents按持久 id + 标签列出可续接的后台子 Agent。
send_message向某子 Agent 发送消息,延续同一会话。
interrupt_agent请求取消一个后台 Agent。
wait_agent等待下一子 Agent 状态 / 邮箱 / 共享任务变化。
report(子→父通道)子 Agent 结束前向启动它的 Agent 报告选中内容。

Agent Teams(实验)experimental/

工具说明
spawn_teammate创建命名、持久化的团队成员(仅 Team Lead 可调用)。
list_agents列出 Lead 与所有持久团队成员及其运行时状态。
wait_agent等待下一成员状态、邮箱或共享任务变化。
interrupt_agent中断某个团队成员。
team_task_create在共享任务板上创建一条无主待办任务。
team_task_get读取某共享任务的完整最新值(改动/执行前先读)。
team_task_list列出共享任务(就绪度、负责人、revision、阻塞、写作用域警告)。
team_task_update基于最新 revision 的 CAS(compare-and-set)更新共享任务动作。

工作流 workflow/

工具说明
workflow模型编写的编排工作流,在子智能体之上运行(worker-thread 引擎)。
ralph固定策略的「全新 Agent」Ralph 工作流:每轮使用不可变完成目标拉起一个全新 Agent。

目标 goal/

工具说明
create_goal从直接人类请求推断出的具体完成目标,创建目标。
get_goal读取当前目标。
update_goal更新当前目标 revision(edit/pause/resume 需直接操作)。

会话内提醒 schedule/

工具说明
schedule_create创建提醒,到期时向原会话呈现指定内容(持久态存于会话日志)。
schedule_delete按精确的会话内 schedule id 删除提醒。
schedule_list列出当前会话的提醒。

待办 todo/

工具说明
todo_write完整任务列表,替换之前的所有列表(单会话拥有)。

后台任务 jobs/

工具说明
job_kill按 job id 请求取消正在运行的后台任务(立即返回,实际停止后结算为 killed)。
job_list列出本会话后台任务(运行中 + 已完成)及其 id、类型、状态。
job_output读取后台任务输出(流式任务仅返回上次读取后的新增)。

会话检索 session-query/

工具说明
session_event_read读取某授权会话中一条完整、未删节的事件及相邻原始事件摘要。
session_event_search在单个授权会话内搜索历史事件(当前会话排除执行此搜索的步骤)。
session_event_trace读取某事件与引用源事件之间的全部直接替换与关系。
session_search在调用者工作区内搜索先前会话,返回每个会话最强匹配事件。
session_trace读取围绕某会话的授权会话谱系(含完整可见祖先与后代)。

人机交互 interaction/

工具说明
ask_user_question在继续前向用户提问(问题/选项)。

计划模式 plan/(运行时注入)

工具说明
exit_plan_mode仅在 plan 模式可用。提交完整 markdown 计划供用户审阅,获批后离开 plan 模式;用户可批准(下一步执行)或继续规划,反馈回显在工具结果中。该工具在 plan 模式非激活时仍注册,保证工具目录跨状态稳定。

运行时自修改 extensions/

工具说明
cordis_define定义一个不可变 Cordis Package(新 Plugin 用 kind:)。
cordis_inspect_list列出 Host 已知的所有 Cordis 检视提供方(含本地 Host 提供方与最新动态注册)。
cordis_inspect_query运行某检视提供方显式声明的只读查询(platform/provider/method 必填)。
cordis_inspect_self以递进细节级别检视当前 Session 拥有的动态 Cordis 对象。
cordis_run激活某动态 Plugin 的一个精确 Package(mode: 选择)。
cordis_stop停止某动态 Plugin 当前 Run 并取消未完成的审批/激活请求。
cordis_undefine永久移除当前 Session 拥有的某动态 Plugin(运行中/等待中则先停止)。

三、人类侧命令(非模型工具,列作对照)

以下为经 ctx.commands 注册、面向人类操作者的斜杠/快捷键命令,模型不会直接调用:

命令所属包说明
compactcompaction/command-compact触发会话压缩(摘要/裁剪)。
feedbackfeedback/command-feedback记录一条仅存于会话日志的反馈备注。
goalgoal/command-goal人类侧目标命令(与 tool-goal 模型工具并列)。
plan/plan on·/plan offplan/plan-mode进入/退出 plan 模式(与 exit_plan_mode 配合)。
exportsession-query/session-log-exportWeb 端 /export 导出会话日志。
permissioninteraction/permission-presets配置默认权限 / 切换当前会话访问级别。

四、工具注册机制要点

  1. 统一注册入口:每个模型工具都由一个独立 Consumer 插件调用 ctx.tools.register(defineTool({ name, description, parameters, execute })) 注册(除 run_code 由工具注册表本身以保留传输方式构造,以及 exit_plan_mode 在 plan 模式下运行时注入)。
  2. 能力分层替换:工具 schema/呈现/执行归一处所有;底层 Provider(如 bash-local vs bash-sandboxfs-local vs fs-e2b)在不改动工具契约前提下可替换。
  3. 同名多实现spawn_teammate / list_agents / wait_agent / interrupt_agentsubagentexperimental/tool-agent-team 中存在同名不同语义实现——后者属于未发布的隐式根 Agent Teams 形态。
  4. 形态切换agent-tool-presentation 预设行决定模型看到的是 native(全部 schema)、code(仅 run_code + 生成 SDK)还是 both;Code Mode 下注册表把指向其他工具的直接调用解析为 UNKNOWN_TOOL,保证「公告面」与「可调用面」一致。