DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

AnsonLi-better /

AnsonLi-better/dsh-global-tasks

Verified

Global running and pending sessions above the native DeepSeek Harness workspace list. Community plugin.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: master@28535896

DSH Global Tasks:在工作区上方集中查看所有项目的运行中、待处理与待确认会话

DSH Global Tasks · 全局任务

所有项目的进展,一眼看见。

version harness license community

安装 · 使用 · 状态规则 · 兼容性 · 常见问题 · 开发


同时在多个项目里工作时,不必逐个展开工作区寻找正在运行或等待收尾的会话。全局任务在原工作区列表上方增加一个聚合区域,用「运行中 / 待处理 / 待确认」三个标签集中查看所有工作区的会话,每条显示所属项目,点击即可打开原会话。

侧栏自上而下三层:全局任务区、可拖拽高度手柄、原样保留的原生工作区列表;任务区标题右侧只有放大镜,下方是三个互斥标签与「浏览全部会话」入口

功能

功能 使用体验
跨工作区聚合 查看所有工作区的主会话,不受当前选中项目或列表折叠状态限制
三个筛选标签 「运行中」看正在执行的任务;「待处理」看等你审批、等你输入或已经失败的会话;「待确认」只看正常跑完、等你点 ✓ 的会话
默认打开「待处理」 打开插件先看到真正卡住你的那几条,不会淹没在已跑完的任务里
列表高度可调 任务区插在工作区列表上方,拖动两者之间的手柄即可调整它占的高度,工作区列表随之上下移动;双击恢复默认
浏览全部会话 任务区底部一行「浏览全部会话 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

适配层会卸载包装并恢复原工作区组件。人工完结元数据不等同于会话数据,卸载插件不会删除原会话。


使用

  1. 在左侧原工作区列表上方找到「全局任务」。
  2. 打开时默认停在「待处理」——需要你动手的会话都在这里;切到「运行中」看正在执行的,切到「待确认」看已经跑完的。
  3. 点击任意会话,进入原生对话界面查看结果。
  4. 正常结束且确认收尾后,将鼠标移到该行,点击右侧 ✓ 标记完结。
  5. 标题右侧的放大镜会把标题就地换成搜索框,按项目、路径或会话标题过滤;按 Esc 或清空后收起。
  6. 任务区和工作区列表之间的高度可以随时拖动调整,见下一节。

完结后直接移除聚合行,不显示成功提示或撤销条,也不会跳走当前会话。需要回看时,仍从原工作区列表打开。

调整任务区高度

任务区插在原生工作区列表上方,两者在侧栏里上下堆叠。任务区变高,工作区列表就整体往下推;变矮,工作区列表就往上收。拖动两者之间那条细手柄,就是在调整这个分配:

操作 效果
按住手柄上下拖动 任务区变高,工作区列表相应下移;拖回上方则上移。侧栏放不下时整体滚动,不会互相遮挡
双击手柄 恢复到默认高度(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。

发布新版本

  1. 改 package.json 的 version
  2. npm run build(更新 client.js)
  3. npm test
  4. commit + push,然后打 tag:git tag v0.3.0 && git push --tags

client.js 必须一起提交——从 GitHub 安装时不会执行构建。


反馈

请附上 Harness 版本、插件版本、复现步骤,以及脱敏后的截图或错误信息。 提交 Issue

许可

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit 285358969c2c

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout