Repository navigation
vizcb-codeblock-visualizer v1.7.3
DeepSeek Harness 可视化插件:模型回答中的 svg / html / ```mermaid 代码块自动渲染为消息底部的图表卡片;支持文件预览(present-files)。mermaid 宿主端 worker 隔离渲染,运行时零网络外联。
v1.7.3 更新内容(自 v1.6.2)
v1.7.3 · 源码隐藏修复(hideSourceBlocks 在 DSH 0.2.0-rc.2 上从未生效)
卡片一直正常渲染,但源码围栏始终留在正文里。根因在链路入口 domFences()(恒返回空数组),三处宿主假设同时不成立:
- 语言标签类名被 CSS Modules 哈希:旧代码查
[data-code-block-banner] .infostring,真机是_infostring_7gxqk_45,永不命中 - 横幅根本不显示语言:宿主 CodeToolbar 用
isLang(lang) ? lang : codeLabel,而isLang基于 shiki 语法集 ——svg/mermaid/present-files都不在其中,只显示通用标签「代码块」,语言在 DOM 上读不到 turnTail槽位与助手消息节点是兄弟:旧实现「向上找最近的含代码祖先」会爬到整个会话,fences混进其它回合的块 → 与「本轮解析出的块」按序号对账恒错位,且命中数会撞上>24守卫直接放弃
修复方式:语言标签按 [class*="infostring"], [class*="language"] 子串匹配;读不到语言时按正文特征识别(^<svg/mermaid 关键字表);确认阶段改用宿主解析出的 code 做归一化内容对账(与顺序、语言标签无关,唯一命中才认);作用域按 data-chat-turn 收窄到本轮;保留「宿主最终没解析出块 → 还原源码」兜底。
顺带修掉一个反向 bug:原「正文正则扫 ```」兜底会把讲解 mermaid 语法的普通代码块误判成图表块并藏掉用户代码。
install-vizcb.ps1 补 UTF-8 BOM:此前无 BOM,Windows PowerShell 5.1 解析会在第 90 行报 Unexpected token '}',脚本完全跑不起来。
v1.7.2 · 插槽兼容:新宿主 list 类插槽强制要求 options.id,缺它时客户端组件从未挂载(宿主侧全绿但 read-turn 永远收不到请求)。
v1.7.1 · 主线程隔离:jsdom 是 CJS 包,会让 DSH 0.2.0-rc.2 的模块解析路由器抛错、插件整体 failed to import;现在 jsdom/DOMPurify 全部只被 worker 线程 import。
安装
-
方式 A(一键脚本,推荐):下载下方资产
vizcb-codeblock-visualizer-1.7.3-complete-package.zip(已内置全部运行时依赖,无需联网npm install),解压后在解压目录运行:powershell -ExecutionPolicy Bypass -File install-vizcb.ps1 -ProfileName desktop
脚本会把插件连同随包依赖复制到 profile、并自动写入
dsh.profile.bundles;装完重启 DSH Desktop。 -
方式 B(git 依赖):profile 的
package.json添加"vizcb-codeblock-visualizer": "github:Reseezhang/vizcb-codeblock-visualizer#v1.7.3",并把它加进dsh.profile.bundles,再执行dsh plugin --profile desktop install。 -
详细说明与配置项见 README。
完整包内容
vizcb-codeblock-visualizer-1.7.3-complete-package.zip(44.7 MB,12209 个条目)内含:
vizcb-codeblock-visualizer/:插件本体 + 随包node_modules(mermaid / jsdom / DOMPurify / svgdom 及全部传递依赖)install-vizcb.ps1:一键安装脚本(复制插件 → 检查依赖 → 写入dsh.profile.bundles→ 校验)
本包已实测:解压 → 运行脚本 → 插件目录、随包依赖、worker 模块、bundles 清单、包版本与客户端版本号(均 1.7.3)全部校验通过。
说明
- 客户端改动无需重启:DSH 0.2.0-rc.2 的
dsh-client-hmr每 500ms 轮询每个客户端 bundle 的 mtime/ctime/size,变更后经/plugins/eventsSSE 推送、浏览器热重载该模块。宿主侧改动(lib/index.js)仍需重启。 - 完整根因与踩坑记录见仓库
DEVELOPMENT.md教训 14。