前言¶
在 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