DeepWorker
DSH(DeepSeek Harness)的会话工作流扩展:把长会话中反复出现的手工操作,收敛为界面内的一步动作;不修改会话日志,不替换原生工作流。
解决的问题
DSH 原生已经提供会话、分支(fork)、全局搜索、终端和 @ 引用。DeepWorker 不重复这些基础能力,而是补齐原生界面中缺少的组合动作:
- 回到某一轮重做:原生需要自己确认轮次、fork、重新发送;DeepWorker 把「重试本轮 / 在此分支 / 编辑重发」放到每一轮底部。
- 引用并保留出处:原生
@ 引用指向会话或文件;DeepWorker 增加「选中文本 + 第 N 轮 / seq」的引用,可点击跳回原文。
- 把结论留在会话外:原生没有独立笔记页;DeepWorker 提供本地笔记、标签、搜索和导入导出。
- 把长对话压缩成一条记录:原生没有「总结为笔记」的一步操作;DeepWorker 提供本地确定性摘要和可选的模型总结。
- 在长会话中定位一句话:原生全局搜索只返回会话与片段;DeepWorker 在已加载会话内高亮命中并跳到对应轮次。
- 临时只保留一个会话:原生没有会话级专注模式;DeepWorker 提供会话/工作区专注锁。
- 多项目服务的启停:原生终端需要每次打开、cd、输入命令;DeepWorker 把每个工作区的启动/停止/额外命令放到会话头部,并支持批量与前置序列。
界面
DeepWorker 全能力总览
八项能力总览:轮次操作、引用、笔记、摘要、查找、专注锁、多工作区命令、本地优先。
会话工作流
一轮对话的五种处理、引用锚点与笔记卡片。
专注锁
会话级 / 工作区级专注锁;非目标工作区变暗,保留解除入口。
多工作区命令按钮
真实界面:多工作区表格、批量操作与输出日志。
新建工作区
真实界面:路径、启动、停止、额外按钮与超时集中在一个弹窗。
启动前的前置序列
真实界面:启动前按顺序执行已定义动作。图片中的路径与项目名已脱敏。
核心能力
| 能力 | 具体行为 | 带来的价值 |
|---|
| 轮次操作 | 每轮底部五个动作:重试本轮、在此分支、编辑重发、引用回复、选模式新建 | 把 fork / prompt / archive 等底层步骤收拢为一次点击;历史仍为 append-only |
| 引用与出处 | 选中文本写入引用块,附「第 N 轮 · seq M」锚点;点击锚点跳回原轮并高亮 | 引用可追溯,长会话中不会失去上下文 |
| 独立笔记页 | 侧栏底部打开;Markdown、标签、搜索、编辑重存、复制/删除、JSON 或纯文本导入导出 | 把会话中的结论沉淀为可检索的本地知识 |
| 两个笔记入口 | 对话中选中文字右键「存为笔记」;笔记页「从剪贴板存为笔记」 | 不打断当前输入流,随手保存 |
| 总结为笔记 | 默认确定性摘要(本地、零成本、可复现);可选让模型总结(临时会话,完成后归档) | 长对话快速形成可读记录;模型总结为可选增强 |
| 会话内查找 | 已加载会话内查找、高亮、跳转到轮次 | 比全局搜索更接近「在正在读的对话里定位一句话」 |
| 专注锁 | 锁定当前会话或所在工作区;拦截所有会话切换入口;非目标工作区变暗 | 在一段时间内保持单一上下文,减少误切 |
| 多工作区命令按钮 | 每个工作区独立的启动/停止/额外按钮;批量串行执行;每个额外按钮可配置自己的前置命令;agent 可用 JSON 批量写入 | 常用服务操作不必重复开终端、cd、敲命令 |
| 输出日志 | 默认在设置页保留最近输出;每个工作区可选写入 .dsh-deepworker/logs/ | 启动失败、服务状态和偶发输出可回看 |
| 顶部按钮 | 每个工作区选择哪些动作显示在会话头部,并调整顺序;默认全部 | 头部只留当前工作区真正需要的按钮 |
| 版本检查 | 设置页底部手动检查 npm 最新版;默认不联网;失败或发现新版时都提供发布页与仓库链接 | 不自动安装,升级决策留在用户 |
| 功能开关 | 8 个能力可分别引入/移除;基础页总开关可一键全关;关闭项灰显并说明原因 | 只启用需要的功能;出问题时基础页始终保留恢复入口 |
| 失败可见 | 写失败、命令为空、权限不足、日志目录不可写等情况都会明确提示 | 避免「点了没反应」的静默失败 |
设计亮点
- 历史不改写:编辑重发、重试、分支都使用 DSH 原生 fork / surface replace,会话日志保持 append-only。
- 服务级会话拦截:专注锁不是 DOM 遮罩,而是包装
ctx.uiWorkspace 的五个切换方法;侧栏行、搜索结果、子代理、任务面板、fork、新建会话都汇聚到这些入口。
- 客户端侧实现:宿主半只有空
apply;功能在渲染进程内,不需要新增宿主服务、远程接口或共享包。
- 功能可分别开关:8 个能力独立引入/移除;总开关一键全关;关闭项保留可见并说明原因;基础页始终是恢复入口。
- Agent 可批量配置:命令按钮支持工作区 JSON 文件;每个额外按钮可配置独立的前置序列;agent 写文件,用户点一次「立即读取」。
- 本地优先:笔记、设置、最近输出保存在本机;不读写会话日志;模型总结和文件日志都是显式 opt-in。
- 失败可见、可验证:注册失败经 guard 隔离并提示;命令为空、权限不足、日志目录不可写都会明确报错;门禁包含 SSR、真实 DOM、数据/执行器与变异测试。
典型使用场景
1. 长调试会话:回到失败点重做
一次排障可能经历多个失败轮次。DeepWorker 允许直接在目标轮次上重试、从该轮分支,或编辑原提问后重发;原会话历史保留,新分支独立推进。
2. 架构/方案讨论:把结论沉淀为笔记
在讨论中选中关键段落右键存为笔记;会话结束时用确定性摘要或模型总结生成一条结构化笔记,后续可搜索、打标签、导出。
3. 多服务项目:会话头部启停服务
为每个项目配置启动、停止和额外动作(重启、状态、日志);批量勾选多个工作区串行启动;需要时给单个按钮配置前置命令(例如重启前先停)。
4. 阅读与研究:引用、标记、回看
阅读长对话或资料时,选中内容引用并保留出处;随时跳回原轮核对;把重要结论保存到笔记页。
5. 深度工作:锁定当前会话
需要连续处理一个任务时,锁定当前会话或工作区;侧栏其它会话不可打开,非目标工作区变暗,减少误切。
与原生 DSH 的关系
- 增量,不替换:所有入口挂在 DSH 现有界面上(会话头部、轮次底部、侧栏、设置页)。
- 不改写会话日志:编辑重发、重试、分支都使用 DSH 原生 fork / surface replace,日志保持 append-only。
- 客户端侧实现:宿主半只有空
apply;功能全部在渲染进程内,不需要额外的宿主服务或共享包。
- 非官方 API 的边界:专注锁对
ctx.uiWorkspace 的五个切换方法做包装;DSH 升级后方法名变化会失效,插件会在自检中报告,不会假装生效。
安装
从 npm(推荐)
在 DSH 的 设置 → 插件 中从注册表安装:
dsh-deepworker@0.1.2
或由 agent 调用 plugin_manager:
install_bundle target = dsh-deepworker@0.1.2
插件管理器会写入 profile 的 dsh.profile.bundles,并在安装前检查兼容范围。
本地开发
cd ~/.dsh/plugins/dsh-deepworker
npm install
将插件目录接入当前 profile(具体步骤见仓库内 docs/manual.zh-CN.md),然后重启 DSH。
快速上手
| 位置 | 可用操作 |
|---|
| 会话头部 | 命令按钮、查找、总结、专注锁 |
| 每一轮底部 | 重试本轮 / 在此分支 / 编辑重发 / 引用回复 / 选模式新建 |
| 侧栏底部 | 笔记页 |
| 选中文字右键 | 引用、存为笔记 |
| 设置 → DeepWorker | 功能开关、专注锁、笔记、会话操作、命令按钮 |
兼容性与数据边界
- 兼容范围:
engines.dsh = >=0.2.1-rc.1 <0.3.0。
- 本地优先:设置、笔记、最近输出保存在本机浏览器存储;插件不读取或写入会话日志。
- 模型总结:只有主动选择「让模型总结」时才创建临时会话并消耗 token;确定性摘要完全本地。
- 命令输出:默认只保留最近若干条;每个工作区可单独开启文件日志。日志可能包含敏感信息,且不会自动轮转。
- 设置仅通过界面修改:客户端插件没有配置文件;需要 agent 批量配置时,使用命令按钮页的 JSON 文件入口。
验证
node tools/ha-core/verify/prepublish.mjs
判据为 failed = 0。套件包含 SSR 结构检查、真实 DOM 交互(jsdom)、数据层与执行器测试,以及变异测试。
文档
License
MIT © 2026 pandamustard