dsh-agent-team-workflow:在 DSH 里用节点图编排可恢复的智能体团队工作流

前言

在 DeepSeek Harness(DSH)里做多步任务时,常见做法是反复让主会话「下一步做什么」:子智能体、命令、人工确认散落在对话里,中断后很难从同一状态继续,审查不通过时的回环也要靠人记流程。若希望把「谁执行、何时停等人、失败走哪条边」写成可校验的定义,并由运行时统一调度与落盘,就需要工作流层面的插件,而不是只在提示词里描述流程。

下面介绍社区插件 dsh-agent-team-workflow(维护者 lyingloong,分类:工作流)。它以 apiVersion: 2 的 JSON 定义节点图,运行时负责调度、权限检查与状态持久化;节点类型覆盖 agent、command、HTTP、human、fan-out/join、subworkflow 等,并附带实时 Web 看板。README 标明 v2 节点运行时已完全取代旧的 stage/kanban 引擎,无 v1 兼容层与状态迁移。

这是什么

dsh-agent-team-workflow 是 DSH 插件,包名 dsh-agent-team-workflow。工作流是一张有类型的节点图:边根据节点的 outcome 选择下一跳;运行时拥有调度与权限,节点负责具体执行。状态按 DSH 会话落在 <dataDir>/sessions/<sessionId> 下(workflow.json 存定义与权限授予,runs/<runId>.json 存 token、context 与状态),写入为原子 JSON,宿主重启后可从同一 run 文档恢复。

核心概念与能力

术语

术语 含义
Definition apiVersion: 2 的 JSON:providers、nodes、edges、entry
Node 类型包括 agent、command、http、human、fanout、join、subworkflow 等
Edge {from, to, on},on 为 outcome,默认 complete
Token 某节点的一次执行;一次 run 含多个 token
Run 一次工作流执行,含 input、context 与 tokens
Artifact / context 节点输出在 context.nodes.<id>,可映射到后续节点
Permission grant 用户批准的 command/HTTP 能力,与工作流一并存储
Lane 模型路由:adapter、model、reasoningEffort、maxTokens

节点类型(节选)

  • agent:拉起 DSH 子智能体;可配置 lane、prompt、outcomes,或通过有序 models 列表在 provider/子智能体错误时依次 failover。
  • command:在会话 cwd 执行 shell;退出码 0 为 complete,非 0 为 fail(需有 on: "fail" 的出边,否则 run 可能以 unhandled_failure 结束)。
  • http:fetch;2xx 为 complete,否则 fail。
  • human:等待 team_workflow_decide 或 Web 看板;默认 outcomes 为 approve、reject。
  • fanout / join:按 items 分支执行,join 按 all/any/quorum 聚合。
  • gate:连续运行开关;会话 control 启用时通过,否则等待队列累积(README 节点表中的 gate)。
  • subworkflow:内联嵌套定义,输出为嵌套 context。

权限不写在 definition 里;使用 command 或 http 节点前,会话须向用户申请。模式有 deny(默认)、allowlist、full;拒绝时节点以 permission_denied 失败且不重试。

会话工具

工具 作用
team_workflow_define 校验并存储定义与 permission grant
team_workflow_start 用 input 对象创建 run
team_workflow_run 执行就绪节点,直至等待人工/join 或结束
team_workflow_decide 处理等待中的 human token
team_workflow_status 查看定义摘要与最新 run

插件面向 Web GUI:通过 dsh.client 注入侧边栏与会话相关 UI 模块,提供 live web board(非独立公众号式排版需求,此处仅陈述 README/package 描述)。

安装与启用

要求 Node.js >= 22.5(package.json 中为 >=22.5.0),DSH >=0.2.1-rc.2。许可证 MIT。

从 GitHub 安装:

dsh plugin --profile desktop add github:lyingloong/dsh-agent-team-workflow

或从本地目录安装(路径改为你的绝对路径):

dsh plugin --profile desktop add /absolute/path/to/dsh-agent-team-workflow

安装后重启 Harness 进程,并刷新 Web GUI。

典型用法

在会话里用自然语言描述流程即可,由模型组装 definition 并调用工具。README 示例:

创建一个自动开发的工作流:一个实现者、一个测试命令、一个审查者;审查不通过回到实现,通过后我批准才合并。

典型顺序:

  1. team_workflow_define — 校验并保存定义与权限授予。
  2. team_workflow_start — 传入 input 创建 run。
  3. team_workflow_run — 跑到等待或结束。
  4. 遇到 human 节点时用 team_workflow_decide 或看板决策。
  5. 需要时用 team_workflow_status 查看状态。

若工作流包含命令或 HTTP,须先获得用户授权,例如 allowlist:

{
  "command": { "mode": "allowlist", "allow": ["pnpm", "node"] },
  "http": { "mode": "allowlist", "allow": ["api.github.com"] }
}

definition 骨架(与 README 中 dev-team 示例一致,边体现审查回环与人工合并):

{
  "apiVersion": 2,
  "name": "dev-team",
  "entry": "seed",
  "providers": [
    { "id": "default", "adapter": "deepseek", "model": "host-default" }
  ],
  "nodes": [
    { "id": "seed", "type": "human", "config": { "outcomes": ["approve", "reject"] } },
    {
      "id": "implement",
      "type": "agent",
      "role": "engineer",
      "inputs": { "request": "$input.request" },
      "config": { "lane": "default", "prompt": "Implement the request." }
    },
    {
      "id": "test",
      "type": "command",
      "config": { "command": "pnpm test", "timeoutMs": 300000 }
    },
    {
      "id": "review",
      "type": "agent",
      "role": "reviewer",
      "inputs": { "implementation": "$nodes.implement.output", "tests": "$nodes.test.output" },
      "config": { "outcomes": ["pass", "needs_revision"], "prompt": "Review the change." }
    },
    { "id": "merge", "type": "human", "config": { "outcomes": ["approve", "reject"] } }
  ],
  "edges": [
    { "from": "seed", "to": "implement", "on": "approve" },
    { "from": "implement", "to": "test", "on": "complete" },
    { "from": "test", "to": "review", "on": "complete" },
    { "from": "review", "to": "merge", "on": "pass" },
    { "from": "review", "to": "implement", "on": "needs_revision" }
  ]
}

输入解析支持 $input、$nodes.<id>.output、$item/$index(fan-out)、$context 等。

适用场景与注意

适合需要在 DSH 会话内固定「多角色 agent + 命令/HTTP + 人工闸门 + 并行分支」且希望 run 可恢复、可在 Web 看板跟踪的团队式流程。agent 节点可按 lane 或 models 列表做模型路由与 failover;gate 节点用于与连续运行控制配合。

安装前建议阅读仓库源码与 MIT 许可证。插件以当前 DSH 进程权限执行 command 与 HTTP;未授予权限时不应强行设计含 shell/外网的节点,可改用仅 agent/human/fanout/join 的受限流程。社区目录 SkillHub 与 DeepSeek/幻方无官方从属关系;DSH 生态强调「一切皆插件」,本插件为社区维护的工作流扩展。

链接

  • 目录页:https://www.skillhub.cn/plugins/lyingloong/dsh-agent-team-workflow
  • GitHub:https://github.com/lyingloong/dsh-agent-team-workflow

经过上面的步骤,你可以在 Harness 里用图结构表达审查回环与人工合并,并把执行状态留在会话数据目录中以便恢复与查看。

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

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

小夜