Pular para o conteúdo principal
W

dsh-workflow-library

wilshi/dsh-workflow-library

Reusable workflows: orchestration scripts saved as files under .dsh/workflows, discovered from the project, and run by name with arguments, so they live in git and can be shared. Four tools: list, show, run, save.

Instalar

dsh plugin --profile web add github:wilshi/dsh-workflow-library

README

dsh-workflow-library

把工作流存成文件,按名字重复运行。可进 git、可 code review、可团队共享。

DSH 自带 workflow 工具,让模型写编排脚本扇出到多个子 agent。但那段脚本是每次现写的,跑完就没了。

这个插件补上缺的那一层:工作流以文件形式存在项目中,按名字运行,可以带参数。

安装

从 npm:

dsh plugin add dsh-workflow-library

或者直接从 GitHub 装(会走构建脚本):

dsh plugin add github:WilShi/dsh-workflow-library

工作流长什么样

在项目里建 .dsh/workflows/review-files.js:

---
name: review-files
description: 并发审查多个文件
whenToUse: 需要一次性审查一批文件时
---
const files = (args && args.files) || []

const results = await Promise.all(
  files.map(async (file) => {
    const answer = await agent({ prompt: `审查 ${file},指出最严重的问题` })
    return { file, review: String(answer) }
  }),
)

return { reviewed: results.length, results }

上半部分是元信息,下半部分是脚本正文——就是原生 workflow 工具里写的那个脚本体,一字不改。

用起来

> 跑一下 review-files,审查 src/index.ts 和 src/cli.ts

模型会调用 workflow_run,把 args 传进去。之后每次都只需要说「跑一下 review-files」。

四个工具

工具作用
workflow_list列出当前项目可用的工作流
workflow_show看某个工作流的元信息和完整脚本
workflow_run按名字运行,可传 args 参数
workflow_save把刚跑通的流程存成模板文件

目录约定

和 DSH 的 skill 约定保持一致,按优先级查找:

优先级路径
1<项目根>/.dsh/workflows/
2<项目根>/.agents/workflows/
3<DSH_HOME>/workflows/

项目根 = 最近的包含 .git 的祖先目录。多个目录里有同名工作流时,优先级高的生效(项目内的会覆盖用户目录的)。

为什么不直接用原生 workflow 工具

原生 workflow 工具本插件
脚本来源模型每次现写从磁盘读取
能否复用❌✅ 按名字
能否进 git❌✅
能否团队共享❌✅
能否传参✅✅

原生工具适合一次性的编排。这个插件适合反复用的流程——比如每次发版前的检查清单、每周的依赖审计、固定格式的报告生成。

验证

端到端测试跑的是真实引擎,不是 mock:

$ DSH_REPO=~/Documents/Code/deepseek-harness npm run e2e

  ok  真实引擎与工具注册表已启动
  ok  注册 4 个工具: workflow_list, workflow_show, workflow_run, workflow_save
  ok  workflow_list 发现工作流: fanout
  ok  workflow_show 返回脚本 8 行
    run = {"name":"fanout","stopReason":"completed","agentsStarted":3,"value":{"count":3,"answers":[42,42,42]}}
  ok  workflow_run 真实执行:3 个子 agent,耗时 50ms
  ok  workflow_save 写入 saved-e2e,并立即出现在列表
  ok  运行刚保存的工作流成功
  ok  未知名字给出可执行报错
E2E_PASS

启动的是真的 SystemPrompt + ToolRuntime + SessionProjection + SubagentRuntime + WorkerThreadWorkflowEngine,脚本在真实 worker 线程里执行,agent() 真的扇出。只有子 agent provider 被替换成桩,所以不需要模型 key 就能跑。

npm run verify 还会跑类型检查、构建和加载测试。

实现说明

  • 编排引擎用的是 DSH 自带的(ctx.workflowEngine.start()),本插件不实现任何编排逻辑
  • 只在 tools 上注册,引擎在调用时才查找,所以没装引擎的部署也能正常加载插件(workflow_run 会给出明确报错)
  • 前置元信息解析是极简 YAML 子集,只支持 key: value

开发

npm install --ignore-scripts
npm run verify   # tsc --noEmit && tsdown && node scripts/load-test.mjs

License

MIT

Plugins relacionados