插件目录 / UI & Skins / dsh-plan-switch
dsh-plan-switch
已验证 · 实测可装 a903067276-rgb
功能简介
One-click enter/exit Plan mode for the DSH web input bar, a quick-click shortcut for /plan
可用 — 实测通过,早期项目
One-click enter/exit Plan mode for the DSH web input bar, a quick-click shortcut for /plan 实测能干净安装、正常启动。早期项目,但功能可用。
「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。
README
dsh-plan-switch 📋
A one-click enter/exit Plan mode button for the DSH web input bar (a quick-click shortcut for /plan) — a plugin for DeepSeek Harness (dsh) web.
Unofficial project: independently developed and maintained by a community member, not an official DeepSeek product.
Screenshot

The checklist icon button at the left end of the input tool row (official DSH design tokens, follows dark/light theme).
Features
- One-click enter/exit Plan mode: a checklist icon button at the left end of the input tool row; clicking it runs the official
/plantoggle command. - Hides while Plan mode is active: the button hides itself and the official plan card takes over the status display — there is never a duplicated indicator.
- Pending-switch guard: while a
/plantoggle is queued, the button is disabled (the same "switching" semantics as the official plan chip), so a stray click can't reverse the switch. - Live state: the button follows the plan state through the official projection, so changes from any entry point (
/plancommand, official chip, agent switching mid-run) are reflected in real time.
Install
Official bundle install (one line):
dsh plugin --profile web add "github:a903067276-rgb/dsh-plan-switch#main"
Restart dsh web after installing (bundle layers are composed at startup). Requires pnpm on PATH (dsh plugin forwards to pnpm).
Manual mount (fallback): see docs/install.md — symlink into ~/.dsh/profiles/web/node_modules/ plus a single entry in ~/.dsh/cordis.patch.yml, then restart.
Usage
A checklist icon button appears at the left end of the input tool row (official DSH design tokens, follows dark/light theme). Click it to enter plan mode — the same as typing /plan. While plan mode is active the button hides itself: the official plan card takes over the status display, so there is never a duplicated indicator; while a /plan toggle is pending the button is disabled, so a second click can't reverse the switch.
Platform support
| Platform | Status |
|---|---|
| macOS | ✅ fully tested (development environment) |
| Linux | ⚠️ expected to work (pure frontend button, no platform dependency), untested |
| Windows | ⚠️ expected to work (pure frontend button, no platform dependency), untested |
Requirements
- DSH web >= 0.1.0-rc.6 (run with
dsh web) — the code callscommands.executewith the 3-argument contract (rc.8+) and auto-degrades to the 2-argument one on rc.6/rc.7 - Version compatibility:
- Maintenance policy: this plugin keeps evolving with the latest DSH releases; compatibility with older DSH versions is best-effort only and not guaranteed going forward.
| Your DSH version | Install this | Note |
|---|---|---|
| 0.1.0-rc.6 and newer (incl. 0.1.1-rc.1/rc.2) | main (v0.3.2+) |
Best effort — 3-arg call with auto-degrade to 2 args on rc.6/rc.7 (verified locally on rc.6/rc.8, not guaranteed) |
| 0.1.0-rc.8 and newer (conservative) | v0.3.1 — dsh plugin add github:a903067276-rgb/dsh-plan-switch#v0.3.1 |
Last build without the degrade logic |
| 0.1.0-rc.6 – 0.1.0-rc.7 (conservative) | v0.3.0 — dsh plugin add github:a903067276-rgb/dsh-plan-switch#v0.3.0 |
2-argument commands.execute contract |
- No host-side setup: the host half is a no-op — the whole plugin is a client-side button that runs the official
/plancommand, so nothing extra is required on any platform.
How it works
- Host (
lib/index.js): no behavior — this is a pure UI plugin; the client half is discovered through thedsh.clientdeclaration inpackage.json(exports["./client"]). - Client (
lib/client.js): registers the checklist icon button in theconversation.input.leftseat using official DSW design tokens (follows dark/light theme); reads plan state live throughuseProjection("plan"); clicking executes the official/plancommand viactx.remote.commands.execute(sessionId, "/plan", [])— the whole flow stays on the official command chain. - State handling: the effective plan state mirrors the official PlanChip algorithm (
pending ? !active : active). While plan mode is active the button returnsnull(hidden — the official plan card owns the indicator, no duplicate); while a toggle is pending the button is disabled so a second click can't reverse the switch; command failures turn the button error-colored with the message in its tooltip.
Notes
- Pure client-side: no host routes, no file writes, no stored data.
- Restart
dsh webafter installing or updating (bundle layers are composed at startup); client-side edits apply on a page refresh.
Development
- Source:
lib/index.js(host side, no-op),lib/client.js(web injection) - Workflow: edit locally → push to
main→pnpm updateto verify the install
License
安装
装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:
dsh plugin add dshbase-catalog 然后对 agent 说「帮我装 dsh-plan-switch」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。
该插件是 GitHub 源码(未发 npm)——直接从仓库装:
Web profile:
dsh plugin --profile web add github:a903067276-rgb/dsh-plan-switch Headless(CLI)profile:
dsh plugin --profile headless add github:a903067276-rgb/dsh-plan-switch 实测报告
验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。