DeepSeek Harness Hub
← 返回列表

DESTINYwang0428/dsh-conversation-export

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

一键把 DeepSeek Harness DSH Web 对话导出为 Markdown / JSON 的本地插件

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/21 · 已提供中文文档

一键把 DeepSeek Harness (DSH) Web 对话导出为 Markdown / JSON 的本地插件

综合分
27.9
GitHub 分
27.9
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add DESTINYwang0428/dsh-conversation-export
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/18(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-conversation-export

一键把 DeepSeek Harness(DSH)Web 的对话导出为 Markdown 或 JSON 的本地插件。

License
Node
CI

特性

- 入口顺手:导出按钮位于输入栏「访问模式」选择器右侧,找不到时回退为右下角悬浮按钮
- 任意会话:面板列出本机全部会话,自动选中当前会话并标记「当前」
- 两种格式:
- Markdown — 标题 + 元信息表 + 按轮次分组的用户/助手消息
- JSON — 结构化导出(turns → steps → tools,工具参数与返回结果)
- 可选内容:工具调用(默认压缩为一行摘要)、思考过程(默认隐藏),导出时勾选展开
- 好用:面板 × / 点击外部 / ESC 均可关闭;文件名 = 会话标题 + 会话 ID
- 零依赖侵入:直接读取会话日志文件(zstd 分帧解压),不依赖 DSH 内部服务

目录结构

dsh-conversation-export/
├── plugin/
│   └── dsh-export.mjs        # 插件本体(安装时从这里复制)
├── examples/
│   └── cordis.patch.yml      # profile 注册片段示例
├── samples/
│   ├── export-sample.md      # 导出示例(Markdown)
│   └── export-sample.json    # 导出示例(JSON)
├── docs/
│   └── architecture.md       # 工作原理详解
├── test/
│   └── smoke.test.mjs        # 自包含冒烟测试(无需 DSH 环境)
└── .github/workflows/ci.yml  # CI(Node 22/24 跑冒烟测试)

安装

1. 把插件复制到你的 profile 目录:

cp plugin/dsh-export.mjs ~/.dsh/profiles/web/

2. 编辑 ~/.dsh/profiles/web/cordis.patch.yml,在 insert 列表追加一条
(参考 examples/cordis.patch.yml):

- insert:
- id: dsh-export-widget
name: ./dsh-export.mjs?v=1

3. 重启 dsh web,打开任意会话,在输入栏「访问模式」右侧即可看到「⤓ 导出对话」。

更新插件:替换 dsh-export.mjs 后,把 ?v=1 的版本号 +1(如 ?v=2)再重启,
让 loader 重新加载(改动记录见 CHANGELOG.md)。

使用

1. 点击「⤓ 导出对话」打开面板(自动选中当前会话)
2. 选择要导出的会话
3. 选择格式:Markdown / JSON
4. 按需勾选:包含工具调用、包含思考过程
5. 点「导出」下载文件

HTTP API

插件同时暴露本地 HTTP 接口(同源即可调用,也可直接 curl):

列出全部会话
curl http://127.0.0.1:3080/dsh-export/sessions.json

导出当前会话为 Markdown(含工具调用)
curl -OJ "http://127.0.0.1:3080/dsh-export/export?session=&format=md&tools=yes&download=1"

| 路由 | 说明 |
| --- | --- |
| GET /dsh-export/sessions.json | 会话列表:id/标题/工作目录/时间/消息数,含当前会话标记 |
| GET /dsh-export/export?session=&format=md\|json&tools=yes\|no&reasoning=yes\|no&download=1 | 导出单个会话;download=1 时带下载响应头 |
| GET /dsh-export/export.js | 注入页面的客户端脚本(自动注入,一般无需手动访问) |

工作原理(摘要)

DSH 的会话日志在 ~/.dsh/sessions///session.jsonl.zstd,
是 zstd 分帧追加写入的 JSONL。插件按帧扫描解压(容忍写入中的撕裂帧),
把事件流还原为「轮次 → 用户/助手消息 → 工具调用/返回」,再渲染为 Markdown 或 JSON。
详见 docs/architecture.md。

示例输出

预览 samples/export-sample.md 与
samples/export-sample.json。

示例会话

| 属性 | 值 |
| --- | --- |
| 会话 ID | session-xxxxxxxx-... |
| 工作目录 | /Users/me/project |
| 轮次 | 2 |

💬 第 1 轮

🧑 用户

帮我写一个脚本统计项目代码行数

🤖 助手 · 步骤 1

好的,我来。先看一下项目结构:

🔧 工具 bash

参数:
json
{ "command": "find . -name '*.ts' | xargs wc -l | tail -1" }

返回:

1234 total

常见问题

Q:重启后没看到按钮?
确认 cordis.patch.yml 里已追加 insert 条目、name 指向的 dsh-export.mjs 确实在
profile 目录中,且 dsh web 已重启。改过插件源码后记得 bump ?v=N。

Q:为什么默认不包含工具调用和思考过程?
导出文件更聚焦对话本身;需要完整审计时在面板里勾选对应选项即可。

Q:导出的 Markdown 里没有我看到的系统提示/流式内容?
那些是内部事件(source.kind === 'plugin' 与流式 chunk),导出时会自动跳过,
只保留真人对话与工具调用。

Q:支持 Windows / Linux 吗?
支持。插件只在 DSH Web(Node.js)环境运行,与操作系统无关。

开发
bash
运行冒烟测试(Node >= 22.6)
node test/smoke.test.mjs

欢迎提交 PR 改进导出渲染、面板交互或文档。

许可证

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

同作者(DESTINYwang0428)的其他插件

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群