DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

Nested Followups — DeepSeek Harness 插件(DSH Plugin)
← Plugins

dsh-nested-followups

Nested Followups

DeepSeek Harness 对话的消息级嵌套后续分支

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

npx -y @deepseek-ai/dsh plugin --profile web add dsh-nested-followups@0.2.2
README兼容性版本
A real DeepSeek Harness session branching repeatedly from answers at multiple depths

兼容性与来源证明

Nested Followups 以 dsh-nested-followups 发布,当前版本为 0.2.2。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
npm
Registry 更新时间
2026/9/20

版本

0.2.2stable
2026/8/24
0.2.1stable
2026/8/19
0.2.0stable
2026/8/19
查看其余 1 个版本收起版本
0.1.0stable
2026/8/19

相关插件

正在加载相关插件…

最新版
0.2.2
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
483 kB
文件数
17
Surface
web
许可证
MIT
发布源
npm
GitHub
★ 48
周下载
147
安全扫描
✓ v0.2.2 扫描通过
最近提交
2026/9/19
查看源码 ↗项目主页 ↗
README Badge

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

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

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

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

README

dsh-nested-followups

English | 中文

dsh-nested-followups — a nested follow-up conversation tree for DeepSeek Harness

A plugin for DeepSeek Harness that adds a conversation tree to the web interface. Ask a follow-up question about any earlier answer, and it opens as an isolated branch instead of being appended to the end of your main conversation.

The problem it solves

A DeepSeek Harness conversation is linear. When you are part way through an engineering task and you want to ask what a term in an earlier answer means, you have two poor options: ask in the main conversation, which mixes an unrelated question into the task context and keeps sending it with every later request, or start a new conversation, which loses the context that made the question worth asking.

This plugin adds a third option. The follow-up becomes a branch that inherits the conversation up to the answer you asked about, and nothing else. Your main conversation never sees it.

Features

  • A tree view of the current conversation. Every user and assistant message is a separate card. The main conversation runs downward; branches grow to the right.
  • Follow-up questions at any depth. A branch answer can be branched from again, with no limit on nesting.
  • Genuine context isolation. Each branch is a real, separate session created with the official fork mechanism, not a prompt-level instruction to ignore something.
  • Read-only branches. A branch can read the workspace but cannot modify it, so a follow-up can never disturb work in progress in the main conversation.
  • Progressive collapse for large trees. Each anchor folds to a dot, opens into one capsule per branch, and expands one level at a time, so a deep tree stays readable. Folded branches keep streaming and show activity markers.
  • No interference with the standard interface. The regular chat view, the sidebar, and message rendering are unchanged. Branches do not appear in the session list.
  • Reuses the model provider's cached context. A branch sends the same request prefix as the main conversation, so it does not pay to re-read the inherited history.

Requirements

RequirementVersion
DeepSeek Harness0.1.x (verified on 0.1.0-rc.7, 0.1.0-rc.8, and 0.1.1-rc.2)
Node.js22.19 or later
Package managerpnpm

Installation

dsh plugin --profile web add dsh-nested-followups

Restart the DeepSeek Harness web profile if it is already running.

Installing from source instead
git clone https://github.com/sluminositys/dsh-nested-followups.git
cd dsh-nested-followups
pnpm install
pnpm run check
dsh plugin --profile web add .

To uninstall:

dsh plugin --profile web remove dsh-nested-followups

Uninstalling removes the plugin's interface and services. It does not modify your main conversation and does not delete branch history.

Usage

Open a conversation as usual and select Tree View in the conversation header. Switching between Chat and Tree View changes only how the conversation is displayed; no data is copied or converted.

In Tree View:

  1. Move the pointer over a completed assistant message and select Ask follow-up.
  2. Type your question. It appears as a card to the right of the answer you asked about, and the reply is generated below it.
  3. To keep talking within that branch, select Continue this branch on its most recent answer. To isolate the context one level further, select Ask follow-up again.
  4. Select any card to read the full message. Use search, focus, collapse, the overview map, and the zoom controls to navigate larger trees.

Return to Chat whenever you want to continue the main task.

Collapsing a large tree

A tree opens fully folded the first time you see it: the main conversation plus one dot per answer that has branches. Select ⊕ to reveal one capsule per branch, then select a capsule to restore that branch's message cards. Opening a dot always starts from capsules, so you choose each level deliberately; sibling capsules stay folded until you open them. To return a card group to its capsule, select the up-arrow area along the inside bottom edge of its dashed frame. Select ⊖ to close a whole group back to its dot.

Alt-select ⊕ or a capsule to expand all descendants at once. Collapse all reduces every top-level anchor group to a dot. The layout is restored per conversation after a restart. A pulsing blue marker means a folded descendant is still generating; red means one has failed. Search automatically opens the folded ancestor chain before centering the matching message.

Two actions, two meanings

The difference between the two actions is structural, not just visual:

ActionDirectionEffect
Ask follow-upGrows rightCreates a new branch that inherits the conversation up to the selected answer
Continue this branchGrows downAdds the next exchange to the current branch

Ask follow-up never appends to an existing branch, and Continue this branch never creates one. Continue this branch appears only on the most recent completed answer within a branch, never in the main conversation.

Deleting a branch

Deleting a branch also deletes every branch below it. The confirmation dialog states how many branches and messages will be removed. Your main conversation and any sibling branches are unaffected.

How it works

Branch isolation

Each branch is a real DeepSeek Harness session created from a completed turn in its parent. A branch created from answer A2 inherits the conversation from the beginning through A2. It does not receive anything the main conversation does afterwards, and the main conversation never receives anything from the branch. Sibling branches created from the same answer cannot see each other's messages.

Branches are recorded as subagent-origin sessions. This keeps them out of the session list while preserving their history, so a branch belongs to its main conversation rather than becoming a separate item you have to manage.

Read-only execution

A branch runs as a read-only agent: it can inspect the workspace, but it cannot change anything.

This is enforced when a tool actually runs, not by hiding tools from the model. The following tools are permitted:

read, read_image, glob, grep, lsp, the session_* query tools, job_list, job_output, terminal_list, terminal_read, list_agents, and get_goal.

Everything else is refused, including any tool the plugin does not recognise, so a newly added tool is never permitted by omission. Code Mode's run_code remains available because each tool a program calls is checked individually, which means nested write operations are refused one by one.

Read access is deliberate: a follow-up question is often "what does this file do?". Write access is not, because a branch runs in the same working directory as the main conversation and could otherwise modify files while a task is still running.

Reusing the provider's cached context

The plugin does not alter the request a branch sends. It joins the same preset the parent session used and leaves tool definitions, prompt sections, and the presentation format untouched. As a result, the beginning of a branch's request is byte-for-byte identical to the main conversation's request at the point the branch was created.

This matters for speed. Model providers cache request prefixes, and tool definitions sit at the very front of a request. Removing a single tool definition would change the first bytes and lose the entire cached prefix, forcing the provider to re-read the whole inherited conversation before it can produce the first word of the answer. Restricting the visible tool list would have been simpler to implement and would have given up that saving for no gain in safety, because hiding a tool and refusing to run it stop the same call.

Compatibility with DeepSeek Harness 0.1.x

This version is verified against an unmodified @deepseek-ai/dsh 0.1.1-rc.2 and retains 0.1.0-rc.7 as its compatibility floor. The two limitations below remain present across the verified releases because of how DeepSeek Harness treats subagent-origin sessions.

Branches cannot be continued from the standard chat view. DeepSeek Harness uses the subagent origin marker to decide which component owns a session, and it rejects messages sent to such a session from the standard chat view. The standard view can display a branch's history but cannot add to it. This version therefore has no "open branch in chat" action; reading and continuing branches both happen in Tree View.

Branches may be listed in the Subagent menu. Because the plugin does not install a subagent descriptor, the built-in Subagent list may show branches as disabled diagnostic rows. In 0.1.1-rc.2, this list is opened from the session header's lineage control. The rows cannot be selected, are skipped during keyboard navigation, and are excluded from the count of active child agents; the control and the conversation continue to work normally. Branches still do not appear in the sidebar session list.

The plugin includes a check for a proposed future DeepSeek Harness capability that would allow branches to be continued from the standard chat view. It requires that release to provide both the capability and an explicit guarantee that user messages can be delivered, so that a partial implementation cannot silently re-enable a writable interface. Until then, this feature stays disabled.

Development

pnpm install
pnpm run check

pnpm run check runs linting, type checking for both the host and browser builds, the test suite, a production build, and package validation.

CommandPurpose
pnpm run lintStatic analysis
pnpm run typecheckType checking
pnpm testUnit and integration tests
pnpm run buildProduction build
pnpm run checkAll of the above, plus package validation

Contributing

Issues and pull requests are welcome. Please run pnpm run check before submitting a pull request.

Project status

The implementation is verified against unmodified DeepSeek Harness 0.1.0-rc.7, 0.1.0-rc.8, and 0.1.1-rc.2. DeepSeek Harness is in developer preview, so later releases may require updates even though this package declares a wider compatibility range.

License

MIT

相关插件

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

Memory Plugin@openviking/dsh-memory-plugin适用于 DeepSeek Harness 的 OpenViking 记忆与上下文套件Contextdsh-context用于上下文洞察和管理的 DeepSeek Harness 插件,提供上下文仪表板和上下文命令,帮助了解上下文的构成及其演变过程。Weknora@wxg-prc-cpg/dsh-weknora适用于 DeepSeek Harness (dsh) 的 WeKnora 知识检索工具:通过自有知识库进行语义搜索、文档阅读以及 RAG/代理回答。Mnemondsh-mnemon面向 DeepSeek Harness 的可组合三层记忆控制平面:持久化运行时上下文、可搜索的项目文档、可插拔的长期记忆、受保护的策略、WebUI 和无头工具。