DeepSHPlugins
dsh-sessions-manager 專案預覽
GITHUB / COMMUNITY PROJECT

dsh-sessions-manager

會話與訊息JavaScriptMIT

在統一設定面板中歸檔、恢復、徹底刪除並跨工作區移動 DeepSeek Harness 會話。

10 StarsTOBYCAI 更新時間 2026-09-07
訪問 GitHub 倉庫
dsh-sessions-manager 專案預覽
dsh-sessions-manager 介面截圖dsh-sessions-manager 介面截圖dsh-sessions-manager 介面截圖dsh-sessions-manager 介面截圖dsh-sessions-manager 介面截圖

專案介紹

中文

在統一設定面板中歸檔、恢復、徹底刪除並跨工作區移動 DeepSeek Harness 會話。

English

Archive, restore, permanently delete, and move DeepSeek Harness sessions across workspaces from one unified settings panel.

專案資訊與收錄訊號

快照 2026-09-11
作者 / 組織
TOBYCAI
倉庫
TOBYCAI/dsh-sessions-manager
GitHub Stars
10
Forks
3
開發語言
JavaScript
許可證
MIT
最近推送
2026-09-07
Manifest
資料中檢測到宣告

公開倉庫不自動等於可商用;許可證與當前相容性以原專案文件為準。Manifest 和資料評分不構成安裝安全認證。

資料評分

84/ 100
維護活躍
98
文件與實用資訊
100
生態關注度
43
安裝便捷訊號
100
專案宣告訊號
100

近 4 天仍在更新;README 含完整安裝與使用說明;標準命令一鍵安裝。

評分來自已有資料快照的五維模型,僅作瀏覽參考,不是實際使用評測或安全檢測結論。

安裝與使用

所有專案資料與許可均以對應 GitHub 倉庫為準。

dsh plugin --profile web add github:TOBYCAI/dsh-sessions-manager

複製命令不會自動執行。請先閱讀倉庫文件,確認環境要求與許可證。

專案截圖

倉庫 README

GitHub 原文

已儲存的倉庫文件快照;文件抓取時間未記錄,可能與上方目錄介紹處於不同版本。安裝前請核對當前倉庫說明。

儲存庫檔案保留原文,指令與授權文字不作自動改寫。

dsh-sessions-manager

可能是目前最稳定、体验最好的 DSH 会话管理插件。
中文 | English

GitHub stars Downloads License daily compat DSH plugin

DSH 会话管理器:在设置 → 会话管理里统一归档、移动、恢复、查看详情;在主页侧边栏直接标记未读、移动、删除会话。删除先进入回收站,可恢复或彻底清理。

一个 DSH 持久化插件(host + browser 双半),同时覆盖「设置面板」与「主页侧边栏」两个入口,无需打开设置即可完成高频会话操作。插件同时识别旧式 header 列表/readFrom 与新版 snapshot/SessionHandle,按当前 Runtime 的实际能力启用操作:删除与迁移路径必须可验证才会开放(新版 Runtime 上由守卫式路径推导与写所有权探测保障),无法验证时在界面与 Host 端同步禁用,避免假成功。

功能

设置面板:会话管理

  • 统一面板:顶部提供「全部 / 活动 / 已归档 / 已收藏 / 回收站」五个视图,支持按标题、会话 ID、工作区搜索,按工作区筛选,并按创建时间或标题排序。筛选栏下方另有一行维护栏,收纳「自动归档」与「存储占用」两个按需展开的工具,不占用视图位置。
  • 收藏(星标):会话行左侧常驻星标按钮,单击即收藏 / 取消(乐观更新、失败回滚);「已收藏」视图与 DSH 的活动 / 归档状态正交、可叠加;收藏索引为插件自有 schema v3,不触碰 DSH 日志,会话被彻底删除时自动清理。
  • 冷态标题同步:侧栏使用日志中最新的 session/title 修正冷启动缓存,改名后的会话无需先打开即可显示新名称。
  • 侧栏跨工作区拖拽:直接把会话拖到目标工作区标题即可切换工作区;目标高亮、同工作区拦截、失败反馈,并保留“更多 → 移动会话”作为键盘操作入口。
  • 归档 / 恢复:归档把会话从侧栏隐藏;恢复取消归档并放回原工作区分组。
  • 移动到工作区:任选已有工作区或新建目录路径(自动创建),新建目录支持点击 「浏览…」 调用系统目录选择窗口。会话的工作目录与日志一起迁移。旧版 Runtime(0.1.2-rc.1)下已打开的会话也可移动;新版 Runtime(0.1.3-alpha.1)为避免并发写入损坏日志,正在写入的会话会被拒绝移动,待其空闲后重试即可。
  • 会话详情:展开单条会话查看磁盘占用、轮次 / 步骤 / 用户·助手消息 / 工具调用 / 图片附件统计、工具使用分布、搜索·抓取记录、write/edit 写过的文件列表(已过滤磁盘上已不存在的路径),以及血统(父会话 / 子会话 / 子代理)。
  • 导出:详情面板底部提供两个入口——「下载原始日志 (ZIP)」直接走 DSH 官方 session.export 端点(含子会话与附件,持久化后端不支持时自动隐藏);「导出 Markdown」由本插件把会话渲染为人类可读对话记录(front matter + 按轮分节 + 用户 / 助手 / 工具调用摘要,流式增量不重复)。
  • 存储占用分析:维护栏的「存储占用」按钮按需展开,按工作区聚合会话日志的磁盘占用(占比条 + 会话数),并列出占用最大的会话 Top 10。纯只读统计,不修改任何数据;默认收起、展开时才统计,因此不会拖慢会话列表的加载。
  • 自动归档:可设为把 30 / 60 / 90 天未活跃的会话自动收进「已归档」,默认关闭。当前正在使用的会话与已收藏的会话(该保护可关闭)永不自动归档;只做归档标记,不删除任何数据,随时可恢复。检查在打开面板时惰性触发,每天最多一次,也可点「立即检查」手动执行。
  • 批量多选:全选 / 批量归档 / 恢复所选 / 删除所选(批量删除一次二次确认)。

主页侧边栏:会话 ⋯ 菜单增强

  • 标记未读:在会话的 ⋯ 菜单顶部新增「标记未读 / 标记已读」切换;也可直接点击会话左侧的状态圆点切换。进入该会话后自动取消未读标记。
  • 移动会话:点击后右侧悬浮子菜单列出工作区名称,选择即移动到目标工作区;当前工作区以「当前」标注并置灰。
  • 删除会话:删除会先把会话移入回收站(非立即物理删除),设置面板可回收站恢复或彻底清理。

主页侧边栏:状态圆点

每行会话左侧显示一个小圆点,颜色直接读取 DSH 原生 StateDot 状态,含义如下:

颜色状态说明
🔵 蓝手动标记未读通过 ⋯ 菜单或点击圆点手动标记;进入会话后自动清除
🟡 黄工作中会话正在运行(新版 ongoing,兼容旧版 running)
🟠 琥珀等待反馈会话有追问,需要用户输入或确认(warning)
🟢 绿完成后未读会话已完成(done)但你还没重新打开看过;看过一次后不再显示
🔴 红出错 / 需关注会话遇到错误(error)
无圆点完成后已读 / 空闲—

圆点与 DSH 自带状态点接管对齐:插件隐藏 DSH 原生点并按上表重新渲染,避免两个点并存。

回收站

  • 回收站是会话管理中的独立视图,显示待清理数量和删除时间。
  • 正常删除的会话先进入回收站,不会立即从磁盘移除,也不会被归到「未分组」。
  • 回收站内可对单条会话执行恢复(回到原工作区)或彻底删除(物理清理日志)。
  • 支持清空回收站一键彻底删除全部内容。
  • 支持永久保留或 7 / 30 / 90 天自动清理,并可校验日志完整性。
  • 回收站索引采用版本化 schema、串行变更和原子写入;旧版数组索引会自动迁移。
  • 已彻底删除的会话会被永久隐藏,不再出现在侧栏与会话管理列表。
  • 永久删除会先写入后端墓碑,再等待 live Session 与持久化控制器退出、移除日志并重建工作区索引;即使重连或宿主仍有旧索引,也不会重新出现或生成空的「未分组」。

截图

展开查看截图(设置面板 / 自动归档 / 存储占用 / 已收藏 / 回收站 / 会话详情 / 侧边栏菜单)

主页侧边栏 ⋯ 菜单(标记未读、移动会话、删除会话)

设置面板「会话管理」

自动归档面板(维护栏内联展开)

存储占用分析(维护栏内联展开)

已收藏(星标)视图

回收站

会话详情(磁盘占用 / 统计 / 工具使用)

安装

# 方式一:Git 依赖直装(推荐,无需本地 clone,重启 DSH 生效)
dsh plugin --profile desktop add "github:TOBYCAI/dsh-sessions-manager"

# web 端(若你也用 dsh web):
dsh plugin --profile web add "github:TOBYCAI/dsh-sessions-manager"

# 方式二:本地 link(开发调试)
git clone https://github.com/TOBYCAI/dsh-sessions-manager.git
dsh plugin --profile desktop add link:/path/to/dsh-sessions-manager
装完重启 DSH(或刷新页面重新加载 bundle)后,设置 → 会话管理 / 主页侧栏 ⋯ 菜单 即可用。

卸载

dsh plugin --profile desktop remove dsh-sessions-manager
dsh plugin --profile web remove dsh-sessions-manager

结构

package.json       npm 元数据 + dsh.bundle.patch + dsh.client(浏览器半注册)
cordis.patch.yml   向 profile bundle 插入本插件行
src/index.js       host 源码(/archived-sessions/* JSON 路由)
src/client/index.jsx  client 源码(React,settings.section + 侧栏 DOM 增强)
src/auto-archive.js   自动归档设置(schema v4)+ 候选判定纯函数
src/storage-stats.js  存储占用聚合(纯函数,按工作区 / Top N)
build.mjs          esbuild 构建脚本(本地开发时生成 lib/)
lib/index.js       预构建 host(ESM)
lib/client.js      预构建 client(ModuleLoader CJS handshake)

lib/ 已预构建,clone 下来即可直接用、无需 esbuild。若要改源码,运行 npm i -D esbuild && npm run build 重新生成 lib/。

Host 路由

方法路径说明
POST/archived-sessions/sessions列出全部会话(含已归档标记),供「会话管理」面板
POST/archived-sessions/list列出归档会话(跳过已删除/不存在者)
POST/archived-sessions/archive归档(隐藏)单个会话
POST/archived-sessions/archive-many批量归档
POST/archived-sessions/restore取消归档单个
POST/archived-sessions/restore-many批量取消归档
POST/archived-sessions/delete删除单个会话——移入回收站(非立即物理删除)
POST/archived-sessions/delete-many批量移入回收站
POST/archived-sessions/trash/list列出回收站中的会话
POST/archived-sessions/trash/restore从回收站恢复会话
POST/archived-sessions/trash/purge彻底删除回收站中的单个会话
POST/archived-sessions/trash/purge-many清空/批量彻底删除回收站会话
POST/archived-sessions/trash/settings读取或更新自动清理策略 { retentionDays }
POST/archived-sessions/trash/verify校验回收站日志是否仍存在
POST/archived-sessions/workspaces列出可选目标工作区
POST/archived-sessions/move把会话移动到目标工作区 { sessionId, targetPath }
POST/archived-sessions/details会话详情(磁盘/统计/工具/fetch/文件/血统){ sessionId }
POST/archived-sessions/sidebar-state返回侧栏权威标题、回收站 ID 与永久删除墓碑
POST/archived-sessions/star/set收藏 / 取消收藏 { sessionId 或 sessionIds, starred }
GET/archived-sessions/export-md?sessionId=单会话 Markdown 导出(人类可读对话记录)
POST/archived-sessions/storage存储占用聚合(按工作区排行 + 最大的会话){ topN }
POST/archived-sessions/auto-archive/settings读取或更新自动归档策略 { inactiveDays, skipStarred };读取时惰性触发每日检查
POST/archived-sessions/auto-archive/run立即执行一次自动归档检查(忽略每日节流)
POST/archived-sessions/capabilities返回当前持久化代际及读取、归档、回收站、永久删除、跨工作区移动能力
删除会话默认进入回收站,只有回收站内的「彻底删除」才会物理移除日志。被彻底删除的会话由前端永久隐藏,避免 DSH 运行时缓存使其重新出现在侧栏或「未分组」中。

兼容性

  • 适配系统:跨平台(macOS / Windows / Linux)——只要 DSH 能在该系统运行即可;本插件 host 基于 Node(约 ^22.19 或 >=24)、浏览器端为 React,不依赖特定操作系统 API。
  • DSH Desktop / web 均可(同一套 host + client)。
  • peerDependencies 见 package.json;react、@deepseek-ai/* 由 DSH 运行时提供。
  • 0.1.2-rc.1:现有读取、归档、回收站、永久删除和跨工作区移动能力保持可用。
  • 0.1.3-alpha.1:支持 snapshot 列表和 SessionHandle 只读流程;永久删除与跨工作区移动在缺少已验证安全路径时自动禁用,其余管理能力继续工作。能力以面板实际提示为准。
  • 未经验证的未来 Runtime 默认只开放能够识别的安全能力;插件不会用方法存在与否冒充行为兼容。

0.1.3-alpha.1 下的行为差异与降级说明

  • 回收站恢复需要校验:恢复前会确认底层会话仍存在(live / stat / 列表三级判定)。底层会话已不存在(DSM_SESSION_MISSING)、已被彻底删除(DSM_SESSION_PURGED)或索引仍在但日志文件消失(DSM_SESSION_LOG_MISSING)时返回准确错误;无法核验日志位置时如实标注 unverified,不会假装校验通过。恢复到「工作区已删除」的会话会成功并提示其暂归「未分组」。
  • 彻底删除 / 清空回收站 / 自动物理清理:官方公共契约未提供删除 API,插件沿用 legacy 时代的半官方路线——从后端实例的存储根目录字段出发做三层守卫式路径推导(根目录 → 会话目录结构 → 会话 ID 归属校验),通过后整目录删除并以官方 stat 复核;存在活跃写入的会话会被拒绝(409)。推导失败(如无法确认存储根目录)时自动禁用并说明原因,绝不盲删。
  • 跨工作区移动:主路径为官方 create + append 事件重放(写所有权探测拒绝活跃会话、revision 前后校验防并发写入、备份回滚保证失败不留半移动状态);后端存在同 ID 幽灵记录时回退到 frame0 cwd 改写搬运(帧数与内容逐位校验)。路径同样来自守卫式推导;移动后自动重建工作区分组索引,无需重启。
  • 彻底删除墓碑不压制新会话:若同 ID 会话被重新创建,墓碑自动让位,新会话正常出现在列表与侧栏。
  • 元数据缓存的变更令牌:新 Runtime 优先使用官方 stat/list 快照的 revision(仅同一 service 实例、同一会话内可比较)判断会话是否变化,旧 Runtime 继续使用 (mtime, size) 文件指纹;revision 绝不写入跨进程持久索引。列表元数据直接取自 snapshot.header,标题走批量投影——没有标题时不会自动解码整本日志,避免放大 alpha 已知的历史会话加载性能回退。
  • 自动归档:新 Runtime 不提供可靠的「最后活跃时间」,无法证明会话闲置时检查会跳过(no-activity-data),绝不基于猜测归档。
  • 侧栏注入:DOM / React fiber 识别收敛为可版本化的 adapter;上游侧栏结构不被识别时整体安全停用,不影响官方侧栏本身。识别正常时以 MutationObserver 增量驱动为主,仅保留低频兜底检查。

License

MIT © TOBYCAI

使用前核對

安裝步驟、相容版本與授權範圍以原專案當前文件為準。Stars 和評分是快照中的導航訊號。

安裝與排錯 · 專案問題反饋

同類專案