Back to home@liukj98

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 快照,只消费 ConversationSnapshotnodes + 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.yamlallowBuilds 后重试。

方式三:本地 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 包名,可按需改成你自己的插件名):

  1. package.json 里的 name(无 scope,保持全局唯一);
  2. cordis.patch.yml 里行的 nameidid 是 Loader 树唯一标识,勿与其它插件冲突);
  3. README.md 里的安装命令与仓库地址。

关于标签页 id:本插件的浏览器半以 id: 'tools'order: 20 注册进 conversation.view 槽,与 DSH 内置的 ui-tools 视图同名。若你同时装了内置版本,会看到两个 tools 标签。想区分,改 src/client.tsxapply() 中的 idlabel(例如 id: 'tools-ext'label: () => 'tools+'),然后重新 pnpm build

实现要点(对应 DSH 插件机制)

  • dsh.bundle.patch → 让 dsh plugin addcordis.patch.yml 挂进 profile 的 Loader 树;
  • dsh.clientplatform: web + inject)→ 让 dsh-client-modules 扫描本包并下发浏览器 bundle;
  • exports["./client"] → 浏览器 bundle 的导出入口;
  • 浏览器 bundle 把 react 作为 external,由 DSH 冻结的模块表在运行时注入。