前言¶
在 DeepSeek Harness(DSH)里跑一轮智能体会话,工具调用、用户输入、助手输出会按时间顺序堆在对话区。步骤一多,很难一眼看清「哪一步调了什么、前后依赖是什么」。社区里已有 trajectory 类方案;dsh-plan-graph 是 HR2AY 维护的 out-of-tree 插件包,把当前会话的快照在浏览器端渲染成可平移缩放的流程图,并在会话视图环上增加 Plan Graph 标签页。
下面介绍它的定位、核心能力与安装方式。事实以 GitHub 仓库 README 为准;SkillHub 目录页见 skillhub.cn/plugins/HR2AY/DSH-Plan-Graph。
这是什么¶
dsh-plan-graph(npm 包名 dsh-plan-graph,当前版本 0.3.0)是一个 DSH 插件 bundle:从会话快照读取工具调用与消息,在客户端生成交互式流程图。维护者为 HR2AY,许可证 MIT,SkillHub 分类为「模型推理」。
它不替代 DSH 核心,而是通过标准 client plugin 服务(slots、locale、layout)注册到 conversation.view / details,在会话界面旁挂一个图视图。
核心功能¶
流程图视图¶
Plan Graph 标签页提供平移/缩放画布、按状态着色的节点卡片、节点详情面板,以及若干工具栏开关:
- Hide tool calls:隐藏工具调用节点(图内生效;若部署的
ui-conversation消费了chatNodeVisibility服务,对话区也会同步过滤)。 - Group by turn:按轮次分组。
- Follow latest:跟随最新节点。
- Merge into conversation:将图侧栏合并进右侧真实对话侧栏。
节点类型覆盖工具调用、助手输出、用户输入、steering、context 等;较新版本对 user/steering 节点显示「输入」,context 节点显示「已完成」。
收藏(Favorites)¶
工具栏按钮打开底部居中面板,展示带颜色类型块、摘要与时间的收藏列表。收藏按会话持久化到 localStorage,键名为 dsh.plan-graph.fav.<sessionId>;按节点 id 去重,上限 100 条。
添加方式:节点右键菜单,或将节点拖到工具栏收藏按钮。点击条目可在图内居中并闪烁高亮;若节点已离开当前窗口,则按 seq/callId 回退到对应对话行。删除通过节点右键菜单完成。
节点右键菜单¶
右键节点可:添加/移除收藏、定位至对话区(工具调用节点)、复制节点信息、查看详情。菜单在点击外部、按 Escape 或画布交互时关闭。
定位至对话区(Locate in conversation)¶
将任意节点映射到对话区对应行:
- 工具调用:按
callId - 助手输出:按
data.finalNode.seq - 用户输入 / steering / context:按
data.seq
随后等待 data-chat-flow-key 锚点出现,滚动并闪烁高亮;10 秒超时则静默回退到图内定位。若部署提供了上游 chatLocate 可选服务,优先使用该服务。
图内高亮通过 CSS animationend 自动清除(动态 client 半侧不暴露浏览器定时器全局,setTimeout 不可用)。
安装与启用¶
插件以当前 dsh 进程权限运行;从 GitHub 源码安装时 prepare 脚本会在本机执行构建。安装前应检查源码与 MIT 许可证,并固定 commit SHA。
本地目录或 registry¶
在包含该包的目录下执行:
dsh plugin --profile demo add ./plan-graph-bundle
dsh --profile demo
从 GitHub 安装¶
源码安装,非预构建产物;prepare 会在安装时构建 client.js:
dsh plugin --profile demo add github:<you>/plan-graph-bundle#<sha>
pnpm 默认拒绝运行 prepare,需将 pnpm 打印的包键写入 profile 的 pnpm-workspace.yaml:
allowBuilds:
dsh-plan-graph: true
然后重新执行 add。allowBuilds 表示允许该包在安装时在本机执行代码;请固定 #<sha> 并只安装可信来源。
从 tarball 安装¶
无需构建权限:在包目录执行 pnpm pack,再:
dsh plugin --profile demo add ./dsh-plan-graph-0.3.0.tgz
从 npm 安装¶
包发布后:
dsh plugin --profile demo add dsh-plan-graph
验证¶
不启动完整进程即可检查层是否加载:
dsh --profile demo --dump-config
输出中应出现 # == dsh-plan-graph 层。
典型用法¶
- 按上文命令将插件加入 profile 并启动
dsh --profile demo。 - 打开或新建会话;默认仍为 Chat 视图,点击视图环上的 Plan Graph 进入流程图。
- 拖动画布浏览调用链;用工具栏切换「隐藏工具调用」「按轮次分组」「跟随最新」。
- 右键节点收藏、复制信息或「定位至对话区」;需要时将图侧栏 Merge into conversation 合并到右侧对话栏。
- 若希望会话默认打开流程图,需由部署方提供
conversationDefaultView服务({ id: 'plan-graph' });插件本身不强制改默认视图。
开发者修改浏览器端逻辑时,编辑 client.body.js,运行 npm run prepare(或 node scripts/build-client.mjs)重新生成 client.js;不要直接改生成文件。
适用场景与注意¶
适合谁
- 需要在 DSH 会话中可视化工具调用链路与消息依赖的开发者。
- 已在用 DSH 插件体系、希望 out-of-tree 扩展会话视图的团队。
依赖与限制
- 浏览器半侧依赖 DSH web surface 提供的
conversation.view/details及若干 client 注入(@deepseek-ai/dsh-client-locale、dsh-client-runtime、dsh-client-ui-conversation、dsh-client-ui-layout)。 - 「Hide tool calls」在未打补丁的 stock
ui-conversation上只影响图,不改变对话区;需消费chatNodeVisibility的部署才双向生效。 - 「定位至对话区」依赖对话视图层的
data-chat-flow-key锚点约定;若上游重命名,功能会静默回退到图内定位而非报错。 chatNodeVisibility服务提供subscribe(fn);缺少时从 Plan Graph 切回 Chat 可能导致对话页空白(较新版本已针对此问题修复)。
SkillHub 为独立社区目录,与 DeepSeek / 幻方无官方从属关系;安装插件前请自行审阅 HR2AY/DSH-Plan-Graph 源码。
结尾¶
dsh-plan-graph 把会话里的工具调用与消息画成可交互流程图,并支持收藏、右键菜单与对话区双向定位,适合在 DSH 里调试复杂 agent 轨迹。目录页:skillhub.cn/plugins/HR2AY/DSH-Plan-Graph;源码与完整说明:github.com/HR2AY/DSH-Plan-Graph。