Automatically Reorder Workspaces by Most Recent Conversation Activity (dsh-workspace-recency-order)

前言

在使用 DeepSeek Harness (DSH) 进行开发时,左侧工作区的顺序直接影响交互效率。默认情况下,工作区列表是静态的,随着会话增多,最近使用的工作区容易沉底。dsh-workspace-recency-order 插件通过 Host 侧的底层操作,解决了工作区顺序无法自动更新的问题。

插件介绍

这是一个 Host 侧插件,由开发者 dgmico 维护。它的核心作用是:按工作区内最新会话活动时间自动重排左侧工作区顺序(Host 侧,写入官方持久工作区顺序,不覆盖官方 UI)。

核心功能

  1. Host 侧插件:直接操作 Host 侧的工作区注册表,而非注入 DOM 或替换组件。
  2. 按最新会话活动时间自动重排:工作区会根据其名下会话的最新活跃时间(updatedAt)进行排序。
  3. 持久化排序:重启 DSH 后顺序保持,并继续自动维护。
  4. 实时更新:通过监听事件,在用户发送消息时实时调整顺序。
  5. 不覆盖官方 UI:利用官方渲染逻辑,只需修改 Host 侧数据,UI 会自动跟随。
  6. 幂等重排:计算出的顺序若与当前一致,则不写入,避免无效操作。
  7. 支持配置:提供多种配置项以调整排序行为。

安装与启用

插件支持通过绝对路径安装。

dsh plugin --profile <profile> add /绝对路径/dsh-workspace-recency-order

安装后,插件会自动处理配置。如果需要手动干预,可以在 profile 的 cordis.patch.yml 中添加配置项。

配置说明

在 profile 的补丁层(~/.dsh/profiles/<profile>/cordis.patch.yml)中按 id 重述整行。补丁按行替换 config,因此只需写入想修改的键。

- id: workspace-recency-order
  name: 'dsh-workspace-recency-order'
  config:
    sweepMs: 0          # 关掉兜底巡检
    debounceMs: 1000    # 防抖放宽到 1 秒
配置项 默认值 说明
enabled true 插件启用开关。
direction 'desc' 排序方向,desc 为最近活跃在最上,asc 为最久未动在最上。
emptyWorkspace 'createdAt' 空工作区的排序策略:createdAt 按自身创建时间参与排序,bottom 固定沉底,top 固定置顶。
countSubagentSessions false 是否将子代理会话(origin: 'subagent')计入活跃度。
debounceMs 400 事件合并防抖窗口(毫秒)。
sweepMs 300000 兜底巡检间隔(毫秒),0 表示关闭。
skipWhenSessionListEmpty true 当无法读取会话列表时,放弃本轮排序。

注意:本插件不依赖 @deepseek-ai/schemastery,因此 DSH 的配置页无法显示表单。改配置需直接编辑 cordis.patch.yml。

开发与维护

该插件采用零依赖、纯 ESM 模式编写。

  • 测试:包含 54 个测试用例,覆盖了 24 种工作区全排列和随机打乱的写入计划正确性校验。
  • 开发文件:
    • lib/order.js:核心排序逻辑。
    • lib/index.js:插件本体,处理事件、防抖和生命周期。
  • 热重载:插件本身支持热重载,但修改 lib/ 下的源码需要重启 DSH。

注意事项

  1. 全局持久:顺序是全局持久的,对 profile 下所有客户端生效。
  2. 子代理处理:子代理会话默认不参与活跃度计算。
  3. 时间基准:排序依据的“最新时间”取的是最后一次用户消息时间,而非助手回复时间。
  4. 重启需求:修改 lib/ 下的代码后必须重启 DSH。
  5. UI 限制:目前 DSH 暂未提供手动拖拽排序 UI,插件不会与手动操作冲突。

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

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

Xiaoye