dsh-workflow-map:把长会话收成一张可交互的分步工作流地图

前言

在 DeepSeek Harness(DSH)里跑多步任务时,会话事件日志很容易涨到上千条。想回答「现在在第几步、这一步做了什么、整体完成了多少」,往往要在日志里来回翻。社区插件 dsh-workflow-map(维护者 Joz739,npm 包名同插件名,当前版本 0.3.1,MIT 许可证)把同一会话折叠成一条纵向主流程:每步一张单元卡,附带可核对的进度、工具与文件类型摘要,并在运行中支持向「下一步」队列注入提示词,而不必等当前轮次结束。下面介绍它是什么、核心能力、安装方式与使用时的边界。

这是什么

dsh-workflow-map 是 DSH 的 bundle 插件:宿主半读取会话事件与可选的 PAE 计划文件,经本地 HTTP 提供视图数据;浏览器半在三个入口用同一套组件渲染面板——侧边栏面板项(sidebar.panellist)、主内容区(main)、会话标签栏(conversation.view)。数据与判定规则来自日志投影,不读文件正文、不发起外网请求。

分类上属于「工作流」类插件;社区目录页:https://www.skillhub.cn/plugins/Joz739/dsh-workflow-map,源码与文档:https://github.com/Joz739/dsh-workflow-map。

核心功能

分步总览与单页布局

主界面是一条纵向串行流程,每步一个单元;单元左右两侧最多各挂 2 个圆形「类型接口」(读取类工具在左,写入与执行类在右,溢出部分在单元上标注「另有 N 类未画在两侧」)。点单元 → 右页展示该步记录;点接口 → 右页展示该类调用清单;点调用行可就地展开参数与结果。Esc 关闭右页但不关面板。采用单页布局是为了切换分步时主流程滚动位置不随右页开合而乱跳。

可核验的进度估算

每步百分比按固定优先级取值(实现于 src/fold.mjs 的 percentFor):

  1. 待办表实测 todos:round(已完成项 / 总项 × 100),并与模型自报取较小值,上限 99。
  2. 模型自报 model:该步 stepProgress/report 与自报高水位取较大值,上限 100。
  3. 时间基线 baseline:已用时间相对本会话已完步耗时中位数,上限 90。
  4. 计划步序 baseline:steps:无历史耗时时用 当前步序 / 总步数,上限 90。

未结束的步不会显示 100%;已结束(完成或失败)的步固定为 100%。进度条下方可显示「N 分钟前估计」,表示该数字的陈旧程度。界面上会区分来源(例如自报与估算),避免把来路不明的百分比当真。

热注入(steer / unsteer)

会话跑到一半想补一句要求时,可通过插件写入宿主 next-step 队列:当前轮次照常跑完,消息在当前轮次结束后由下一步取用,调用不会触发 cancel。

端点 方法 语义
/dsh-workflow/steer POST 写入提示词到 next-step;响应含 messageId
/dsh-workflow/unsteer POST 按 messageId 移除尚未被取用的消息

HTTP 200 只表示消息已进入收件箱,不等于模型已读;「待拾取 / 已接下 / 已撤销」均由日志事件判定。注入文本上限 2000 字,body 上限 64 KiB;常见错误码见 README(如 409 表示未运行或已被取用)。

视觉状态与三入口一致

运行中且为当前焦点的单元使用流动渐变外框等指标;设置项「减少动效」或系统 prefers-reduced-motion 会关闭动画。三个入口共用同一组件、同一轮询与同一套 localStorage 偏好;会话标签栏入口还会配合样式在该页收起宿主输入框,切回对话页后由宿主恢复。

设置与导出

齿轮可改配色(rainbow / brand / soft)、动效(full / always / static)、详情深度(summary / title)、节点上限(30 / 60 / 120 / 0)。导出支持复制或下载 Markdown / JSON 快照,含分步、状态、百分比来源与节点清单,不含文件正文。

安装与启用

插件以当前 DSH 进程权限运行,安装前建议自行查看仓库源码与 MIT 许可证。DSH 社区插件目录是独立站点,与 DeepSeek / 幻方无官方从属关系;在 Plugins → Discover 搜索 workflow 找到 dsh-workflow-map 点安装是 README 推荐的最快方式,装完按提示重启 DSH。若市场暂未收录,可用命令行安装同一 npm 包。

命令行(desktop profile):

cd "$HOME/.dsh/profiles/desktop"
pnpm add dsh-workflow-map
dsh plugin --profile desktop add dsh-workflow-map

随后把 "dsh-workflow-map" 追加到该目录 package.json 的 dsh.profile.bundles 数组末尾。

本地源码联调:

cd "$HOME/.dsh/profiles/desktop"
pnpm add "dsh-workflow-map@link:/path/to/dsh-workflow-map"

生效机制: 宿主半(lib/index.js、src/fold.mjs、src/route.js)需重启 DSH 进程;浏览器半(client.js)改完后刷新页面(F5)即可。首次安装后需重启一次。

简易校验:

ls "$HOME/.dsh/profiles/desktop/node_modules/dsh-workflow-map"
curl -i "http://127.0.0.1:<GUI端口>/dsh-workflow/state?sessionId=<会话ID>"

期望 state 端点 HTTP 200 与 JSON body;界面上侧边栏、主内容区与会话标签栏应出现同一面板。

典型用法

  1. 安装并重启 DSH 后,打开一条步骤较多的会话,从侧边栏、主内容区或会话标签栏任一入口打开工作流地图。
  2. 查看页头或卡片上的步序与进度(注意百分比来源与「N 分钟前估计」)。
  3. 点击正在运行的步骤单元,在右页底部「热注入」输入条发送补充要求;若发错且在未被取用前,可按界面流程撤销(对应 unsteer 语义)。
  4. 需要留档时,在设置里导出 Markdown 或 JSON 快照。

长任务、带 PAE 计划(<项目>/.pae/<会话ID>/orchestrator.json)的编排会话更适合用地图对齐「计划步」与「日志步」;插件对计划文件只读,缺失时降级为仅用待办表,不抛异常。

适用场景与注意

适合: 需要在 DSH GUI 里一眼看清多步进度、工具/文件类型分布,并在不中断当前轮次的前提下 steer 下一步的开发者。

环境与约束:

  • DeepSeek Harness 0.2.x 及以上;Node.js ≥ 20。
  • 端点挂在宿主既有 GUI 端口,不新开监听。
  • 状态有截断上限(例如单步节点 300、全会话节点 1200、参数/结果各 200 字展示等),极大日志下历史中间段可能被折叠丢弃,详见 README「数据边界」。
  • 折叠视图只依赖事件时间戳,同一事件序列可重放得到同一视图。

结尾

dsh-workflow-map 把「第几步、做了什么、完成多少、能否中途 steer」从日志检索变成一屏可读、规则可追溯的视图,并与侧边栏、主区、会话标签三处入口保持一致。进一步了解与 issue:https://github.com/Joz739/dsh-workflow-map;社区目录:https://www.skillhub.cn/plugins/Joz739/dsh-workflow-map。

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

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

Xiaoye