OpenViking
volcengine
Self-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:huazhiliange/dsh-share-page
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
把任意 DeepSeek Harness(DSH)会话 一键变成可分享的只读静态网页 —— 自包含单文件 HTML(内联样式/脚本、零外部请求、离线可开),时间线渲染,可折叠工具调用与思考块,默认脱敏,双层 SHA-256 指纹防篡改,可选水印。
给同事、客户、读者看的会话快照:点击即开、不怕改、不泄密。

装上插件之后,DSH Web 会话 Header 右上角会多一颗「分享」按钮:

点开是一个轻量对话框,确认主题 / 脱敏 / 思考块 / 水印,一键生成:

默认脱敏 + 默认折叠思考 + 默认跟随系统主题,三项全部可以临时关掉。
生成的分享页长这样(可一键切换主题、展开/折叠工具):


DSH 生态里已有的导出/分享能力,目标各不相同:
| 工具 | 产出 | 面向对象 |
|---|---|---|
官方 /export |
原始 ZIP(JSONL) | 机器 / 续聊 |
本插件 dsh-share-page |
可读的分享网页 | 人 |
面向人的可读分享网页此前是空白 —— 本插件补上这一环:一份点击即开、离线可用、被改动就能发现的会话快照。
| 场景 | 为什么有用(简版) |
|---|---|
| ① 给同事/团队看「AI 是怎么干的」 | 分享页含完整时间线 / 思考过程 / 工具调用 / 报错,一次讲清「AI 做了什么、为什么」。 |
| ② 交付/评审留档 | 重要改动配一份可追溯的执行记录;页面含双层指纹防篡改。 |
| ③ 给非技术的人看 | 老板、客户、业务方只关心结论与证据,分享页是排版好的版面。 |
| ④ 长期归档/复盘/检索 | 自包含 HTML,可打印 PDF、离线存档、之后翻找。 |
| ⑤ 分享给另一个 AI/工具 | 把一次漂亮 agent 操作导出为上下文喂给其他模型,或作内训示例。 |
| ⑥ 只读安全 | 默认脱敏(邮箱/密钥/路径)+ 水印 + 转义防注入;可放心外传。 |
适合「agent 产出需要对外沟通/留档/交付」的用户 —— 团队协作、给客户交付、做重要自动化任务、想沉淀知识的人。如果你是重度使用 DSH 干活、且经常要「把过程拿给别人看」,它就有用。
Ctrl+P 可直接打印 / 存 PDF。<details> 卡片,参数 + 结果并排(错误结果红色标记),一键展开 / 折叠全部。sk-/AKIA/ghp_/Bearer)、IPv4、Windows 绝对路径、长随机串自动替换;可关闭。sha256sum 校验出来。sessionPersistence.inspect/list 消费会话日志,绝不 load/prepare/append,绝不改写历史事件。# 1) 前置:已安装 dsh,且 Node.js ≥ 18
# 2) 从 npm 安装(推荐)
dsh plugin --profile web add dsh-share-page
# 3) 重启 dsh,会话 Header 右侧即出现「分享」按钮
dsh --profile web
打开任意会话 → 点 分享 → 选好选项 → 生成。详见使用方式。
# 从 npm 安装(推荐,自动获取最新版):
dsh plugin --profile web add dsh-share-page
# 锁定版本(建议,DSH 处于开发者预览期,上游可能有破坏性变更):
dsh plugin --profile web add dsh-share-page@0.1.0
# 本地路径安装(开发期 / 试用):
dsh plugin --profile web add "file:<仓库绝对路径或相对路径>"
安装后重启
dsh --profile web,会话 Header 右侧会出现「分享」按钮。
会话 Header → 分享(见 Header 截图) → 选项对话框:
| 选项 | 默认值 | 说明 |
|---|---|---|
| 默认主题 | 跟随系统 | 跟随系统 / 浅色 / 深色 |
| 脱敏(邮箱/密钥/绝对路径/IP) | ✅ 开 | 默认开启;分享前在内容侧做正则替换,不依赖页面运行时。 |
| 包含思考过程(折叠) | ✅ 开 | reasoning 块默认折叠,可单击展开。 |
| 水印文本(可选) | 空 | 例如 内部资料,请勿外传,页脚展示。 |
对话框见 分享会话对话框 截图。
点「生成分享页」 → 弹窗显示 输出路径 + 会话指纹 + 文件指纹,并提供「复制路径」按钮。
/share # 无参时提示(当前会话 id 由 Web UI 按钮侧获取)
/share session-xxx # 指定会话生成
模型可直接调用 share_session,参数:
| 字段 | 必填 | 说明 |
|---|---|---|
sessionId |
✅ | 会话 ID |
redact |
❌ | 脱敏开关,默认 true |
includeReasoning |
❌ | 是否包含思考块,默认 false |
theme |
❌ | follow / light / dark |
watermark |
❌ | 任意字符串,写入页脚 |
outDir |
❌ | 输出目录,默认 $DSH_HOME/shares |
返回 { path, size, sessionFingerprint, fileFingerprint, stats }。
默认 $DSH_HOME/shares/<sessionId>.html($DSH_HOME 缺省 ~/.dsh),可用 outDir 覆盖。
生成的分享页是一个完整、离线可看、不会偷偷改你本地任何东西的只读网页。下面两张截图展示了一次「列出目录下文件」会话的渲染效果:


<details> 形式呈现,参数 + 结果并排;sha256sum 命令交叉校验。cd dsh-share-page
npm install # 安装 fzstd(解压会话日志用)
npm run verify # 真实会话渲染 + 注入转义 / 脱敏 / 指纹 18 项自检
也可手动指定会话(脱离 DSH 独立运行):
node scripts/verify-render.mjs "C:\Users\you\.dsh\sessions" out
redact:false 显式关闭。dsh-share-page/
├── cordis.patch.yml # bundle patch:insert service `session-share-page`
├── index.mjs # host 入口 apply(ctx):工具 + 命令 + HTTP 路由
├── lib/
│ ├── render-html.mjs # 事件流 → 分享页 HTML(纯函数,核心)
│ ├── markdown.mjs # 极简 Markdown 渲染器(先转义后解析,零依赖)
│ ├── session-reader.mjs # 会话读取(host: sessionPersistence.inspect;独立: fzstd+JSONL)
│ ├── redact.mjs # 脱敏(纯函数)
│ ├── fingerprint.mjs # 双层 SHA-256 指纹(纯函数)
│ └── locales.mjs # host 端文案(zh/en)
├── client/
│ └── index.mjs # Web UI 插件:会话 Header「分享」按钮 + 选项对话框
├── docs/screenshots/ # README 用到的效果截图
├── scripts/
│ └── verify-render.mjs # 独立验证(真实会话渲染 + 注入转义/脱敏/指纹自检)
└── README.md
分层与通道:
| 层 | 角色 | 通道 |
|---|---|---|
| client | 会话 Header conversation.session.header.utilities 槽位注入「分享」按钮 + Modal(与官方 dsh-session-log-export 的 Session log 按钮同一机制) |
POST /api/session-share/render |
| host | 渲染核心 + 写盘 + 指纹 | ctx.sessionPersistence.inspect(只读) |
| agent | 模型可直接调用 share_session 工具 |
ctx.tools.register(defineTool(...)) |
| 命令 | /share [sessionId](人类命令面,不占模型轮次) |
ctx.commands.register |
MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: session-shared。