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。

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

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

小夜