dsh-threads:DeepSeek Harness 的工作流调度插件

前言

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。

  1. 完全退出 DeepSeek Harness(macOS 上按 ⌘Q;有菜单栏或托盘图标的,也要从那里退出)。
  2. 把插件加到你的 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 讨论串沿用主对话的权限模式

典型用法

  1. 项目 → 新建项目:起名,选一个文件夹(任意文件夹,还不是工作区的会自动添加)。
  2. 在项目主对话里让它在后台做事(「开个讨论串去…」)。也可以输入 /thread <任务>,或 /thread -w <任务> 开一个有独立 worktree 的讨论串。
  3. 点讨论串卡片,在右侧打开它,可以直接聊;运行中可以点「停止」(或 /thread stop <n>),做完了点「标记已解决」,不再需要的可以归档(已归档的单独列在最下面,可以取消归档)。
  4. 模型提出建议时,在输入框上方的卡片里开始一个、全部开始或都不要。
  5. 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye