Session Share:把 DSH 会话导出成可分享的离线 HTML

前言

DSH 的会话默认只留在本机。要把一段对话发给同事或留档时,常见做法是长截图、整段复制,或导出原始日志——前者难检索,后者体积大且容易带上路径、令牌等敏感信息。

Session Share(仓库 dsh-plugin-session-share)做一件事:在本机把会话事件流整理成一份可以独立存在的文档,默认脱敏后再交付。维护者为 CJXIAO0718,在 SkillHub 社区目录中归类为「记忆」。插件当前版本为 0.1.0,MIT 许可证;要求 DSH 桌面端 ≥ 0.2.1-rc.2,Node ≥ 20。

这是什么

插件 id 为 session-share-html。它解析 DSH 会话事件流,区分真人对话与系统注入,折叠工具调用,并按确定性规则脱敏,再渲染成自包含的单文件 HTML(不依赖 JS、CDN、字体,双击即可阅读)。若你自建「边注」托管服务,还可以上传结构化快照 dsh.session-share/v1,得到只读链接 /s/:id;整理与脱敏仍在本机完成,出网前已完成脱敏。

核心功能

下面列出 README 中已说明的能力,均在本机或你自建的边注服务上完成。

能力 说明
导出单文件 HTML 由 lib/render.js 生成排版,零外部资源
部分消息分享 界面「选择对话后分享…」,或 CLI --pick m12,m13;条目 id 稳定可复用
默认脱敏 12 条确定性规则(家目录、password / api_key、Bearer、sk-、常见云厂商令牌等);页头显示「已脱敏 N 处」
系统内容折叠 system-reminder、运行时环境、工具清单、子代理汇报等折叠为灰色小卡,原文保留
思考过程 --reasoning omit / count / full,默认不展示
主题 浅色 / 深色 / 跟随系统(auto)
边注发布 上传快照后获得只读链接;发布者可撤回
给自动化用 离线 CLI 成功时 stdout 一行 JSON;插件还提供 share_conversation_html 工具

两种交付形态对比:单文件 HTML 适合发文件、归档、离线留存,发出后无法撤回;边注链接适合频繁分享与长期访问,需自建托管,发布者可随时撤回。

安装与启用

前提:DSH 桌面端 ≥ 0.2.1-rc.2。装完后完全退出 DSH(含托盘)再启动,插件首次挂载只在进程启动时完成。

方式 A · 插件市场索引(推荐)

在 DSH 打开「插件 → 发现」,添加索引源:

https://raw.githubusercontent.com/CJXIAO0718/dsh-plugin-session-share/main/market/index.json

然后在市场里搜索 Session Share 安装。若「插件」页没有「发现」标签,说明市场 bundle 未启用,需先按仓库 docs/publish.md 启用后再添加索引源。

方式 B · 按 git 地址安装

安装串为 pnpm spec,commit 以仓库 market/index.json 为准(钉 40 位 commit,不要用 #main):

git+https://github.com/CJXIAO0718/dsh-plugin-session-share.git#<40 位 commit>

方式 C · 本地脚本挂载(开发者)

Windows 下可用仓库内 install.ps1 写入 profile 的 cordis.patch.yml。同一台机器不要同时用方式 C 与方式 A/B,否则同一包名两个来源可能导致客户端组合失败;切换前执行 install.ps1 -Uninstall。

验证

  1. 设置 → 插件,确认 id = session-share-html 且 phase 为 active;
  2. 打开任意会话,对话头部出现「分享为 HTML」;
  3. 预览或下载成功即通过。

若 DSH 无法启动,可完全关闭进程后运行仓库根目录的 如果DSH起不来-双击我.cmd 回滚 cordis.patch.yml 到安装前备份(仅改该文件,不动会话与工作区)。

典型用法

会话内操作

  • 对话头部点「分享为 HTML」→ 预览或下载;渲染在本机,默认不上传。
  • 输入框命令(默认行为可在「连接设置…」里三选一,保存在 $DSH_HOME/session-share/settings.json):
/share            按连接设置里的默认行为(出厂:本机预览)
/share preview    本机预览
/share download   本机下载
/share publish    发布到边注(需先填主机与个人令牌)

分享菜单第三项「选择对话后分享…」可只勾选部分消息;列表摘录在服务端已脱敏。

离线 CLI

适合批量、脚本或无桌面端场景:

node tools/render-session.mjs \
  --log <session.v4.jsonl.zstd 或 .jsonl> \
  --out <out.html> \
  [--reasoning omit|count|full] [--pick m12,m13] [--no-redact] [--title "标题"]

成功时 stdout 仅一行 JSON(含 out、bytes、stats 等);失败 stderr 一行中文错误。退出码:0 成功,1 运行失败,2 参数非法。会话日志默认路径形如 %USERPROFILE%\.dsh\sessions\<工作目录编码>\<session-id>\session.v4.jsonl.zstd。

发布到边注(可选)

边注是仓库 server/ 下可独立部署的 Node 应用,不随 npm 包发布。本地 HTTP 测试示例:

cp server/.env.example .env
docker compose -f compose.server.yml up -d --build

在 DSH 分享菜单填写「连接设置…」中的主机地址与个人令牌后,使用「发布到边注…」。令牌存本机 settings.json,权限 0600,接口不回传令牌明文。

配置项

插件 config(由 lib/index.js 读取):

键 取值 默认 说明
theme auto / light / dark auto 分享页初始主题
redact true / false true 脱敏总开关;false 为原样输出,慎用

适用场景与注意

适合需要把 DSH 对话整理成可读文档、默认脱敏后再外发或归档的开发者;若团队已有边注实例,可改用只读链接并支持撤回。

插件以当前 DSH 进程权限运行,能访问本会话相关数据与配置。安装前应阅读仓库源码与 MIT 许可证,确认脱敏规则是否满足你的合规要求;redact: false 会原样输出,仅在完全可信环境使用。

社区目录(如 SkillHub)与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本插件为社区维护的独立项目。

链接

  • 社区目录页:https://www.skillhub.cn/plugins/CJXIAO0718/dsh-plugin-session-share
  • 源码与完整文档:https://github.com/CJXIAO0718/dsh-plugin-session-share
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜