DSH 本地工具箱:侧边栏独立页面内置 35 个纯本地小工具(文本、编码、哈希、提取、转换、速查表),另有 /toolbox 命令与配置驱动的 agent 工具注册。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-devtoolbox
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:jean3690/dsh-devtoolbox
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本。请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
DSH 本地工具箱插件:侧边栏独立页面 + /toolbox 命令 + 配置驱动的 agent 确定性工具。
约 35 个纯本地小工具(文本 / 编码 / 数据 / 安全 / 提取 / 转换 / 参考 / 效率),
参考 devtoolbox.online 设计,数据不出本机。
你能得到什么
| 界面 | 能力 |
|---|---|
| 侧边栏「工具箱」入口 | 点击进入中心列全屏工具箱:分类导航 + 搜索 + 工具卡片网格 |
| 工具页 | 动态参数表单 → 本地运行 → 结果(文本 / JSON / 表格),一键复制、下载、保存到项目 |
/toolbox 命令 |
/toolbox 列出全部工具;/toolbox run <id> key=value … 直接执行(模型可读、可日志重建) |
| agent 工具 | 配置驱动:agentTools 决定哪些 toolbox_* 工具对模型可见(默认一个都不暴露);userTools 让你用 JS 表达式自定义自己的工具 |
| 文件工具 | toolbox_file_hash / toolbox_file_encode(GBK⇄UTF-8)——需要时在配置中启用 |
工具清单(35 个,全部本地运行)
| 分类 | 工具 id |
|---|---|
| 文本 | text_stats text_remove_blank text_dedup case_change case_convert fullwidth cn_convert regex text_ops |
| 编码 | base64 url html_entity unicode_escape radix timestamp |
| 数据 | json_format json_csv csv_fix text_diff |
| 安全 | md5 sha uuid password random_num |
| 提取 | phone email url_extract ip_extract |
| 转换 | money color |
| 参考 | http_codes ports mime ascii |
| 效率 | picker |
宿主文件工具:file_hash file_encode(agent 可暴露,见配置)。
快速上手
dsh plugin --profile web add link:/path/to/dsh-devtoolbox
重启 web 面板(bundle 列表在启动时快照),侧边栏出现「工具箱」入口:
/toolbox
/toolbox run md5 text=hello
/toolbox agent
配置(cordis.patch.yml)
- insert:
- id: dsh-devtoolbox
name: dsh-devtoolbox
config:
# 暴露给模型的内置工具;'*' = 全部,[] = 不暴露(默认)
agentTools: ['json_format', 'base64', 'md5']
# 用户自定义工具(JS 表达式;agentTools 含其 name 或 '*' 时注册为 toolbox_<name>)
# userTools:
# - name: shout
# description: 把文本转成大写并加感叹号
# args:
# text: { type: 'string', required: true, description: '输入文本' }
# run: !!js |
# ((args) => ({ text: String(args.text).toUpperCase() + '!' }))
# 浏览器「保存到项目」RPC(写入 <profile>/toolbox-saves,可改 saveDir)
saveEnabled: true
# saveDir: toolbox-saves
可暴露的内置工具(/toolbox agent 可查看):text_stats cn_convert case_convert fullwidth base64 url html_entity unicode_escape radix timestamp json_format json_csv csv_fix text_diff md5 sha uuid password random_num phone email url_extract ip_extract money color http_codes ports mime ascii text_ops text_remove_blank text_dedup case_change regex + 宿主文件工具 file_hash file_encode。
架构
src/
├── index.ts # 宿主插件入口(Cordis function plugin)
├── config.ts # 配置 schema + 显式 resolve(agentTools / userTools / save)
├── command.ts # /toolbox 命令(只读:enable/disable 仅给建议,绝不改配置)
├── agentTools.ts # 配置驱动的 agent 工具注册(默认 0 个)
├── hostTools.ts # 文件哈希 / 文件编码(宿主专属)
├── service.ts # toolbox Remote 服务(保存输出到 profile)
├── wire.ts # Typert wire 协议(toolbox/save,zod 严格编解码)
├── typert.host.ts # Typert host manifest
├── present.ts # 结果渲染(无依赖,三端复用)
├── i18n.ts # zh/en 字典(UI + 命令 + agent 描述共用)
├── tools/ # ★ 35 个纯函数工具(零 DOM/fs/网络,三端复用)
└── client/ # 浏览器半:侧边栏入口 + 中心列视图
核心设计:工具是纯函数,一份代码三处复用——浏览器 UI 直接同步调用(零延迟)、
/toolbox run 输出(模型可读)、agent 工具(模型可调)。浏览器与宿主之间
只有一个 RPC(toolbox/save),其余全部本地计算。
面板互斥:与任务看板 / SSH 面板共用 dsh-panel-activate 事件协议,中心列
同一时刻只有一个面板占用。
样式规范对齐(官方 web-styling.md,deepseek-ai/deepseek-harness):
CSS Modules + 哈希类名(toolbox.module.css,lightningcss 编译,运行时注入
<style data-plugin>,与官方 client 包同机制);颜色只用 ui-theme 的
--dsw-alias-* 语义 token(无静态色板值、无颜色字面量、无主题选择器);
字体大小与行高配对;交互控件带 :focus-visible 焦点轮廓。
开发
npm install # 安装依赖
npm test # vitest:37 个测试(工具测试含 MD5/SHA 测试向量 + 宿主文件工具/路径消毒)
npm run build # tsc + tsdown → lib/(node 半 ESM + client 半 ModuleLoader 单文件)
bash scripts/smoke-e2e.mjs.sh # Playwright 端到端回归(需 GUI 运行中 + playwright-cli)
client bundle 遵循 shell 的 window.__ModuleLoader__.load({ id, factory }) 握手:
平台模块(react 等)external、其余全部内联,因此 /plugins/<id>/client.js 是单文件。
发布
GitHub Actions 已配置(typecheck + test + build)。发布 npm(推荐,安装免构建授权):
npm publish # prepublishOnly 自动先跑 build
npm 包名
dsh-toolbox/dsh-tools已被占用,本项目使用dsh-devtoolbox。
诚实契约
- 纯本地。工具计算发生在浏览器或宿主进程,无任何数据上传。
- 默认不暴露 agent 工具。模型能调用的
toolbox_*工具完全由agentTools配置决定; 命令的 enable/disable 只打印 patch 建议,绝不写配置。 - 路径安全。保存文件名/子目录经过消毒(防路径穿越),写入目录固定为 saveDir。
- 用户自定义工具自负其责。
userTools是本地 JS 表达式(patch 层本就信任!!js)。
兼容性
- 运行时:DeepSeek Harness
0.1.0-rc.6(peerDependencies 固定包线) - 依赖:
zod(内联进宿主)、opencc-js(繁简词典,内联进客户端 bundle)
License
Apache-2.0
链接
同类插件
superdesigndev/treg★ 454
给 Agent 的工具目录:按「要做的事」检索约 2,600 个外部接口(SEO 与 SERP、外链、社交、人物与公司信息补全、广告库、抓取),查看参数与单次调用价格后直接调用,凭据由服务端注入。附带技能,MCP 行在未设置 TREG_TOKEN 前保持禁用。
zhaoolee/notes★ 146
将 DSH 对话导出为锤子便签风格 PNG,或在配置的账号工作区中新建和更新 Markdown 便签。
taxueseek/argo★ 98
专为 agent 打造的搜索工具:多语言,覆盖中文/英文/学术/代码/购物/金融/新闻/百科。
omdsh-dev/dsh-data-agent★ 52
让 AI 帮你连数据库、写 SQL。
geml-spec/geml#integrations/dsh-plugin★ 24
按块寻址的文档读写:MCP server 提供 geml_get / geml_set / geml_check 等工具,Agent 只取回或改写 Markdown、GEML 文档中的某一个块,而不是整篇文件。另带 GEML 写作技能,以及把项目调用图构建为 GEML codemap 并浏览的代码图谱技能。
omdsh-dev/dsh-custom-tool★ 24
用 Monaco 编辑器创建和管理沙箱化的自定义 JavaScript 工具。