dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DSH 会话纸篓 — 在左侧会话行菜单里直接删除会话(与「重命名 / 分支会话 / 归档会话」并列),并在 设置 → 插件 → 可配置 里管理已归档会话。
v0.2.0 为全新重写:旧仓库代码已全部作废,本目录可整体覆盖
Github-CJX/dsh-session-dustbin。
workspaceRegistry.archiveSession() 归档(侧边栏立即收走该行)→ 删除本地会话目录 → 删除头帧缓存 → 清理 workspace.json 标记。session_projcache,标题 / 创建时间 / 轮数),从不解压 session.jsonl.zstd,单条 O(1),与对话长度无关。| 数据 | 位置 | 用途 |
|---|---|---|
| 归档集合 | 运行中 workspaceRegistry.archivedSessionIds;落盘 ~/.dsh/storages/workspace.json | 判定 archived、驱动删除前归档 |
| 会话头帧 | ~/.dsh/storages/session_projcache/sessions/<id>.json | 标题 / 创建时间 / 轮数(列表唯一数据源) |
| 会话数据 | ~/.dsh/sessions/<项目>/<id>/session.jsonl.zstd | 只用于判断存在与删除,从不解码 |
删除顺序(缺一不可):
删除请求
├─① workspaceRegistry.archiveSession(id) 内存归档 + 广播 → 侧边栏立即收行
├─② 删除 ~/.dsh/sessions/<项目>/<id>/ 数据彻底清除
├─③ 删除头帧 session_projcache/<id>.json 列表不会复活该行
└─④ 清理 workspace.json 标记(尽力而为) 运行中的 host 可能回写,列表按目录存在性过滤
dsh-session-dustbin/
├── lib/ # 宿主半(Node ESM)
│ ├── index.js # 插件入口:设置命名空间 + 路由挂载
│ ├── protocol.js # 共享常量(命名空间 / 路由 / id 校验)
│ ├── sessions.js # 头帧读取、列表、删除(框架无关,可单测)
│ ├── routes.js # loopback 围栏桥(ping / list / delete)
│ └── client.js # 预构建客户端 bundle(提交以便克隆即用)
├── src/client/ # 浏览器半(rolldown 打包)
│ ├── index.ts # 入口:locale + 设置卡片 + 侧边栏菜单注入
│ ├── DustbinCard.tsx # 会话纸篓卡片(头帧列表 / 删除)
│ ├── sidebar-menu.tsx # 会话行菜单注入「删除会话」
│ ├── locales.ts # zh / en 文案
│ ├── protocol.ts # 与 lib/protocol.js 对应的类型
│ └── dustbin-card.module.css
├── docs/ # installation / architecture / troubleshooting
├── build-client.mjs # 客户端构建(CSS Modules 内联 + ModuleLoader 包装)
├── sync-profile.mjs # 一键装进 DSH profile(镜像 + 注册 + pnpm install)
├── test-host.mjs # 宿主逻辑测试(临时目录,不碰真实数据)
├── test-mount.mjs # 挂载测试(桩 cordis ctx)
└── smoke-client.mjs # 客户端 bundle 冒烟(桩 loader/DOM)
pnpm install
node test-host.mjs # 42 checks:头帧/列表/删除/围栏
node build-client.mjs # 重建 lib/client.js
node test-mount.mjs # 9 checks:设置段 + 三条路由 + 处理器
node smoke-client.mjs # 14 checks:bundle 契约 + apply() 挂载
node sync-profile.mjs # 装进 profile(然后重启 DSH Desktop)
@deepseek-ai/dsh-client-ui-settings-plugins 的 PluginCard.module.css,行 / 标签 / 胶囊 / hint 取自同包的 fields.module.css(数值逐条照抄,仅类名本地化),因此在「设置 → 插件 → 可配置」里与「终端」「agent 循环」等卡片外观一致。IconTrashOutline16 的路径,配色与 hover 走 Menu.module.css 的 .danger 令牌(--dsw-alias-state-error-primary / --dsw-alias-interactive-bg-hover-danger)。dsh-client-ui-workspace 里写死的数组,没有 slot 可扩展。注入项在菜单每次打开时重新追加;React 重渲染可能吞掉已注入节点,重开菜单即恢复。安装与排障见 docs/installation.md、docs/architecture.md、docs/troubleshooting.md。