前言¶
在 DeepSeek Harness(DSH)里让智能体「画一张流程图」,常见做法有两种:一是让模型输出一段 Mermaid 源码,再由人粘贴到渲染器里出图;二是写一个直接操作文件系统的脚本工具,让模型生成文件后自行落盘。前者流程断在对话之外,后者绕开了 Harness 对文件写入的审批与沙箱策略。
deepseek-harness-flowchart 走的是另一条路:它给 DSH 挂载一个 render_flowchart 工具,在本地把 Mermaid flowchart 渲染成主题化、自包含的 SVG,文件写入则嵌套委托给 Harness 已注册的 write 工具。DSH 的理念是「一切皆插件」,这个仓库就是一个可直接安装的 profile bundle。
这是什么¶
lizhecome/deepseek-harness-flowchart 是由 lizhecome 维护的 DeepSeek Harness 插件,npm 包名 @lizhecome/dsh-flowchart,版本 0.1.0,MIT 许可证。安装后它会添加 render_flowchart 工具,将 Mermaid flowchart 源码渲染为精美、主题化、自包含的 SVG。社区目录页将它归在「趣味换装」分类下。
渲染完全本地且确定性,不发起 LLM 或网络请求,基于 beautiful-mermaid 1.1.3 实现 Mermaid 解析、布局、主题与 SVG 生成。
核心功能¶
render_flowchart 工具¶
工具参数如下:
| 参数 | 必填 | 说明 |
|---|---|---|
source |
是 | 完整的 Mermaid flowchart 源码 |
file_path |
是 | SVG 目标路径,由已安装的 write 工具解析,必须以 .svg 结尾 |
theme |
否 | 15 个主题之一,省略时使用部署配置的默认主题 |
transparent |
否 | 去除主题背景,默认 false |
padding |
否 | 画布内边距,0–200,默认 40 |
node_spacing |
否 | 同层水平间距,8–160,默认 24 |
layer_spacing |
否 | 层间垂直间距,8–240,默认 40 |
支持的主题共 15 个:zinc-light、zinc-dark、tokyo-night、tokyo-night-storm、tokyo-night-light、catppuccin-mocha、catppuccin-latte、nord、nord-light、dracula、github-light、github-dark、solarized-light、solarized-dark、one-dark。
输入限制¶
仅接受带显式方向(TD/TB/BT/LR/RL)的 Mermaid flowchart/graph 文档。时序图、类图、状态图、ER 图、XY 图等其他 Mermaid 图表会被拒绝。
渲染安全¶
在分发 SVG 之前,插件会做一轮清理:移除渲染器自带的外部字体导入,拒绝脚本、事件处理器、内嵌浏览器文档、JavaScript URL 和外部 href,并对完整的自包含结果应用 maxSvgBytes 限制。
复用 write 工具¶
插件从不通过 Node 的环境文件系统直接写文件。生成的 SVG 内容以嵌套调用分发给 Harness 已注册的 write 工具,因此工具限制、审批、沙箱策略、先读后覆盖规则、取消和最终结果归一化都保持原有效力。若 write 不可用或被拒绝,render_flowchart 会失败,而不会声称成功。
安装与启用¶
需要 DeepSeek Harness 0.1.0-rc.6 或更高版本,并且 GitHub CLI 需有该仓库的访问权限(README 标注其为私有仓库)。安装分三步:
gh repo clone lizhecome/deepseek-harness-flowchart
cd deepseek-harness-flowchart
dsh plugin --profile web add --ignore-workspace-root-check .
先用 GitHub CLI 克隆仓库,再在仓库目录内把它添加到 web profile。README 说明,add . 会在 pnpm 切换到 profile 目录之前锚定到发起调用的检出目录。包清单声明了 dsh.bundle patch,安装时会自动挂载工具及其 invariant 伴生包。
一次性任务可以用 headless profile 代替 web。卸载命令如下:
dsh plugin --profile web remove --ignore-workspace-root-check @lizhecome/dsh-flowchart
典型用法¶
向智能体描述需要的流程图并指定 SVG 输出位置,例如:
Create a left-to-right flowchart of the checkout process and save it as docs/checkout.svg. Use the catppuccin-mocha theme.
模型会调用 render_flowchart,传入的 Mermaid 源码类似:
flowchart LR
cart([Cart]) --> payment{Payment valid?}
payment -->|Yes| success([Order placed])
payment -->|No| retry[Retry payment]
retry --> payment
成功调用只返回输出路径、主题和字节数;SVG 正文通过嵌套的 write 工具传递,不会复制进父级模型结果。模型只看到一个工具 schema,配置或工具可用性的变化体现在请求的 tool-schema 前缀里。
配置¶
后续的 profile patch 会整行替换 config,所以需要重新声明所有想保留的字段:
- id: flowchart
config:
defaultTheme: github-light
maxSourceChars: 50000
maxSvgBytes: 2000000
| 字段 | 默认值 | 说明 |
|---|---|---|
defaultTheme |
tokyo-night |
工具调用省略 theme 时使用的主题 |
maxSourceChars |
50000 |
完整 Mermaid 输入的正整数上限 |
maxSvgBytes |
2000000 |
完整 UTF-8 SVG 的正整数上限 |
无效的边界值或配置了不可用的主题,会在插件加载时直接失败。
适用场景与注意¶
适合在 DSH 里经常需要产出流程图文档的团队:架构说明、checkout 之类业务流程,希望结果直接是可入库的主题化 SVG,同时不放宽文件写入策略。
使用前有几点需要确认:
- 仅支持流程图,其他 Mermaid 图表会被拒绝;仅输出 SVG,不包含 PNG/PDF 转换。
- 覆盖已有文件遵循已安装
write工具的策略,可能需要 agent 先读取该文件。 - 移除 web 字体导入后,查看者将使用本地
Inter或系统无衬线字体。 - 插件以当前 dsh 进程的权限运行,安装前建议检查源码与许可证(本项目为 MIT)。
- README 标注仓库为私有,克隆需要 GitHub CLI 有对应访问权限。
结尾¶
这个插件的价值在于把「Mermaid 源码」到「可交付的 SVG 文件」这一步收进了智能体的工具链:渲染本地、确定、无网络请求,文件写入仍然走 Harness 已有的 write 工具及其策略,15 个主题让产出可以直接放进文档。
- 目录页:https://www.skillhub.cn/plugins/lizhecome/deepseek-harness-flowchart
- GitHub:https://github.com/lizhecome/deepseek-harness-flowchart