前言¶
DeepSeek Harness (DSH) 的会话日志存储在 $DSH_HOME/sessions/ 目录下,文件格式为多帧 Zstandard 压缩的 JSONL。在实际开发中,存在两个痛点:一是 GUI 界面没有直接复制会话路径的入口;二是日志文件是容器格式,直接读取会失败。dsh-session-path 插件旨在解决这两个问题,它为会话添加了路径复制功能,并提供了将日志转换成可读文件的工具。
安装¶
通过 npm 安装插件到指定 profile:
dsh plugin --profile desktop add dsh-session-path
核心功能¶
插件主要提供三个维度的能力:GUI 交互、只读工具、读写工具。
- GUI 交互:在会话标题栏添加复制按钮,在侧栏菜单添加复制路径选项。
- 只读工具 (
session_path):提供工具读取会话路径信息,不涉及磁盘写入。 - 读写工具 (
session_handoff):生成可读的交接文件,支持 Zstandard 多帧日志解析。
使用方法¶
1. GUI 复制¶
- 当前会话:点击会话标题栏右侧的 ⧉ 按钮,会将接续块(包含标题、ID、工作目录、日志路径)复制到剪贴板。
- 任意会话:在侧栏会话行点击右键,菜单最后一项为「复制会话路径」。无需打开该会话即可获取路径。
2. 命令行工具¶
-
读取路径 (
session_path)获取会话路径和基础信息,仅读操作。
// 获取当前会话的接续块格式路径
session_path({ format: "block" })
// 获取当前会话的裸路径
session_path({ format: "path" })
-
生成交接文件 (
session_handoff)将会话日志渲染为可读文件,并写入指定目录(默认
$DSH_HOME/session-handoff)。
// 生成 Markdown 格式交接文件
session_handoff({ sessionId: "xxx", format: "md" })
// 生成原始 JSONL 格式文件,限制字符数
session_handoff({ format: "jsonl", maxChars: 50000 })
输出文件会自动截断超出 `maxChars` 的部分,保留最近内容,适合作为后续会话的上下文。
技术细节与注意事项¶
- 内存效率:插件在解析 Zstandard 日志时,不将全文解压到内存,而是按帧扫描,一次只持有单帧数据。
- 写入安全:
session_path工具和 HTTP 路由均为只读;仅session_handoff会写盘,且仅写入配置的handoffDir。 - 访问控制:HTTP 路由带有信任围栏,仅允许
loopback或显式trusted host访问,拒绝跨站请求。 - 文件保留:交接文件按字符预算保留最近部分,尾部上下文对接续任务最有价值。
总结¶
该插件通过 GUI 按钮和命令行工具,补全了 DSH 会话路径的获取与日志读取能力,特别适合需要在多会话间进行上下文接力或日志分析的智能体开发场景。