DSH Plugins Marketplace

DSH Plugins

Plugins

/

Sessions & Messages

/

dsh-ws-recency

d

dsh-ws-recency

Manifest valid

Sidebar session management: workspace groups sorted by latest activity, history older than N days folded behind one control, a global pinned section for native pins, manual "needs follow-up" marks, an

UI (client)hasBundlePatch

dsh-ws-recency

DSH 侧栏的六件事:工作区分组按最近活跃排序、过期历史自动折叠、运行中/未读/需跟进三色标记、所有置顶会话汇总到顶部一个区、删除会话到可恢复的回收站、按工具分类的 token 消耗统计、把会话移动到另一个工作区。单独装上就有效,不依赖其它插件。

一、分组排序

DSH 已经把组内会话按 updatedAt 倒序排好了(排序方式 = 最近更新),但分组自身用的是工作区注册表的顺序(创建工作区的先后),所以一个刚跑完一堆活的工程可能仍排在侧栏很下面。

做法:从 Client store 读每个工作区自己的会话,取组内最大的 updatedAt;空工作区回落到该工作区的 createdAt;把结果写成各分组元素的 flex order。不碰会话行、不碰原生置顶、不碰归档、不改 store。

二、历史折叠

会话超过 foldDays(默认 3 天)没有更新就折叠起来;整个工作区都过期时,它只剩一行工作区标题——需要翻历史时点开就行。

  • 每组一个控件:宿主的「展开其余 N 条会话」被隐藏,由插件的 展开历史 N / 收起历史 接管。N = 宿主还没渲染的行 + 已折叠的过期行;
    • 点「展开历史」→ 插件逐轮驱动宿主那个隐藏按钮(每轮它会多渲染 5 条,剩下 ≤5 条时一次全出),直到整组都渲染出来,同时展开过期行——一次点到全展开;
    • 点「收起历史」→ 重新折叠过期行(宿主已渲染的部分仍由插件按时间折叠,不会丢失);
  • 选中 / 运行中 / 等待处理的会话永不折叠(可在设置里关掉这个豁免);
  • 空白草稿行(新会话)不参与折叠判断;
  • 每 5 分钟自动重算一次,所以跨过 3 天边界的会话会自己折叠,不用刷新。

三、颜色与“需要跟进”

自动那部分只做能读准的:运行中(蓝)、完成未读(绿)。“看过但没决策”不猜——DSH 只有 completionUnread 一个布尔,点开就清零,猜不准反而制造噪音。

改成反向标记,由你自己打:

状态颜色怎么产生
运行中蓝宿主状态
完成未读绿宿主状态
需要跟进琥珀你在会话「…」菜单点「标记需要跟进」
  • 标记存在 Client store 的 followUps(随 dsh.ws-recency.prefs.v1 持久化),重启后还在;
  • 琥珀圆点渲染在宿主自己的 sidebar.session.row.leading 槽里,不往行里塞子元素——塞进去会让后面的行整体下移一格;点圆点即取消标记;
  • 标记只有你手动取消才会消失:运行中/完成未读期间它只是被更强的状态盖住显示,跑完、读完(没有新未读)之后琥珀自己回来;
  • 不受打开时长、会话是否继续对话影响——继续对话恰恰常常是还欠一次跟进的原因。

四、全局置顶区

DSH 原生的置顶只把会话顶到它所属工作区分组的第一行,分组本身仍在原位;一旦分组排在列表下面,置顶了也看不见。

本插件在所有工作区分组之上加一个「置顶」区,把宿主自己的置顶会话(workspaces.pinnedSessionIds)集中列出来:

  • 用的是宿主原生置顶集合,不是第二套置顶:会话「…」菜单里的置顶/取消置顶照旧;
  • 置顶区每行显示标题 + 所属工作区名,点行直接打开;hover 出现「取消置顶」;
  • 置顶期间它在原工作区分组里的那一行隐藏(不重复出现),取消置顶后原行回到原位;
  • 工作区分组、组内顺序、折叠、颜色全部照旧;
  • 只在按工作区分组时出现;搜索、扁平视图、侧栏收起时自动隐藏。

五、归档与删除

归档用宿主原生的:「…」菜单 →「归档会话」;看归档的内容用侧栏「视图选项」→ 显示已归档 / 仅显示已归档。本插件不改这套。

删除是宿主没有的,本插件补上(「…」菜单 →「删除会话(移入回收站)」):

  1. 先停掉它正在跑的工作;
  2. 摘掉归档标记与置顶;
  3. 从每个工作区的 sessionIds 记账里 detach;
  4. 删掉投影缓存记录;
  5. 把日志目录移动到 ~/.hypers-work/.trash/ws-recency/<sessionId>-<时间戳>/;
  6. 广播 api-session/removed,浏览器立即移除该行。

不是物理删除:目录只是被改名搬走,恢复就是把 .trash/ws-recency/<id>-<时间>/ 移回 sessions/<project>/<id>/。这条删除走的是宿主侧路由(POST /ws-recency/session-trash,仅接受回环来源),因为浏览器侧碰不到文件系统。

六、Token 消耗统计

会话下方统计条上的「用量分析」,或会话「…」菜单 →「Token 消耗统计」:

  • 真实账单(每步记录的 usage):步数、输入(未缓存)、缓存命中、输出、合计;
  • 消耗分布图(按内容估算):主 agent 自己(思考 / 回复 / 用户消息 / 系统提示)vs 每个工具,每个来源一条带颜色的横条,按占用长度直观对比;色相由工具身份决定(常用工具人工指定,其余按名字哈希,跨会话稳定),明艳度随占比排名递减;
  • 明细表:调用次数、参数估算、结果估算、合计、占比,按合计降序,默认折叠,点「显示明细」展开。

口径说明:prompt 的 token 是「整段上下文每一步都计费」,没法精确归属到某一条消息,所以「主 agent / 工具」的拆分是按内容长度估算(中文≈1 token/字,英文≈4 字符/token),用来比较占比;总量是真的。数据从会话日志算,跨重启也能看。大会话第一次打开约 1–2 秒(29MB 日志实测 1.2 秒),10 秒内重复打开走缓存。

宿主半(index.js)把统计与删除的路由挂在 webServer 上;如果面板报“宿主半未加载”,说明应用还没重启加载新版本。0.10.1 起面板失败时会带上 HTTP 状态和 /ws-recency/health 的自检结果,便于定位。

七、移动到工作区

「…」菜单 →「移动到工作区…」,选目标工作区即可。

为什么核心做不到:会话属于哪个工作区由它创建时的 cwd 决定,工作区的 attach 会校验「header.cwd 必须等于工作区路径」,而 header 是日志里不可变的第一条记录——所以在核心层面没有任何"改工作区"的入口。

本插件怎么做(宿主侧,唯一的写操作):

  1. 停掉会话;
  2. 通过 persistence 读出全部事件;
  3. 把旧日志目录移进 .trash/ws-recency/<id>-move-<时间戳>(既是备份,也腾出这个 id);
  4. 用新 cwd、原 id 重建日志,再回放全部事件;
  5. 校验新 header 的 cwd;
  6. 先 attach 到目标工作区(失败就回滚原目录),再 detach 旧工作区;
  7. 删投影缓存,让它按新路径重建。

风险与退路:这是插件里唯一改写会话存储的操作。备份会保留,回滚 = 把备份目录移回 sessions/<project>/<id>。

设置

设置 → 通用:

  • 历史折叠天数:− / 数字输入 / +(1–90,默认 3),以及“选中 / 运行中 / 等待处理的会话不折叠”;
  • 颜色与跟进标记:颜色标记总开关;
  • 全局置顶区:显示开关。

偏好持久化在 Client store 的 dsh.ws-recency.prefs.v1。

已知边界

  • 依赖宿主 DOM:分组容器带 _groupSection、分组头带 data-row-key="workspace:<id>"、行带 data-row-key="session:<id>"、溢出按钮类名含 sessionOverflowButton。宿主改结构就要跟着改。
  • 折叠只能作用于宿主已经渲染的行;更早的行仍在宿主自己的「展开其余」之后。
  • “未分组”桶永远排在真实工作区之后。
  • 只在按工作区分组(含工作区树顶层)时生效。
  • 可选互操作:如果你另外装着 dsh-plugin-busy-workspace,本插件会尊重它写在分组上的 data-busy-rank,把它的紧急度当主键、档位内部再按活跃度排。没装就是纯最近活跃排序——本插件不依赖它。

安装

npm(推荐,升级最简单):

dsh plugin --profile <profile> add dsh-ws-recency

或从 GitHub 直装:

dsh plugin --profile <profile> add github:chyxhtc/dsh-ws-recency

或固定版本的预构建包:

dsh plugin --profile <profile> add https://github.com/chyxhtc/dsh-ws-recency/releases/download/v0.11.0/dsh-ws-recency-0.11.0.tgz

装完把 dsh-ws-recency 加进 ~/.hypers-work/profiles/<profile>/package.json 的 dsh.profile.bundles,重启应用。

本地开发可以直接 link::

dsh plugin --profile desktop add "link:C:\Users\Konka\Hypers Work\workspace\dsh-ws-recency"

自检:node tests/selfcheck.cjs(桩 DOM,验证排序、按天数折叠、分组控件展开、宿主按钮计数、三色与跟进标记)。

Comments

Loading…

From the same category

billion-context

by ranxianglei

基本稳定可用 100K tokens is enough. Universal context-compression proxy for ALL AI coding agents,10w上下文足矣

Sessions & MessagesManifest valid

★ 3.6k

↓ 788.3k/wk

MIT

TypeScript

Nov 2, 2026

dsh plugin --profile web add billion-context

A DeepSeek coding agent harness: persistent shell, Ultra subagents, auto approval, Chrome MCP and session telemetry

Sessions & Messages

★ 1k

MIT

JavaScript

Index only — not installable

by Han-1413141

DeepSeek Harness session cost meter plugin: session/daily cost, budget, history, OpenCode Go quota, official & custom-provider balance, Codex-like token heatmap, peak/off-peak pricing with pre-switch

Sessions & MessagesManifest valid

★ 597

↓ 26k/wk

MIT

JavaScript

Nov 1, 2026

dsh plugin --profile web add dsh-cost-meter

by Yuuyuko-uu

DSH 鱼的记忆:给会话一份会淡忘的长期记忆,每条都带时间

Development & InfrastructureMemory & ContextSessions & MessagesManifest valid

★ 451

MIT

JavaScript

Nov 1, 2026

dsh plugin --profile web add dsh-fish-memory

by MichengAI

DSH Archive Manager — 在 DeepSeek Harness 中安全查看、恢复和管理已归档会话 · Safely view, restore, and manage archived sessions in DSH

Sessions & MessagesManifest valid

★ 276

↓ 30.5k/wk

Apache-2.0

JavaScript

Nov 2, 2026

dsh plugin --profile web add @michengai/dsh-archive-manager

by Nwflower

Import 14+ external agent chat histories (Claude Code, Codex, ChatGPT, Cursor, Gemini, Reasonix, opencode, ZCode, Grok Build, OpenClaw, Pi, Hermes, Kimi CLI, DSH) into DeepSeek Harness as resumable se

Sessions & MessagesManifest valid

★ 275

↓ 5k/wk

MIT

JavaScript

Oct 31, 2026

dsh plugin --profile web add dsh-chat-import