@piece-weaver/dsh-session-manager
v0.6.2
Published
DSH web plugin: session archive management (view / unarchive) and permanent session deletion, in the dsh-better-sidebar plugin style.
Readme
dsh-session-manager
为 DeepSeek Harness(dsh)补齐会话归档管理与会话彻底删除的 web 插件。官方已有「归档」动作, 本插件补上缺失的另一半:查看已归档会话、移出归档,以及官方完全没有的彻底删除会话(持久化产物零残留)。 形态对齐社区范本 dsh-better-sidebar:宿主半 + 客户端半、 bundle 声明、浏览器信任围栏、i18n。
功能与用法
入口只有一处:设置 →「会话管理」(无侧边栏按钮、无弹窗、无二次点击)。界面 1:1 对齐官方「模型」分区的 排版与 token,深浅色/换肤自适应。
- 全部会话:按工作区各自成卡(卡片头 = 折叠箭头 + 工作区名 + 会话数,可展开/折叠,状态在本次会话内保持)。 子代理会话不占顶层行,改在父行显示「N 个子代理 · M 个运行中」。
- 已归档会话:单张卡片列出全部归档会话,行内「移出归档」恢复其原工作区位置。
- 行操作:归档(官方动作)、移出归档、删除。点击会话行直接打开该会话并关闭设置。
- 删除:独立确认弹窗(含会话名与「无法撤销」,Esc / 遮罩 / × 均可取消);确认后会话从所有视图即时消失、 磁盘产物零残留、重启不复现。运行中/子代理会话拒绝删除,已打开(resumed)的会话在点击前即被禁用并说明原因。
- 能力检测:启动时探测所需运行时接缝,DSH 版本不兼容时对应操作降级为禁用 + 可见告警,绝不静默。
安装
前置:已安装 dsh(dsh web 可启动)、Node ≥ 20、pnpm ≥ 10。
dsh plugin --profile web add @piece-weaver/dsh-session-manager然后硬刷新浏览器(Cmd/Ctrl+Shift+R)。客户端 bundle 由 dsh-client-hmr 轮询同路径文件变化并热重载;
安装新版本(node_modules 解析路径变化)或插件含宿主半改动时,重启一次 dsh web 后再刷新。
从本地源码开发:
pnpm install && pnpm build # 在插件仓库内
# 然后在 ~/.dsh/profiles/web/package.json 写:
# "@piece-weaver/dsh-session-manager": "link:<插件仓库绝对路径>"
cd ~/.dsh/profiles/web && pnpm install支持版本与安全
- 测试于 DSH 0.1.2-rc.1(
peerDependencies钉住@deepseek-ai/*@^0.1.2-rc.1)。 - 宿主路由
/session-manager/api/*与官方/api网关共用同一套浏览器信任围栏:Host 头 loopback /webRuntime.trustedHosts通过;跨站标记(sec-fetch-site: cross-site/ Origin 不匹配)一律 403。 - 运行中会话、子代理会话删除被拒绝(无公开拆解通路,强删会损坏在途状态)。
- 插件是可运行在你权限下的三方代码,安装前请审阅源码。
开发
pnpm typecheck # tsc --noEmit
pnpm build # tsc 声明 + tsdown(宿主 ESM + 客户端 CJS 工厂)
pnpm test # vitest:宿主业务逻辑 / 能力检测 / 信任围栏 / 客户端组件与图标适配 / 产物断言src/index.ts 宿主半入口(cordis 插件,注册 /session-manager/api 路由)
src/api.ts 删除 / 移出归档 / 存活集业务逻辑(含拒绝与幂等)
src/capabilities.ts 运行时接缝能力检测
src/trust-fence.ts 浏览器信任围栏(与 better-sidebar 同源)
src/wire.ts JSON 信封与请求体上限
src/client/ 客户端半:入口注册、会话管理分区、作用域样式、导航图标适配
tests/ 单元测试
docs/specs/ 需求 spec(SDD;需求与验收的唯一权威)
docs/decisions/ ADR-001 运行时接缝 · ADR-002 HTTP 路由 · ADR-003 导航图标 DOM 适配 · ADR-004 删除接缝改用 stat
docs/upstream/ 上游 `session.delete` 提案说明(供 deepseek-harness 采纳)实现说明与局限
- 不修官方包:不改写
npm root -g下任何文件;能力经 cordis 插件装载与公开服务面实现。 - 依赖的非公开接缝(adr-001 / adr-004):0.1.2-rc.1 无公开的「移出归档」与「删除」。宿主半用 registry 内部
方法(
enqueueOperation/requireState/setState)移出归档;删除读存储头访问器(句柄式sessionPersistence.stat(id) → { header },兼容旧inspect(id) → { meta })+locate(header)定位产物 +fs移除 + 公开Workspace.detachSession摘除账目。同名版本存在两种接缝形态,故两条路径都实现并在能力探针 中分别上报;全部接缝以「能力检测 + 版本钉住 + 缺失大声降级」兜底。 - 已打开会话不可删除:打开会话即 resume agent(可同时多个),无公开 close/teardown 通路;插件用只读
liveness提前禁用并说明。需删除时先重启一次dsh web(重启后会话变冷,且未被重新打开即可删除)。 长期根治见docs/upstream/。 - 投影缓存残留:删除后会话日志目录、归档集、工作区账目即时清理;投影缓存属孤儿残留,重启后自然一致。
- 导航图标 DOM 适配(adr-003):设置壳对未知分区回落齿轮且无图标扩展点,插件在运行时隐藏齿轮并并列插入 专属 16px 图标(不删除/不替换 React 节点);结构失配时保留齿轮 + 一次性告警,纯视觉影响。
License
MIT
