前言¶
在 DeepSeek Harness(DSH)里用插件扩展能力时,常见做法是直接改安装目录里的文件,或等上游发版。插件更新、重装或 dsh 升级后,手改内容容易丢;内置插件想长期 fork 一份也不方便回滚。社区插件 dsh-local-plugins 把「已编辑的 dsh 插件」放在本地 Git 仓库里管理,只有在你 Commit 并通过校验后,才通过原子 symlink 交换把某一版快照部署到 dsh 实际加载路径;未 Apply 前 dsh 仍跑旧版。
这是什么¶
维护者 ishanshmalviya5 在 GitHub 发布 dsh-local-plugins(npm 包名同目录名,当前版本 0.2.1,MIT)。SkillHub 分类为工作流;简介为:Keeps edited dsh plugins as local git repos; deploys committed snapshots via atomic symlink swap.
一句话:第三方插件和内置插件都可以迁到 ~/.dsh/local-plugins/<plugin> 做 Git 版本管理,用界面或流程 Commit → Apply,在不影响当前运行版的前提下试改、合并上游、回滚。
核心功能¶
下面能力均来自项目 README,按使用意图归纳。
| 你想做的事 | 界面/操作 | 结果 |
|---|---|---|
| 修 bug 或微调并长期保留 | + Add → Migrate,编辑,Commit,Apply | 改动在 dsh 中生效,更新与重装后仍可恢复 |
| 拉作者新版本且保留自己的 diff | Update | 合并新版本与你的修改;同一行冲突时由你决定如何处理 |
| 改坏了要退回 | Deploy older commit… | 立即切到更早的 commit |
| 定制内置能力(如 model provider) | 对内置插件同样 Migrate | 跑你的版本;Unlink 可恢复原版 |
| 让智能体在安全边界内改插件 | Work on it | 在插件目录内打开上下文;智能体不能替你 Apply |
| dsh 升级或重装后恢复定制 | Reapply all | 重新挂上你的本地版 |
| 锁定某一发行版 | + Add 时填 name@1.2.3 或 …#v1.2.0 等 |
固定版本,不会自行漂移 |
| 看清相对原版改了什么 | 卡片摘要 | 例如「3 files changed vs original」及当前运行状态 |
状态标签(节选):Applied(已跑最新提交)、Changes pending(需 Commit 再 Apply)、Update available、Conflict、Link lost / Reapply required、Broken(Repair installation)、Disabled(崩溃后被禁用)、Not applied(仅跟踪未切换)。
安全与可控性(README 强调):安装/构建脚本默认需你批准;只有构建与检查通过的完整版本才会被切换上线;Apply 失败时不会误切,并提示下一步;Unlink、Delete、回滚会把工作移到可恢复位置(Delete 进 ~/.dsh/local-plugins/.trash/)。
安装与启用¶
环境要求:git、npm、Node 26 或更新;操作系统为 macOS(Apple Silicon)或 Linux(Windows 明确不支持)。与 dsh 0.2.0-rc.2 构建测试;从 0.1 升级无需额外迁移步骤。
- 在终端执行(若 profile 不是
web,把web换成你的 profile 名):
dsh plugin --profile web add github:ishanshmalviya5/dsh-local-plugins
-
重启 dsh web。
-
打开 Settings → Local Plugins。
典型用法:第一次定制¶
- + Add → Migrate,选择已在用的插件;此前手改过的内容会作为起点保留。
- 在
~/.dsh/local-plugins/<plugin>编辑,或点 Work on it 与智能体协作修改。 - Commit,再 Apply,然后重启 dsh web。
整个闭环里,在点击 Apply 之前 dsh 不会加载新树;若新版本无法构建或未通过检查,当前运行版保持不变。
作者发新版:Check now 或启动后自动检查 → Update available → Update;冲突文件可 Fix with agent 后 Finish update,或 Abort;全程未 Apply 前运行版不变。
dsh 完全起不来:在终端执行(README 给出的恢复命令):
node ~/.dsh/local-plugins/.deployed/dsh-local-plugins/scripts/undo.mjs --all
不再定制某插件:先 Unlink (restore original),可选 Delete…(工作进 .trash/,可 Repair installation 恢复)。
本地目录是普通 Git 仓库,可自行 git remote add 并 push 备份。
适用场景与注意¶
适合谁:需要长期 fork 或 patch 社区插件、内置插件;要在上游更新时保留私有改动;希望 commit 级回滚与「仅 Apply 才上线」的 DSH / 智能体开发者。
兼容性(0.2.1):macOS + Node 26 已在真实 dsh 上端到端验证;Linux(Ubuntu)+ Node 26 在 CI 中 lint/单测/包检查通过,README 注明尚未在真实 dsh 上完整端到端手测;Node 22/24 不在支持范围。
权限与安全:插件随当前 dsh 进程权限运行;安装前请阅读 Security 与源码、MIT 许可证。若某个插件在 dsh-local-plugins 加载之前 就导致 dsh 崩溃,本插件无法自修复,需依赖上述 undo.mjs。
DSH 生态强调「一切皆插件」;SkillHub 目录页 为社区站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-local-plugins 把插件定制从「改安装树、怕丢改动的临时操作」变成「本地 Git + 原子部署」的工作流:Migrate、Commit、Apply 闭环,Update 与冲突处理、Reapply、Repair 与 trash 恢复覆盖升级与事故场景。