前言¶
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 一行,需原样粘贴进回复,例如:

支持的 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 去掉脚本、外部引用等,并注入主题样式与箭头标记。
一轮里的三步¶
- 模型判断某处需要图,调用
draw_figure。 - 宿主插件校验 spec、渲染、写文件,返回一行 Markdown。
- 模型把该行写入回复,由常规 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。
典型用法¶
- 按上文命令为指定
<profile>安装 bundle 并重启 DSH。 - 在需要「讲清结构」的会话里向模型提问;模型在合适段落调用
draw_figure,把返回的markdown插入正文。 - 需要对比两种方案时,使用
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。