DSH-deleted-and-history-button

by qwased

0 会话与消息github未核验到 manifest收录于 08-16

DeepSeek Harness (DSH) 社区补丁:存档会话列表视图 + 确认删除永久会话的Web UI

DeepSeek Harness (DSH) community patch: archived session list view + permanent session delete with confirmation for the Web UI

安装

dsh plugin --profile web add github:qwased/DSH-deleted-and-history-button

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗

安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。

README

目录

为 DeepSeek Harness Web UI 增加 归档会话列表 + 永久删除会话(带确认)。

  • 归档视图——侧边栏"分组方式"菜单新增 已归档 模式,按时间倒序列出所有归档会话, 归档从此有了展示入口。
  • 永久删除——普通视图与归档视图的会话行菜单都新增 danger 样式的 删除会话 动作, 点击后弹确认框。删除运行中的会话会先拆除其 agent;持久化日志、工作区记账、 归档集合条目一并清除。删除当前打开的会话会回到空态。

这是一个针对 DeepSeek Harness 源码的社区补丁仓库,不是 npm 可安装插件: 本功能横跨核心能力接缝(新增 session.delete RPC、持久化删除、工作区记账清理、 客户端会话服务、工作区浏览 UI),独立插件无法触达这些接缝。仓库沿用社区 DSH 扩展的"补丁仓库"惯例。


功能

  1. 归档会话列表

    • 视图选项菜单 → 分组方式 → 已归档:扁平的、最新优先的归档会话列表。
    • 归档行保留完整行菜单(打开 / 重命名 / 分叉 / 删除);归档集合变化实时同步。
  2. 永久删除会话

    • 行菜单 → 删除会话(danger 样式),确认弹窗点名会话并提示不可撤销。
    • 运行中与冷会话、归档与否均可删除。
    • 删除运行中会话时先 dispose agent 再删日志。
    • 子代理路由的会话由 Host 拒绝(agent-busy),保护委派链。

与 DSH 插件理念的贴合

全部落在既有插件接缝上,不触碰 shell / 内核:

层 接缝 本补丁新增
持久化 ctx.sessionPersistence(JSONL / SQLite 可替换后端) SessionPersistence.delete 抽象 → coordinator delete → 后端 PersistenceBackend.deleteStored
工作区记账 ctx.workspaceRegistry WorkspaceRegistry.deleteSession(detach 实体 + 清 archive set + 遗忘索引)
线协议 SessionsApi session.delete RPC(schema / rpc-map / fetch client+handler / api-proxy + agent handle 保留)
客户端服务 ctx.sessions(ISessions 面) deleteSession——RPC + 本地删行(冷会话无帧)
Web UI ui-workspace(运行时加载 bundle,sidebar.workspaces 槽位) archived 分组 + 删除动作/弹窗;经 owner 契约注入
测试双 connection fixture / TestSessions / fake API 同步实现(编译期锁定契约)

动态加载说明:Web shell 永不打包 UI 插件(UI 插件经客户端模块系统以运行时 bundle 加载),因此本补丁只需重建 ui-workspace bundle 与相关 lib,shell bundle 不动; 客户端列表依赖 Host 推送的 host/session-removed、host/workspace-changed、 host/archived-sessions-changed 帧保持实时。

兼容性

  • 目标:deepseek-harness git 检出,基线提交 47f9438(Merge pull request #2519)之后。
  • 作用于源码,应用后必须重新构建(见下)。
  • 支持 JSONL 与 SQLite 两种持久化后端。

安装

# 1. 克隆 Harness(或使用兼容版本的现有检出)
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install

# 2. 应用本补丁(本仓库内)
bash /path/to/DSH-deleted-and-history-button/apply.sh "$(pwd)"

# 3. 重新构建(核心改动无 HMR,必须重构建)
pnpm run build:lib:host
pnpm run build:lib:client
pnpm --filter @deepseek-ai/dsh-web-frontend run build

# 4. 启动 Web UI
node apps/cli/lib/bin.js web --port 3080

Windows 可用 PowerShell 版 apply.ps1:

powershell -ExecutionPolicy Bypass -File .\apply.ps1 -CheckoutPath C:\path\to\deepseek-harness

应用脚本会校验基线版本,并拒绝在已打过补丁的树上重复应用。校验功能是否就位:

bash verify.sh /path/to/deepseek-harness
# 或
powershell -ExecutionPolicy Bypass -File .\verify.ps1 -CheckoutPath C:\path\to\deepseek-harness

使用

  • 查看归档:侧边栏 → 视图选项 → 分组方式 → 已归档。归档会话从普通视图消失, 归档列表按最新优先展示。
  • 删除:悬停会话行 → ⋯ → 删除会话 → 确认。行立即消失, ~/.dsh/sessions 下的磁盘日志被删除,工作区记账与归档集合同步更新。

仓库结构

路径 用途
patch/dsh-deleted-and-history-button.patch 完整 unified diff(39 个文件),基线 47f9438
patch/FILES.md 逐文件改动清单
apply.sh / apply.ps1 将补丁应用进 Harness 检出(含基线校验)
verify.sh / verify.ps1 校验补丁是否就位
README.md / README.zh.md 本文档

更新记录

  • 修复(2026-08-16):打开已归档会话不再跳回"新建会话"空态。 Harness 原有的 归档当前会话清扫逻辑(WorkspaceRuntime.project())只要当前会话属于归档集合就清空选中, 导致从"已归档"视图点开一个早已归档的会话,会被立刻弹回空态、看不到对话历史。 现改为变迁规则:仅当当前会话刚刚进入归档集合时才清空选中(本地归档动作、 其他标签页的变更帧、或重连基线新增归档),刻意打开一个已归档会话不会被弹回; 首个就绪基线负责播种跟踪集合,使持久化的归档选中在重载后依然保留。

数据脱敏说明

  • 本仓库不含任何凭据、API 密钥或用户数据:补丁是纯源码;文档只引用公开的 DeepSeek Harness 路径与通用占位符。
  • fork 本仓库时不要提交 ~/.dsh 数据(settings / credentials / 会话日志)、 node_modules、构建产物,或任何含真实会话 id / 本机路径的内容。

验证

  • pnpm run build:lib:host 与 pnpm run build:lib:client 类型检查与打包均通过。
  • 基线补丁的全量单测(原作者验证):64 个测试文件 / 1083 个用例通过, 含归档视图、删除行菜单、删除确认流程测试。
  • 修复回归:packages/client/runtime(344 个用例)与 packages/client/ui-workspace (123 个用例)全部通过,含新增的"打开已归档会话保持打开"用例。
  • 手工 GUI 校验:从"已归档"视图打开归档会话能完整看到对话历史(不再弹回新建会话空态); 归档分组正确列出归档;删除弹确认框;确认后行消失、当前选中清空、磁盘会话目录被删除; 删除当前打开会话回到空态。

License

MIT —— 见 LICENSE。社区贡献,与 DeepSeek 无关。

原始 README: https://github.com/qwased/DSH-deleted-and-history-button/blob/main/README.zh.md ↗