DSH Plugins
August 15, 2026 · View on GitHub
DeepSeek Harness 的自有插件仓库。每一个子目录是一个插件(Dynamic Cordis Plugin),把完整源码存档在这里,需要时通过 DSH 的动态插件机制按需加载。
仓库用途:源码存档 + 复用。插件不写入正在运行的 profile,零风险、不依赖重启。
本仓库插件列表
| 目录 | 功能 |
|---|---|
| archived-session-view | 查看/打开/删除已归档会话 |
如何使用
- 打开 DSH 的 Cordis 面板(
@cordis)。 - 通过动态插件机制(
define+run)加载对应插件的plugin.js源码。 - 也可以把
plugin.js的 Host/Client 两段分别提供给动态插件定义。
每个子目录的 README 里写有该插件的具体说明与重建步骤。
一键重载(重启后恢复所有插件)
用 ./reload.sh 扫描仓库中所有插件的源码并生成加载清单:
cd dsh-plugins && ./reload.sh # 打印加载清单 + 加载步骤
cd dsh-plugins && ./reload.sh --json # 输出机器可读清单(供 agent 使用)
注意:reload.sh 只做「准备 / 诊断」。DSH 动态插件最终必须由 Agent 通过
cordis define+cordis run逐插件加载,并经你在界面批准。脚本不能也不 会直接注入运行中的进程。让 Agent 跑reload.sh --json,然后按清单重建即可。
为什么是源码存档
DSH 的动态插件是进程内的、临时的(process-local),重启后不会自动存在。因此把完整源码保存在本仓库,作为长期资产;每次重启后需要时拉回源码重建即可,无需修改 profile 配置、无集成风险。
重要:Client 端必须用官方 inject 写法
有 UI 的插件,其 plugin.js 的 Client 段必须用官方写法:
return {
inject: ['slots'],
apply(ctx) {
const s = ctx.slots
// 用 s.inject(...) / s.register(...) 注册 UI
}
}
不要用 const slots = ctx.get('slots'); if (!slots) return 的可选写法——那会导致
Client 段静默退出、UI 没有真正注册进 Slot 系统,页面上看不到入口(本插件早期就踩过这个坑)。
新增插件
复制 archived-session-view 目录结构,新建一个子目录:
plugin.js—— 完整源码(Host + Client)README.md—— 插件说明与用法