DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

Branch Inbox Guard — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
B

dsh-branch-inbox-guard

Branch Inbox Guard

DeepSeek Harness (DSH) 插件:移除分叉子进程从父进程继承的排队提示,使新分支运行你输入的提示,而不是父进程的下一条提示。

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

npx -y @deepseek-ai/dsh plugin --profile web add github:xine2009cn/dsh-branch-inbox-guard#47e4c8e375e61eb23bc445b033ecae0515d175ab
README兼容性版本

兼容性与来源证明

Branch Inbox Guard 以 dsh-branch-inbox-guard 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/9/11

版本

0.1.0stable
2026/9/11

相关插件

正在加载相关插件…

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

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

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

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

认领这个 Plugin →
报告问题

相关插件

继续浏览 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-branch-inbox-guard

English | 中文

Keeps a DSH fork child from inheriting its parent's queued prompts. Branch a session, type a question, and the branch runs your question — not the prompt the parent had queued next.

  • Pure host plugin: no core-file patching, no client half, no configuration.
  • Durable: the drop is appended as a normal agent/inbox/spliced cancel event, so the queue stays clean across restarts.
  • Idempotent, and conservative — it only removes items it can prove came from the fork parent.

The problem it removes

A DSH branch session is a fork child: its log is seeded with the parent's completed-turn prefix. That prefix can contain the parent's undelivered agent/inbox/spliced events — prompts you queued while the parent was still working.

On DSH 0.1.5 the agent inbox is a session projection that folds the whole log, so those replayed splices become the child's pending queue. The prompt you then type in the branch is appended behind them, and the branch's first turn claims the parent's queued prompt instead — the question you typed appears to vanish.

On DSH 0.1.1-rc.2 the inbox was rebuilt from the log suffix after the fork cut, so the same seed produced an empty queue. This plugin restores that behaviour through public APIs, without patching core packages.

parent session                     branch session (fork child)
  turn 10 ─ completed                seed = parent prefix
  queue:  [A] [B]  ← undelivered     queue:  [A] [B]   ← replayed from the seed on 0.1.5
  turn 11 runs A                     you type C → queue: [A] [B] [C]
                                     first turn runs A   ← C waits, and looks lost
                                     with this plugin: queue [C] → first turn runs C

What it does

On every agent/created it inspects the pending queue and drops exactly the items whose inserting agent/inbox/spliced event lies inside the session's inherited prefix (seq < session.inheritedEventCount):

Pending itemAction
Inserted before the fork cut (the parent's)Dropped. A single inbox.clear() when the whole queue is inherited, otherwise one inbox.remove(id) per item — both recorded durably as cancels.
Inserted by the session's own eventsKept. A branch that already queued its own prompts (or a session resumed later) only loses the inherited ones.
Unseeded session (inheritedEventCount is 0)Never touched.
Origin not traceable in the logKept (conservative).

It also covers fork-context subagents (their seed has the same property, so a delegated task would otherwise queue behind the parent's prompts), and it heals sessions that were polluted before you installed it: open such a branch once and the phantom items are cancelled, while the prompt you typed in it survives.

Install

# from npm (prebuilt — skips the build-approval step)
dsh plugin --profile web add dsh-branch-inbox-guard

# from GitHub
dsh plugin --profile web add github:xine2009cn/dsh-branch-inbox-guard

# from the release tarball
dsh plugin --profile web add https://github.com/xine2009cn/dsh-branch-inbox-guard/releases/latest/download/dsh-branch-inbox-guard-0.1.0.tgz

# from a local file / directory
dsh plugin --profile web add ./dsh-branch-inbox-guard-0.1.0.tgz

Then restart DSH (docker restart <container>, or restart the app) and reload the Web GUI. The plugin is a host-side bundle row, so a profile whose dsh.profile.bundles lists it will load it at boot.

Verify it is working

Every time it drops something, the DSH log shows one line:

[branch-inbox-guard] session-xxxxxxxx: dropped 5 inherited prompt(s) from its fork parent

End-to-end check: queue a message in a session while the agent is running, branch from a completed turn, then look at the new branch — its queue should be empty, and a question typed there should start running immediately.

Uninstall

dsh plugin --profile web remove dsh-branch-inbox-guard
docker restart <container>

Nothing else is left behind: the plugin writes no files outside its own package, and never modifies session history — the only thing it appends is the cancel event that removes the inherited items.

Compatibility

Verified against DSH 0.1.5-rc.1 and 0.1.5-rc.2 (the versions whose inbox projection folds the fork-inherited prefix). On 0.1.1-rc.2 the queue is already empty at fork time, so the plugin is a no-op there.

It uses only documented faces: the agent/created event, agent.inbox (nextTurn, nextStep, clear, remove), session.inheritedEventCount, session.snapshotEvents() and session.id. If a future DSH release makes the inbox projection skip the inherited prefix again (i.e. fixes this upstream), this plugin simply finds nothing to drop — and can be uninstalled.

Tests

npm test        # or: node test/guard.test.mjs

Self-contained unit tests (no dependencies, no fixtures, no session data): mixed queue keeps the own prompt and drops the inherited ones, a pure fork child gets a single durable clear(), inherited steering input (next-step) is dropped, an unseeded session is untouched, an empty queue appends nothing, a second run is a no-op, and an item with no traceable origin is kept.

License

MIT