前言¶
在 DSH Web 界面里,模型经常给出几千字的长回复。结构往往是层次、分支和取舍,Markdown 只能把它们排成一条竖线,读者要在脑子里自己还原空间关系。有人会让模型输出 Mermaid 等图表 DSL,再交给内置渲染器,但图型受 DSL 和白名单约束。
下面介绍社区插件 dsh-reply-visual(npm 包名 @yfwu2020/dsh-reply-visual):在每条定稿回复下增加「图解」入口,把原文交给模型,由模型直接产出单文件 HTML(内联 SVG),在右侧栏的沙箱 iframe 里渲染。插件不负责选图型,只负责把回复交给模型和提供渲染沙箱。维护者为 yfwu2020,在 SkillHub 目录中归类为「模型推理」;源码与说明见 GitHub 仓库,许可证为 MIT。
这是什么¶
DSH 回复可视化(图解):在 DeepSeek Harness(DSH) Web 界面中,用户点击某条 AI 回复下的「图解」按钮,右侧栏打开图解页。模型根据该条回复生成一页可读的视觉化内容(摘要卡、流程图、时间线、对照矩阵、结构树等,具体形式由模型决定),在 iframe 中展示。
与「输出 Mermaid 再渲染」的路径不同:这里没有图表 DSL、没有内置渲染器、没有图型白名单,表达能力主要受模型写 HTML/SVG 的能力限制。
界面与三个视图¶
图解页页头展示模型、档位、耗时、字节等信息;工具栏提供「图解 / 源码 / 原文」切换,以及历史、重画、字号、复制源码、保存 .html 等操作。页面自带深浅配色,可跟随系统。
| 视图 | 作用 |
|---|---|
| 图解 | 流式生成期间显示进度(已产出字数与秒表);整页到齐后展示模型画的页面 |
| 源码 | 模型产出的 HTML 原文,可复制;页面未完整时这是主要出口 |
| 原文 | 该条回复本身,用 DSH 自带的 MarkdownText 渲染,不调模型、不截断 |
README 说明:生成一页通常需要 20~70 秒(长回复有 57s、64s 的实测记录)。等待阶段侧栏用「理解中」「绘制中」等状态区分,状态行给出真实字数与计时,不显示百分比(总量未知)。历史列表按对话顺序排列(与会话日志中 assistant/message 的序号 seq 一致);回放命中缓存时走 /result,不再调用模型。
同一会话中进入图解有三个入口:每条回复下的「图解」、会话头部的「图解」图标(上次画的那条)、工具栏「历史 N ▾」(本会话任意一条)。列表支持筛选、键盘导航;跨会话时可按会话分组查看。
安装与启用¶
DSH 社区插件通过 profile 安装;安装命令以仓库 README 为准,不要自行拼接未在文档中出现的 add 形式。
# 从 npm(推荐)
dsh plugin --profile web add @yfwu2020/dsh-reply-visual
# 或从 GitHub Release 的 tgz(同一个产物,不走 npm)
dsh plugin --profile web add /path/to/yfwu2020-dsh-reply-visual-0.2.0.tgz
# 或从本地目录(开发用:改完不用重装,只重建)
dsh plugin --profile web add link:/path/to/dsh-reply-visual
安装后会在 DSH 中落到例如:~/.dsh/profiles/web/package.json 中的依赖项、node_modules 下的包,以及 profile 的 dsh.profile.bundles(按包名引用)。
要求:DSH 运行时 >=0.1.7-rc(见 package.json 的 peerDependencies)。README 提醒:装完后需重建进程——重启 dsh web(或现有热重载流程),并对浏览器做硬刷新(Cmd/Ctrl+Shift+R);client 侧后续改动可由 client-hmr 就地替换。npm 上若误装过旧的 0.0.1-rc.x 等缺少 WebServer 等 API 的版本,可能无法正常启动,应以当前 release / npm 上的 @yfwu2020/dsh-reply-visual 为准(资料中 package 版本为 0.2.0)。
典型用法¶
- 在 DSH Web 中正常对话,等到某条 AI 回复定稿。
- 在该条回复下方点击「图解」,右侧栏打开图解页,等待模型生成(约 20~70 秒,视回复长度而定)。
- 生成完成后在「图解」视图阅读;若需核对或导出,切换到「源码」复制 HTML,或使用「保存 .html」落到工作区。
- 若图意不清,切换到「原文」阅读完整 Markdown 回复。
- 同一条回复再次点击「图解」时,若缓存仍在,会直接回放,不重新调模型;需要新规范或新布局时,使用工具栏「重画」。
可选:用 ping 接口查看插件路由、档位与缓存概况(默认 Web 端口示例为 3080,以你本地 DSH 配置为准):
curl -s http://127.0.0.1:3080/reply-visual/api/ping | python3 -m json.tool
配置要点¶
在 profile 的 cordis.patch.yml 里,找到 id: reply-visual 对应行的 config: 进行修改。下列键名与默认值均来自 README,仅列与日常最相关的部分;滚轮手感、橡皮筋、缓存字节上限等完整表见仓库文档。
模型与生成
| 键 | 默认 | 说明 |
|---|---|---|
provider / model |
空 | 固定路由;留空则跟随「设置 → 默认模型」 |
reasoningEffort |
low |
画图偏长输出;要更细可调 high |
temperature |
0.4 |
不建议调到 1 以上 |
maxTokens |
0 |
0 表示不传上限,交给模型/供应商 |
timeoutMs |
180000 |
单次生成超时 |
maxSourceChars |
24000 |
原文过长时取头 60% + 尾 40% |
渲染与安全相关
| 键 | 默认 | 说明 |
|---|---|---|
allowScripts |
true |
false 时 iframe 为纯静态 sandbox |
resultCacheTtlMs |
0 |
0 表示回放不限时(文件在则回放) |
maxRequestsPerMinute |
20 |
本地限流 |
可视化与审美规范默认使用包内 skills/visual-page/SKILL.md 与 skills/page-design/SKILL.md;可通过 skillPath、designPath 自定义,designPath 设为 off 则不注入设计参考。
缓存与重新生成¶
缓存目录为 ~/.dsh/reply-visual/。README 说明:不会无界增长——按条数(默认 result/ 与 prepared/ 各保留最新 200 份)、总字节(默认 32MB)、可选按龄清理,以及临时文件约 1 小时清理。下列情况不会重新生成:同一条回复再次点「图解」、切换会话再回来、刷新浏览器或重启 dsh 后再点(标签布局会丢,但可从会话头或历史找回)、隔较长时间再点(默认 resultCacheTtlMs 不限时)。会重新生成的情况包括:缓存被挤掉、用户点击「重画」、或主动删除缓存目录:
rm -rf ~/.dsh/reply-visual
注意:上述命令只删插件缓存;通过「保存 .html」写到工作区 reply-visual/ 的文件不会被插件自动清理。
安全边界与适用注意¶
模型生成的页面在 iframe 中运行,sandbox 为 allow-scripts allow-forms allow-modals allow-popups, deliberately 不加 allow-same-origin,页面经 Blob URL 加载,读不到宿主页的 DOM、Cookie、localStorage,也不能导航顶层窗口。脚本在 sandbox 内可运行,但存储与剪贴板 API 会受不透明源限制。原文只发给与会话相同的模型路由,不新增文档未说明的外部出口。
适用对象:经常在 DSH Web 里阅读长分析、希望快速看到结构关系的使用者;愿意接受单次生成约数十秒等待;能接受模型每次图解版式可能不同。
安装前建议:插件在当前 dsh 进程权限下运行,安装前应自行查看 GitHub 源码 与 MIT 许可证;SkillHub 目录 yfwu2020/dsh-reply-visual 为社区收录,与 DeepSeek / 幻方无官方从属关系。DSH 生态强调「一切皆插件」,本文仅介绍该插件在资料中写明的能力,不代替你对运行环境与模型的评估。
结尾¶
dsh-reply-visual 把「读懂一条长回复」从纯线性阅读,变成可选的一页图解:入口在每条回复和会话历史里,生成物是模型写的单文件 HTML,展示在侧栏沙箱中,并保留源码、原文与缓存回放。