dsh-plugins
DeepSeek Harness (DSH) dynamic Cordis plugins
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 15, 2026
- Updated
- Sep 20, 2026
Introduction
dsh-plugins
DeepSeek Harness(DSH)动态 Cordis 插件集合。
⚠️ 动态插件不跨 DSH 重启。重启后如何恢复见 LOAD.md(一句「加载所有插件」即可)。
包含插件
完整索引见 PLUGINS.md(由 scripts/check.js 自动生成),当前有:
- chime — 回合完成与互动提示音(纯 Client,Web Audio 合成 + 音量调节)
- attach-files — 添加文件/目录到对话(📁 按钮 + 文件选择器)
两种分发形态
同一批插件以两种形态共存,packages/ 是活跃开发线,plugins/ 是可直接粘贴的动态插件版:
plugins/<id>/ | packages/<id>/ | |
|---|---|---|
| 形态 | manifest + 函数体源码,经 cordis_define/cordis_run 动态加载 | npm 包(@eeyzs1/dsh-*),profile 常驻安装 |
| 安装 | 见 LOAD.md | dsh plugin --profile web add <路径> |
| 校验 | node scripts/check.js | 各包自带 build.mjs(chime / attach-files 需先构建 lib/) |
packages/ 下另有三个仅包形态的插件:browser-use(browser-use MCP 集成 + 无头/有头切换工具)、image-gen(智谱 CogView 文生图工具)、llm-transport-recovery(DeepSeek 传输故障两阶段恢复)。
两棵树的同名插件保持逻辑同步——修改其一(如 chime)时请同步另一棵,或明确注明分叉。
社区
- 本仓库在 GitHub 标记了
dsh-plugin话题,便于社区发现。 - 插件展示:Show Your Plugins! #2528
- 功能请求(用户级、重启后自动加载的插件目录):Ideas #2527
仓库结构
dsh-plugins/
├── plugins/<id>/ # 每个插件一个目录
│ ├── manifest.json # 元数据(idPrefix / name / purpose / entry / version)
│ ├── host.js # Host 端源码(函数体 `return { apply(ctx) { … } }`)
│ ├── client.js # Client 端源码(函数体,同规则)
│ └── README.md # 该插件说明
├── scripts/check.js # 校验所有插件 + 生成插件索引
├── manifest.schema.json # manifest 字段约定(文档)
├── PLUGINS.md # 自动生成的插件索引(勿手改)
├── LOAD.md # 一键重载指南
└── .github/workflows/ # push 时自动跑校验
加一个插件
快捷方式:复制 plugins/_template/ 改名即可(
_开头目录会被校验跳过)。
- 建
plugins/<id>/目录(<id>用 kebab-case,如attach-files)。 - 写
manifest.json,字段约定见 manifest.schema.json:idPrefix:3–6 个小写字母(cordis_define的plugin.idPrefix)name/purpose:必填entry:{ "host": "host.js", "client": "client.js" }(至少一个)
- 写
host.js/client.js:存函数体本身,直接整段粘到code.host/code.client。 - 跑校验并提交:
node scripts/check.js # 或 npm run check / pnpm check
校验
node scripts/check.js 会:
- 校验每个 manifest 的必填字段与
idPrefix格式; - 按 DSH 的函数体约定语法检查
host.js/client.js; - 重新生成 PLUGINS.md 索引。
GitHub Actions 在每次 push / PR 也会自动跑(.github/workflows/check.yml),
出错会亮红叉,保证不会把坏插件推上去。
加载一个插件
见 LOAD.md。一句话:读 manifest + host.js + client.js → cordis_define → cordis_run。
插件索引
见 PLUGINS.md(自动生成,勿手改)。