Vim0x3c/dsh-session-manager
DeepSeek Harness 会话管理设置面板:列出本机全部会话(运行中/空闲/已归档),支持继续会话、预览大纲、删除会话
项目介绍Project Overview
dsh-session-manager 是 DeepSeek Harness 的会话管理插件,无需修改 harness 源码,安装后即可在「设置-会话」中查看所有运行中、空闲、已归档会话。支持继续会话、预览大纲、永久删除(含 JSONL 与 SQLite 持久化)以及多选批量删除。删除父会话会级联清理其受管子会话,并预检整棵子树防止半删。插件提供 loopback 与 Origin 安全校验,实时 Agent 停止与 Session 脱离兼容逻辑。未来 harness 若原生支持 delete/stop 接口,插件将自动切换至原生能力。注意:删除不可恢复;非 loopback 访问时仅显示继续与大纲功能;列表不会跨标签页实时推送。
dsh-session-manager is a DeepSeek Harness plugin that lists all local sessions—running, idle, and archived—without modifying harness source. It offers resume, outline preview, and permanent deletion with multi-select batch support. Deletion cascades through managed subagent children with full subtree preflight checks, using JSONL staging or SQLite transactions. The Host side enforces loopback, Host, Origin, and Fetch Metadata security checks and provides compatibility shims for harness 0.1.0-rc.8. Future harness native delete/stop APIs take precedence. Caveat: deletion is irreversible; non-loopback pages hide delete controls; the session list does not push live updates across browser tabs.
请帮我了解并安装插件:【dsh-session-manager】【https://github.com/Vim0x3c/dsh-session-manager】
把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.
或使用命令行安装(适合开发者)Or use CLI install (for developers)
命令行安装CLI Install
dsh plugin --profile web add github:Vim0x3c/dsh-session-manager
把 Vim0x3c/dsh-session-manager 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
dsh-session-manager
English | 中文
一个可直接安装的 DeepSeek Harness 会话管理插件。它列出本机全部已物化会话,包括运行中、空闲和已归档会话,并提供继续、大纲和永久删除。
关键说明
不需要修改 deepseek-harness 源码。
从 0.2.0 起,包内同时包含:
- 浏览器端会话管理面板;
- Host 端
session.deleteRPC; - 实时 Agent 停止与 Session 脱离兼容逻辑;
- JSONL 和 SQLite 持久化删除实现;
- loopback、Host、Origin 和 Fetch Metadata 安全校验。
用户只需安装本插件并重启 dsh web。不需要复制代码到 harness,不需要修改 SessionsApi、AgentLoop、SessionPersistence 或任何 harness 文件。
功能
- 完整会话列表:实时、冷会话、已归档或未归档会话,按更新时间展示标题、状态、工作目录等信息。
- 继续会话:通过浏览器 sessions 服务打开已有对话。
- 大纲预览:在浏览器内折叠
session.history尾部窗口,展示轮次、用户/助手消息数及工具调用统计。 - 永久删除:先停止并等待目标 Agent 静默,再重新读取 live 与 durable 会话树,预检通过后删除存储数据。删除会话时会级联删除其全部
origin: subagent受管子会话(最深优先);普通 fork 自身保留,但会继续遍历其下的受管子会话。 - 多选批量删除:列表左侧复选框中可多选,工具栏一次性删除全部选中项。仅"独立删除目标"可勾选(普通会话与孤儿受管子会话;有父会话的受管子会话随父级联删除,不单独出现)。批量删除逐个独立走完整安全删除流程,某个删除失败不会回滚已成功的,并会在确认框列出剩余失败项以便重试。
- JSONL:删除该会话拥有的整个目录,包括日志和同目录快照。
- SQLite:在当前后端连接中执行事务删除,事件行通过外键级联清理。
- 未来兼容:若后续 harness 原生提供
AgentLoop.stop或SessionPersistence.delete,插件优先调用原生能力。
普通 fork 可以独立删除。origin: subagent 的受管子会话随仍存在的父会话级联删除:界面不提供子会话自己的删除按钮,删除父会话时确认框会提示将一并删除的子会话数量;直接对子会话发起删除请求仍返回 agent-busy。如果父会话已经不存在,该行会标记为孤儿并显示删除按钮,允许直接清理。删除前会先预检整棵子树,已知失败不会先删除其他成员。
兼容范围
- 目标版本:DeepSeek Harness
0.1.0-rc.8。 - 已支持官方持久化后端:
session-persistence-jsonl、session-persistence-sqlite。 - 自定义持久化后端必须自行提供
delete(id);如果需要级联删除多个 durable 会话,还必须提供原子deleteMany(ids),否则插件会明确拒绝该级联请求,不会逐个删除造成半删。 - 删除端点仅允许 loopback authority,例如
localhost、127.0.0.0/8、[::1];通过局域网地址打开页面时只显示继续和大纲。
Host 实现针对 rc.8 缺失的三处能力做兼容补齐,并使用 rc.8 的内部 lifecycle/coordinator 结构。因此升级 harness 后应先运行本仓库测试;当上游提供原生接口时,插件会优先走原生接口,减少对兼容层的依赖。
安装
先在插件仓库构建 tarball:
pnpm install
pnpm pack
再将生成的 dsh-session-manager-0.2.2.tgz 安装到 web profile:
dsh plugin --profile web add -w ./dsh-session-manager-0.2.2.tgz
安装后重启 dsh web。
-w 是必须的:profile 目录带有 pnpm-workspace.yaml,裸 add 会触发 ERR_PNPM_ADDING_TO_ROOT。建议发布构建后的 tarball;从 git URL 安装拿到的是源码,目标机器还需要完成构建,容易缺少 lib/ 产物。
本包的 dsh.bundle.patch 自动插入一个 dsh-session-manager Loader 行。该行同时激活 Host 插件和 dsh.client 浏览器插件,peer 依赖从 dsh 应用闭包解析。安装者不需要手工编辑 profile 的 cordis.patch.yml。
使用
打开 设置 -> 会话:
- “继续”进入已有对话;
- “大纲”查看近期活动统计;
- “删除”打开确认框并永久删除会话。
删除不可恢复。正在打开的实时会话删除后会从 Host 注册表移除,其他界面会按现有 host/session-removed 生命周期更新。
工作原理
- 浏览器读取
session.list和workspace.list,得到完整会话语料及归档状态。 - 删除请求通过 Connection 通用 RPC caller 发送到
/api/session.delete。 - 插件 Host 端先执行与 harness 相同的 loopback/同源安全检查。
- 删除父会话时先停止父 Agent,再读取 live 与 durable 子树并停止其中的受管生命周期,防止删除窗口产生漏删。
- 插件预检整棵删除计划;JSONL 使用可恢复暂存,SQLite 使用单事务,native backend 优先使用批量删除能力。
- 客户端重新读取列表,确保最终展示与 Host 实际状态一致。
开发与验证
pnpm typecheck
pnpm test
pnpm build
pnpm pack
测试覆盖控制器竞态、孤儿子会话判定、loopback/Origin 拒绝、实时 lifecycle teardown、JSONL 可恢复删除、SQLite 事务删除、subagent 拒绝、普通 fork 下的级联遍历、live 子会话、失败预检和同 id 并发去重。
已知限制
- 大纲来自
session.history的近期窗口,不是完整日志统计。 - 删除已归档会话不会清理 workspace 中过期的
archivedSessionIds;该条目是惰性的,不会让会话数据复活。 origin: subagent孤儿行可以在本页面直接删除;如果它下面还有受管子会话,会按同样规则级联清理。- 会话列表没有跨标签页实时推送,页面会在删除和重连后刷新。
- 非 loopback 页面不显示删除能力。
License
MIT
nexu-io/open-design
ruvnet/ruflo
amruthpillai/reactive-resume
esengine/DeepSeek-Reasonix
volcengine/OpenViking
Molunerfinn/PicGo
titanwings/distilly
titanwings/colleague-skill