前言¶
DeepSeek Harness (DSH) 原生的排序机制仅作用于工作区组内的会话,工作区本身的顺序依赖手动拖拽,且重启后顺序会重置。dsh-workspace-auto-sort 为 DSH Web / 桌面端新增了工作区自动排序能力:监听会话活动,根据用户消息时间自动重排侧边栏工作区,并将顺序持久化到磁盘,重启后保持。
核心能力¶
该插件运行在宿主进程,不依赖浏览器端注入,通过官方 workspaceRegistry.insertBefore API 进行重排。
- 活动监听与过滤:监听宿主
session/event,按activity口径刷新会话最后活动时间(默认'prompt',仅认用户消息);自动排除origin === 'subagent'的隐藏子代理会话。 - 防抖与重排:活动事件在防抖窗口(默认 750ms)内合并后触发重排计算。
- 持久化排序:通过
workspaceRegistry.insertBefore(id, beforeId)应用重排,与手动拖拽使用同一条持久化通道。 - 配置灵活:支持配置活动口径(
prompt/any)和排序范围(all/outermost)。
安装与启用¶
dsh web(CLI profile)¶
# 克隆仓库
git clone https://github.com/huimingli666/dsh-workspace-auto-sort.git
cd dsh-workspace-auto-sort
# 安装插件
dsh plugin --profile web add link:"$PWD"
# 重启 dsh web 生效
DSH Desktop(桌面端)¶
dsh plugin 命令无法直接管理 desktop profile。需手动执行以下步骤:
- 在 desktop profile 的 node_modules 下创建指向克隆目录的符号链接:
mkdir -p ~/.dsh/profiles/desktop/node_modules/@dsh-plugins
ln -s <克隆目录>/dsh-workspace-auto-sort \
~/.dsh/profiles/desktop/node_modules/@dsh-plugins/dsh-workspace-auto-sort
- 编辑
~/.dsh/profiles/desktop/package.json,在dependencies中增加:
"@dsh-plugins/dsh-workspace-auto-sort": "link:<克隆目录>/dsh-workspace-auto-sort"
- 在同文件
dsh.profile.bundles数组末尾追加:
"@dsh-plugins/dsh-workspace-auto-sort"
- 重启桌面端生效。
启用后,在任意工作区运行会话,该工作区将自动上浮;关闭插件(enabled: false)可恢复纯手动模式。
配置项¶
插件通过配置文件覆盖默认值:
| 键 | 默认值 | 说明 |
|---|---|---|
enabled |
true |
总开关,关闭时不挂监听、不重排 |
debounceMs |
750 |
活动事件合并窗口(非负整数) |
activity |
'prompt' |
recency 口径:'prompt' 只认用户消息;'any' 认所有提交事件 |
scope |
'all' |
排序范围:'all' 全部工作区;'outermost' 仅顶层工作区 |
logFile |
'' |
日志路径,空字符串使用默认 ~/.dsh/logs/...,'off' 关闭 |
announceToAgent |
false |
是否向模型通告本插件 |
诊断与手动触发¶
插件提供本地 API 用于查看状态和手动触发重排(需本机回环访问):
# 查看状态(监听计数、rank、最近一轮计划)
curl http://127.0.0.1:<端口>/api/dsh-workspace-auto-sort/status
# 强制执行一轮重排(不等会话活动)
curl -X POST http://127.0.0.1:<端口>/api/dsh-workspace-auto-sort/reorder
注意事项¶
- 手动拖拽互斥:活动触发时,手动拖拽的结果会被重排覆盖。
- 冷会话精度:宿主进程内从未运行过的会话(冷会话),其排序精度取决于磁盘会话头的
createdAt。 - 口径差异:插件使用“最后运行时间”(包含所有提交事件),比 GUI 的“最近更新”口径更广。
- 运行时要求:Node 运行时需满足
^22.0.0 || >=24.0.0。 - 宿主依赖:依赖宿主具备
workspaceRegistry.insertBefore、sessionPersistence.list()等功能。 - 配置容错:配置非法(如
debounceMs为负数)会在加载时直接抛错。
结尾¶
该插件通过官方 API 填补了 DSH 工作区管理的缺失环节,适合需要高频率切换工作区且希望保持顺序整洁的用户。更多详情可参考 SkillHub 目录 或 GitHub 仓库。