Claude Code Dynamic Workflows:多智能体协作编程的范式革命


摘要

2026年5月28日,Anthropic正式发布Claude Opus 4.8,并在Claude Code中推出了革命性的Dynamic Workflows(动态工作流)功能。该功能允许单个编排智能体同时生成多达1000个并行子智能体,它们协同工作、相互验证结果,并持续迭代直到答案收敛。在真实项目测试中,Bun项目使用该功能将75万行代码从Zig语言迁移到Rust,测试套件兼容性达到99.8%,仅用时11天

本文将深入剖析Dynamic Workflows的技术架构、核心机制、实践实现模式,以及其对AI编程行业的深远影响。


目录

  1. 背景:单智能体编程的瓶颈
  2. 什么是Dynamic Workflows?
  3. 技术架构详解
  4. 实现模式与代码示例
  5. 实战案例分析
  6. 与传统多智能体框架的对比
  7. 未来展望
  8. 结论

1. 背景:单智能体编程的瓶颈

1.1 顺序处理的局限性

单个Claude Code会话功能强大,但本质上是顺序执行的。当它正在研究API文档时,无法同时编写代码;当它正在编写代码时,无法同时运行测试。任何单一会话的瓶颈都是一次只能处理一个任务,而复杂项目通常有数十个可以并行执行的独立任务。

顺序执行(传统模式):
┌─────────────────────────────────────────────────────────┐
│  任务A ──► 任务B ──► 任务C ──► 任务D                     │
│  时间:T_A + T_B + T_C + T_D                             │
│  假设每个任务耗时10分钟,总计 = 40分钟                   │
└─────────────────────────────────────────────────────────┘

并行执行(Dynamic Workflows):
┌─────────────────────────────────────────────────────────┐
│  任务A ─┬─► 结果A                                       │
│  任务B ─┼─► 结果B                                       │
│  任务C ─┴─► 结果C                                       │
│  时间:max(T_A, T_B, T_C) ≈ 10分钟                     │
│  加速比:3-4倍                                          │
└─────────────────────────────────────────────────────────┘

1.2 控制平面的困境

传统单智能体系统面临上下文溢出问题。所有观察、失败、修正和工具调用结果都堆积在同一条上下文轨迹中。随着任务规模扩大,越来越难区分哪些信息仍然有效。

Dynamic Workflows的解决方案:将编排逻辑从"心理计划"转变为可执行代码。Claude首先生成工作流脚本,然后由运行时执行。脚本负责阶段管理、循环控制、并发协调、结果聚合和状态恢复,而各个子智能体负责实际的文件读取、命令执行和判断工作。


2. 什么是Dynamic Workflows?

2.1 核心定义

Dynamic Workflows是内置于Claude Code中的多智能体编排模式。当工作流启动时:

  1. Claude根据用户提示动态规划
  2. 将任务分解为子任务并分配给并行运行的子智能体
  3. 子智能体独立验证彼此的工作
  4. 结果在合并前进行检查
  5. 工作流持续迭代直到答案收敛

2.2 核心能力

能力项规格
最大并行子智能体数最高1000个
单次运行最大并发数16个
单个任务最大总数1000个
验证机制对抗性模式——智能体相互审查
持久化进度实时保存,中断可恢复
输出形式单一协调报告,而非原始结果堆砌

2.3 激活方式

有两种方式启动Dynamic Workflows:

方式一:直接请求

用户:"创建一个工作流来审计我们整个代码库的安全漏洞"

方式二:Ultracode模式

用户:在effort菜单中开启"ultracode"设置
- 将effort级别设置为xhigh
- Claude自动决定何时使用工作流处理任务

2.4 核心原理:Ultracode = xhigh + 对话中系统消息

┌─────────────────────────────────────────────────────────────┐
│                     ULTRACODE 模式                           │
├─────────────────────────────────────────────────────────────┤
│  组件1:xhigh effort级别                                     │
│  ├── 为大型任务规划提供深度推理能力                          │
│  ├── 有足够空间进行复杂的编排思考                            │
│  └── 建议设置大max_tokens(推荐64K)                         │
│                                                              │
│  组件2:对话中系统消息                                        │
│  ├── 授予启动工作智能体的持久权限                            │
│  ├── 编排上下文跨轮次保持                                    │
│  └── 支持长时间运行的协调任务                                │
│                                                              │
│  组合效果:编排器同时拥有深度思考能力和执行权限               │
└─────────────────────────────────────────────────────────────┘

3. 技术架构详解

Architecture

3.1 系统架构图

┌─────────────────────────────────────────────────────────────────────────┐
│                    DYNAMIC WORKFLOWS 系统架构                           │
│                       (Claude Code + Opus 4.8)                         │
└─────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────┐
│                            用户输入层                                   │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │  任务提示:"将我们的认证系统迁移到OAuth 2.0"                      │   │
│  │  或:"开启Ultracode模式以自动检测工作流"                          │   │
│  └─────────────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────────────┘
                                    │
                                    ▼
┌─────────────────────────────────────────────────────────────────────────┐
│                      编排器层(xhigh effort)                          │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │                    Claude Opus 4.8 编排器                        │   │
│  │  ┌───────────────────────────────────────────────────────────┐ │   │
│  │  │  1. 任务分解引擎                                           │ │   │
│  │  │     - 分析提示词中的独立子任务                              │ │   │
│  │  │     - 识别任务间的依赖关系                                  │ │   │
│  │  │     - 生成工作流脚本(可执行计划)                         │ │   │
│  │  └───────────────────────────────────────────────────────────┘ │   │
│  │  ┌───────────────────────────────────────────────────────────┐ │   │
│  │  │  2. 子智能体生成管理器                                      │ │   │
│  │  │     - 创建工作智能体(最多16个并发)                       │ │   │
│  │  │     - 分配任务上下文和工具权限                             │ │   │
│  │  │     - 管理智能体生命周期和超时                             │ │   │
│  │  └───────────────────────────────────────────────────────────┘ │   │
│  │  ┌───────────────────────────────────────────────────────────┐ │   │
│  │  │  3. 结果聚合与验证器                                        │ │   │
│  │  │     - 收集所有子智能体的输出                               │ │   │
│  │  │     - 运行对抗性验证智能体                                  │ │   │
│  │  │     - 持续迭代直到收敛                                     │ │   │
│  │  └───────────────────────────────────────────────────────────┘ │   │
│  └─────────────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────────────┘
                                    │
                    ┌───────────────┼───────────────┐
                    │               │               │
                    ▼               ▼               ▼
┌─────────────────────────────────────────────────────────────────────────┐
│                        子智能体执行层                                   │
│                                                                         │
│  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐           │
│  │   工作智能体A   │  │   工作智能体B   │  │   工作智能体C   │           │
│  │   (研究员)   │  │   (实现者)   │  │   (审查员)   │           │
│  │                 │  │                 │  │                 │           │
│  │ 工具集:         │  │ 工具集:         │  │ 工具集:         │           │
│  │ - WebSearch     │  │ - Read          │  │ - Read          │           │
│  │ - WebFetch      │  │ - Write         │  │ - Grep          │           │
│  │ - Read          │  │ - Edit          │  │ - Glob          │           │
│  │                 │  │ - Bash          │  │                 │           │
│  │ 状态: ✓ 已完成  │  │ 状态: 运行中    │  │ 状态: 等待中   │           │
│  └─────────────────┘  └─────────────────┘  └─────────────────┘           │
│                                                                         │
│  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐           │
│  │   工作智能体D   │  │   工作智能体E   │  │   工作智能体F   │           │
│  │   (测试员)   │  │   (文档员)   │  │   (调试员)   │           │
│  │                 │  │                 │  │                 │           │
│  │ 工具集:         │  │ 工具集:         │  │ 工具集:         │           │
│  │ - Read          │  │ - Read          │  │ - Read          │           │
│  │ - Write         │  │ - Write         │  │ - Bash          │           │
│  │ - Bash          │  │ - Edit          │  │ - Grep          │           │
│  │                 │  │                 │  │                 │           │
│  │ 状态: 等待中    │  │ 状态: 等待中    │  │ 状态: 等待中    │           │
│  └─────────────────┘  └─────────────────┘  └─────────────────┘           │
│                                                                         │
│  (单个任务最多可扩展至1000个工作智能体)                               │
└─────────────────────────────────────────────────────────────────────────┘
                                    │
                                    ▼
┌─────────────────────────────────────────────────────────────────────────┐
│                       验证与迭代层                                      │
│                                                                         │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │                    对抗性验证模式                                │   │
│  │                                                                  │   │
│  │    智能体A ──────► 发现:"Auth存在SQL注入"                      │   │
│  │                           │                                     │   │
│  │                           ▼                                     │   │
│  │    验证器X ──────► 检查:"这真的可利用吗?"                      │   │
│  │                           │                                     │   │
│  │              ┌────────────┴────────────┐                        │   │
│  │              │                         │                        │   │
│  │         ✓ 已确认                   ✗ 误报                       │   │
│  │              │                         │                        │   │
│  │              ▼                         ▼                        │   │
│  │      包含在报告中               丢弃该发现                      │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │                    收敛检查循环                                 │   │
│  │                                                                  │   │
│  │   ┌──────────────┐                                              │   │
│  │   │ 已收敛?     │──── 否 ──► 迭代:生成更多智能体              │   │
│  │   └──────┬───────┘                                              │   │
│  │          │ 是                                                    │   │
│  │          ▼                                                      │   │
│  │   ┌──────────────┐                                              │   │
│  │   │ 最终报告     │────► 用户接收协调后的输出                    │   │
│  │   └──────────────┘                                              │   │
│  └─────────────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────────────┘
                                    │
                                    ▼
┌─────────────────────────────────────────────────────────────────────────┐
│                            输出层                                      │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │                      协调报告                                    │   │
│  │  - 汇总所有已验证智能体的发现                                    │   │
│  │  - 可操作的建议                                                  │   │
│  │  - 代码变更(如有)以统一补丁格式呈现                            │   │
│  │  - 而非1000份独立的原始结果                                      │   │
│  └─────────────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────────────┘

3.2 工作流脚本生成

当Claude创建工作流时,它会生成一个可执行的编排脚本。以下是简化示例:

# auto_generated_workflow.py
# 由 Claude Opus 4.8 编排器自动生成
# 请勿手动编辑 - 这是工作流执行计划

from dataclasses import dataclass
from typing import List, Dict, Any, Optional
import asyncio

@dataclass
class WorkflowTask:
    """表示子智能体的工作单元"""
    task_id: str                    # 任务唯一标识
    description: str                # 任务描述
    tools: List[str]                # 该任务的工具权限
    context: Dict[str, Any]         # 共享上下文
    dependencies: List[str]         # 必须先完成的依赖任务ID
    expected_output: str             # 期望输出格式

class DynamicWorkflow:
    """
    编排并行子智能体执行的类,包含验证机制。
    基于用户提示分析动态生成。
    """
    
    def __init__(self, user_prompt: str):
        self.user_prompt = user_prompt
        self.tasks: List[WorkflowTask] = []
        self.results: Dict[str, Any] = {}
        self.max_parallel = 16      # 最大并发数
        self.total_limit = 1000     # 单任务最大总数
    
    async def plan(self) -> List[WorkflowTask]:
        """
        分析用户提示并分解为独立子任务。
        使用零样本思维链推理。
        """
        # Claude Opus 4.8 使用 xhigh effort 进行规划
        # 识别任务边界、独立性和依赖关系
        
        analysis = await self._analyze_prompt(self.user_prompt)
        
        tasks = []
        for task_spec in analysis['subtasks']:
            task = WorkflowTask(
                task_id=task_spec['id'],
                description=task_spec['description'],
                tools=self._determine_tools(task_spec),
                context=analysis['shared_context'],
                dependencies=task_spec.get('deps', []),
                expected_output=task_spec['output']
            )
            tasks.append(task)
        
        self.tasks = tasks
        return tasks
    
    async def execute(self) -> Dict[str, Any]:
        """
        执行工作流,并行运行子智能体和验证。
        """
        # 阶段1:独立任务并行执行
        independent_tasks = [t for t in self.tasks if not t.dependencies]
        
        await self._execute_parallel(
            tasks=independent_tasks,
            max_concurrent=self.max_parallel
        )
        
        # 阶段2:依赖任务(在依赖完成后执行)
        dependent_tasks = [t for t in self.tasks if t.dependencies]
        for task in dependent_tasks:
            if all(self.results.get(dep) for dep in task.dependencies):
                await self._execute_single(task)
        
        # 阶段3:对抗性验证
        verified_results = await self._adversarial_verify(self.results)
        
        # 阶段4:收敛检查和迭代
        if not self._check_convergence(verified_results):
            new_tasks = await self._plan_refinement(verified_results)
            await self._execute_parallel(new_tasks)
            verified_results = await self._adversarial_verify(
                {**self.results, **new_results}
            )
        
        # 阶段5:聚合结果
        return self._aggregate_results(verified_results)
    
    async def _execute_parallel(
        self, 
        tasks: List[WorkflowTask],
        max_concurrent: int
    ) -> Dict[str, Any]:
        """
        并发执行多个任务。
        信号量确保不超过 max_parallel 限制。
        """
        semaphore = asyncio.Semaphore(max_concurrent)
        
        async def run_with_limit(task: WorkflowTask) -> Dict[str, Any]:
            async with semaphore:
                # 使用任务上下文生成 Claude Code 子智能体
                result = await self._spawn_subagent(
                    task_id=task.task_id,
                    description=task.description,
                    tools=task.tools,
                    context=task.context
                )
                self.results[task.task_id] = result
                return result
        
        await asyncio.gather(*[run_with_limit(t) for t in tasks])
        return self.results
    
    async def _adversarial_verify(
        self, 
        results: Dict[str, Any]
    ) -> Dict[str, Any]:
        """
        运行验证智能体检查彼此的工作。
        核心创新:智能体尝试反驳彼此的结论。
        """
        verified = {}
        
        for task_id, result in results.items():
            # 生成对抗性智能体来测试该发现
            verifier = WorkflowTask(
                task_id=f"verify_{task_id}",
                description=f"尝试反驳:{result['finding']}",
                tools=["Read", "Bash", "Grep"],
                context={"claim": result['finding'], "evidence": result['evidence']},
                dependencies=[task_id],
                expected_output="confirmed OR refuted"
            )
            
            verdict = await self._spawn_subagent(
                task_id=verifier.task_id,
                description=verifier.description,
                tools=verifier.tools,
                context=verifier.context
            )
            
            if verdict['status'] == 'confirmed':
                verified[task_id] = result
            # 如果被反驳,则丢弃该发现
        
        return verified
    
    def _check_convergence(self, results: Dict[str, Any]) -> bool:
        """
        检查工作流是否已收敛到稳定结果。
        如果未收敛,可能会触发额外迭代。
        """
        # 检查多个验证尝试的一致性
        # 检查新迭代是否产生新发现
        # 如果结果稳定且全面,返回 True
        return len(results) > 0  # 简化检查

4. 实现模式与代码示例

4.1 模式一:侦察-构建-验证模式

这是使用功能开发最可靠的三阶段模式。

阶段一:侦察(并行研究)

# workflow_prompt_scout.py
# 侦察阶段:研究,不修改任何内容

"""
在编写任何代码之前,并行研究以下内容:

1. 数据库层:
   - 读取 src/db/schema.ts 中的当前数据库架构
   - 识别与用户数据和权限相关的表
   - 检查我们使用的ORM模式(Prisma、Drizzle、原始SQL)

2. 认证模式:
   - 搜索 src/middleware/ 中现有的认证中间件
   - 识别我们如何处理会话和令牌
   - 检查现有的OAuth或SSO实现

3. API结构:
   - 读取 src/api/routes/ 的结构
   - 识别路由处理器的模式
   - 检查验证和错误处理约定

4. 测试设置:
   - 检查 tests/ 目录结构
   - 识别测试框架(Jest、Vitest、Playwright)
   - 检查现有的集成测试模式

报告每个领域的研究结果。不要修改任何文件。
"""

# Claude Code 将并行生成4个研究智能体

阶段二:构建(并行实现)

# workflow_prompt_build.py
# 构建阶段:基于侦察结果进行实现

"""
基于侦察结果,并行实现:

1. 数据库层 (src/db/):
   - 创建迁移:migrations/001_add_oauth_tables.sql
   - 在用户架构中添加OAuth相关字段
   - 创建查询函数:findByProvider、linkAccount、unlinkAccount
   
   架构示例:
   ```sql
   CREATE TABLE oauth_accounts (
       id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
       user_id UUID REFERENCES users(id),
       provider VARCHAR(50) NOT NULL,  -- 'google', 'github', 'microsoft'
       provider_user_id VARCHAR(255) NOT NULL,
       access_token_encrypted TEXT,
       refresh_token_encrypted TEXT,
       expires_at TIMESTAMP,
       created_at TIMESTAMP DEFAULT NOW(),
       UNIQUE(provider, provider_user_id)
   );
  1. API路由 (src/api/auth/):

    • POST /auth/oauth/connect - 将OAuth提供商链接到账户
    • POST /auth/oauth/callback - 处理OAuth回调
    • DELETE /auth/oauth/disconnect - 取消链接提供商
    • GET /auth/oauth/providers - 列出已链接的提供商

    路由结构示例:

    // src/api/auth/oauth/connect.ts
    import { Router } from 'express';
    import { z } from 'zod';
    
    const router = Router();
    
    const connectSchema = z.object({
      provider: z.enum(['google', 'github', 'microsoft']),
      redirectUri: z.string().url().optional()
    });
    
    router.post('/connect', async (req, res) => {
      const { provider } = connectSchema.parse(req.body);
      // 生成OAuth授权URL
      const authUrl = generateOAuthUrl(provider, {
        clientId: process.env[`${provider.toUpperCase()}_CLIENT_ID`],
        redirectUri: `${req.origin}/api/auth/oauth/callback`,
        scope: ['email', 'profile']
      });
      res.json({ authUrl });
    });
    
    export default router;
    
  2. 前端组件 (src/components/auth/):

    • OAuthProviderButton.tsx - 每个提供商的按钮
    • ConnectedAccounts.tsx - 已链接账户列表
    • LinkAccountModal.tsx - 链接新账户的模态框
  3. 测试 (tests/auth/):

    • oauth.connect.test.ts - 测试OAuth流程
    • oauth.callback.test.ts - 测试回调处理
    • oauth.security.test.ts - 测试安全影响

每个智能体应参考侦察结果以保持一致性。 """

Claude Code 将并行生成4个实现智能体


#### 阶段三:验证(并行测试)

```python
# workflow_prompt_verify.py
# 验证阶段:测试和审查

"""
并行执行:

1. 运行现有测试套件:
   ```bash
   npm test -- --run

报告我们引入的任何回归。

  1. 运行新的OAuth测试:

    npm test -- --run tests/auth/oauth/
    

    验证所有OAuth流程是否正常工作。

  2. 安全审计:

    • 检查令牌存储漏洞
    • 验证OAuth端点上的CSRF保护
    • 检查连接/断开上的速率限制
  3. 代码审查:

    • 阅读每个修改过的文件
    • 检查是否符合项目模式
    • 标记任何看起来不对的地方
  4. 类型检查和Lint:

    npm run typecheck
    npm run lint
    

    修复任何错误。 """

Claude Code 将并行生成5个验证智能体


### 4.2 模式二:自定义子智能体库

为团队创建可重用的专家智能体:

#### 研究员智能体

```markdown
<!-- .claude/agents/researcher.md -->
---
name: researcher
description: 使用网络搜索和文档进行技术主题的深度研究
tools:
  - WebSearch
  - WebFetch
  - Read
  - Grep
  - Glob
---

你是一个软件开发团队的技术研究专家。

## 你的职责
- 在网络上搜索最新的文档、发布说明和最佳实践
- 读取本地文件以了解现有代码库模式
- 交叉引用多个来源以验证准确性
- 返回带有来源URL的结构化发现

## 你绝不做的
- 修改任何文件(你只有代码库的只读权限)
- 编写代码(那是实现者的工作)
- 做出架构决策(那是编排器的工作)

## 输出格式

始终按以下结构组织你的发现:

1. 摘要(3-5句话)
2. 主要发现(要点列表)
3. 代码示例(如适用)
4. 来源(URL)
5. 注意事项或已知问题

## 研究方法论

对于每个主题:
1. 从官方文档开始
2. 检查最近的博客文章或会议演讲
3. 寻找真实的案例研究
4. 通过社区讨论验证(Reddit、Hacker News)
5. 注意任何冲突信息或争议

实现者智能体

<!-- .claude/agents/implementer.md -->
---
name: implementer
description: 编写遵循项目约定的生产级TypeScript/React代码
tools:
  - Read
  - Write
  - Edit
  - Bash
  - Glob
---

你是一名高级TypeScript开发者。

## 规则
- 编写任何代码前先阅读 CLAUDE.md
- 遵循代码库中的现有模式 - 匹配样式、命名、结构
- 始终包含TypeScript类型 - 除非绝对必要,否则不使用 `any`
- 显式处理错误 - 不要静默捕获
- 代码优先考虑可读性,而非取巧

## 编写代码前
1. 检查代码库中是否存在类似模式(使用Grep)
2. 读取你计划修改的文件(使用Read)
3. 了解项目结构(对相关目录使用Glob)

## 编写代码后
- 通过运行适当的构建/lint命令验证文件编译
- 检查新功能是否有测试

## 错误处理模式

始终使用此模式:
```typescript
try {
  const result = await riskyOperation();
  return { success: true, data: result };
} catch (error) {
  if (error instanceof SpecificErrorType) {
    return { success: false, error: '用户友好的消息' };
  }
  // 记录完整错误以供调试
  console.error('意外错误:', error);
  return { success: false, error: '发生意外错误' };
}

#### 审查员智能体

```markdown
<!-- .claude/agents/reviewer.md -->
---
name: reviewer
description: 不修改的代码审查 - 为人工审查识别问题
tools:
  - Read
  - Grep
  - Glob
---

你是一名高级代码审查员。

## 你的职责
- 阅读代码变更并识别潜在问题
- 检查安全漏洞
- 验证对项目约定的遵守
- 寻找性能反模式
- 识别缺失的错误处理
- 标记技术债务或重构机会

## 你绝不做的
- 修改任何文件
- 编写代码或测试
- 批准或拒绝PR(那是人工的工作)

## 输出格式

发现的问题

严重

  • 带有文件:行号引用的问题描述

警告

  • 问题描述

建议

  • 可选的改进

积极发现

  • 做得好的是什么

摘要

总体评估和风险级别

4.3 模式三:Git Worktrees实现最大并行度

对于完全独立的功能,使用git worktrees:

#!/bin/bash
# setup_parallel_features.sh

# 为并行功能开发创建worktrees
git worktree add ../myproject-notifications feature/oauth-notifications
git worktree add ../myproject-billing feature/oauth-billing
git worktree add ../myproject-analytics feature/oauth-analytics

echo "Worktrees已创建:"
git worktree list

# 现在你可以同时在每个目录中运行Claude Code
#!/bin/bash
# run_parallel_sessions.sh

# 终端1:通知功能
cd ../myproject-notifications
claude << 'EOF'
构建OAuth集成以支持通知:
- 将OAuth账户链接到通知偏好设置
- 设置中的OAuth提供商图标
- 跨提供商同步通知设置
- 使用每个提供商测试OAuth流程
EOF

# 终端2:计费功能  
cd ../myproject-billing
claude << 'EOF'
为计费门户实施OAuth:
- 计费仪表板的SSO
- 将计费权限链接到OAuth身份
- 通过OAuth记录计费访问审计日志
EOF

# 终端3:分析功能
cd ../myproject-analytics
claude << 'EOF'
添加OAuth跟踪和分析:
- 跟踪OAuth提供商使用统计
- 用户采用指标
- 提供商比较仪表板
EOF

4.4 模式四:错误恢复和状态持久化

# workflow_state_manager.py
# 处理工作流中断和恢复

import json
import os
from pathlib import Path
from typing import Dict, Any, Optional
from datetime import datetime

class WorkflowStateManager:
    """
    持久化工作流状态以支持从中断恢复。
    每个完成的任务都会立即保存。
    """
    
    def __init__(self, workflow_id: str, state_dir: str = ".workflows"):
        self.workflow_id = workflow_id
        self.state_dir = Path(state_dir) / workflow_id
        self.state_dir.mkdir(parents=True, exist_ok=True)
        
        self.completed_file = self.state_dir / "completed.json"
        self.pending_file = self.state_dir / "pending.json"
        self.results_file = self.state_dir / "results.json"
    
    def load_state(self) -> Dict[str, Any]:
        """
        加载之前的工作流状态(如果存在)。
        如果未找到之前的运行,则返回空状态。
        """
        if not self.completed_file.exists():
            return {"completed": [], "pending": [], "results": {}}
        
        return {
            "completed": self._load_json(self.completed_file),
            "pending": self._load_json(self.pending_file),
            "results": self._load_json(self.results_file)
        }
    
    def save_task_result(self, task_id: str, result: Dict[str, Any]):
        """
        立即保存单个任务结果。
        在每个任务完成后调用。
        """
        state = self.load_state()
        
        # 添加到已完成和结果
        if task_id not in state["completed"]:
            state["completed"].append(task_id)
        state["results"][task_id] = result
        
        # 如果存在,从待处理中移除
        if task_id in state["pending"]:
            state["pending"].remove(task_id)
        
        self._save_json(self.completed_file, state["completed"])
        self._save_json(self.results_file, state["results"])
    
    def update_pending(self, pending_tasks: list):
        """更新待处理任务列表。"""
        self._save_json(self.pending_file, pending_tasks)
    
    def get_next_tasks(self, all_tasks: list, batch_size: int = 16) -> list:
        """
        返回下一批要执行的任务。
        过滤掉已完成的任务。
        """
        state = self.load_state()
        pending = []
        
        for task in all_tasks:
            if task["id"] not in state["completed"]:
                pending.append(task)
        
        return pending[:batch_size]
    
    def checkpoint(self, workflow_state: Dict[str, Any]):
        """
        完整工作流检查点,用于复杂状态。
        """
        checkpoint_file = self.state_dir / f"checkpoint_{datetime.now().isoformat()}.json"
        self._save_json(checkpoint_file, workflow_state)
    
    def _load_json(self, path: Path) -> Any:
        if path.exists():
            return json.loads(path.read_text())
        return []
    
    def _save_json(self, path: Path, data: Any):
        path.write_text(json.dumps(data, indent=2))


# 在工作流执行中的用法
async def resume_workflow(workflow_id: str, all_tasks: list):
    """恢复中断的工作流。"""
    state_manager = WorkflowStateManager(workflow_id)
    previous_state = state_manager.load_state()
    
    print(f"恢复工作流 {workflow_id}")
    print(f"之前已完成:{len(previous_state['completed'])} 个任务")
    print(f"剩余:{len(all_tasks) - len(previous_state['completed'])} 个任务")
    
    # 获取下一批未完成的任务
    next_tasks = state_manager.get_next_tasks(all_tasks)
    
    # 带状态持久化的执行
    for task in next_tasks:
        result = await execute_task(task)
        state_manager.save_task_result(task["id"], result)
        
        # 如果再次中断,我们可以从这里恢复
        
    return state_manager.load_state()["results"]

5. 实战案例分析

5.1 Bun:75万行代码的Zig到Rust迁移(11天完成)

背景:Jarred Sumner使用Dynamic Workflows将Bun从Zig语言迁移到Rust。

具体过程

  1. 工作流1:为Zig代码库中的每个struct字段映射正确的Rust生命周期
  2. 工作流2:将每个.zig文件作为行为相同的端口编写为.rs文件
    • 数百个智能体并行工作
    • 每个文件分配两名审查员
  3. 修复循环:驱动构建和测试套件直到两者都通过
  4. 后期优化:通宵工作流处理不必要的数据拷贝

成果

  • 生成约75万行Rust代码
  • 保持99.8%的测试套件兼容性
  • 从首次提交到合并仅用11天
  • 一个工作流映射生命周期,另一个移植文件,修复循环完善结果

5.2 Klarna:大规模安全审计

背景:Klarna使用Dynamic Workflows对大型代码库进行安全审计。

Klarna高级工程经理Alessio Vallero的评价

“动态工作流对于大型代码库的发现和审查任务特别有价值。我们看到它在识别静态分析遗漏的死代码和清理机会方面有显著效果,帮助我们的工程师在维护和重构工作中更快前进。”

应用场景

  • 跨整个服务识别死代码
  • 发现传统分析遗漏的清理机会
  • 整个代码库的认证检查、输入验证、不安全模式审计

5.3 CyberAgent:从计划到实现的无缝衔接

CyberAgent首席系统工程师Ken Takao的评价

“动态工作流填补了单个子智能体和完整智能体团队之间的空白。从计划到实现自然流转,因此我们可以信任长时间运行而不会失去可见性。”

应用场景

  • 长时间运行的重构项目
  • 跨多文件迁移
  • 复杂功能实现

6. 与传统多智能体框架的对比

6.1 功能对比

功能Claude Code Dynamic WorkflowsCrewAILangGraphAutoGen
最大并行智能体数100050无限制100
内置验证✅ 对抗性
自动任务分解
进度持久化⚠️ 需定制⚠️ 需定制
代码原生编排✅ 脚本生成❌ YAML✅ Python❌ Python
收敛检测
收敛检查✅ 内置

6.2 Dynamic Workflows的关键创新

  1. 计划即代码:与基于YAML或提示的编排不同,Dynamic Workflows生成可执行的Python/TypeScript脚本,可以审查、保存和重用。

  2. 对抗性验证:智能体积极尝试反驳彼此的结论,而不仅仅是确认。这大大减少了误报。

  3. 自动收敛:编排器检查结果是否已稳定,并在检测到收敛时停止。

  4. 状态持久化:进度持续保存,实现中断恢复

  5. 单一协调输出:用户收到的是经过整理的报告,而不是1000份独立的原始结果。


7. 未来展望

7.1 行业影响

Dynamic Workflows代表了AI辅助软件开发的范式转变

  1. 从顺序到并行:以前需要数周的复杂项目现在只需数天
  2. 从单智能体到多智能体团队:专家智能体处理专家任务
  3. 从心理计划到可执行脚本:编排变得可审计和可重用

7.2 新兴模式

模式:层级编排

用户请求
    │
    ▼
编排器(xhigh effort)
    │
    ├──► 研究团队负责人
    │       ├──► 网络研究员
    │       ├──► 文档研究员  
    │       └──► 代码库研究员
    │
    ├──► 实现团队负责人
    │       ├──► 后端实现者
    │       ├──► 前端实现者
    │       ├──► DevOps实现者
    │       └──► QA实现者
    │
    └──► 验证团队负责人
            ├──► 安全审查员
            ├──► 性能审查员
            └──► 风格审查员

模式:自愈工作流

async def self_healing_workflow(task: str):
    """
    能够修复自身故障的工作流。
    """
    max_attempts = 3
    
    for attempt in range(max_attempts):
        try:
            result = await execute_workflow(task)
            
            # 检查结果是否令人满意
            if await validate_results(result):
                return result
            else:
                # 识别失败点
                failures = await diagnose_failures(result)
                
                # 生成修复计划
                repair_plan = await generate_repair_plan(failures)
                
                # 执行修复
                await execute_workflow(repair_plan)
                
        except WorkflowError as e:
            if attempt < max_attempts - 1:
                # 自我修复并重试
                await self._repair_and_retry(e)
            else:
                raise MaxRetriesExceeded(e)

7.3 对开发者的影响

变化的方面

  • 任务范围界定:将工作分解为独立单元
  • 工具选择:将工具与智能体角色匹配
  • 验证:规划如何验证多智能体输出
  • 协调:定义清晰的文件所有权和边界

不变的方面

  • 代码质量仍然重要
  • 架构决策仍然需要人工判断
  • 测试仍然是必不可少的

8. 结论

Claude Code Dynamic Workflows标志着AI辅助软件开发的重要里程碑。通过支持多达1000个并行子智能体,并配备对抗性验证和自动收敛机制,它们改变了我们处理复杂长时间运行的工程任务的方式。

核心创新包括:

  1. 任务分解智能:Claude自动将复杂提示分解为独立子任务
  2. 可执行编排:工作流脚本可审查、保存和重用
  3. 内置验证:对抗性智能体在错误到达开发者之前捕获它们
  4. 可恢复执行:中断不会丢失进度

对于开发团队,这意味着:

  • 3-4倍的更快功能开发(通过并行)
  • 通过对抗性验证获得更高质量
  • 通过增量、可审计的工作流降低风险
  • 在大型复杂代码库中获得更好的覆盖率

Bun迁移案例——11天内完成75万行代码——展示了当多智能体系统被设计为具备验证和收敛能力时,什么是可能的。

Dynamic Workflows现已在Claude Code CLI、Desktop和VS Code扩展中可用,适用于Max、Team和Enterprise计划,以及通过Amazon Bedrock、Vertex AI和Microsoft Foundry上的Claude API使用。


参考资料

  1. Anthropic. “Introducing dynamic workflows in Claude Code.” Claude Blog, 2026年5月28日. https://claude.com/blog/introducing-dynamic-workflows-in-claude-code

  2. Developers Digest. “Building Multi-Agent Workflows in Claude Code: A Practical Tutorial.” 2026年4月9日. https://developersdigest.tech/blog/building-multi-agent-workflows-claude-code

  3. ApiDog. “Claude Code Dynamic Workflows: Running Hundreds of Parallel Subagents with Opus 4.8.” 2026年5月29日. https://apidog.com/blog/claude-code-dynamic-workflows-opus-4-8/

  4. Anthropic. “Claude Opus 4.8 Model Card.” 2026年5月28日.

  5. CSDN. “Claude Opus 4.8 深度评测:混合推理、动态工作流与诚实性突破.” 2026年5月29日.