dsh-local-plugins
把你改过的插件(第三方或内置)保存为本地 git 仓库:只部署已构建并通过检查的指定提交,应用后导致 dsh 崩溃时自动回滚,把 npm 或 git 源的更新合并进你的修改,并可打开智能体会话,把你的修改压缩为原始发布版本之上的一个提交(先建备份分支)。
安装
dsh plugin --profile web add dsh-local-plugins
沙箱测试结果
| 阶段 | 结果 |
|---|---|
| 1 安装 | ✓ |
| 2 列装 | ✓ |
| 3 挂载 | ✓ |
| 4 启动 | — |
四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。
README
dsh-local-plugins

Customize any dsh plugin — even a built-in one — without losing your changes when things update, break or get reinstalled.
What you can do with it
You want to… · You click · You get
Fix or tweak a plugin and keep the fix · + Add → Migrate, edit, Commit, Apply · Your change runs in dsh and survives updates and reinstalls
Take the author's new release without losing your tweaks · Update · The new version plus your changes; if both touched the same lines you are asked, and nothing breaks meanwhile
Go back when a change misbehaves · Deploy older commit… · The earlier version, instantly
Customize a built-in dsh feature (for example a model provider) · the same steps, on a built-in plugin · Your version runs; Unlink gives the original back
Let an AI agent change a plugin safely · Work on it · An agent opens inside that plugin's folder with the context filled in; it can't switch anything on — only you can
Keep your history tidy so updates stay easy · Squash my changes · An agent collapses all your commits into one on top of the original release; a backup branch is made first and it checks the code is unchanged
Pin a dependency to a newer version · Dependency overrides → Apply override · The override is saved, deployed and checked: you see a ✔ only when it is really installed
Recover after dsh was upgraded or reinstalled · Reapply all · Your customizations are switched back on
Try one exact version · + Add, name@1.2.3 (or …#v1.2.0) · That version, and it stays put
See what you changed versus the original · look at the card · "3 files changed vs original", and what is running right now
Stop customizing a plugin · Unlink, then Delete… if you like · The original is back; your work is kept in a trash folder you can restore
Keep your work somewhere else too · it is an ordinary git folder: ~/.dsh/local-plugins/<plugin> · add your own git remote and push
And when something goes wrong, it tells you whether your setup is still safe and what to do next — it does not just say "failed".
Install (2 minutes)
1. In a terminal (replace web with your profile name if you use another):
dsh plugin --profile web add github:ishanshmalviya5/dsh-local-plugins
2. Restart dsh web.
3. Open Settings → Local Plugins.
You need git, npm and Node 26 or newer, on macOS or Linux ([details](#compatibility)).
Your first customization
1. + Add → Migrate and pick a plugin you already use. Anything you had already changed by hand is kept as your starting point.
2. Make your change — edit the files in ~/.dsh/local-plugins/<plugin>, or press Work on it to have an AI agent do it with you.
3. Commit, then Apply, then restart dsh web.
That's the whole loop. Nothing changes in dsh until you click Apply, and if the new version can't be built or doesn't pass the checks, the old one simply keeps running.
More stories
<details><summary><b>The author released a new version</b></summary>
Press Check now (it also checks shortly after dsh starts). A plugin with news shows Update available; click Update. Your changes and the new release are combined for you. If you and the author changed the same lines, the card lists those files and you choose: fix them (or press Fix with agent) and Finish update, or Abort to forget the attempt. Your running plugin is untouched throughout; you decide when to Apply.
</details>
<details><summary><b>A change made things worse</b></summary>
Click Deploy older commit… and pick the version that worked. If dsh itself starts misbehaving right after you applied something, it notices, puts the last working version back, and shows a message — your edits are saved for you to fix with Work on it.
If dsh won't start at all, run this in a terminal to put every original plugin back: node ~/.dsh/local-plugins/.deployed/dsh-local-plugins/scripts/undo.mjs --all
</details>
<details><summary><b>I'm customizing a built-in plugin and want out</b></summary>
Unlink (restore original) gives dsh the original, untouched plugin again. Your version stays listed (as Not applied), so you can switch it back on with Apply whenever you like.
</details>
<details><summary><b>I want to remove a plugin from the list</b></summary>
Unlink it first, then Delete… and type its name. Your work is moved to ~/.dsh/local-plugins/.trash/, not erased. Move the folder back and press Repair installation to bring it back.
</details>
<details><summary><b>I don't know what state things are in</b></summary>
Press Repair installation. It looks for anything that doesn't add up (for example after a crash or a dsh upgrade), fixes what is safe, tells you about the rest, and never deletes your work. Recent operations shows what ran, how long it took, and the log; Disk usage shows space per plugin and lets you clean up old versions with a preview first.
</details>
<details><summary><b>Using an exact version</b></summary>
For npm plugins: name, name@1.2.3 or name@beta. For plugins from git: a web address, github:owner/repo or git@host:owner/repo, optionally ending in #v1.2.0 (a release), #branch, or #commit. A pinned release or co
…(truncated)
以上内容来自 npm 上的 README,我们只做格式化,不改内容。
版本
npm 上共发布:4,最后更新 2026-10-22