DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

Oliver13211 /

Oliver13211/dsh-plugin-flowchart

Verified

FlowChart — DeepSeek Harness 插件:代理用 YAML 在对话右侧边栏画流程图。15 种形状、四向布局、四层校验、投影持久化、对话内卡片、导出 SVG/PNG,零运行时依赖

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@1046f986

FlowChart — DeepSeek Harness 对话流程图插件

dsh tests

当代理的文字解释难以理解时,代理调用 FlowChart 工具,用一段 YAML 描述流程图;插件把这张图渲染到对话右侧边栏的独立标签页里——形状、方向、颜色、连线、文字,直接看懂结构。对话内同时出现一张带缩略图的卡片,点开即回边栏。

样例:灰度发布流程

功能

  • YAML DSL:15 种形状(起止/判断/存储/文档/外部…)、四向布局(TB/BT/LR/RL)、 自定义填充与描边(默认带 1.5px 描边,三种写法可关)、连线带文字与箭头(5 种箭头 × 4 种方向 × 3 种线型)、分组框、图例。上限保护:60 节点 / 120 边 / 20000 字符。
  • 四层校验:词法(Tab/缩进定位到行)→ 结构(拼错枚举给 "did you mean" 提示, 含别名表 rhombus→diamond)→ 图语义(孤立点/自环/环均为警告,闭环边自动绕行)→ 容量。错误信息永远可操作:line N · path: message — hint。
  • 边栏面板:滚轮缩放、拖拽平移、双击适应、方向临时切换、多图切换、 导出(复制 SVG / 下载 SVG / 下载 PNG)。明暗主题自动跟随宿主。
  • 对话内卡片:标题 + N 节点 · M 连线 + 缩略图 + 「在右侧边栏打开」; 校验失败显示前 3 条错误,帮用户理解代理为什么在重试。
  • 可复现:图内容来自会话日志的投影折叠(projection fold),重启/恢复后原样重建; file 来源以调用时快照持久化,文件后续改动不影响已出的图。
  • 同 id 替换:代理迭代修图时版本 +1 就地更新,不堆标签页。
  • 双语:中文/英文界面文案,跟随宿主 locale。

安装

方式一:从本地目录(开发态)

git clone https://github.com/Oliver13211/dsh-plugin-flowchart.git
cd dsh-plugin-flowchart
npm install   # 可跳过:本插件零运行时依赖,install 只为工具链

然后在 DeepSeek Harness 的插件管理里以本地路径挂载,或直接把本目录作为 profile 的链接依赖:

{ "@local/dsh-plugin-flowchart": "link:/absolute/path/to/dsh-plugin-flowchart" }

方式二:打包为 bundle zip

npm pack

将得到的 .tgz 通过 Harness 插件市场的「安装本地包」入口安装。

配置

键 默认 说明
autoOpen true 新图自动展开右侧边栏
defaultDirection TB 文档未写 direction 时的方向
maxNodes / maxEdges / maxYamlChars 60 / 120 / 20000 容量上限
showLegendByDefault false 自动从用到的形状合成图例
export.svg / export.png true / true 导出菜单里的格式开关

使用

对代理说人话即可——解释里出现步骤、分支、循环、状态流转、调用链时, 代理会自己决定调用 FlowChart。也可以直接让它画:

用 FlowChart 把这段部署流程画出来

模型可见的调用示例(yaml 内联与 file 读工作区文件二选一):

id: deploy            # 同 id 重发 = 替换(版本 +1)
title: 灰度发布流程
direction: TB
nodes:
  - { id: start, label: 提交发布, shape: stadium, fill: "#4f7cff" }
  - { id: gate,  label: 冒烟通过?, shape: diamond, fill: "#fff4e5", stroke: "#f59e0b" }
  - { id: roll,  label: 回滚, shape: note, dashed: true, stroke: "#ef4444" }
edges:
  - { from: start, to: gate }
  - { from: gate, to: roll, label: 否, style: dashed, color: "#ef4444" }
groups:
  - { id: ci, label: 灰度阶段, members: [gate], style: dashed }
legend:
  - { shape: diamond, label: 判断 }

架构

一个 Cordis bundle,两半:

index.js               Host 半:工具注册、file 读取、Config、投影注册
lib/dsl.js             YAML 子集解析(行/列定位,Tab 与缩进翻译成可操作提示)
lib/normalize.js       第 2–4 层校验 + 归一化 → Client 直接渲染的文档
lib/projection.js      会话投影:从事件流折叠出图清单(key=flowchart, stateVersion=2)
lib/metrics.js         文本度量与换行(CJK 1.0em / 拉丁 0.55em,可注入 measureText)
lib/layout.js          九步布局:分层 → barycenter → 坐标 → 锚点 → 路由 → 组框 → 视图盒
lib/svg.js             15 种形状、箭头、主题 token 解析、图例(纯函数,字符串输出)
client/ui.js           边栏面板 + 工具卡片 + 导出交互(普通 ESM,Node 可直接测)
client.js              生成物:browser 模块系统要求单文件,由 build 脚本内联
scripts/build-client.mjs

设计约束(也是踩过坑后的硬规则):

  • 零运行时依赖:YAML 子集解析、布局、渲染全部自写;不 import 任何 @deepseek-ai/*(链接的本地 bundle 解析不到 app 树)。
  • 布局是纯函数:无随机、无时钟,同一文档任何设备同一几何。
  • 投影永不抛错:注册表在 live drive 和 restore 两条路径上都不守卫, 投影抛错 = 会话不可用。本插件三层防抛(sanitize / try-catch / fail-soft schema), 任何情况下只降级为"图暂时不对",不拖垮宿主。
  • Client 半是生成物:浏览器模块系统按包 id 解析、相对 import 无解析器, 改完源码必须 npm run build:client(npm test 会检查生成物是否落后)。

开发与测试

npm test              # 8 套测试 199 条:DSL / 校验投影 / 布局 / 渲染 / 工具契约
                      #   / M4 打磨 / 持久化回放 / 客户端组件 / 客户端 bundle
npm run build:client  # 改过 lib/*.js 或 client/ui.js 后必须跑
npm run samples       # 重新生成 samples/*.svg(人眼复核用)

持久化测试直接回放真实会话日志:从投影缓存行播种、折叠尾部,与全量折叠 逐字节对比——这就是"重启会话后图仍在"的验收。

文档

完整设计文档(DSL 规范、校验分层、数据流、决策记录与踩坑史)见 flowchart-plugin-design.md,或仓库根的 DESIGN.md(同一份文档的随仓库副本)。要紧的几节:

  • §6 DSL 规范 —— 所有字段与上限
  • §7 校验与错误反馈 —— 错误信息的形状
  • §18.2 实现期补充决策 —— 9 处"照文档原文写会坏"的地方及理由
  • §20.3 故障排查 —— 工具消失 / 会话不可用 / 导出全黑等实测故障

License

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit 1046f986a2de

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout