前言¶
DeepSeek Harness(DSH)的插件化架构让开发者可以扩展主应用的边界。DSH 本身不直接提供「项目 + 讨论串」的界面,开发者需要在主对话里逐条处理任务,然后切换到子会话继续,做完后再切回主对话汇报。这种多会话之间的手动切换,容易打断思路,也难于追踪和复现。
dsh-threads 插件引入了「项目 + 讨论串」的概念:项目是一个文件夹 + 一个常驻主对话,主对话作为调度员,把能独立完成的任务分发给讨论串;讨论串是真实会话,在右侧面板打开,可以直接交互;任务完成后,讨论串返回简短摘要,主对话在所有讨论串结束后被唤醒一次。这个模型参考了 Claude 的「项目 + 讨论串」设计。
插件定位¶
dsh-threads 是一个 DeepSeek Harness 插件,由 Kyf-eng 维护。它通过主对话调度工作到讨论串,讨论串在真实会话中执行,完成后返回简短摘要。插件基于 DeepSeek Harness 0.2.x 开发,当前版本为 0.1.0-rc.8。
核心功能¶
项目¶
项目由一个文件夹和一个常驻主对话组成。项目有图标、给协调者的目标,以及所有讨论串也会收到的项目说明。在左侧「项目」里新建项目(用系统的文件夹选择器选文件夹),或者在会话的「…」菜单里选「设为项目」。卡片的「⋮」菜单可以置顶、归档、删除、设置桌面通知,以及打开项目设置(协调器和讨论串的模型、使用情况)。
讨论串¶
主对话为能独立完成的工作开讨论串,也可以给讨论串追加指令。模型会提出你没要求的建议(放在输入框上方的卡片里,需要你点击才开始)。每个讨论串都是真实会话:在右侧面板打开,可以直接和它对话。运行中可以点「停止」(或 /thread stop <n>),做完了点「标记已解决」,不再需要的可以归档(已归档的单独列在最下面,可以取消归档)。
报告与提醒¶
讨论串完成后,会返回简短的回报:做了什么、改了哪些文件、需要你决定什么。主对话只在所有讨论串结束后被唤醒一次,并防止反复唤醒。如果讨论串做完任务却没有回报,会被提醒一次。
并行与隔离¶
最多 3 个讨论串同时运行。会改文件的讨论串在自己的 git worktree 和分支(dsh-threads/<n>-<id>)里工作,不碰项目文件夹。你要求时主对话才合并,/thread cleanup 清理已完成的 worktree。
安装与启用¶
需要 DeepSeek Harness 0.2.x(桌面版或 Web 版;在 0.2.1-rc.2 和 0.2.1-rc.3 上测试过)和它的 dsh 命令行。桌面版在应用菜单的「管理 dsh 命令…」里设置;没有这个命令时,可以用 npm 上和你的 DeepSeek Harness 同版本的命令行,例如 npx -y @deepseek-ai/dsh@0.2.1-rc.2 plugin --profile web add @kyf-eng/dsh-threads。
- 完全退出 DeepSeek Harness(macOS 上按 ⌘Q;有菜单栏或托盘图标的,也要从那里退出)。
- 把插件加到你的 profile:
dsh plugin --profile desktop add @kyf-eng/dsh-threads
以后升级也是这一条命令。Web 版用 --profile web。要装某个版本,在包名后面加 @版本号(例如 @kyf-eng/dsh-threads@0.1.0-rc.8);不想走 npm,也可以填 Releases 里那个 .tgz 的地址。
3. 启动 DeepSeek Harness,左侧出现「项目」。
卸载:dsh plugin --profile desktop remove @kyf-eng/dsh-threads(0.1.0-rc.6 及更早的版本叫 @fky/dsh-threads)。
从 0.1.0-rc.6 及更早的版本升级:包名从 @fky/dsh-threads 改成了 @kyf-eng/dsh-threads,新版本不会替换旧的。先完全退出 DeepSeek Harness,运行 dsh plugin --profile desktop remove @fky/dsh-threads,再按上面的第 2 步安装。项目和讨论串存在 DeepSeek Harness 自己的存储里,卸载旧包不会丢。
配置¶
在 profile 的 cordis.patch.yml(桌面版是 ~/.dsh/profiles/desktop/cordis.patch.yml)里给插件加 config:
- id: dsh-threads
config:
maxRunning: 2
| 配置项 | 默认值 | 含义 |
|---|---|---|
maxRunning |
3 | 一个主对话同时能跑几个讨论串 |
maxAutoWakes |
5 | 连续自动唤醒几次后,回报改为等你开口(0 表示从不自动唤醒) |
noteMaxChars |
400 | 发回主对话的回报最长多少字 |
summaryMaxChars |
300 | 讨论串摘要最长多少字 |
proposalTtlDays |
7 | 没开始的建议几天后过期 |
maxProposalsPerTurn |
3 | 模型一次最多提几个建议 |
reportReminder |
true | 讨论串做完任务却没回报时,提醒它一次 |
inheritPermissionPreset |
true | 讨论串沿用主对话的权限模式 |
典型用法¶
- 项目 → 新建项目:起名,选一个文件夹(任意文件夹,还不是工作区的会自动添加)。
- 在项目主对话里让它在后台做事(「开个讨论串去…」)。也可以输入
/thread <任务>,或/thread -w <任务>开一个有独立 worktree 的讨论串。 - 点讨论串卡片,在右侧打开它,可以直接聊;运行中可以点「停止」(或
/thread stop <n>),做完了点「标记已解决」,不再需要的可以归档(已归档的单独列在最下面,可以取消归档)。 - 模型提出建议时,在输入框上方的卡片里开始一个、全部开始或都不要。
- worktree 讨论串的改动在它自己的分支上。自己合并或让主对话合并,然后
/thread cleanup(再/thread cleanup confirm)。
适用场景与注意¶
适合需要在主对话与多个子会话之间保持上下文、需要跟踪任务进度和改动的场景。插件以当前 dsh 进程的权限运行,需要确保项目文件夹有写权限(特别是 Windows 上,有时需要一次性批准提权)。
插件在 macOS 桌面版上经过完整测试,Windows 桌面版(x64)也实测过项目、讨论串、worktree、清理、审批、停止、归档和完整流程,需要先装 Git for Windows,且当仓库路径很深时可能遇到长路径问题。Linux 上 DeepSeek Harness 没有桌面版,Web 版在 Linux 上未测过。
限制¶
- DeepSeek Harness 每个工作区默认只列 5 个会话,隐藏的讨论串也算在里面,所以讨论串多的工作区里可见的行会变少,「展开其余 N 个会话」的 N 也包含讨论串。
- worktree 从文件夹最后一次提交开出:没提交的改动不在里面,依赖(
node_modules等)要在 worktree 里重新装。 - 没有花费上限:除了同时运行的数量,讨论串用多少 token 不设限。用量在项目设置的「使用情况」里看。
小结¶
dsh-threads 通过「项目 + 讨论串」的模型,让主对话作为调度器,把工作分发给真实会话,完成后返回摘要,减少了手动切换会话的负担。适合需要在多个会话间保持上下文、跟踪任务进度的开发者。
- 插件目录:https://www.skillhub.cn/plugins/Kyf-eng/dsh-threads
- GitHub:https://github.com/Kyf-eng/dsh-threads