Inline Visuals:让 DSH 在回答里直接画图,并且能回放

前言

用 DSH 做数据分析、读论文或者汇报实验结果时,常见的问题是:模型给出的表格和数字,得自己再复制到绘图工具里才能看。工具日志里的 ASCII 图能看个大概,但没法调样式,刷新会话之后通常也就没了。

ylifeonlyonce/dsh-inline-visuals 解决的是这个问题:让 agent 在对话流里直接产出一张卡片图,卡片跟着会话日志走,刷新、重开、分支都还在。下面介绍这个插件。

这是什么

这是 YLifeOnlyOnce 维护的一个 DeepSeek Harness 插件,作用是把数据画成图,嵌在回复正文的下方,而不是只留在工具日志里。名字里的 Inline 指的就是图直接长在回答里。

社区目录页把它归在「趣味换装」分类(第 3 方目录的归类,跟功能本身关系不大)。项目 2026-11-05 建仓,README 标注 MIT 许可证,package.json 里的版本号是 1.1.0。

README 和仓库描述对种类数量的写法不一致:README 标题写「18 kinds of charts…」,还配了一枚 18 类的徽章;仓库 description 写「14 replayable visual kinds」。实际能力以下面那张种类表为准。

能画什么

README 给出的种类表分三组:

分组 种类
Charts bar · line · area · pie · doughnut · scatter · radar · waterfall
ML & papers training curves · ROC/PR curves · confusion matrix · histogram · model leaderboard · embedding scatter
Everything else compare table · timeline · gantt · heatmap · flow · KPI tiles

这些图都支持 presentation styles:横向或堆叠的柱状、阶梯线、数据标签、图例、网格、五种配色、高度与密度、散点趋势线、对数坐标轴、EMA 平滑、误差棒。

体积上,宿主侧约 35 KB,浏览器侧一个自包含文件约 217 KB(Chart.js 内联,React 与宿主共用)。测试用 node:test 写了 38 个,每次 push 跑 CI,npm 发布由 tag 驱动并带 provenance。

安装与启用

在 DSH 会话里粘贴一行:

plugin_manager({ action: "install_bundle", target: "dsh-inline-visuals" })

不需要 clone,不需要配置。装完之后 agent 的工具列表里会出现 show_visual 和 edit_visual。

README 标注需要 DeepSeek Harness v0.2.1-rc.3 或更高版本。想从源码装的话,README 给出的替代路径是 github:YLifeOnlyOnce/dsh-inline-visuals,或者把 Plugin Manager 指向本地 clone,细节见仓库里的 docs/reference.md。

典型用法

装完直接跟 agent 说需求。README 给了几个例子:

Compare three caching strategies — hit rate, memory and complexity — as a chart.

Turn that into a horizontal stacked bar, and add value labels.

Draw our release pipeline as a flow.

Show last week’s traffic as a heatmap.

改样式也不用从头重画,edit_visual 会在原 spec 上打补丁。

读论文和训练日志的场景:

Plot train/val loss for 8 epochs on a log scale, smoothed, with error bars.

Draw the ROC curve from these points and mark AUC.

Make a confusion matrix for cat/dog/bird from this table.

Compare these four models on accuracy, F1 and latency — highlight the best.

Cluster these embeddings by class and show a t-SNE scatter.

它是怎么工作的

模型发出一个小的声明式 spec,插件校验后把它写到 tool result 上,客户端用宿主的主题来渲染。因为数据已经在会话日志里,回放时不需要再调一次模型。

实现层面的几个细节:

  • 卡片存在会话日志(tool/result.meta)里,不是单独的文件。
  • 插件自身不做任何网络请求。
  • 模型只发数据,不发 HTML 或 JavaScript。
  • 图表类(canvas)支持点击数据点,一键把后续提问带进输入框。
  • 纯文本客户端会收到一份紧凑的文字摘要,信息不丢。
  • spec 的稳定版本是 version: 3,v1/v2 的 spec 仍然能渲染。
  • 导出:复制为 JSON 或 CSV,图表导出 PNG,手绘卡片导出 SVG。

适合谁,以及注意点

适合想在 DSH 里读论文、看训练曲线、做数据对比,并且希望图能留在会话里的人。功能上跟绘图工具重叠,但胜在不用离开对话、不用二次加工。

注意几点:

  1. 插件以当前 DSH 进程的权限运行,安装前应当先读一遍源码,确认它的行为符合预期。许可证是 MIT(© 2026 YLifeOnlyOnce)。
  2. README 上的种类数(18)和仓库描述(14)不一致,如果要做选型,建议直接看 docs/reference.md 的参数清单。
  3. 仓库目前只有 1 个 star,关注度很低,遇到问题基本得自己提 issue 或者改源码。
  4. 按 README 的说法,目前只有 chart 类画布支持点击追问,其他类型的交互还没上。

小结

这个插件的价值是把「图」变成会话日志的一部分:图出现在回答下方,能点击追问、能改、能导出,重开会话还在。安装一行命令,不需要配置。

  • 目录页:https://www.skillhub.cn/plugins/YLifeOnlyOnce/dsh-inline-visuals
  • GitHub:https://github.com/YLifeOnlyOnce/dsh-inline-visuals
羽毛球分组比赛记分
小程序二维码

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

小夜