deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
English | 简体中文

@zaogaogwc/dsh-plugin-manager 是面向 DeepSeek Harness(DSH)Web GUI 的 Mod 风格插件管理器。它把分散的来源包、Loader 实例和 Agent 预设整理为可理解、可预览、可撤销的管理界面。
入口:设置 → 插件 → 插件管理。
本项目管理“是否启用”,不会把“禁用”伪装成“卸载”。插件文件与 npm 依赖不会因禁用而删除。
当 Web profile 安装多个插件包后,用户通常会遇到三个问题:不知道某个插件来自哪个包、不清楚它当前由 Loader 还是 Cordis 管理,以及为了某项任务临时切换一组插件时容易改错配置。
本管理器使用三级视图解决这些问题:
例如,example-package/plugin-a 与 example-package/plugin-b 会明确显示为 example-package 的包内成员,而不是两个来源不明的独立插件。
~/.dsh/cordis.patch.yml 的专属 managed 段。管理器不会直接篡改运行中的 Cordis Fiber。确认启停后,它只更新补丁文件,由 DSH 官方 plugin-include watcher 和 Loader 执行热重载。
flowchart LR
UI[插件管理界面] --> Preview[变更预览]
Preview --> Confirm[用户确认]
Confirm --> Patch[原子更新 cordis.patch.yml]
Patch --> Watcher[官方 include watcher]
Watcher --> Loader[Loader 生命周期]
Loader --> Cordis[Cordis FiberState]
Cordis --> UI
界面区分配置、Loader、Cordis 和管理器推导状态,不把不同层级混为一谈。
| 字段 | 含义 |
|---|---|
availability |
live、configured、disposed 或预设中的 declared |
configState |
Loader 配置层的 enabled 或 disabled |
fiberState |
Cordis 的 pending、loading、active、failed、disposed、unloading 或 absent |
status |
界面主状态,包括运行中、已禁用、未运行和需要重启 |
issue |
依赖缺失、加载失败等独立诊断信息 |
“需要重启”是管理器根据更新状态推导的提示,不会冒充 Cordis 原生状态。
可以将当前 Web profile 的第三方插件启停状态保存为具名方案,例如“写作”“开发”“极简”。
Agent 预设与 Mod 启停方案是两种不同对象:
| 对象 | 控制范围 | 生效时间 | 存储 |
|---|---|---|---|
| Mod 启停方案 | 当前 Web profile 的第三方宿主插件 | watcher/Loader 应用补丁后 | 管理器本地状态目录 |
| Agent 预设 | 新 Agent 会话可使用的能力组合 | 此后创建的新会话 | DSH Agent 预设目录 |
创建新预设时,可以选择任意官方预设或用户预设作为基础。差量合并会保留来源预设的专有工具、配置、注释和管理器暂不认识的条目。
输入自然语言需求后,AI 可以为第三方插件生成分类或启停建议:
随包提供的官方工具简介包含中文和英文,并订阅 DSH 官方 locale 服务。切换 DSH 语言后,官方简介同步切换;第三方简介保持作者原文,不自动翻译。
对于从 npm registry 安装的第三方来源包,管理器可以:
本地链接、Git、URL、压缩包、npm 别名和官方包不会误走 registry 一键更新。
403。^22.19.0 或 >=24.0.0package.json 中 peer dependencies 兼容的 DSH/Cordis 版本发布到 npm 后执行:
dsh plugin --profile web add @zaogaogwc/dsh-plugin-manager
dsh web
打开 http://127.0.0.1:3080,进入 设置 → 插件 → 插件管理。
git clone https://github.com/Zaogaogwc/dsh-plugin-manager.git
cd dsh-plugin-manager
pnpm install --frozen-lockfile
pnpm test
pnpm build
dsh plugin --profile web add link:<本包绝对路径>
dsh web
Windows 路径包含空格时,可以创建无空格 junction:
New-Item -ItemType Junction -Path D:\dsh-plugin-manager -Target (Resolve-Path .)
dsh plugin --profile web add link:D:/dsh-plugin-manager
构建必须生成 lib/index.js 和 lib/client.cjs。Client 产物必须通过 DSH __ModuleLoader__.load 注册,不能发布为未注册的裸浏览器 ESM 文件。
| 路径 | 用途 |
|---|---|
~/.dsh/cordis.patch.yml |
本管理器写入专属 managed 禁用段 |
~/.dsh/plugin-manager/history.json |
最近的启停历史 |
~/.dsh/plugin-manager/mod-schemes.json |
具名 Mod 启停方案 |
<profile>/.dsh-plugin-manager-backups/ |
包更新备份及待重启状态 |
Host 端注册 /api/plugin-manager/* 路由族,包括目录与来源读取、AI 分类和推荐、批量变更预览与应用、历史和撤销、恢复与修复、Mod 方案、npm 更新及 Agent 预设创建。
src/
index.js Host 入口与路由注册
routes.js 清单、AI、批量事务、历史、更新与预设 API
inventory.js bundle 来源、Loader/Cordis 快照、预设投影
catalog.js 官方双语元数据、组合生成与差量合并
persist-toggle.js 原子 managed patch、历史、撤销、恢复与修复
mod-schemes.js 独立的 Mod 启停方案存储
package-update.js registry 检查、profile 备份、更新与回滚
client/
index.js React 管理界面和状态交互
api.js 同源 API 客户端
test/ 纯逻辑、持久化、更新和客户端状态测试
pnpm install --frozen-lockfile
pnpm test
pnpm build
pnpm pack:check
发布前建议至少验证:
cordis.patch.yml 只改变本管理器 managed 段,重启后状态仍存在。典型错误:
loaded without registering "@zaogaogwc/dsh-plugin-manager" via __ModuleLoader__.load
通常是 lib/client.cjs 未重新构建、浏览器缓存旧包,或 package.json、cordis.patch.yml 与 Loader banner 的包名不一致。运行 pnpm build,确认三处都使用新包名,再重启 DSH 并刷新页面。
127.0.0.1 或 localhost。插件启停只改变 Loader 配置,可以由 watcher 热重载;包更新会同时替换 Host 和 Client 代码。重启用于保证两端加载同一版本,不应以局部热替换冒充完整更新。
不等于。禁用仅写入 Loader 补丁;包仍保留在 profile 依赖和磁盘中。卸载必须显式执行 DSH 插件移除命令。
发布包只包含官方目录元数据和通用逻辑,不包含作者或用户机器上安装的第三方插件清单。README 和封面中的第三方名称均使用 example-package 等示例词。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: plugin-manager。