omdsh-dev/dsh-custom-tool ↗★ 18
dsh-custom-tool
DSH custom tools: manage user-defined JavaScript tools in the settings UI with a Monaco editor; the model creates its own tools through custom_tool_create
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:omdsh-dev/dsh-custom-tool说明文档
阅读完整 README ↗dsh-custom-tool
DeepSeek Harness 的自定义工具插件:用户在设置界面的「Custom Tool」页用 Monaco(VS Code)编辑器 + TypeScript 智能提示编写自己的 JavaScript 工具;模型也可以通过 custom_tool_create / custom_tool_remove / custom_tools_list 自主扩展和修剪同一套工具。所有工具持久化、热注册,并在下一步写入模型提示词。


解决的问题
- 用户无法扩展自己的 agent:以前加能力要发布 harness 包;现在一个工具就是设置里的一张表单——名字、描述、参数、代码,保存即生效、模型立即可调。
- 模型无法自我成长:
custom_tool_create让模型在会话中途持久化工具(热注册,下一步即可见),且与 UI 共用同一道校验门——UI 会拒绝的东西模型同样存不进去。 - 不可信代码在进程内执行:每次调用在独立 worker 线程的全新
node:vm环境里按白名单执行并受硬预算约束,而不是在 agent 进程里裸eval。
功能
- 设置界面(Custom Tool 区,专属导航图标):列表、新建、编辑、启停、删除;模型创建与工作区工具带徽章。全部文案接入 harness 语言体系(中文 / English),随语言偏好即时切换。
- Monaco 编辑器:VS Code 引擎 + TypeScript 语言服务;
args按参数 schema 生成类型,env/沙箱全局量有声明,补全与报错实时。编辑器与 TS worker 内联打包——客户端 bundle 单文件。 - 持久化存储:工具存在
custom-tools设置命名空间(schema 默认值、组合 base、用户文档三层,与 harness 其他设置一致)。改动即时生效,重启自动恢复。 - 热注册:启用的工具在设置写入提交的瞬间注册进
ctx.tools;停用/删除立即注销。工具 schema 由 harness 自动汇入系统提示词。 - 模型自助:
custom_tool_create(按名 upsert)、custom_tools_list、custom_tool_remove与 UI 共享校验门和下述归属规则。
作用域与权限边界
每个工具声明两种执行作用域之一。这条边界是本插件的核心安全契约:
global(默认) | workspace | |
|---|---|---|
| 用途 | 纯计算、外部数据、工作流 | workspace 内重复性的文件任务 |
fetch 网络 | 受 allowNetwork 配置控制 | 受 allowNetwork 配置控制 |
console、定时器、TextEncoder、URL 等 | 有 | 有 |
fs 文件能力 | 无 | readFile / writeFile / list,限定在本会话 workspace 根目录内 |