dsh-workspace-auto-sort:为 DSH 新增工作区自动排序能力

前言

DeepSeek Harness (DSH) 原生的排序机制仅作用于工作区组内的会话,工作区本身的顺序依赖手动拖拽,且重启后顺序会重置。dsh-workspace-auto-sort 为 DSH Web / 桌面端新增了工作区自动排序能力:监听会话活动,根据用户消息时间自动重排侧边栏工作区,并将顺序持久化到磁盘,重启后保持。

核心能力

该插件运行在宿主进程,不依赖浏览器端注入,通过官方 workspaceRegistry.insertBefore API 进行重排。

  1. 活动监听与过滤:监听宿主 session/event,按 activity 口径刷新会话最后活动时间(默认 'prompt',仅认用户消息);自动排除 origin === 'subagent' 的隐藏子代理会话。
  2. 防抖与重排:活动事件在防抖窗口(默认 750ms)内合并后触发重排计算。
  3. 持久化排序:通过 workspaceRegistry.insertBefore(id, beforeId) 应用重排,与手动拖拽使用同一条持久化通道。
  4. 配置灵活:支持配置活动口径(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。需手动执行以下步骤:

  1. 在 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
  1. 编辑 ~/.dsh/profiles/desktop/package.json,在 dependencies 中增加:
    "@dsh-plugins/dsh-workspace-auto-sort": "link:<克隆目录>/dsh-workspace-auto-sort"
  1. 在同文件 dsh.profile.bundles 数组末尾追加:
    "@dsh-plugins/dsh-workspace-auto-sort"
  1. 重启桌面端生效。

启用后,在任意工作区运行会话,该工作区将自动上浮;关闭插件(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 仓库。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜