DSH Global Tasks · 全局任务
所有项目的进展,一眼看见。
安装 · 使用 · 状态规则 · 兼容性 · 常见问题 · 开发
同时在多个项目里工作时,不必逐个展开工作区寻找正在运行或等待收尾的会话。全局任务在原工作区列表上方增加一个聚合区域,用「运行中 / 待处理 / 待确认」三个标签集中查看所有工作区的会话,每条显示所属项目,点击即可打开原会话。
功能
| 功能 | 使用体验 |
|---|---|
| 跨工作区聚合 | 查看所有工作区的主会话,不受当前选中项目或列表折叠状态限制 |
| 三个筛选标签 | 「运行中」看正在执行的任务;「待处理」看等你审批、等你输入或已经失败的会话;「待确认」只看正常跑完、等你点 ✓ 的会话 |
| 默认打开「待处理」 | 打开插件先看到真正卡住你的那几条,不会淹没在已跑完的任务里 |
| 列表高度可调 | 任务区插在工作区列表上方,拖动两者之间的手柄即可调整它占的高度,工作区列表随之上下移动;双击恢复默认 |
| 浏览全部会话 | 任务区底部一行「浏览全部会话 N ↗」,在主区打开完整会话树 |
| 三级会话树 | 工作区 → 状态分组 → 会话,带连接线,默认全展开;空分组自动隐藏 |
| 批量清除待处理 | 「待处理」标签下出现「全部清除」,一次性清掉积压的审批、输入、失败行;不归档、不删会话 |
| 项目来源标签 | 会话标题前显示项目名;悬停可查看路径和状态 |
| 搜索与跳转 | 点标题右侧放大镜展开搜索框,按项目、路径或会话标题过滤;点击使用 Harness 原生会话导航 |
| 人工标记完结 | 正常结束后点击 ✓,从聚合列表移除;原会话继续保留 |
| 自动重新出现 | 再次运行或收到新用户消息后,旧完结记录失效 |
| 原生视觉 | 继承宿主深浅色、字体及主题变量,保留原工作区列表 |
安装
已验证宿主:DeepSeek Harness Desktop 0.2.1-rc.2 与 0.2.1-rc.5。 升级其他版本前请先阅读兼容性。
方式一:从 GitHub 直接安装(推荐)
仓库里已经带好构建产物 client.js,不需要自己编译。在终端执行:
& "$env:LOCALAPPDATA/Programs/DeepSeek Harness/resources/runtime/cli/bin/dsh.cmd" `
plugin --profile desktop add github:AnsonLi-better/dsh-global-tasks
安装完成后重启 Harness,左侧工作区列表上方会出现「全局任务」。
自定义安装位置时,把
dsh.cmd的路径换成你的实际路径。 用--profile指定目标 profile,默认桌面端是desktop。
方式二:在 Harness 里让助手安装
在 Harness 创造模式中说:
帮我安装全局任务插件:
github:AnsonLi-better/dsh-global-tasks
助手会通过 plugin_manager 完成安装。
方式三:本地目录(开发用)
git clone https://github.com/AnsonLi-better/dsh-global-tasks.git
& "$env:LOCALAPPDATA/Programs/DeepSeek Harness/resources/runtime/cli/bin/dsh.cmd" `
plugin --profile desktop add "C:/path/to/dsh-global-tasks"
本地目录是本地链接的代码来源,安装后请保留该目录;移动目录后需要重新安装。
验证安装
& "$env:LOCALAPPDATA/Programs/DeepSeek Harness/resources/runtime/cli/bin/dsh.cmd" `
plugin --profile desktop why dsh-global-tasks
或在 Harness 插件管理器中确认「全局任务」处于启用状态。
卸载
& "$env:LOCALAPPDATA/Programs/DeepSeek Harness/resources/runtime/cli/bin/dsh.cmd" `
plugin --profile desktop remove dsh-global-tasks
适配层会卸载包装并恢复原工作区组件。人工完结元数据不等同于会话数据,卸载插件不会删除原会话。
使用
- 在左侧原工作区列表上方找到「全局任务」。
- 打开时默认停在「待处理」——需要你动手的会话都在这里;切到「运行中」看正在执行的,切到「待确认」看已经跑完的。
- 点击任意会话,进入原生对话界面查看结果。
- 正常结束且确认收尾后,将鼠标移到该行,点击右侧 ✓ 标记完结。
- 标题右侧的放大镜会把标题就地换成搜索框,按项目、路径或会话标题过滤;按 Esc 或清空后收起。
- 任务区和工作区列表之间的高度可以随时拖动调整,见下一节。
完结后直接移除聚合行,不显示成功提示或撤销条,也不会跳走当前会话。需要回看时,仍从原工作区列表打开。
调整任务区高度
任务区插在原生工作区列表上方,两者在侧栏里上下堆叠。任务区变高,工作区列表就整体往下推;变矮,工作区列表就往上收。拖动两者之间那条细手柄,就是在调整这个分配:
| 操作 | 效果 |
|---|---|
| 按住手柄上下拖动 | 任务区变高,工作区列表相应下移;拖回上方则上移。侧栏放不下时整体滚动,不会互相遮挡 |
| 双击手柄 | 恢复到默认高度(224px) |
手柄获得焦点后按 ↑ / ↓ |
按 16px 步进微调,适合精确对齐 |
| 无需操作 | 拖动结束后自动记住,下次打开沿用 |
几个约束:
- 最小 96px,保证至少能看清两行任务;最大 60% 窗口高度,避免把工作区列表挤到看不见。
- 高度是纯界面偏好,存在当前窗口的
localStorage(键名dsh-global-tasks:list-height),不属于任务数据,不会同步到其他机器,也不影响完结记录。 - 拖拽用 Pointer Capture 实现,鼠标移出手柄甚至移出侧栏都不会中断;松手即生效。
- 只改任务区自身高度,不覆盖原生列表的样式,也不改它的滚动容器。
浏览全部会话
任务区底部有一行「浏览全部会话 N ↗」。点它,主区切到完整的会话树:
⊞ DsPlugins E:/DsProjects/DsPlugins [1 运行][1 待处理][7]
│ ├─ ● 运行中 1
│ │ └─ 侧聊插件 · 上下文同步优化
│ ├─ ● 待确认 3
│ │ ├─ 全局任务 · 三标签拆分与高度拖拽
│ │ └─ ...
│ └─ ● 已归档 2
│ └─ ...
⊞ TokenTrackerLite ... [3]
| 操作 | 效果 |
|---|---|
| 点工作区行 / 状态分组 | 折叠或展开该分支 |
| 点会话行 | 用原生导航打开该会话;标题栏出现「← 返回会话」 |
| 「全部展开 / 全部折叠」 | 一键切换所有分支 |
| 搜索框 | 由标题右侧放大镜展开,匹配工作区名、路径或会话标题,命中时自动展开 |
| 四个筛选标签 | 全部 / 运行中 / 待处理 / 待确认,和侧栏那三个标签互相独立 |
树的入口刻意放在任务区底部、用虚线隔开,而不是塞进三个状态标签里——「全部」是换一个视图看所有会话(含归档),和「过滤当前活跃会话」不是一类操作。
清除待处理
「待处理」标签里堆积的审批、输入、失败行,可以在标签下方的「全部清除」一次清掉:
- 不归档、不删除会话。原会话、消息、工作区归属全部保留,只是从聚合视图里隐藏。
- 只清除当前「待处理」标签里、且活动状态已就绪的行;「运行中」「待确认」不受影响。
- 正在真正执行的会话不会被清除(它属于「运行中」);但卡在等你审批/输入的会话可以清除——那正是它出现在「待处理」的原因。
- 清除记录和「标记完结」共用同一份元数据:会话一旦有新活动,行会自动回来。
- 部分失败时不会中断整批,界面会提示「已清除 N 条,M 条未清除」。
状态规则
| 状态 | 所在标签 | 可以标记完结? |
|---|---|---|
| 正在执行 | 运行中 | 否 |
| 等待审批、等待输入 | 待处理 | 否,先处理等待事项;或「全部清除」暂时移出 |
| 失败、中止等非正常结束 | 待处理 | 否,先处理或重新运行;或「全部清除」暂时移出 |
| 正常结束,等待人工确认 | 待确认 | 是 |
| 已人工标记完结 | 移出聚合 | 原会话保留,新一轮活动后重新出现 |
三个标签互斥:一条会话只出现在一个标签里。「待处理」和「运行中」会随状态变化自动清空,只有「待确认」会随任务完成逐条累积——这也是把它单独拆出来的原因。
完结与归档相互独立。 本插件不增加「已完成」或「全部」页面,归档仍使用 Harness 原有入口;已归档会话不参与聚合。子代理会话不重复展示,普通 fork 会话仍参与。
初次安装时,历史非空主会话也可能进入「待确认」,插件不会自动推断旧任务已经收尾。冷会话通过原生只读观察获取状态,无需为完结操作启动 Agent;若旧目录数据尚未带活动投影,可先打开会话加载状态。
兼容性
| 项目 | 当前情况 |
|---|---|
| 插件版本 | 0.3.0 |
| 已验证宿主 | DeepSeek Harness Desktop 0.2.1-rc.2、0.2.1-rc.5 |
| 使用场景 | 本地 Desktop profile |
| 外观 | 跟随宿主浅色/深色主题 |
| 其他宿主版本 | 尚未验证 |
该宿主版本没有工作区前置区域插槽,因此插件通过可卸载的组件包装接入原生 sidebar.workspaces。这是针对当前版本的适配,不是官方稳定的装饰 API。升级 Harness 后应重新验证,勿绕过版本兼容检查强制加载。
插件包含结构检查和独立渲染错误边界。接口不匹配时不启用新增区域;新增区域渲染失败时隐藏该区域,以保留原工作区界面。
常见问题
装完没看到「全局任务」?
确认已重启 Harness,并用上面的 plugin why 命令确认包已安装。若 Harness 版本不在 0.2.1-rc.2 ~ 0.2.1-rc.5 范围内,可能因接口不匹配而不启用。
「待确认」里出现了很早以前的会话? 这是预期行为。插件不会自动推断历史任务已经收尾,需要你手动点 ✓ 标记。旧任务只堆在「待确认」里,不会影响默认打开的「待处理」。
点 ✓ 后会话会被删除或归档吗? 不会。只移除聚合列表中的那一行,原会话完好保留,归档仍走 Harness 原入口。
标记完结后它又出现了? 说明该会话收到了新的用户消息或开始了新一轮执行,旧完结记录自动失效。
卸载后我的完结记录会丢吗?
会。完结元数据存在独立的 local_global_tasks storage domain 中,卸载插件不清理它,但重新安装后不会自动继承旧记录。
实现说明
- 状态来源:原生会话、工作区和运行状态,结合 session projection 增量计算活动边界。
- 持久化:独立 storage domain
local_global_tasks保存人工完结记录,用活动序号识别过期记录。 - 后台通信:原生
connection.fetch.register接口继承 Harness owner 认证及 Fetch/IPC 桥;不额外开启监听端口,也不因元数据操作触发模型请求。 - 聊天记录:UI 的读取、完结操作不写聊天命令记录。显式调用
/global-tasks命令则沿用宿主命令显示行为。 - 同步:同源窗口用 BroadcastChannel 通知数据失效;连接重置和窗口获得焦点时重新读取,无定时轮询。
- 界面范围:样式限制在新增任务区,复用原组件、导航和宿主提供的 React,不改写其他组件 DOM。
后台仍保留 reopen 操作用于显式恢复完结记录,但界面不显示撤销条。本插件没有提供多租户服务器的跨账号管理功能。
开发
npm ci
npm test
npm test 包含客户端构建、40 项自动化测试及入口语法检查。
单独构建与打包:
npm run build
npm pack
dsh-global-tasks/
├── index.js # Host 插件入口
├── client.js # 已构建的客户端产物(随仓库提交)
├── build.mjs # esbuild 构建脚本
├── cordis.patch.yml # bundle 注册
├── src/ # 界面、状态、持久化与宿主适配
├── test/ # 自动化回归检查
├── e2e/ # 真实浏览器端到端检查
├── locale/ # 界面文案
├── docs/assets/ # README 插图(cover / sidebar / tree / lifecycle)
└── VALIDATION.md # 本地桌面验收记录
端到端检查
e2e/ 在一个临时 DSH_HOME 里起真实的 Harness 与 Chrome,通过 CDP 驱动界面,不影响你自己的配置与会话:
powershell -NoProfile -ExecutionPolicy Bypass -File e2e/run.ps1
42 项检查覆盖区域渲染、三标签、默认标签、拖拽高度与持久化、双击复位、键盘微调、搜索展开与收起、会话树的打开/筛选/折叠/搜索/返回,以及控制台无报错。加 -Keep 保留临时目录便于排查。
当前自动检查覆盖跨项目聚合、子代理及归档排除、审批与输入等待、三标签互斥、过期完结记录、存储失败、响应竞争、适配层卸载恢复、树的分组与搜索、以及清除待处理。核心行为已在真实桌面验收;随后按需求移除了成功提示及撤销条,0.2.0 拆出「待处理 / 待确认」两个标签并加入可拖拽的任务区高度,0.3.0 增加主区会话树与「全部清除」。这几轮界面调整已完成构建、40 项自动检查、42 项端到端检查和语法检查,会话树、全部清除与拖拽高度均已在真实界面点击验收。具体范围见 VALIDATION.md。
发布新版本
- 改
package.json的version npm run build(更新client.js)npm test- commit + push,然后打 tag:
git tag v0.3.0 && git push --tags
client.js 必须一起提交——从 GitHub 安装时不会执行构建。
反馈
请附上 Harness 版本、插件版本、复现步骤,以及脱敏后的截图或错误信息。 提交 Issue
许可
MIT
No comments yet. Be the first to write one.