跳到主要内容
路径文档

内置工具

工具是模型执行操作的入口。DSH 出厂自带 多个 @deepseek-ai/dsh-tool-* 包,按能力域分组如下。它们通过 ctx.tools 注册,自动出现在模型的工具清单里。

想给模型新增工具?见 写一个工具。本篇只讲内置的、开箱即用的能力。

一图总览​

能力域工具包一句话
终端tool-bash / tool-bash-persistent / tool-pwsh / tool-pwsh-persistent / tool-terminal跑命令、长驻会话
文件tool-fs / tool-fs-search / tool-str-replace-editor读写、搜索、精确编辑
网络tool-webweb_search / web_fetch
代码tool-lsp跳转定义、找引用、hover
委托tool-subagent / tool-subagent-control把活派给子 Agent
调度schedule定时提醒
目标tool-goal会话级目标
作业tool-jobs后台作业输出/列表/终止
待办tool-todotodo_write
技能tool-skill加载技能
会话检索tool-session-query历史搜索/轨迹
提问tool-ask-user问用户
自省tool-cordis查询 Host/Client 契约,定义并管理版本化动态插件
编排tool-workflow / tool-ralphJS 编排、Ralph 迭代
模型可带由各 seam 决定呈现与调度

终端类​

工具关键用法说明
bash执行 shell 命令,可选后台作业、沙箱升权通用命令执行
bash(tool-bash-persistent)长驻 shell 会话(与 tool-bash 同名)按 owner 隔离的持久 Bash(基于 PTY)
terminal六个持久终端工具交互式终端,owner 隔离,接后台作业
pwsh执行 PowerShellWindows 场景的 shell 层
pwsh(tool-pwsh-persistent)长驻 PowerShell 会话(与 tool-pwsh 同名)按 owner 隔离的持久 PowerShell(基于 PTY)
终端类都会过 ctx.sandbox.confine(见 沙箱与安全)。执行环境统一由 shell-env(ctx.shellEnv)提供:每个前台/后台 shell 调用都收到一份新采集的受管 DSH_* 环境快照,内置 DSH_HOME、DSH_SHELL=1、DSH_SESSION_ID,其他插件可注册 effect 作用域的 contributor 追加事实;重复归属或未声明的运行时键会 loud fail。shell-env 默认挂载,process.env 从不被改写。

文件类​

工具关键用法说明
fsread / read_image / write / edit走 ctx.fs 能力缝
fs_searchglob / grep打包的 ripgrep,快速发现
str_replace_editor查看/创建/字面替换/插行精确编辑,改动小、便于 review

read_image 只在持久 ctx.attachments 服务已挂载时注册,且执行时拒绝未声明图像输入的模型路由;接受 PNG/JPEG/WebP/GIF(含无扩展名但按文件签名识别格式的路径),结果作为原生图像块随持久引用写入会话日志。

委托与并行​

工具关键用法说明
subagent派发一次性子 Agent走 ctx.subagents seam
subagent_controlsend_message / interrupt_agent / list_agents全局控制可续子会话

完整委托模型见 子 Agent 与并行。可续子会话与父 Agent 通过 send_message 双向传递后续消息(0.1.2-rc.1 起取代单向 report 工具,tool-subagent-report 已移除)。

目标 / 作业 / 待办​

工具关键用法说明
get_goal / create_goal / update_goal同会话长期目标执行期权限检查
jobsjob_output / job_list / job_kill后台作业注册表
todotodo_write写进事件溯源会话日志

详见 目标、作业与待办。用户暂停的目标只能由用户恢复:update_goal 不能把 paused 改回 active(0.1.5)。

搜索 / 检索 / 提问​

工具关键用法说明
session_search(等)历史会话搜索 / 轨迹 / 读事件检索 DSH 自己的会话,opt-in(默认不挂)
ask_user_question向用户提问走 ctx.userQuestions

dsh-tool-session-query 注册 session_search/session_trace/session_event_read 等,检索 DSH 自己的历史会话;该包 opt-in,默认不挂载。

网络​

模型可见的是 web 工具(web_search / web_fetch),两者走同一个 ctx.web 能力缝。真正的检索/抓取由注册进 ctx.web 的 provider 后端完成,tool-web 只负责呈现(工具名、schema、结果格式、HTML→markdown):

后端类型说明挂载
web-search-deepseek搜索 providerAnthropic 兼容 Messages API + 原生 web_search 工具,解析结构化结果块,复用 DEEPSEEK_API_KEY默认挂载(searchProvider: deepseek-official)
web-fetch-http抓取 provider公开 HTTP(S),地址 / DNS / 重定向检查及输出上限base 挂载 provider 且 tool-web 为 fetch: true;Web app 禁用 base 的 tool-web 行,standard / cordis / ptc 预设各自组合(同样 fetch: true)
web-search-exa搜索 providerExa POST /search,auto/keyword/neural;无生成答案,content 省略opt-in(需 EXA_API_KEY)
web-search-perplexity搜索 providerOpenAI 兼容 chat/completions,生成答案 content + 引用 sources[]opt-in(需 PERPLEXITY_API_KEY)

provider 注册的是能力不是工具;tool-web 的注册跟着产品开关(base 已是 fetch: true;Web app 禁用 base 的 tool-web 行,由 standard / cordis / ptc 预设各自组合为 true,minimal 预设不含 web 工具),不跟后端可用性——provider 缺失/不可用/歧义时工具 schema 仍在,执行时才抛结构化 WebError。provider 选择在 seam 内、执行时解析(显式 searchProvider/fetchProvider 或唯一可用 provider 自动选)。

出站网络统一遵循启动环境解析出的代理策略(0.1.3-alpha.1):HTTP_PROXY / HTTPS_PROXY / ALL_PROXY / NO_PROXY 覆盖 LLM、web 搜索与 HTTP MCP 流量;loopback 保持直连,不受支持的代理 URL 会被报告并对该协议跳过。

代码​

工具关键用法说明
lspgoToDefinition / findReferences / goToImplementation / hover只读,基于 ctx.lsp

自省与编排​

工具关键用法说明
cordiscordis_inspect_list/query/self + cordis_define/run/stop/undefine版本化动态 Cordis 工具集
workflow跑 JS 编排脚本走 ctx.workflowEngine
ralph新鲜 Agent 的 Ralph 迭代循环结合 workflow + subagent

详见 工作流与 Ralph。

常见组合(怎么串起来干活)​

想要组合
检索 + 读文件 + 改代码session_search 找历史 → fs/str_replace_editor 改
终端跑步 + 后台作业bash 常驻 + jobs 收后台输出
拆大任务并行subagent 派发 + subagent_control 收
定时推进schedule_create 设提醒 + update_goal/todo_write 记进度
卡住问人ask_user_question 确认后再继续

工具是原子能力;把常用的串法固化下来就是 技能 或 工作流。

验证当前装了哪些工具​

dsh web --dump-config | grep -E "tool-"
# 组合树里能看到每个 tool-* 插件与是否启用

工具的可配置性​

每个工具包都能在 profile 层通过 patch 覆盖 config(例如是否默认关闭、超时、工作区授权)。工具呈现方式(native/ptc/both)由 ctx.tools.presentAs 决定,不是工具自身关心的事。PTC 模式下经 run_code 分发的受支持 bash / pwsh / terminal_send 子调用在 Web 工具卡里与根调用一样渲染为 terminal 卡片,命令与输出都可展开(0.1.3-alpha.2);后台调用、工具错误等仍走通用回退。read_image 的顶层与 PTC 嵌套调用直接渲染图片,不再展示原始附件对象(0.1.3-alpha.1)。

源码基线:0.1.5-alpha.1(5dda764ed3)。公开抓取有 SSRF 策略,不再是旧版的 deferred 防护;普通获准公开地址抓取不逐次申请网络审批。应检查最终 preset,而非只看 base。源码:packages/web/web-fetch-http、packages/util/http-proxy、packages/bundle/base/cordis.patch.yml 与 packages/preset/agent-presets/presets/。