dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DSH 会话导出插件:在设置中选择一个或多个会话,导出用户提问与最终回答,支持 Markdown/JSON。

给 DeepSeek Harness(DSH)桌面端 / Web 端的会话导出插件。
它只在 设置 里增加一个「会话导出」分区,不往侧栏或聊天页塞按钮,避免打断日常界面。 在这里可以:
| 能力 | 说明 |
|---|---|
| 单会话 / 多会话 | 会话列表支持搜索、全选、清空和逐行勾选 |
| 默认内容 | 用户提问 + 每轮最后一条助手文本回答 |
| 可选内容 | 思考过程、工具调用与结果、系统/运行时上下文 |
| 输出格式 | Markdown(适合阅读、归档、粘贴到笔记)或 JSON(适合程序处理) |
| 标题与元数据 | 导出文件包含会话标题、ID、工作目录、创建/最后活动时间、状态 |
| 只读 | 只读取会话日志,不修改会话、不写工作区记账、不删除任何东西 |
| 隐私 | 所有内容在 Host 本机生成,不联网、不上传 |
source.kind === 'user' / user-questions),不会把运行时的
runtime-context、skill 列表、时间上下文当成用户问题。仓库地址:https://github.com/vi0let-dev/dsh-session-export
要求 DSH 0.2.1-rc.2 左右的桌面端或 dsh web,Node ^22.19.0 || >=24.0.0。
侧栏 → 插件 → 添加插件;
在输入框里填:
github:vi0let-dev/dsh-session-export
点 安装。安装完成后会提示 「立即启用」,点它启用这个组合包;
完全退出并重启 DSH(bundle 行不会热加载);
重启后按 Ctrl+Shift+R 硬刷新页面。
# 跟随 main 分支
dsh plugin --profile desktop add github:vi0let-dev/dsh-session-export
# 锁定到某个 tag(推荐,避免以后 main 变化)
dsh plugin --profile desktop add github:vi0let-dev/dsh-session-export#v1.0.0
GitHub 直装会在 profile 里放一份副本,不依赖本地插件目录;以后更新插件需要重新安装。
安装后确认 profile 的 package.json 里 dsh.profile.bundles 包含 dsh-session-export,
然后完全退出并重启 DSH。
侧栏 → 插件 → 添加插件;
输入插件目录的绝对路径,例如:
D:\src\dsh-session-export
点 安装 → 立即启用;
完全退出并重启 DSH,再按 Ctrl+Shift+R 硬刷新。
命令行等价写法:
dsh plugin --profile desktop add "D:\src\dsh-session-export"
本地目录安装是软链接,修改代码后重新加载插件/重启即可,但不要删除或移动原目录。 本插件没有构建步骤、没有第三方依赖,不需要
pnpm approve-builds。
打开 设置 → 会话导出:
文件名形如:
dsh-session-<会话标题>-20261017-2315.md
dsh-sessions-3-20261017-2315.json
# DSH 会话导出
> 导出时间 / 会话数量 / 导出内容
---
## 会话: <标题>
- 会话 ID / 工作目录 / 创建时间 / 最后活动 / 状态
### 第 1 轮 · 时间
#### 用户提问
...
#### 最终回答
...
(勾选思考过程 / 工具调用时,会以折叠块附在对应轮次下)
{
"app": "dsh-session-export",
"version": 1,
"exportedAt": 1792249526189,
"options": { "user": true, "assistant": true, "reasoning": false, "tools": false, "system": false },
"sessions": [
{
"id": "session-...",
"title": "...",
"cwd": "C:\\...",
"createdAt": 1792249261242,
"updatedAt": 1792249526189,
"turns": [
{
"turn": 1,
"complete": true,
"users": [{ "text": "...", "attachments": [] }],
"assistant": { "text": "...", "attachments": [] },
"reasoning": [],
"tools": []
}
]
}
]
}
fetch 同源的
/api/dsh-session-export/* 路由。Host 头与
x-dsh-session-export: 1 标志头。这样跨站页面无法通过简单的 fetch 触发导出,
DNS rebinding 也会被 Host 校验挡下。@deepseek-ai/dsh-session-log-export(会话 Header 菜单里的「下载 Session 日志」)。D:\src\... 占位。插件运行时的会话内容只在本机处理和下载,不会写入仓库。插件分两侧,和 DSH 的其它 UI 插件一样:
index.js
/api/dsh-session-export/list 与 /api/dsh-session-export/export;sessionPersistence.list()、活动 ctx.sessions.list() 与磁盘会话目录,
标题/时间从 storages/session_projcache/sessions/<id>.json 读取,读不到时回退到日志;snapshotEvents(),冷会话用
sessionPersistence.open(id, 'read'),sessionQuery.readSession(id) 作为可选兜底;turns,再渲染 Markdown/JSON。client.js
react;settings.section 注册一个 order: 37 的分区;node test/smoke.mjs
当前 16 项测试覆盖:
GET /list、POST /export(活动会话与冷会话两条读路径);apply 的 webServer 路由挂载;sessionPersistence、sessions、settings.section 等);
DSH 大版本升级后如果这些面变化,需要跟着调整。session/title 或首条用户提问补出标题。127.0.0.1 / localhost / [::1] 访问界面;用自定义域名映射到回环地址时,
插件接口会因为 Host 校验返回 403。dsh plugin add dsh-session-export。界面:侧栏 → 插件 → 已安装 → 找到 dsh-session-export → 卸载。
命令行:
dsh plugin --profile desktop remove dsh-session-export
卸载后重启 DSH。插件不保留任何持久状态。
1.0.00.2.1-rc.2 桌面端,Node 24.xdsh-session-export/
├─ index.js # Host 半身:列表、读取、导出、HTTP 路由
├─ client.js # 浏览器半身:Settings 分区 UI
├─ cordis.patch.yml # 挂载 Host 行的 bundle patch
├─ package.json
├─ icon.svg
├─ docs/
│ └─ banner.png # README 顶部横幅
├─ locale/
│ ├─ zh.json # 插件管理器的中文标题/描述
│ └─ en.json
├─ test/
│ └─ smoke.mjs
├─ README.md
├─ LICENSE
└─ .gitignore