dsh-activity-heat:用热度找回刚聊过的会话与工作区

前言

在 DeepSeek Harness(DSH)里,会话会按工作区分组堆在侧栏里。刚说完话的那一条,往往几分钟内就被挤到折叠组或列表下方,切回上下文只能靠记忆或全文搜索。侧栏本身不负责「最近活跃」这一维度的排序与醒目标记。

下面介绍的 dsh-activity-heat(包名 @local/activity-heat)由社区维护者 MarkTina 发布,归类为记忆类插件。它根据距上次活动的时间算出 0–100% 的热度,并在侧栏、会话标题、悬停卡片和独立面板里统一表达——越 recent,越显眼。

这是什么

一句话:在 DSH 里把「你最近还在聊的会话和工作区」从长列表里拎出来,用同一套热度规则标注,避免刚结束的对话被埋没。

插件未发布到 npm(private: true),需按 profile 用 pnpm 从 GitHub 或本地路径安装,并在 profile 的 package.json 里加入 bundle 名。

核心功能

热度出现在哪里

位置 作用
侧栏入口 热度环图标亮度跟随当前 profile 里最热的一条会话
会话标题 标题下 persistent 蓝色下划线:越热越深、越饱和;约 6 小时内活跃的会话会在两档蓝色间轻 pulse;超过 7 天隐藏。行首仍留给宿主的状态点与计划任务时钟
会话悬停卡片 例如 Heat 4/5 · Warm、Last active: 40 min ago、This workspace is hot
主面板 Recent Activity 分 Sessions / Workspaces 视图,带热度筛选与条数选择

Recent Activity 面板

  1. 顶层切换:Sessions 与 Workspaces 分开列表,不再混排。
  2. 条数:会话 10 / 20 / 30 / 50,工作区 5 / 10 / 20。
  3. 热度筛选:All / Blazing / Warm / Active / Recent / Stale,并显示实时计数。
  4. 每张卡片底部分三组(细线分隔):缓存命中率与 context 占用(迷你进度条)、轮次 / 步数 / token、累计对话时长;Current 以 badge 标在标题前,相对时间在右列。
  5. 悬停 token 可展开明细(总量、缓存命中、未缓存输入、缓存输入、cache write、输出等,与宿主 Token usage 对话框同源)。
  6. 悬停对话时长可展开时间分解(等待 / 思考 / 回复 / 工具参数 / 工具运行 / 其他),数据来自 contextTimeline.timing,与宿主 timing 面板一致;卡片 portal 到 document.body,避免长列表裁剪。
  7. 右列固定 168px:工作区名、热度条与等级标签、相对时间对齐。
  8. 列表过长时可滚动,右侧有浮动 ⌃⌄ 手柄;点击会话行打开该会话,点击工作区行打开该工作区。

正在运行的会话

session.running === true 的会话卡片会显示:

  • 右侧 Working 标签与 12 帧 GIF 鲸尾标记(28px 高)
  • 卡片边框 conic-gradient 光带(约 2.2s 一圈)
  • 外层 呼吸光晕(约 2.4s 一周期)

行首单元格完全交给宿主(StateDot、计划任务时钟等);插件只在标题下用热度下划线表达热度。工作区内任一会话在跑时,工作区卡片同样处理,并聚合可求和的会话数、轮次、步数、token 与总对话时长。

系统开启 prefers-reduced-motion 时,上述动画全部关闭。

配色

仅使用宿主主题 token,无硬编码色值,例如 --color-blue-500(热度蓝)、--dsw-alias-bg-base、--dsw-alias-label-primary 等。热度用同一蓝色不同透明度(0.3–1.0)加部分填充的热度条表达。

安装与启用

安装前请自行阅读仓库源码与 MIT 许可证。插件在当前 DSH 进程权限下运行;从 GitHub 安装的是公开仓库内容,私有仓库需配置 token 或 SSH 后再 pnpm add。

进入你的 profile 目录(桌面版请用 Electron 应用内的插件管理器,不要手动改 ~/.dsh/profiles/desktop):

cd ~/.dsh/profiles/<your-profile>
pnpm add github:MarkTina/dsh-activity-heat#v0.1.0

建议固定 tag(如 #v0.1.0),避免跟踪 main 被无关提交改动行为。升级时改 tag 并完全退出后重启 DSH;已安装副本的文件变更不能靠刷新页面或开关插件 reload 模块。

在同一 profile 的 package.json 里,把 bundle 名加入 dsh.profile.bundles:

"@local/activity-heat"

首次安装通常靠宿主 HMR 激活;侧栏若无入口,重启 DSH 一次。

本地开发目录可选:

cd ~/.dsh/profiles/<your-profile>
pnpm add link:/absolute/path/dsh-activity-heat

同样加入 @local/activity-heat 到 bundles。

典型用法

快捷键打开面板

默认 Ctrl + Alt + H(macOS 为 Cmd + Alt + H)切换到 Recent Activity 面板;面板已打开时再按一次,回到进入面板前的会话(面板不替换当前会话,往返切换)。

在 Settings → Shortcuts 中搜索 “Recent Activity” 可改键。宿主保留 Ctrl+H 等系统组合键,故默认不用裸 Ctrl+H;插件 deliberately 不声明 Linux 默认快捷键 profile(Linux 上 alt+control 可能被视作保留键),Linux 用户可在设置里自行绑定。

配置热度窗口

默认值在插件的 cordis.patch.yml。在 profile 的 cordis.patch.yml 中用相同 id 写一整条配置(整段替换,非 deep merge,需写全字段):

- id: activity-heat
  config:
    hotMinutes: 10        # blazing 窗口(分钟)
    warmMinutes: 60       # warm
    activeMinutes: 360    # active
    recentMinutes: 1440   # recent
    staleDays: 7          # 超过则视为 stale(侧栏下划线等会隐藏)
    topCount: 8           # 面板默认行数
    tickSeconds: 60       # 热度衰减刷新间隔
    showRowDots: true     # 是否在会话标题下显示热度下划线

按你的工作节奏调整分钟/天数即可;改完后按 DSH 配置加载方式生效(重大变更建议重启)。

适用场景与注意

适合:同时在多个工作区、多会话间切换,需要快速回到「刚才还在聊」的那几条,或想在面板里按 Blazing / Warm 等档位筛选后再点开。

注意:

  1. 依赖 DSH 0.2.0-rc.2 及以上;与更旧宿主未在 package 中声明兼容。
  2. 安装与 bundle 注册发生在 profile 目录,与「一切皆插件」的 DSH 模型一致;skillhub.cn 为社区目录,与 DeepSeek / 幻方无官方从属关系。
  3. 热度来自本地会话活动时间,不替代宿主自带的搜索或会话管理;7 天外的 stale 行为以配置与 README 描述为准。
  4. 使用前核对 GitHub 上当前 tag 与 CHANGELOG,再决定是否升级 pin 的版本。

结尾

dsh-activity-heat 用统一的时间衰减热度,把最近活跃的会话和工作区从侧栏长列表里「抬」到图标、下划线、悬停说明和 Recent Activity 面板里,并区分正在 running 的任务。若你已在用 DSH 多会话开发,可按上文命令安装并绑定 @local/activity-heat。

  • 目录页:https://www.skillhub.cn/plugins/MarkTina/dsh-activity-heat
  • 源码与 README:https://github.com/MarkTina/dsh-activity-heat
羽毛球分组比赛记分
小程序二维码

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

小夜