DeepSeek Harness 插件

dsh-session-manager

Session management settings section for dsh web: resume, outline, and delete any session(英文原文)

跳到安装方式

来源信息

GitHub 仓库
Vim0x3c/dsh-session-manager
最近更新
2026年8月21日
分类
插件市场与管理
GitHub stars
6
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/Vim0x3c/dsh-session-manager
插件名:dsh-session-manager
作者:Vim0x3c

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器4 个文件
README.md来源说明 · 只读预览
README 语言

dsh-session-manager

English | 中文

一个可直接安装的 DeepSeek Harness 会话管理插件。它列出本机全部已物化会话,包括运行中、空闲和已归档会话,并提供继续、大纲和永久删除。

关键说明

不需要修改 deepseek-harness 源码。

0.2.0 起,包内同时包含:

  • 浏览器端会话管理面板;
  • Host 端 session.delete RPC;
  • 实时 Agent 停止与 Session 脱离兼容逻辑;
  • JSONL 和 SQLite 持久化删除实现;
  • loopback、Host、Origin 和 Fetch Metadata 安全校验。

用户只需安装本插件并重启 dsh web。不需要复制代码到 harness,不需要修改 SessionsApiAgentLoopSessionPersistence 或任何 harness 文件。

功能

  • 完整会话列表:实时、冷会话、已归档或未归档会话,按更新时间展示标题、状态、工作目录等信息。
  • 继续会话:通过浏览器 sessions 服务打开已有对话。
  • 大纲预览:在浏览器内折叠 session.history 尾部窗口,展示轮次、用户/助手消息数及工具调用统计。
  • 永久删除:先停止并等待目标 Agent 静默,再重新读取 live 与 durable 会话树,预检通过后删除存储数据。删除会话时会级联删除其全部 origin: subagent 受管子会话(最深优先);普通 fork 自身保留,但会继续遍历其下的受管子会话。
  • 多选批量删除:列表左侧复选框中可多选,工具栏一次性删除全部选中项。仅"独立删除目标"可勾选(普通会话与孤儿受管子会话;有父会话的受管子会话随父级联删除,不单独出现)。批量删除逐个独立走完整安全删除流程,某个删除失败不会回滚已成功的,并会在确认框列出剩余失败项以便重试。
  • JSONL:删除该会话拥有的整个目录,包括日志和同目录快照。
  • SQLite:在当前后端连接中执行事务删除,事件行通过外键级联清理。
  • 未来兼容:若后续 harness 原生提供 AgentLoop.stopSessionPersistence.delete,插件优先调用原生能力。

普通 fork 可以独立删除。origin: subagent 的受管子会话随仍存在的父会话级联删除:界面不提供子会话自己的删除按钮,删除父会话时确认框会提示将一并删除的子会话数量;直接对子会话发起删除请求仍返回 agent-busy。如果父会话已经不存在,该行会标记为孤儿并显示删除按钮,允许直接清理。删除前会先预检整棵子树,已知失败不会先删除其他成员。

兼容范围

  • 目标版本:DeepSeek Harness 0.1.0-rc.8
  • 已支持官方持久化后端:session-persistence-jsonlsession-persistence-sqlite
  • 自定义持久化后端必须自行提供 delete(id);如果需要级联删除多个 durable 会话,还必须提供原子 deleteMany(ids),否则插件会明确拒绝该级联请求,不会逐个删除造成半删。
  • 删除端点仅允许 loopback authority,例如 localhost127.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 生命周期更新。

工作原理

1. 浏览器读取 session.listworkspace.list,得到完整会话语料及归档状态。 2. 删除请求通过 Connection 通用 RPC caller 发送到 /api/session.delete。 3. 插件 Host 端先执行与 harness 相同的 loopback/同源安全检查。 4. 删除父会话时先停止父 Agent,再读取 live 与 durable 子树并停止其中的受管生命周期,防止删除窗口产生漏删。 5. 插件预检整棵删除计划;JSONL 使用可恢复暂存,SQLite 使用单事务,native backend 优先使用批量删除能力。 6. 客户端重新读取列表,确保最终展示与 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