DSH Workflow:可保存、可续跑的 JavaScript 工作流与子代理编排

前言

在 DSH 里做审查、并行探索或多步任务时,常见做法是反复在会话里口述「先 A 再 B、两边并行」,或依赖单次对话的记忆。任务中断、需要重跑,或希望把同一套步骤固化到项目里时,缺少一层可组合、可恢复的执行模型,成本会落在人工核对产物和重复派发上。

下面介绍社区插件 dsh-workflow(仓库 gulagala001/dsh-workflow,维护者 gulagala001,分类为工作流)。它在 DSH 上提供可保存、可组合的 JavaScript 工作流,沿用 DSH 原生子代理(subagents)、Jobs、Token 预算与 Git worktree 隔离,并支持从成功调用前缀续跑。

这是什么

DSH Workflow(安装标识 dsh-workflow-plus)面向需要在 Harness 内编排多步子代理、并希望工作流可复用、可恢复的场景。README 将其概括为:保存、组合与续跑工作流,沿用 DSH 原生子代理。

插件通过固定 GitHub Release 分发(当前 README 标注 release 0.1.1,适配 DSH 0.2.1-rc.2),采用 MIT 许可证。SkillHub 目录页:gulagala001/dsh-workflow。

核心功能

以下能力均来自仓库 README 与 package.json 说明。

工作流表达与复用

  • 用 parallel()、pipeline()、phase() 和 log() 描述依赖与执行状态。
  • 工作流可直接传入脚本,或通过 scriptPath 与项目中的命名工作流复用。
  • 导出 meta(如 name、description、phases)供会话侧展示阶段信息。

原生子代理与 Jobs

  • 子代理沿用宿主模型与权限,产生正常模型用量。
  • run_in_background: true 时使用原生 Jobs;可用 job_output 查看、job_kill 停止。

续跑与隔离

  • resumeFromRunId:在同一会话内复用未变化且已成功的调用前缀,其后调用重新执行。
  • isolation: 'worktree':从当前 Git HEAD 创建独立目录;保留有改动结果,不自动合并。
  • 嵌套工作流支持一层,共享并发、总调用数、取消信号与预算。

Token 预算

  • 用户消息末尾可使用 +500k / +1m 等形式设置共享输出 Token 目标;达到目标后停止新派发,已运行调用可收尾。
  • 缺少可信用量时停止继续派发;模型请求、网络与文件权限仍由宿主与工具提供方负责。

数据落盘位置

  • 项目侧:.omd/workflows/、.omd/worktrees/。
  • 独立运行与预算数据:DSH_HOME/dsh-workflow/。
  • 卸载插件不会主动删除已保存脚本、运行记录和 worktree。

环境与安装

适用环境: DSH 0.2.1-rc.2,Node.js 22.19+(见 package.json 的 engines)。

安装前请自行查看 Release 包与仓库源码及 MIT 许可证;插件以当前 DSH 进程权限运行,子代理与工具调用与宿主一致。

在实际使用的 DSH 实例中,打开 插件 → + 添加插件,粘贴官方安装地址(勿凭名称拼接其他安装命令,README 亦提醒不要安装其他作者的 npm 同名近似包):

https://github.com/gulagala001/dsh-workflow/releases/download/v0.1.1-dsh.0.2.1-rc.2/dsh-workflow-plus-0.1.1-dsh.0.2.1-rc.2.tgz

等当前任务结束后,按宿主提示启用或完整重启该实例,沿用原 profile 与数据。升级、卸载与校验和见仓库 安装指南 与对应 Release 的 SHA256SUMS。

先试一件事

在已配置模型的会话中输入:

使用 workflow 并行审查 auth 和 storage,汇总发现;不要修改文件。

成功标志: 会话工作流面板显示真实阶段、成员与状态,子代理在原生子会话中运行。

典型用法:最小工作流

下面示例来自 README,展示 phase 与 parallel 下并行两个只读审查子代理:

export const meta = {
  name: 'review-modules',
  description: 'Review two modules',
  phases: [{ title: 'Review' }],
};
phase('Review');
return await parallel([
  () => agent('Review auth for correctness. Do not edit files.', { label: 'auth' }),
  () => agent('Review storage for correctness. Do not edit files.', { label: 'storage' }),
]);

会话标题旁的工作流入口会展示阶段与成员;子代理由原生子会话承载。更完整的 API 与边界见仓库 workflow.md。

运行边界与续跑注意

能力 条件与行为
嵌套工作流 支持一层,沿用共享并发、总调用数、取消信号与预算
resumeFromRunId 同会话内复用成功前缀;之后调用重新执行
isolation: 'worktree' 独立目录,不自动合并
共享输出 Token 目标 消息末尾 +500k / +1m 等

续跑只复用符合条件的成功调用前缀,不会把续跑当作任意操作的事务重放。README 明确:续跑会重新执行成功前缀之后的调用,操作前应先核对已有产物与外部副作用。

适用场景与注意

适合需要把「并行审查多个模块」「多阶段 pipeline」「后台 Job + 前台汇总」等重复模式写成脚本、并在同一会话或项目中反复运行的 DSH 用户。

不适合把它理解为绕过宿主权限或用量控制的沙箱:子代理仍消耗模型 Token,文件与网络能力仍取决于 DSH 与已启用工具。社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系;选用插件前以 GitHub Release 与文档为准。

文档与反馈

目的 链接
安装、升级、卸载 docs/install.md
用法与边界 docs/workflow.md
架构 docs/architecture.md
版本 Releases
Issue Issues

反馈时请提供完整 DSH / 插件版本、实际入口、最小复现步骤及预期与实际表现;日志与截图需先移除私人数据。

目录页:https://www.skillhub.cn/plugins/gulagala001/dsh-workflow
源码与 Release:https://github.com/gulagala001/dsh-workflow

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

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

Xiaoye