会话生命周期 CLI:导出(md/json/jsonl)、归档/恢复、回收站、搜索与统计。默认只读;引擎从不删除任何东西。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:zoahdev/dsh-shelf
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
DeepSeek Harness 的会话生命周期管理:导出、归档、恢复、回收站、搜索、统计。零依赖,默认只读。
每个 dsh 用户都会攒下几百个会话,却没有任何管理手段(#1990、#1991)。dsh-shelf 就是缺的那层书架。
快速开始
npx dsh-shelf list # 列出全部会话(id + 路径)
npx dsh-shelf stats # 数量、压缩/明文、体积
npx dsh-shelf search "parser bug" # 头 + 正文搜索(明文会话)
npx dsh-shelf export <id> --format md # 导出 Markdown 对话记录
npx dsh-shelf export --all --format jsonl --out all-sessions.jsonl
npx dsh-shelf archive <id> # 移入 sessions-archive(绝不删除)
npx dsh-shelf restore <id> # 移回来
npx dsh-shelf trash <id> # 移入回收站(可恢复)
npx dsh-shelf restore-trash <id>
npx dsh-shelf report # 周报 digest(Markdown)
npx dsh-shelf report 30 --format json # 30 天 digest(JSON)
npx dsh-shelf report 14 --format html --out shelf-report.html # 离线看板
npx dsh-shelf archive-old 30 # 预演:30 天前的会话
npx dsh-shelf verify # 会话健康检查(孤儿 tool call/未完成/空文件)
npx dsh-shelf rescue <id> # 抢救不可恢复会话的内容
npx dsh-shelf archive-old 30 --yes # 移入 sessions-archive
npx dsh-shelf tree # 会话 fork 谱系
npx dsh-shelf tree <id> # 消息树(pi /tree)
npx dsh-shelf web # 本地 Web 面板 http://127.0.0.1:4174
DSH 插件模式(面板绑定当前 profile):
dsh plugin --profile web add github:zoahdev/dsh-shelf
# 面板 http://127.0.0.1:4174(lib/ 已提交,安装免构建)
根目录:--root 指定;默认 $DSH_SESSIONS 或 ~/.dsh/sessions。归档/回收站默认在根目录旁 sessions-archive / sessions-trash。
消息导航(/tree)
pi /tree(连按 Esc)的精简移植。DSH 的分支存在于会话之间(parentSession + seedLength),所以树是从 fork 谱系重建的,不是文件内 entry 图。标签、折叠、分支摘要没有抄过来。
过滤(默认 no-tool;面板里按 o 循环,或 --filter / /nav user):no-tool(用户 + 助手正文)、user、all(含 tool call)。
| 入口 | 用法 |
|---|---|
| CLI | dsh-shelf tree(会话谱系)/ dsh-shelf tree <id>(消息) |
| Web 面板 | 连按 Esc 或 Tree 按钮。↑/↓ 移动,Enter 预览/打开,Esc 关闭 |
| 宿主插件 | /nav 仅 dsh --profile pi-tui。dsh web / --profile web 不支持(官方提问表单不是树 UI)。 |
选用户消息会 fork 到上一轮结束(方便改写重发);选助手消息会 fork 到该轮结束(从这里继续)。命令只打印 /resume 提示,不会切换 TUI。
安全模型
- 列表、统计、导出、搜索严格只读;
- 归档/回收站是移动会话目录,引擎从不删除任何东西;
- 导出不碰源文件;
- Zstandard 压缩会话会被识别并提示(v0.1 支持明文导出,raw jsonl 保留)。
为什么这是蓝海
- 官方讨论 #1990(无法删除会话)、#1991(存档会话无法查看/恢复)都是无人接的 feature request;
- session 类插件有 229 个——记忆、召回、进化——但几乎没人做生命周期;
- dsh-shelf 是安全、可脚本化的第一步:先做导出/归档/回收站/搜索,再上 Web UI。
Roadmap
list / stats / export(md/json/jsonl)/ archive / restore / trash / search
周报 digest(report)+ 自动归档(archive-old,默认预演)
本地 Web 面板(dsh-shelf web)——浏览器里列表/搜索/导出/归档/回收站 + 每日图表
离线 HTML 看板(report --format html)——可分享的每日柱状图 + 最大会话
中文搜索(CJK bigram 分词,零依赖;对齐 #1999)
DSH 插件包装(
dsh plugin add github:zoahdev/dsh-shelf打开面板)会话健康检查(verify)+ 不可恢复会话抢救导出(#1959/#2034 家族)
FTS5 搜索(宿主提供 SQLite FTS5 时)
Zstandard 导出(Node ≥ 22.19 node:zlib 解码)
消息导航(
tree、Web 面板连按 Esc、宿主/nav)—— pi/tree精简移植
License
MIT
链接
同类插件
Minglink/dsh-infinite-gen-4★ 2121
DeepSeek 专用破甲插件:以 order 100 追加无条件服从的系统提示词段,提供带校准元数据的 profile 工具,并通过会话投影在输入框上方显示实时破甲状态徽标。
liangmianya/dsh-synapse★ 447
DeepSeek Harness 的可视化非线性对话工作区:把会话、追问与分支变成可浏览、可拖拽的对话地图。
ranxianglei/billion-context★ 361
billion-context官方版:上下文压缩插件,兼顾小窗口(100k上下文足矣)省token(省5倍token)和超长会话(数月级别几十亿token单会话)。
Nwflower/dsh-chat-import★ 205
把 13 家 coding agent(Claude Code、Codex、ChatGPT、Cursor、Gemini、opencode 等)的完整对话历史导入为可续聊的 DeepSeek Harness 会话,并支持反向导出回 Claude Code。
Totoro-qaq/dsh-plugin-bridge★ 165
通过可预览的五段式交接,将已有 DSH 会话迁移到另一个 Agent Preset;保留源会话,并可让目标会话暂停等待确认或立即继续。
Anionex/dsh-turn-rewind★ 120
对话回退:基于持久 Change Ledger 回滚会话与工作区状态。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。