DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Plan Build Toggle — DeepSeek Harness 插件(DSH Plugin)
← Plugins
P

dsh-plan-build-toggle

Plan Build Toggle

DSH Web 客户端插件:在编写器中提供持久的 OpenChamber 风格 Plan|Build 切换开关(支持按 Tab 切换),通过主机计划投影驱动原生 /plan 命令通道

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:jdqingm/dsh-plan-build-toggle#05fa468efd4dbb3337c03fbcb5944112e2b7c010
README兼容性版本

兼容性与来源证明

Plan Build Toggle 以 dsh-plan-build-toggle 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/8/31

版本

0.1.0stable
2026/8/31

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/8/31
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

相关插件

继续浏览 developer-tools 分类下经过校验的插件。

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Sdk Minimal@deepseek-ai/dsh-sdk-minimal独立的最小 SDK 配置包:JSON-RPC、一个 DeepSeek 适配器、持久化 Shell 和 JSONL 会话Sdk App@deepseek-ai/dsh-sdk-appdsh SDK 配置包:基于 dsh-base 提供 stdio JSON-RPC 服务和进程生命周期管理Subagent Codex@deepseek-ai/dsh-subagent-codex基于官方 app-server 协议的一次性 Codex 子代理提供程序

README

dsh-plan-build-toggle

A DeepSeek Harness web-client plugin: a persistent, OpenChamber-style Plan|Build toggle on the composer, driving DSH's native /plan channel over the host plan projection.

English | 简体中文

Why

DSH already ships plan mode end-to-end (@deepseek-ai/dsh-plan-mode: the /plan / /plan off commands, the per-session plan projection, the exit_plan_mode review). Its built-in composer control (dsh-client-ui-plan), however, only reveals a "Plan ×" chip after plan mode is on — there is no visible mode control in the default Build state.

OpenChamber's form factor is different: a persistent mode control on the input bar, with bare Tab switching between Build and Plan. This plugin fills exactly that gap on DSH — same seat, same command channel, no second vocabulary of modes.

What you get

  • Persistent segmented pill (Plan|Build) in the composer's mode-control area (the built-in chip's own seat, conversation.input.plan). Active segment highlighted: Plan in warn colors, Build in neutral.
  • Two-way switching through command.execute — clicking Plan runs /plan, clicking Build runs /plan off, exactly as if you typed them.
  • Tab / Shift+Tab to switch (the OpenChamber/opencode convention) while the caret is in this session's composer editor. Strictly scoped:
    • bare Tab only — any ⌘/Ctrl/Alt chord passes through untouched;
    • yields to any earlier handler that already consumed the event (defaultPrevented), so a future autocomplete-over-Tab keeps priority;
    • fires only when focus is inside the session's own editor (popups, settings, other sessions are unaffected);
    • does nothing when the plan projection is absent (drafts, presets without plan mode) or while a switch is in flight.
  • Host projection is the source of truth: the shown target is pending ? !active : active — a folded host value, not client optimism. Switches made while the agent runs queue as pending and self-correct as projection frames arrive.
  • Inline error state when the command channel rejects a switch.
  • Replaces the built-in chip cleanly: the bundle patch disables the stock ui-plan row, so the single-instance seat never collides. Uninstall to restore stock behavior.

Boundaries (same as DSH plan mode)

  • Plan mode is soft guidance (a policy prompt section), not an enforced sandbox. For hard read-only planning, compose separate sandbox / approval presets — this plugin only drives the mode vocabulary.
  • No control on draft sessions (plan state is per-session).
  • Exiting still happens via the model's exit_plan_mode review, rendered by the Web plan-review flow.

Install

Via the in-app Community Market

Once published, the plugin appears in Market → Installable on your selected catalog source (npm-backed, repository-backlink verified). Install there, or with the official CLI:

dsh plugin --profile desktop add dsh-plan-build-toggle@0.1.0

From source (no npm publish needed)

git clone https://github.com/jdqingm/dsh-plan-build-toggle.git
cd dsh-plan-build-toggle
bash scripts/install.sh desktop   # copies into the profile + registers the bundle

Either way: restart the DSH app afterwards — the browser roster is computed at host boot.

Uninstall

  1. Remove dsh-plan-build-toggle from dsh.profile.bundles in ~/.dsh/profiles/<profile>/package.json (or uninstall via Market/CLI if installed that way).
  2. Delete ~/.dsh/profiles/<profile>/node_modules/dsh-plan-build-toggle.
  3. Restart the app — the stock "Plan ×" chip returns (the ui-plan row is no longer disabled).

How it is built

Two halves, no build step:

  • lib/client.js — the browser half: a hand-written window.__ModuleLoader__.load payload (the same module format the official client plugins ship). React comes from the shared module graph; CSS is injected once under a data-plugin-css guard.
  • lib/index.js — an empty node-side apply(), so the package appears as a host roster row; dsh.client in package.json declares the browser half and its load-order deps.
  • cordis.patch.yml — the bundle patch layer: inserts the roster row and disables the built-in ui-plan row (seat handover). Listed via dsh.bundle.patch, so adding the package to dsh.profile.bundles is all the mounting it needs.

Iteration: edit lib/client.js, re-run scripts/install.sh, refresh the page. The webserver serves plugin assets with cache-control: no-cache, so no app restart is needed unless the roster itself changes.

License

MIT