dsh-archive-favorites-forge:在官方归档之上扩展收藏、复制与批量归档

前言

DeepSeek Harness(DSH)自带会话归档:Workspace 注册表维护全局 archivedSessionIds,客户端侧栏与「筛选会话」视图选项会据此展示已归档对话。官方能力刻意不包含收藏、单条永久删除、复制会话 ID 与转录路径,也没有按闲置时长批量归档;已归档对话也无法直接打开,需先取消归档。

侧栏对话一多,想标记常看的会话、清理长期不用的记录、或把 ID 与文件路径交给脚本处理,往往要在文件系统与 UI 之间来回切换。dsh-archive-favorites-forge 通过文档化的客户端插槽挂接在现有归档 UI 之上,不修改官方源码,为对话增加收藏、复制、删除、超时批量归档与收藏筛选等能力。

这是什么

dsh-archive-favorites-forge 是维护者 loyalchiiina 发布的 客户端 类 DSH 插件(npm 包名 dsh-archive-favorites-forge,当前版本 0.24.4,MIT 许可证)。它在官方已实现的归档能力上做 additive slot extensions:host 半部(lib/index.js)负责收藏持久化、路径解析、JSON 路由与带护栏的删除/归档;client 半部(lib/client.js)向官方插槽注册菜单项、设置页与行内操作。插件不写入任何官方文件。

核心功能

下面按 UI 位置归纳 README 中已说明的能力。

侧栏会话行与「…」菜单

  1. 收藏对话:已归档或未归档均可收藏;「…」菜单项与行内悬停 ☆,星标乐观更新。
  2. 复制 ID + 路径:菜单一键复制会话 ID 与转录文件绝对路径(两行文本)。
  3. 单条永久删除:非收藏对话可永久删除,需二次确认;成功后侧栏行立即移除(host 发出 api-session/removed)。

收藏集合写入 host 侧文件,而非渲染进程 localStorage(多 origin 会各存一份)。路径为:

~/.dsh/data/dsh-archive-favorites-forge/favorites.json

视图选项 → 筛选会话

在官方「筛选会话」组中增加两行:仅显示收藏(已归档)、仅显示收藏(未归档)。该菜单无官方插槽,插件通过 role / aria / data-row-key 定位官方筛选项并克隆一行,不依赖 CSS module 哈希。

设置 → 归档收藏

  1. 超时批量归档:将闲置超过 N 小时的未归档对话一次性归档,可撤回。
  2. 导出清单:制表符分隔的 txt,字段含对话名称、对话 ID、所属工作区、闲置时长、最后活动时间;可复制路径或在文件管理器中打开所在文件夹。
  3. 收藏列表:展示收藏及归档状态。
  4. 批量删除:永久删除「已归档且未收藏」的对话。

删除护栏(host 侧)

本代 Harness 无官方 session-delete RPC;删除即移除 ~/.dsh/sessions/ 下对应 artifact 目录,不可恢复。host 在删除前检查:

  • 已收藏 ID 直接拒绝;
  • 解析路径超出 sessions 根目录拒绝;
  • 符号链接拒绝;
  • sessions 根目录本身拒绝;
  • 单次请求受 maxDeletePerCall 上限约束。

每条 ID 单独报告,一条失败不中断整批。

其他说明(来自 README Notes):会话 ID 形式为 session-<uuid>,旧目录可能为 <uuid> 或 session-<uuid>,插件经 normaliser 与 resolver 兼容;空白 provisional 会话不参与闲置池与批量删除;候选列表与侧栏实际展示交集,无 cwd 的已归档会话不计入。

安装与启用

安装命令(README 原文):

dsh plugin --profile <profile> add dsh-archive-favorites-forge

将 <profile> 换成你的 DSH profile 名称。安装后 完全退出并重新打开 DSH;本代 host 半部无 watcher,客户端 bundle 在启动时快照,仅刷新页面 不会 加载新版本。

可选配置(写入插件 config):

键 默认值 含义
enabled true host 路由总开关
maxDeletePerCall 500 单次删除请求硬上限

示例:

- id: dsh-archive-favorites-forge
  config:
    maxDeletePerCall: 200

peer 依赖表明插件面向 @deepseek-ai/dsh 的 >=0.1.7-rc.1 <0.2.0-0 || >=0.2.0-rc.1 范围;README 徽章标注 DSH ≥ 0.2.0-rc.2。

典型用法

  1. 标记常看对话:在侧栏行悬停点击 ☆,或打开「…」选择收藏;需要精读已归档收藏时,用「视图选项 → 筛选会话 → 仅显示收藏(已归档)」缩小列表,再按需取消归档后打开(已归档无法打开是官方行为)。
  2. 对接脚本或排错:在「…」选复制 ID + 路径,将 session id 与转录绝对路径粘贴到终端或脚本。
  3. 清理闲置会话:打开 设置 → 归档收藏,配置闲置小时数后执行超时批量归档;确认无误后可导出 txt 清单留档,或对「已归档且未收藏」项使用批量删除;单条清理可用「…」中的永久删除(收藏项会被 host 拒绝)。
  4. 控制删除规模:若单次清理量很大,在 config 中调低 maxDeletePerCall,分多次执行批量删除。

适用场景与注意

适合谁:长期在 DSH 中积累大量 Workspace 对话、需要收藏标记、路径导出、闲置归档与可控删除的开发者;希望扩展官方归档而不 fork 客户端 UI 的用户。

权限与安全:插件以当前 DSH 进程权限运行,删除操作直接作用于 ~/.dsh/sessions/ 下目录,不涉及项目工作区,但转录与会话数据会永久丢失。安装前请阅读 GitHub 仓库 源码与 MIT 许可证,确认行为符合预期。

生态说明:DSH 社区插件目录托管于独立站点(如 SkillHub),与 DeepSeek / 幻方无官方从属关系;本文描述的能力均来自插件 README 与 package 元数据,使用前请以仓库最新文档为准。

链接

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜