dsh-inline-figures:在 DSH 回答段落间插入矢量图

前言

DeepSeek Harness(DSH)里,模型长回答往往是一大段 Markdown:结构、流程、对比都挤在文字里,扫一眼很难抓住关系。常见做法是写得更短、更平,或者单独画图再贴链接——前者仍可能漏掉结构,后者又打断阅读节奏。

下面介绍社区插件 dsh-inline-figures(维护者 0mao0)。它在宿主侧给模型一个 draw_figure 工具:把 JSON 图规格渲染成 SVG,写入当前会话工作区,并返回一行普通 Markdown 图片链接;模型把该行插在段落之间,最终呈现为「文字—图—文字」,不新增客户端 UI,也不把图折叠成工具卡片。项目在 SkillHub 目录分类为「趣味换装」,当前 GitHub 星标为 0、fork 为 1;许可证 MIT,版本 0.1.0。

这是什么

dsh-inline-figures 是 DSH 宿主插件(Cordis bundle):当回答需要被理解而不只是被扫读时,让模型在合适位置调用 draw_figure,生成确定性 SVG,经 Markdown 图片通道全宽嵌入回复。

与「纯文字 + 表格/长列表」相比,插件还在注入的指导里倾向约 80% ASD-STE100(简化技术英语)风格的 prose,并把「部件、关系、流程、顺序、对比、数量」类内容优先变成图而不是再写一段。

核心功能

draw_figure 工具

接口形状(来自 README):

draw_figure({ spec, alt, slug? }) -> { path, markdown, warnings }

模型提交预设结构的 spec,插件校验、布局、渲染后返回 markdown 一行,需原样粘贴进回复,例如:

![Current vs target](.dsh-figures/s3f2a9c1e-6f7d-4/1-compare.png)

支持的 kind 及限制(节选):

kind 用途 限制
raw_svg 树、分支流水线、状态机等自定义结构 spec 32 KB
architecture 分层框、P0/P1 徽章、危险分组、反馈边 2–6 层 × 1–6 节点,8 条边
compare 左右列对比,语义色调 default/danger/ok/muted 1–6 行
timeline 竖向步骤,done/active/todo 2–10 步
chart bar / line / pie 1–12 点

compare 示例 spec:

{ "kind": "compare", "title": "Current vs target",
  "rows": [{ "left": { "label": "Manual review" },
             "right": { "label": "Automated gate", "tone": "ok" } }] }

图始终是 SVG(非 ASCII 框线、非代码块里的假图)。raw_svg 会经 sanitizer 去掉脚本、外部引用等,并注入主题样式与箭头标记。

一轮里的三步

  1. 模型判断某处需要图,调用 draw_figure。
  2. 宿主插件校验 spec、渲染、写文件,返回一行 Markdown。
  3. 模型把该行写入回复,由常规 Markdown 图片渲染全宽图。

模型忘记画图时

工具无法自行把图写进回复,插件在宿主侧读「即将结束」的回答:若含表格、五项及以上列表、对比、计划、流程等结构却没有任何图,会在 agent/turn-stopping 侧 steering,促使模型再画一步。该路径每会话最多 steer 两次、间隔两 turn,且仅在会话里至少画过一次后才启用;从未画过的会话则在下次工具结果上附提醒,不额外占一步模型调用。

落盘与隐私

仅写入会话工作区,无网络上传、无遥测:

<session workspace>/.dsh-figures/<session>/
├── N-slug.svg
├── N-slug.png
└── .gitignore

每会话目录保留最新 200 个图(按修改时间 prune)。删文件会导致旧回复里图片失效,目录应视为对话资产。栅格化失败时回复可改用 SVG 的 inline data URI,并在同目录写入 raster-diagnostic.txt。

安装与启用

DSH 自带插件管理器,无需手抄文件,也无需对 profile 跑 npm 安装命令。

# from npm
dsh plugin --profile <profile> add dsh-inline-figures

# or straight from this repository, no registry involved
dsh plugin --profile <profile> add github:0mao0/dsh-inline-figures

Web 侧栏 Plugins 页可用表单完成同样操作;智能体也可用 plugin_manager 的 install_bundle(目标为本地 clone 目录——安装方式以你环境文档为准,本文不展开 clone 流程)。

安装后重启 DSH:宿主插件代码按进程加载一次,不重启可能仍显示旧列表或未加载新代码。无单独 build 步;依赖由 harness 提供,sharp 带预编译二进制。

package.json 以 peer 依赖锁定已验证的 DSH 运行时;版本不匹配时安装会报 incompatible-version。README 写明在 dsh 0.2.0-rc.2(cordis 4.0.4)上验证。若必须在其他 runtime 上安装,可使用(将占位符换成实际版本):

dsh plugin --profile <profile> allow-version dsh-inline-figures@<version> --dsh-version <runtime> --accept-risk

插件要求 Node >= 22。

典型用法

  1. 按上文命令为指定 <profile> 安装 bundle 并重启 DSH。
  2. 在需要「讲清结构」的会话里向模型提问;模型在合适段落调用 draw_figure,把返回的 markdown 插入正文。
  3. 需要对比两种方案时,使用 kind: "compare" 的 spec,标题与行标签遵循短名词短语(图内标签风格与 ASD-STE100 最严一档一致:每标签最多约六个词、一概念)。

具体 preset 字段与校验错误信息以仓库 README 与 draw_figure 返回的 warnings 为准。

适用场景与注意

适合:运维/开发说明、架构与流程讲解、前后状态对比、步骤时间线、少量数据柱状/折线/饼图——凡是「扫文字不如看一眼关系」的长回答。

注意:

  • 插件以当前 DSH 进程权限运行,安装前请自行查看 GitHub 源码 与 MIT 许可证,确认符合你的安全与合规要求。
  • 社区目录 SkillHub 插件页 与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,目录是独立站点。
  • 图文件与会话绑定;清理工作区或 prune 后,历史消息中的相对路径图片可能失效。
  • 运行时版本与 README 验证版本不一致时,优先解决 peer 依赖拒绝或显式 allow-version,避免挂载后行为异常。

结尾

dsh-inline-figures 把矢量说明图嵌进模型回复的正文节奏里:同一事实可以少一段冗长描述,多一张落在段落间的结构图。若要安装或看对比示意,可打开目录页 skillhub.cn/plugins/0mao0/dsh-inline-figures 与仓库 github.com/0mao0/dsh-inline-figures。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye