前言¶
DeepSeek Harness(DSH)按会话 cwd 解析结果,把每条对话归到对应工作区下。若启动对话时没有选定工作区,这条会话不会进入任何分组,只能和归档目录、已删项目等一起堆在侧边栏的「未分组」里。日常开发里,临时问答、跨项目闲聊往往就是这样产生的,时间一长「未分组」既难找,也和真正的杂项混在一起。
社区插件 dsh-recent-tasks(维护者 winditer)在侧边栏注册一个真实的工作区记录,专门承接「没有工作区」的会话,并在界面上把它提升为与「工作区」同级、可独立折叠的「最近任务」区块。下面介绍它的定位、能力与安装用法。
这是什么¶
dsh-recent-tasks 是 DSH 客户端类插件:在侧边栏区块层级增加可折叠的「最近任务 / Recent tasks」,无工作区的对话默认落在这里,而不是继续挤在「未分组」。
插件在 npm 上发布为 dsh-recent-tasks(当前资料中版本 0.3.0),许可证 MIT。社区目录页:skillhub.cn/plugins/winditer/dsh-recent-tasks;源码与说明:github.com/winditer/dsh-recent-tasks。
核心功能¶
真实工作区,而不是「画出来的分组」¶
DSH 侧边栏的分组本身就是 workspace 存储域,第三方插件无法在旁路再插一套平行分组。本插件通过 ctx.workspaceRegistry 为专用目录注册 一条真实 workspace 记录,并作为最后一个分组创建;之后除非你手动拖动,插件不会改写持久化顺序。
因此:
- 在该分组里发起的会话
cwd指向最近任务目录,会话 ID 会按官方路径写入该组的sessionIds(按realpath(cwd)匹配,无法把对话拖进别的组冒充归属); - 沙箱根目录仍是该文件夹,权限边界与普通工作区对话一致;
- 不 patch 官方「工作区」文案,也不动「未分组」逻辑;分组显示名由插件只改自己的记录,并随当前界面语言更新。
侧边栏层级:与「工作区」并列、独立折叠¶
「最近任务」在视觉上与官方「工作区」标题同级:折叠「工作区」箭头只隐藏其它工作区分组,「最近任务」仍可见;折叠「最近任务」箭头只收起其下的对话列表。底层仍是一条 workspace 记录,插件不写其它分组的数据、不重排列表。
实现依赖官方稳定属性(如 data-row-key、role、内联 --dsh-workspace-indent),而非易变的 class 名。若 DSH 升级后这些锚点变化,区块级展示会 自行停用,侧边栏恢复默认样式并在控制台留一行提示,避免残留 DOM hack。
下列情况会暂时不做「提升」:扁平列表、搜索中、56px 窄栏、树形模式下该目录嵌在其它工作区之下(此时它不是同级 peer)。切回正常视图后会立即重新应用。折叠状态保存在浏览器本地键 dsh.recent-tasks.workspaces-collapsed.v1,不上报。
入口与快捷方式¶
- 侧边栏底部 Settings 旁有 「+ 最近任务对话」,在该工作区下开新会话;
- 快捷键 Mod+Alt+N / Mod+Shift+N(资料中与 Settings 并列描述),同样在该 workspace 启动会话。
设置与 Host API¶
在 Settings → General 中会出现「最近任务」相关行:可配置 文件夹路径、分组名称、自动修复 等,由插件官方 live config 持久化。
对外提供只读、幂等的 HTTP 接口:POST /dsh-recent-tasks/api/state 与 /ensure;写入路径仅通过上述设置表单,而非随意 API 改状态。
环境与依赖¶
- DSH web 或 desktop profile,版本 0.2.0-rc.1 及以上(README 注明在 0.2.0-rc.2、cordis ~4.0.4 上开发验证);
package.json中engines.dsh为>=0.2.0-rc.1 <0.3.0-0。 - 从源码构建需要 Node.js >= 22.19.0;推荐用 pnpm 安装到 profile。
- 无网络访问要求、无原生模块、无 install scripts、无运行时 npm 依赖。
安装与启用¶
bundle 入口(id: recent-tasks)由包内 cordis.patch.yml 自声明,一般无需手写 patch。
从 npm 安装(推荐)¶
市场与预构建包均走此路径,可跳过构建审批:
dsh plugin --profile desktop add dsh-recent-tasks
使用 web profile 时将 desktop 换成 web:
dsh plugin --profile web add dsh-recent-tasks
从 GitHub 安装¶
按仓库身份安装 main 尖端,适合试用未发布改动;仓库内已提交构建好的 dist/client.js,消费端不会执行本包构建:
dsh plugin --profile desktop add github:winditer/dsh-recent-tasks
从发布 tarball 安装¶
dsh plugin --profile desktop add https://github.com/winditer/dsh-recent-tasks/releases/download/v0.3.0/dsh-recent-tasks-0.3.0.tgz
应用内安装¶
Settings → Plugins → install bundle,指向本插件目录或 file: 规范。若手动改 profile,除 dsh.profile.bundles 外还须在 dependencies 中登记该包,否则 desktop 崩溃恢复路径可能把仅列在 bundles 里的项清掉。
安装完成后 完全退出并重启 DSH,侧边栏末尾会出现「最近任务」分组。
典型用法¶
- 完成上述任一安装方式并重启 DSH。
- 在 Settings → General 中确认「最近任务」目录与分组名称;需要时可开启自动修复。
- 点击 「+ 最近任务对话」 或按 Mod+Alt+N / Mod+Shift+N 开新会话——这些会话归属最近任务工作区,不再进入「未分组」。
- 像对待普通工作区一样:可重命名分组、拖动顺序、置顶、归档、搜索;折叠箭头只影响该区块下的列表。
- 若你习惯无工作区开聊,历史对话会在该区块下列出,而不是与归档等混在「未分组」。
适用场景与注意¶
适合:经常在 DSH 里做与工作区无关的短对话、希望侧边栏结构清晰、又需要与普通工作区相同的归档/搜索/权限行为的用户。
已知取舍(README 说明):「最近任务」区块随工作区列表一起滚动;当「工作区」区块被折叠时,若当前会话属于被藏起的其它分组,高亮可能暂时看不见;官方 UI 重绘的极短瞬间,已折叠分组可能闪一下再被插件 replay 纠正。
安全与信任:插件以 当前 DSH 进程权限 运行,会注册 workspace、注入客户端脚本并提供上述 API。安装前请阅读 源码与 LICENSE,确认符合你的策略。SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系,并非官方应用商店。
结尾¶
dsh-recent-tasks 用一条真实的 workspace 记录,把「无工作区」对话从「未分组」里拆成可管理的「最近任务」区块,并保留 DSH 原生的分组行为与沙箱边界。需要详情、截图与开发构建说明时,可查阅 GitHub 仓库 与 SkillHub 目录页。