dsh-ui-tools
deepseek harness tools 插件
- Stars
- 0
- Language
- TypeScript
- Created
- Aug 19, 2026
- Updated
- Aug 19, 2026
Introduction
dsh-ui-tools
一个 DeepSeek Harness(DSH)Web 插件:在会话头部的标签环里注册一个 tools 视图,按派发顺序列出本次会话的每一次工具调用——工具名、格式化后的参数、结果文本,以及 ok / error / running 状态。
它是浏览器端插件(dsh.client),不参与模型请求,也不改动 Chat 快照,只消费 ConversationSnapshot(nodes + runningCalls)。
安装
要求:已安装 DeepSeek Harness,且 dsh web 能正常启动;pnpm 在 PATH 上。
方式一:从 npm 安装(推荐,需先发布)
dsh plugin --profile web add dsh-ui-tools@latest
dsh web
重启后,会话头部会出现 tools 标签页。
方式二:从 GitHub 安装(无需发布,开发调试)
dsh plugin --profile web add github:liukj98/dsh-ui-tools
dsh web
注意:git 依赖会走包的
prepare脚本在安装时构建,pnpm ≥ 10 默认拦截未允许的构建脚本。若首次add失败,按提示把打印出的 key 加进 profile 目录的pnpm-workspace.yaml的allowBuilds后重试。
方式三:本地 checkout 链接
cd dsh-ui-tools && pnpm install && pnpm build
dsh plugin --profile web add link:$(pwd)
dsh web
卸载
dsh plugin --profile web remove dsh-ui-tools
本地开发
pnpm install
pnpm typecheck # 仅类型检查
pnpm build # 产出 lib/index.js(Node 半)与 lib/client.js(浏览器半)
构建产物说明:
lib/index.js—— 空apply(),让插件出现在 host Loader 树中;lib/client.js——window.__ModuleLoader__.load({ id, factory })形式的浏览器 bundle,由dsh-client-modules经/plugins/<id>/client.js下发。
发布到 GitHub / npm
git init
git add .
git commit -m "init dsh-ui-tools"
git remote add origin https://github.com/liukj98/dsh-ui-tools.git
git push -u origin main
发布 npm(可选):
npm publish --access public
自定义
发布前请至少改这几处(把占位的 liukj98 换成你自己的 GitHub 用户名;dsh-ui-tools 为无 scope 包名,可按需改成你自己的插件名):
package.json里的name(无 scope,保持全局唯一);cordis.patch.yml里行的name与id(id是 Loader 树唯一标识,勿与其它插件冲突);README.md里的安装命令与仓库地址。
关于标签页 id:本插件的浏览器半以
id: 'tools'、order: 20注册进conversation.view槽,与 DSH 内置的ui-tools视图同名。若你同时装了内置版本,会看到两个tools标签。想区分,改src/client.tsx里apply()中的id与label(例如id: 'tools-ext'、label: () => 'tools+'),然后重新pnpm build。
实现要点(对应 DSH 插件机制)
dsh.bundle.patch→ 让dsh plugin add把cordis.patch.yml挂进 profile 的 Loader 树;dsh.client(platform: web+inject)→ 让dsh-client-modules扫描本包并下发浏览器 bundle;exports["./client"]→ 浏览器 bundle 的导出入口;- 浏览器 bundle 把
react作为 external,由 DSH 冻结的模块表在运行时注入。