Solo-style isolated brainstorm branches and Handoffs for DeepSeek Harness
- Language
- TypeScript
- License
- MIT
- Branch
- main
Install
$ dsh plugin --profile web add dsh-plugin-solo-thinkingRun the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial
Install via your agent
Install the DeepSeek Harness plugin fredalxin/dsh-solo-thinking for me: review the repository at https://github.com/fredalxin/dsh-solo-thinking first, then run the install command and verify the plugin loads successfully.
Paste this instruction to the DSH Web GUI assistant — it will install and verify for you.
一句话定位
为 DeepSeek Harness 增加 Solo 风格的头脑风暴树:把一个主题拆成多个独立的 DSH 子会话,让 Agent 自动在分支之间交换结构化的 Handoff 结论,避免一个长对话里多条思路互相干扰。
核心能力
- 一键开启头脑风暴空间,并在信息充足时让 Agent 自动建议 2-4 个真正独立的方向(默认建议 4 个)
- 每个分支都是独立的 DSH Session,拥有自己的对话、状态和生命周期;建议分支先休眠,收到第一条消息后才启动
- 跨分支信息只通过 Agent 撰写的 Handoff 传递(分裂继承、当前状态、兄弟感知、最终回传),用户无需手写
- 思考树状态以 append-only 事件写入 DSH Session 持久化层,DSH 重启后通过 Projection 自动恢复整棵树
- 提供
/thinking start|split|rename|checkpoint|return|end|status命令与图形化操作按钮,UI 与命令行互通 - 分支所在 Workspace 自动继承父 Session,不会落到"未分组";右侧栏模式由 Better Sidebar 提供,可选启用
技术实现
- 语言: TypeScript(ESM 模块,目标 Node.js 22.19+/24+)
- 关键依赖: @deepseek-ai/cordis(插件运行时)、@deepseek-ai/dsh-agent / dsh-session / dsh-tools(宿主能力挂载)、zod(Schema 校验)、@deepseek-ai/dsh-client-ui-slots(前端插槽注册)
- 架构模式: 在 Cordis 注册一个
solo-thinking插件 ID(cordis.patch.yml),Host 端注册 8 个 Thinking 工具与/thinking命令,Client 端通过conversation.view插槽注册"头脑风暴"Tab,并在 Better Sidebar 存在时软检测并附加右侧 Tab - 入口文件:
src/index.ts(Host 端 apply)、src/client/index.tsx(Client 端 apply)、src/domain.ts(ThinkingSpace/ThinkingNode 状态机)
适用场景
当你希望把一个开放性问题拆成几个互相独立的方向分别深挖时使用本插件,比如产品决策、技术选型、需要先发散再收敛的方案对比。普通一次性问答不需要它,它主要面向"想看到一棵可操作、可回放、可被 Agent 自动维护的思考树"的中长流程。
前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DSH(@deepseek-ai/dsh-*) | 0.1.0-rc.6 | 全部声明为 peerDependency,覆盖 agent / session / tools / client-runtime 等子系统 |
| Node.js | 22.19.0 或 >=24.0.0 | package.json engines 字段声明 |
| dsh-better-sidebar | 0.12.1 | 可选 peer;仅在使用右侧栏紧凑视图时需要 |
| React | 18.2.0 | 可选 peer;仅在前端插槽加载时需要 |
| 原生模块 | 无 | 运行时仅依赖 zod,不含 node-gyp / native addon |
安装方式
dsh plugin --profile web add github:fredalxin/dsh-solo-thinking
配置项
| 配置 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| rootTitle | string | 第一次开启头脑风暴时根节点显示的标题 | "Brainstorm" |
| maxDepth | number | 思考树允许的最大嵌套层数(达到后分裂会报错) | 4 |
| maxBranches | number | 同一个父节点下允许的最大直接子分支数 | 6 |
| maxNodes | number | 整棵树允许的最大节点总数 | 40 |
| maxHandoffChars | number | 单条 Handoff 文档允许的最大字符数 | 8000 |
常见问题
Q: 头脑风暴模式和普通 DSH 对话有什么差别?
A: 普通对话是单一长上下文,多个问题会互相干扰。头脑风暴模式把"每个独立方向"拆成独立 DSH Session,分支之间只通过结构化的 Handoff 文档交换结论,回到对应分支时上下文仍然干净。
Q: 提示分支是休眠的,怎么激活?
A: 在思考树里点开某个建议分支,给它发第一条消息;插件会在首次 turn 时把它从 dormant 状态唤醒,进入正常的对话循环;不主动发消息则它一直保持休眠。
Q: 安装后没看到任何变化?
A: 装完需要重启或新启动 DSH Web 客户端,并硬刷新浏览器;新的"头脑风暴"Tab 才会出现在对话顶部。也可以直接对 Agent 说"开启头脑风暴",Agent 会调用 thinking_start 工具自动打开空间。
Q: 头脑风暴中途能再加方向吗?
A: 能。Agent 可以随时调用 thinking_split 创建新分支;用户在 UI 上也能通过"+ 分裂"按钮填一个方向名,父 Agent 会为新分支自动撰写定向 Handoff,再开始新分支对话。
Q: 分支跑完之后怎么收尾?
A: 让分支 Agent 调用 thinking_return 撰写最终 Handoff 并封存该分支;父分支的下一次模型轮会自动读到这份结论。UI 上对应"✓ 回传"按钮;封存后的分支保持只读,历史和 Handoff 不会丢失。
Q: 和 Better Sidebar 是什么关系?
A: Better Sidebar 是可选的右侧栏伴侣,声明为 optional peer:装了能在对话右侧看到一棵紧凑的思考树、折叠上下文抽屉和分支输入框;没装时官方顶部完整 Tab 提供完全相同的核心能力。本插件不依赖 AionUI 文件/预览右栏。
Q: 报错"depth limit reached / branch limit reached / node limit reached"怎么办?
A: 分别是树深度、父节点兄弟分支数、整树节点总数达到配置上限。先收敛当前分支(thinking_return)、或调整 maxDepth / maxBranches / maxNodes 配置;这是 by-design 的保护,不是 bug。
上手难度
入门 — 安装即用,不需要任何配置;想要发挥全部价值只需让 Agent 调一次 thinking_suggest,日常操作由 UI 按钮完成。
已知问题与限制
- 只支持 DSH
0.1.0-rc.6及以上宿主,更早版本因 Projection/事件契约不同无法加载 - 思考树节点上限受
maxDepth × maxBranches与maxNodes双重限制,超过会显式报错而非静默截断 - 建议分支必须由 Agent 或用户显式激活才进入对话循环;不会自动唤醒兄弟分支,跨分支感知依赖显式 Handoff
- 新增或删除 npm 插件会改变 DSH 的 Client Module 包集合,需要重启 DSH 才能让前端插槽重新挂载;运行时动态替换 Better Sidebar 服务支持,但 npm 维度变更不支持热更新
- 仅移植 Solo 的"思考树"语义核心,不包含 Solo 的 Channel、Team Agent、PostgreSQL、daemon 或 CLI 管理能力(README "与完整 Solo 的边界" 章节)
把头脑风暴拆成一棵可操作的思考树:每个方向都是独立的 DeepSeek Harness Session,分支之间只交换 Agent 主动撰写的 Handoff。 Solo Thinking 是项目 Solo 的一部分能力。
Solo-style isolated brainstorm branches, automatic Handoffs, and a visual thinking tree for DeepSeek Harness.

[!NOTE] 上图是 Solo Thinking 自带的完整“头脑风暴”Tab,只安装本插件即可使用。对话右侧栏是可选增强,需要同时安装 Better Sidebar。
核心能力
- 默认建议模式:信息足够时自动创建 2–4 个真正独立的方向,优先 4 个,不为凑数而分裂。
- 独立 Session:每个节点拥有自己的对话、状态和生命周期,建议节点先休眠,收到第一条消息后才启动。
- 自动 Handoff:分裂继承、Current State、兄弟感知和 Return 总结均由 Agent 自动撰写,用户不需要手写。
- Workspace 继承:分支持久化挂在父 Session 所属 Workspace,不落入“未分组”。
- 输入不串线:主输入框只发给当前 Session;思考树可直接向选中的其他分支发送;只有“进入对话”会导航。
- 可回放持久化:树状态写入 DSH append-only Session 事件并通过 Projection 恢复。
兼容性与界面
| 安装组合 | 顶部完整 Tab | 对话右侧栏 | 支持情况 |
|---|---|---|---|
官方 DSH 0.1.0-rc.6 + Solo Thinking | ✓ | — | Thinking 工具、自动建议、分支 Session、Handoff、Workspace 继承和完整上下文 |
再安装 Better Sidebar >=0.12.1 | ✓ | ✓ | 在对话右侧查看思考树、选择节点、控制分支并直接发消息 |
Better Sidebar 是右栏功能依赖,但不是 Solo Thinking 核心能力的硬依赖:包中声明为 optional peer,运行时通过公开 registerTab 服务软检测,不会被重复打包。没有安装或运行中被卸载时,完整顶部 Tab 与 Host 侧 Thinking 能力仍然可用。dsh-web-ui 的 AionUI 文件/预览右栏目前没有第三方 Tab 注册接口,因此本插件不会依赖其 DOM 结构;使用它时继续用完整标签页。可选宿主补丁及其精确适用版本见 patches/README.md。
安装
要求 Node.js ^22.19.0 || >=24.0.0 和 DSH 0.1.0-rc.6。
官方 npm 单行安装(推荐,自动使用 latest)
dsh plugin --profile web add dsh-better-sidebar dsh-plugin-solo-thinking
两个包都发布在 npm 官方 Registry;不指定版本时会自动安装各自 latest 标签对应的版本。安装后会由各自的 dsh.bundle.patch 自动挂载。Solo Thinking 将 Better Sidebar 声明为可选 peer,避免重复实例;DSH 目前不会自动挂载传递依赖,所以命令中需要把两个插件都列为 profile 的直接依赖。若 pnpm 拦截 node-pty 构建或新包发布时间门禁,可使用下面的 Release 安装器。
Better Sidebar 0.12.1 可能打印宿主 DSH/React peer 警告;不要为消除提示把整套 DSH 或 React 重复装进 profile。已确认 Solo Thinking 自身没有缺失 peer,警告来源与上游 @xterm/addon-fit 版本债务见 依赖审计。
一行安装(自动使用最新 Release)
macOS / Linux(Windows 可在 Git Bash 或 WSL 中使用):
curl -fsSL https://raw.githubusercontent.com/fredalxin/dsh-solo-thinking/main/scripts/install.sh | bash
Windows PowerShell 5.1+ / pwsh:
irm https://raw.githubusercontent.com/fredalxin/dsh-solo-thinking/main/scripts/install.ps1 | iex
安装器会先为 Better Sidebar 精确放行 node-pty / protobufjs 构建并将其挂载为 profile 的直接插件,再解析最新 Solo Thinking Release、下载预构建 .tgz 与 .sha256、校验后交给官方 dsh plugin add,最后通过 --dump-config 验证两个 bundle。它不会修改 DSH 源码;对 pnpm-workspace.yaml 的改动仅限上述构建白名单和 dsh-better-sidebar 的发布时间例外,重复执行保持幂等。
固定版本或先预览:
curl -fsSL https://raw.githubusercontent.com/fredalxin/dsh-solo-thinking/main/scripts/install.sh | bash -s -- 0.1.19
curl -fsSL https://raw.githubusercontent.com/fredalxin/dsh-solo-thinking/main/scripts/install.sh | bash -s -- 0.1.19 --dry-run
& ([scriptblock]::Create((irm 'https://raw.githubusercontent.com/fredalxin/dsh-solo-thinking/main/scripts/install.ps1'))) -Version 0.1.19 -DryRun
不执行远程脚本:官方 CLI 单行安装(固定版本)
仓库提交了预构建 lib/,因此也可以直接固定 GitHub tag 安装;macOS、Linux 和 Windows 通用,不执行插件构建脚本:
dsh plugin --profile web add github:fredalxin/dsh-solo-thinking#v0.1.19
安装完成后启动或重启 DSH,再硬刷新浏览器:
dsh --profile web --dump-config
dsh --profile web
源码运行 DSH 时,把命令中的 dsh 换成 pnpm dsh。
下载后离线安装
下载 Release 中的 dsh-plugin-solo-thinking-0.1.19.tgz 后执行:
dsh plugin --profile web add ./dsh-plugin-solo-thinking-0.1.19.tgz
dsh --profile web
从源码构建
npm ci
npm run verify
npm pack
dsh plugin --profile web add ./dsh-plugin-solo-thinking-0.1.19.tgz
卸载:
dsh plugin --profile web remove dsh-plugin-solo-thinking
右栏模式
[!IMPORTANT] 以下“对话 + 右侧头脑风暴”界面只有在 Better Sidebar 已安装并启用时才会出现。只安装 Solo Thinking 时,请使用对话顶部的完整“头脑风暴”Tab。

推荐安装命令已经包含 DSH Better Sidebar 0.12.1+。如果只安装了 Solo Thinking,可以单独补装:
curl -fsSL https://raw.githubusercontent.com/omdsh-dev/DSH-better-sidebar/main/scripts/install.sh | bash -s -- 0.12.1
本插件会软检测 ctx.betterSidebar,注册一个独立的“头脑风暴”Tab;当前会话第一次出现思考树时会自动准备该 Tab,也可以在 Better Sidebar 的“+ 新建标签页”菜单里手动打开。思考图会占满折叠上下文后剩余的纵向空间,父节点结论、当前结论、兄弟感知和子节点结论默认折叠、按需展开。Better Sidebar 未安装或被卸载时,官方完整标签页仍提供同样四类上下文和全部 Host 侧 Thinking 能力。
30 秒开始使用
在普通 DSH 对话里说:
开启头脑风暴,主题是“给独立开发者做一个本地 AI 工作台”。
请先发散;如果有多个值得独立深挖的方向,直接建立建议分支。
Agent 会调用 thinking_start,随后在适合分裂时调用一次 thinking_suggest。建议分支只创建、不自动运行;点击节点可查看 Handoff,直接在树中发消息即可启动该分支。
思考树操作
+ 分裂:只填写方向名称;父 Agent 自动为新节点准备定向 Handoff。● 进展:让当前分支从自己的完整对话整理 Current State,供兄弟分支下一次模型轮读取。✓ 回传:分支 Agent 撰写最终 Handoff,返回父节点并封存当前分支。■ 结束:结束并清空当前思考空间的界面状态;历史 Session 与 Handoff 保留,随后可重新开启一棵独立的新树。进入对话:显式导航到该 Session;单击节点本身只选择,不跳转。- 分支输入框:给非当前分支发消息,主会话仍停留在中间。
Handoff 使用简短 Markdown,覆盖目标、已确认结论、证据、风险、开放问题和下一步。兄弟分支与父分支不会被后台自动唤醒,而是在自己的下一次显式模型轮消费最新 Handoff。
DSH 架构对齐
插件遵循 DSH 的服务依赖、effect 回卷、bundle/profile 分层和双端 Client Module 模型。Better Sidebar 是可选服务能力:运行时卸载不会拖垮主插件,恢复后会重新注册侧栏;但新增或删除 npm 插件会改变 DSH 的 Client Module 包集合,因此仍需重启。逐项结论和保留的 RC 兼容层见 DSH 插件设计对齐审计。
Thinking 工具
| 工具 | 用途 |
|---|---|
thinking_start | 在当前 Session 建立头脑风暴空间 |
thinking_suggest | 一次创建 2–4 个休眠建议方向 |
thinking_split | Agent 自主分裂并写入定向 Handoff |
thinking_fork_handoff | 为人工创建的待继承节点补齐父分支 Handoff |
thinking_checkpoint | 发布本分支 Current State |
thinking_return | 向父分支提交最终 Handoff 并封存 |
thinking_end | 结束整棵树并允许原 Session 重新开始 |
thinking_status | 读取当前节点和整棵树状态 |
数据与安全边界
- 插件不调用外部网络服务,不读取其他分支的原始对话。
- 跨分支信息只来自显式 Handoff;发送目标由 DSH Session ID 隔离。
- 状态随 DSH Session persistence 保存;卸载插件不会主动删除历史 Session 数据。
- 插件包使用预构建产物且没有安装生命周期脚本;生产环境建议固定 npm 版本、GitHub tag 或 Release 校验安装器。
curl | bash/irm | iex会执行公开仓库中的远程安装器;不接受这一信任模型时,请使用透明的官方 CLI 单行命令,或先下载并审阅scripts/install.sh/scripts/install.ps1。
开发与验证
npm ci
npm run check
npm test
npm run verify
完整 Web E2E 使用受控 Provider,但仍经过真实 DSH adapter、Agent loop、Tools、Session persistence、Projection 和 Web RPC:
# 终端 A
SOLO_E2E_PROVIDER_KEY=solo-e2e-key npm run e2e:provider
# 终端 B
DEEPSEEK_BASE_URL=http://127.0.0.1:8000/v1 \
DEEPSEEK_API_KEY=solo-e2e-key \
dsh --profile web --patch ./scripts/e2e.patch.yml
# 终端 C
npm run e2e:run
成功测试会验证:4 个休眠建议分支、Workspace 继承、Agent-authored split/checkpoint Handoff、Return、父 Session notice,以及冷启动恢复。完整说明见 docs/E2E.md,设计边界见 docs/ARCHITECTURE.md。
与完整 Solo 的边界
本插件只移植 Thinking 的核心不变量,不移植 Solo 的 Channel、Team Agent 关系、PostgreSQL、daemon 或 CLI 管理:
- DSH Session 代替 Thinking Node 的独立消息作用域;
- DSH persistence 代替进程池和数据库绑定;
- DSH Tool 与 System Prompt context 代替 Handoff 控制协议;
- DSH Conversation View / 可选右栏插槽代替整页 Channel 工作区。
License
Read the usage guide →
Install steps, key points, FAQ and compatibility for this plugin — auto-derived from indexed fields.
Listing badge
[](https://deepseek-plugin.org/plugins/fredalxin/dsh-solo-thinking)Paste this markdown into your GitHub README to link back to this listing. The badge only states the listing — not a security endorsement.