🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

归档会话管理 Saikel-Orado-Liu/dsh-archive-manager

DeepSeek Harnessv0.4.0
Saikel-Orado-Liu36 天前有提交已提供中文文档扫描:含敏感能力

为 DSH Web GUI 提供归档会话管理(显示、取消归档、永久删除),无需改动任何官方包。

30.7/100
综合分
1
GitHub 星标
405
npm 周下载
—/5
用户评分

数据截至 2026/9/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @gamegeek-saikel/dsh-archive-manager
npm 源 · @gamegeek-saikel/dsh-archive-manager 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · market
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
数据截至 2026/10/28·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 36 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包@gamegeek-saikel/dsh-archive-manager @ 0.4.0
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 09:39:35

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 2 处,展示前 2 条)
  • 删除本地文件递归
    dsh-archive-manager-workspace/lib/index.js:154
    await rm(dirname(location.path), { recursive: true, force: true });
  • 删除本地文件递归
    dsh-archive-manager-workspace/lib/index.js:206
    await rm(sessionDir(spill.root, sessionId), { recursive: true, force: true });
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-api-gateway@deepseek-ai/dsh-client-store@deepseek-ai/dsh-client-ui-layout@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-client-ui-workspace@deepseek-ai/dsh-session@deepseek-ai/dsh-session-persistence@deepseek-ai/dsh-session-projection-cache@deepseek-ai/dsh-spill-local@deepseek-ai/dsh-typert-protocol
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 显示归档会话
  • 取消归档
  • 永久删除会话

README

由 DeepSeek 最新模型翻译生成
DSH Archive Manager(会话彻底删除) DSH Archive Manager 为 DeepSeek Harness(DSH)Web GUI 增加彻底删除会话能力:转录目录、workspace 记账、归档/置顶标记、投影缓存行、派生的子代理会话与 spill 数据一并清除,侧边栏实时更新。 自 DSH 0.1.7 起,归档能力已由框架自身提供——WorkspaceRegistry.archiveSession / unarchiveSession、归档筛选(隐藏 / 显示 / 仅归档)、归档行样式、置顶、会话活动门禁。因此本插件不再 fork 或替换任何浏览器表面:官方 ui-workspace 行保持组合中的原位,插件只向官方侧边栏贡献一个行菜单动作及其确认对话框。 - Host 半区(内部 dsh-archive-manager-workspace / dsh-archive-manager-projcache):WorkspaceRegistry 与 SessionProjectionCache 子类,新增 deleteSession 与 delete(id) / whenIdle(),以 Typert Remote 端点暴露。
展开完整文档(README 剩余 1 节)
DSH Archive Manager(会话彻底删除)

DSH Archive Manager 为 DeepSeek Harness(DSH)Web GUI 增加彻底删除会话能力:转录目录、workspace 记账、归档/置顶标记、投影缓存行、派生的子代理会话与 spill 数据一并清除,侧边栏实时更新。

自 DSH 0.1.7 起,归档能力已由框架自身提供——WorkspaceRegistry.archiveSession / unarchiveSession、归档筛选(隐藏 / 显示 / 仅归档)、归档行样式、置顶、会话活动门禁。因此本插件不再 fork 或替换任何浏览器表面:官方 ui-workspace 行保持组合中的原位,插件只向官方侧边栏贡献一个行菜单动作及其确认对话框。

- Host 半区(内部 dsh-archive-manager-workspace / dsh-archive-manager-projcache):WorkspaceRegistry 与 SessionProjectionCache 子类,新增 deleteSession 与 delete(id) / whenIdle(),以 Typert Remote 端点暴露。
- Client 半区(内部 dsh-archive-manager-client):小型浏览器 bundle,注册 sidebar.workspaces.session.menu.item(危险样式「删除会话」行)与 frame 级 shell.overlay 确认对话框,内置简体中文与英文。

插件以单个 npm 包(@gamegeek-saikel/dsh-archive-manager)交付,三个实现作为包内子模块。根 cordis.patch.yml 只替换它需要扩展的两个 host 行并插入自己的行。官方包文件零改动。

安装

已发布包(推荐)

npx @deepseek-ai/dsh plugin --profile web add @gamegeek-saikel/dsh-archive-manager

上面装的是 npm 的 latest 标签。本插件与 DSH 使用同样的两条 npm 通道,而每个构建只能在它对应的那条 DSH 发布线上运行,因此请按你的运行时选择通道:

| npm dist-tag | 对应 | 安装命令 |
| latest | 当前 DSH 发布线 | dsh plugin --profile web add @gamegeek-saikel/dsh-archive-manager |
| next | 下一条 DSH 发布线 | dsh plugin --profile web add @gamegeek-saikel/dsh-archive-manager@next |
| alpha | alpha 构建 | dsh plugin --profile web add @gamegeek-saikel/dsh-archive-manager@alpha |

用 npm dist-tag ls @deepseek-ai/dsh 可查看各条通道对应哪个 DSH 版本,用 npm view @gamegeek-saikel/dsh-archive-manager dist-tags 查看各条通道对应哪个插件版本。DSH 运行时会拒绝加载对等依赖不匹配的 bundle,因此选错通道会直接安装失败,而不会把插件装成半可用的状态。

然后启动 DSH Web:

npx @deepseek-ai/dsh web

如果已全局安装 DSH CLI,也可以用 dsh 代替 npx @deepseek-ai/dsh。

通过 DSH CLI 安装单个 npm 包,它会应用包内根 cordis.patch.yml(禁用官方 workspace、session-projection-cache 两行;插入 workspace-archive-manager、session-projection-cache-archive-manager、ui-workspace-archive-manager)。官方 ui-workspace 行保持启用。

插件声明并已验证兼容 DSH ^0.2.0-rc.2。它的 @deepseek-ai/dsh 对等依赖即所能运行的发布线;运行时不满足时 harness 会拒绝加载该 bundle,因此为某条线构建的版本不会被装进另一条线。

概述

在 DSH 中删除一个会话会牵涉多个相互独立的存储,顺序稍有差池就会留下残留或复活数据——而官方 UI 有意不做删除入口:live 会话必须先 flush 再 detach(否则浏览器会留着一个指向已消失会话的输入区),投影缓存又会在 dispose 时写最后一次 checkpoint,删得太早就会把缓存行写回来。

Archive Manager 用一层小而严谨的实现解决:

- 一条串行化删除流程——deleteSession 在注册表操作队列内按严格顺序执行:flush → detach(session/disposed)→ 等待投影缓存 dispose 写回落盘(whenIdle)→ 删除转录目录 → 清除归档与置顶标记 → 移除 workspace 记账 → 删除缓存行 → best-effort 子代理级联与 spill 清理。每个失败步骤都幂等、可重跑,重试即可自愈半删除状态。
- 不重复官方 UI——归档会话、其筛选、样式与取消归档完全由官方 ui-workspace 表面负责;本插件只补上 DSH 尚未提供的那一个动作。

关键性质

| 性质 | 值 |
| 范围 | 会话彻底删除(动作 + 二次确认 + host 流程) |
| 交付 | 单个 npm 包;官方包零改动;web profile patch 层(cordis.patch.yml) |
| 安装 / 回滚 | npx @deepseek-ai/dsh plugin --profile web add @gamegeek-saikel/dsh-archive-manager / ... remove ... |
| 远程 API | Typert 端点 workspaceRegistry/deleteSession;旧 /api/workspace. 路由不受影响 |
| 继承 | 归档 / 取消归档 / 置顶 / 活动门禁均为官方 WorkspaceRegistry 原方法,未做任何覆写 |
| 删除语义 | 彻底删除;live 会话 flush → detach → session/disposed;缓存写回先于行删除;子代理级联(仅 origin: "subagent"——fork 分支绝不级联) |
| UI 表面 | 一个 sidebar.workspaces.session.menu.item 行 + 一个 shell.overlay 对话框 |
| 本地化 | 简体中文(键源)+ 英文 |
| 测试 | 3 个 node:test 套件共 19 个用例(host、client bundle、client remote) |

用法

安装并重启后:

| 表面 | 说明 |
| 会话行菜单 | 危险样式的「删除会话」行,与官方 置顶/重命名/分叉/归档 行以分隔线隔开(order 500) |
| 删除对话框 | body portal 的二次确认:说明清除范围、fork 分支例外、处理中状态;失败时保持打开并显示 host 的错误信息 |
| 删除当前打开的会话 | 输入区置灰、行消失、界面不崩溃 |
| 归档会话 | 行为不变:官方筛选(隐藏 / 显示 / 仅归档)、样式、守卫、取消归档仍由其负责 |

重启验证清单

1. 会话行的「...」菜单在官方各行之后出现「删除会话」,并以分隔线隔开。
2. 确认后该会话从列表消失,且磁盘无残留:
- ~/.dsh\sessions\…\session-\ 目录不存在;
- ~/.dsh\storages\workspace.json 的 global.archivedSessionIds、global.pinnedSessionIds 与所有 workspace 的 sessionIds 均无该 id;
- ~/.dsh\storages\session_projcache.json 的 tables.sessions 无该 id。
3. 取消则一切不变。
4. 删除当前打开的会话:输入区置灰、行消失、界面不崩溃。
5. 带子代理子会话的会话会随之一并删除;同一会话的 fork 分支保留。
6. 官方归档流程仍正常:隐藏 / 显示 / 仅归档筛选、归档行样式、归档点击守卫、取消归档、置顶 / 取消置顶。
7. 中英文文案均正常(浏览器语言切换后重载页面验证)。

工作原理

Host 半区——workspace(dsh-archive-manager-workspace)

ArchiveWorkspaceRegistry extends WorkspaceRegistry(服务名仍为 workspaceRegistry,记账不变量一致,官方方法全部继承),仅新增一个方法:

- deleteSession(sessionId)——上文概述的串行化彻底删除:校验 → flush → detach/session/disposed → whenIdle → 删转录目录 → 清归档/置顶标记 → 移除 workspace 记账 → 删缓存行 → best-effort 级联/spill 清理。

unarchiveSession、archiveSession、pinSession、unpinSession、stopSessionActivity 均使用官方实现,刻意不覆写。

该方法通过服务的 typertRemote binding + Remote 标记导出为 Typert Remote 端点。浏览器经标准 typert gateway 路径直达,旧 /api/workspace. gateway 保持不动。

Host 半区——投影缓存(dsh-archive-manager-projcache)

ArchiveProjectionCache extends SessionProjectionCache(服务名仍为 sessionProjectionCache、同一 session_projcache 域、沿用同一 fail-soft 写路径),新增:

- delete(id)——永久删除某会话的投影缓存行(table.delete)。
- whenIdle()——等待所有在途 fail-soft checkpoint 写完成。会话 dispose 会触发最后一次写回(flushSoft(session, "detach"));删除流程必须等它落盘之后再删行,否则该行会在删除后被写回复活缓存条目。

Client 半区(dsh-archive-manager-client)

一个手写的自注册 bundle(window.__ModuleLoader__.load({ id, factory })),只依赖 shell 平台种子表(react、@deepseek-ai/dsh-client-ui-primitives)。它贡献:

- sidebar.workspaces.session.menu.item——一个 MenuItemButton(danger、separatorBefore、order 500),点击后关闭菜单并抛出删除请求;
- shell.overlay——frame 级 Modal 确认框,因此对话框的生命周期长于打开它的菜单行;
- ARCHIVE_MANAGER_REMOTE——workspaceRegistry/deleteSession 描述符,strict codec 遵循 0.2.0 生成契约 { mode: 'strict', typeSymbol, create() },并用无依赖 shim 实现(bundle 内不引入第二份 zod)。

apply fiber 为 async:先 $mount Remote contribution 再注册 slots,随后用 ctx.get("remote.workspaceRegistry") 显式读取(若把 remote.workspaceRegistry 声明进 inject,会与同一 fiber 自身的 $mount 死锁)。

项目结构

dsh-archive-manager/
package.json # 单个 npm 包 @gamegeek-saikel/dsh-archive-manager lib/index.js # 根 Host 入口(空 apply;浏览器端经 dsh.client) cordis.patch.yml # DSH bundle patch(替换两个被扩展的 host 行) scripts/check-package.mjs # 发布预检(pnpm build) README.md / README.zh-CN.md # 双语文档 test/ # node:test 套件(19 个用例) host.test.mjs # Registry + projcache 行为、typert gateway E2E client.test.mjs # Client bundle 表面 + Remote 描述符 + store client-remote.test.mjs # Client Remote $mount / ctx.get 集成 dsh-archive-manager-workspace/ # 内部:WorkspaceRegistry 子类 + Remote 方法 lib/index.js dsh-archive-manager-projcache/ # 内部:SessionProjectionCache 子类(delete/whenIdle) lib/index.js dsh-archive-manager-client/ # 内部:删除 UI bundle lib/index.js # Host 插件体(空 apply) lib/client.js # 浏览器 bundle PATCHES.md # 扩展说明

开发

无编译步骤——包为纯 ESM。pnpm build 运行轻量发布预检(scripts/check-package.mjs),校验单包结构。

自测通过测试树的 node_modules junction 解析真实 @deepseek-ai 包(指向 %USERPROFILE%\.dsh\profiles\node_modules 扁平 fallback,与运行时同源、无重复模块实例)。缺失时创建一次:

New-Item -ItemType Junction -Path .\node_modules -Target "$env:USERPROFILE\.dsh\profiles\node_modules"
pnpm build # 发布预检
pnpm test # node:test 套件

覆盖范围:官方归档/取消归档/置顶行为的继承、delete 幂等性与未知 id 报错、记账与归档/置顶标记清理、转录目录删除、live 会话 flush → detach → session/disposed、whenIdle 先于缓存行删除、子会话级联(仅 origin: "subagent"——带 parentSession 的 fork 分支绝不级联删除)、原 API 面完好、projcache delete/whenIdle 时序、typert gateway 的 claim 与分发端到端、client bundle 的 Remote 描述符与 store,以及对官方 registry/gateway bundle 的真实 $mount + connection.rpc.call 集成。

文档

- dsh-archive-manager-client/PATCHES.md —— client bundle 贡献了什么,以及为何走 Typert Remote 而非扩展 /api/workspace.
- README.md — English version

许可证

本仓库(源码、测试、README 与 DSH 插件 bundle 形态)以 MIT License 授权——见 LICENSE。

Copyright (c) 2026 Saikel-Orado-Liu aka GameGeek-Saikel
预览分享卡片长什么样 ↓Saikel-Orado-Liu/dsh-archive-manager
分享 · DeepSeek Harness Hub
Saikel-Orado-Liu/dsh-archive-manager

为 DSH Web GUI 提供归档会话管理(显示、取消归档、永久删除),无需改动任何官方包。

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部