OpenViking
volcengine
Self-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.
ChenChen913/dsh-session-cleaner-cli
深度清理 DeepSeek Harness (DSH) 工作区会话的离线 CLI:按工作区列出/删除/恢复会话,自动同步工作区账目与投影缓存。Offline session cleaner for DeepSeek Harness: list, delete (trash+restore) and prune ghost sessions across workspaces.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:ChenChen913/dsh-session-cleaner-cli
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
深度清理 DeepSeek Harness(DSH)工作区会话的离线 CLI 工具:按工作区列出、勾选删除、回收站恢复,自动同步工作区账目与投影缓存。跨平台(Windows / macOS / Linux),零依赖。
DSH 的会话持久化是纯追加式设计,GUI 里只有"归档"(仅仅隐藏,数据仍在磁盘),没有任何删除入口(见 SessionPersistence 服务:只有 create/append/load/inspect/list,没有 delete)。测试会话、废弃对话会永远堆积。
本工具在工作区账目(storages/workspace.json)与会话日志目录(sessions/<scope>/<id>/)两层上同步删除,实现"自由删除每一个工作区里的对话"。
# 1. 先停止 GUI(工具检测到 3080 端口/进程时自动拒绝删除)
# Windows: 在 deepseek-harness 仓库根目录运行 stop-dsh.cmd
# macOS / Linux: 在运行 dsh web 的终端按 Ctrl+C,或 kill 对应进程
# 2. 交互式:选工作区 → 输入编号勾选(1,3 / 2-5 / all)→ 输入 DELETE 确认
node dsh-session-cleaner.mjs
# 3. 重新启动 GUI(重启后侧边栏即为最新状态)
CLI 版本:
node dsh-session-cleaner.mjs list # 只读列出全部工作区与会话
node dsh-session-cleaner.mjs delete <id> [id...] # 删除指定会话(--yes 跳过确认)
node dsh-session-cleaner.mjs restore <批次ts> # 恢复某次删除
node dsh-session-cleaner.mjs trash list # 查看回收站
node dsh-session-cleaner.mjs prune-ghosts # 摘除账目中数据已丢失的幽灵 id
零依赖,Node.js ≥ 18 即可:
# 方式一:直接从 GitHub 用 npx 运行(无需克隆)
npx github:ChenChen913/dsh-session-cleaner-cli list
# 方式二:克隆
git clone https://github.com/ChenChen913/dsh-session-cleaner-cli.git
cd dsh-session-cleaner-cli
node dsh-session-cleaner.mjs
卸载就是删除仓库/脚本文件;若不再需要回收数据,可一并清空 ~/.dsh/trash 与 ~/.dsh/storages/backups。
| 命令 | 作用 |
|---|---|
| (无参数) | 交互式:选工作区 → 勾选会话删除 |
list |
列出全部工作区与会话(只读,服务运行时也可执行) |
list -w <标题或路径> |
只看某个工作区 |
delete <id> [id...] |
删除指定会话(默认移入回收站;仍需输入 DELETE 确认) |
restore <批次ts> |
恢复某次删除(批次见 trash list) |
trash list / trash empty |
查看 / 清空回收站 |
prune-ghosts |
摘除账目中"数据目录已丢失"的幽灵 id |
通用参数:--home <目录>(默认 $env:DSH_HOME 或 ~/.dsh)、--pid-file <路径>(额外指定 dsh.pid 位置,服务存活检测用)、--dry-run、--purge(不入回收站直接抹除)、--yes、--force(跳过运行检测)。
DSH 默认 JSONL 后端在磁盘上的形态:
~/.dsh/
sessions/<工作区路径编码>/<会话id>/session.jsonl.zstd ← 会话日志
storages/workspace.json ← 工作区账目 + 归档集合
storages/session_projcache.json ← 标题/统计投影缓存
删除一个会话 = 四步事务:
storages/backups/<时间戳>/.dsh/trash/<时间戳>/<id>/(--purge 直接删)workspace.json 的 sessionIds 与 archivedSessionIds 摘除该 id,盖上 updatedAtsession_projcache.json 对应条目(会话重新打开后自动重建)restore 是精确逆操作:目录移回、id 挂回原工作区、归档状态还原。
一个关键安全事实:DSH 工作区实体的 sessionIds getter 按"会话头索引"过滤(packages/workspace/workspace/src/entity.ts),因此即使账目残留已删除 id,重启后也不可见,且下一次账目写入时会自动修剪——工具与 harness 的收敛方向天然一致。
127.0.0.1:3080 监听与 dsh.pid 进程存活,运行中拒绝执行并给出指引;进程检测用跨平台 0 信号探测,不依赖平台命令--home 确实像 DSH_HOME(有 sessions/ 或 storages/),打错路径立即报错而不是误建目录.dsh-session-cleaner.lock(记录 pid),防止两个实例同时改写账目互相覆盖;持有者退出后的陈旧锁自动接管restore 可找回;确认后 trash emptyDELETE 确认(--yes 显式跳过)prune-ghosts 一次清干净| 平台 | 默认 DSH_HOME | 停止 GUI 的方式 | 状态 |
|---|---|---|---|
| Windows | C:\Users\<你>\.dsh |
stop-dsh.cmd(或任务管理器结束进程) |
开发/实测环境,CI 覆盖 |
| macOS | ~/.dsh |
运行 dsh web 的终端按 Ctrl+C |
CI 覆盖 |
| Linux | ~/.dsh |
运行 dsh web 的终端按 Ctrl+C |
CI 覆盖 |
tasklist 的做法)--C-Users-...-- 编码与 Unix 编码通吃)| 项 | 说明 |
|---|---|
DSH_HOME 环境变量 / --home |
harness 数据目录,默认 ~/.dsh |
--pid-file <路径> |
额外指定 dsh.pid 位置(harness 装在非标准位置时用于运行检测) |
--purge |
删除时不入回收站 |
--dry-run |
只预览 |
--force |
跳过运行检测(仅在确认 GUI 已关闭时用) |
~/.dsh):不碰工作区项目文件、不碰 harness 代码settings.yaml、.anonymous-user-id 等一概不动attachments/v1),不属于单个会话,本工具不删除47f943859bef60e4160492346772ded9b24f765a(2026-08-13),存储格式 workspace.json unit v2、session_projcache.json unit v3(工具保留 unit 块原样,只做字段级增删)chcp 65001--force--home 指错了目录,检查路径或 DSH_HOME 环境变量~/.dsh/.dsh-session-cleaner.locknpm test # 13 项端到端测试:list/delete/restore/purge/prune/交互流/运行拒绝/未知id/锁/pid-file/目录校验/不完整批次
测试在临时 DSH_HOME 夹具上驱动真实 CLI 子进程,断言文件系统与账目双重结果;CI 见 .github/workflows/test.yml。
dsh-plugin 主题页/api-ext/session.delete),与本工具(离线 CLI + 回收站/恢复/幽灵清理)互补:想要 GUI 内一键删除用前者,想要批量整理、可恢复、可清理幽灵账目用本工具MIT © 2026 ChenChen913。本工具不处理任何凭据;安全问题请通过 GitHub Issues 反馈。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: cli、session-management。