For the complete documentation index, see llms.txt. This page is also available as Markdown.

本章小结

本章系统地介绍了 AI Agent 系统中的任务编排和工作流引擎设计,从单 Agent 内的 Task 分解到多智能体协调和通信机制。以下是核心知识点的总结。

核心知识点回顾

8.1 任务分解与依赖建模

关键概念

  • DAG 模型:用有向无环图表示任务依赖

  • Claude Code 的 7 种 Task 类型:local_bash、local_agent、remote_agent、in_process_teammate、workflow、monitor_mcp、dream

  • Task ID 格式:parent#type#sequence,支持嵌套

  • 任务生命周期:pending → running → completed/failed/killed

实践要点

  • 选择合适的任务粒度(10 秒-10 分钟)

  • 区分数据依赖和控制流依赖

  • 为每个 Task 定义重试和超时策略

  • 使用拓扑排序确定执行顺序

8.2 状态机与工作流引擎

核心概念

  • 有限状态机(FSM):状态、事件、转移、初始态、接受态

  • OpenClaw Lobster 引擎:YAML 声明式工作流定义

  • 确定性执行:相同输入保证相同输出

  • 副作用暂停机制:在执行修改前等待人工审批

工作流元素

  • 状态类型:initial、normal、final、error、wait、parallel

  • 条件转移:基于运行时上下文的条件分支

  • 错误处理:on_state、retry、fallback_state

  • 检查点与恢复:从中断点继续执行

实践要点

  • 使用 YAML 定义工作流便于版本控制和审计

  • 条件表达式使用模板语言(如 Jinja2)

  • 设计清晰的状态名和转移条件

  • 预留错误处理路径和超时恢复

8.3 多智能体编排架构

四种协调模式

  1. 网络模式:Agent 平等通信,点对点连接

    • 适用:学术讨论、去中心化决策

    • 缺点:通信复杂,难以维护一致性

  2. 主管模式:一个主管管理多个 Worker

    • 适用:明确的任务分工、质量控制

    • 缺点:主管成为瓶颈

  3. 层级模式:多层级组织,上层规划下层执行

    • 适用:大规模任务、复杂分解

    • 缺点:通信延迟,实现复杂

  4. 并行模式:流水线方式处理数据

    • 适用:流式数据处理、多步骤验证

    • 缺点:严格顺序,难以回溯

Claude Code Coordinator 模式

  • Research:充分理解问题

  • Synthesis:整合信息、制定计划

  • Implementation:执行计划

  • Verification:质量验证

上下文隔离

  • 使用 ContextVar 实现上下文变量

  • 支持继承父上下文但保持本地隔离

  • 每个 Agent 有独立的执行日志和变量空间

实践要点

  • 根据问题特性选择合适的协调模式

  • Coordinator 模式特别适合知识工作

  • 确保上下文隔离避免数据污染

  • 考虑智能体间的通信开销和延迟

8.4 智能体间通信

两种范式对比

特性
消息传递
共享内存

耦合度

松耦合

紧耦合

延迟

分布式

友好

困难

同步复杂度

Claude Code 的混合方案

  • Task-Notification XML:显式的消息流

  • Scratchpad:共享内存区域

  • Streamable HTTP:跨进程通信

通信协议设计原则

  1. 可靠性

    • 至少一次送达(At-Least-Once)

    • 幂等性设计(重复消息不产生副作用)

    • 确认机制(发送方需要接收确认)

  2. 顺序保证

    • 关键消息需要 FIFO 处理

    • 使用消息序列号

    • 构建顺序队列

  3. 背压控制

    • 监控队列长度

    • 反馈发送者避免溢出

    • 动态调整吞吐量

OpenClaw 多渠道路由

  • 支持 20+平台(HTTP、Email、Slack、DB 等)

  • 统一的内部消息格式

  • 为每个渠道进行转换

  • 优先级和重试策略

实践要点

  • 选择消息传递作为默认方案(更安全)

  • 设计统一的消息格式便于转换

  • 实现可靠的传输机制(重试、确认)

  • 考虑背压和流量控制

8.5 MiniHarness 编排引擎实现

核心组件

  1. TaskManager

    • 管理 Task 定义和执行记录

    • 检查依赖满足情况

    • 发出任务完成通知

  2. WorkflowStateMachine

    • 维护当前状态

    • 评估转移条件

    • 记录执行日志

  3. AgentContext

    • 隔离智能体的执行上下文

    • 支持变量本地存储和父上下文查询

    • 记录执行日志

  4. SubAgentFactory

    • 动态创建子智能体

    • 为每个子智能体创建隔离上下文

    • 支持异步执行

  5. OrchestrationEngine

    • 协调 TaskManager 和 StateMachine

    • 循环执行 Task 和状态转移

    • 处理异步任务通知

主要功能

  • 完整的 Task 生命周期管理

  • DAG 依赖解析和拓扑排序

  • FSM 风格的工作流执行

  • 子智能体的动态创建和隔离

  • 异步通知处理

实践要点

  • 定义清晰的 Task 依赖

  • 使用 StateDefinition 和 TransitionDefinition 构建工作流

  • 利用 AgentContext 实现隔离

  • 处理异步通知和状态转移

本章在 Harness 中的地位

与前后章节的关联

  • 前承 (第 7 章):模型集成与输出治理

  • 本章:多任务协调和工作流编排

  • 后启 (第 9 章):为任务提供 MCP 工具支持

  • 后继 (第 10 章):优化编排的性能和配置

  • 最终 (第 11 章):确保编排的可靠性

设计原则总结

  1. 确定性:相同输入产生相同的执行路径

  2. 可审计:完整的执行历史和决策日志

  3. 可恢复:支持从检查点恢复

  4. 可扩展:支持添加新的 Task 类型和状态

  5. 松耦合:通过消息传递而非紧耦合

常见问题与最佳实践

Q1: 如何选择 Task 粒度?

:以单个 Task 的预期执行时间为基准:

  • <1 秒:粒度太细,合并多个操作

  • 1-10 分钟:理想范围

  • 10 分钟:考虑进一步分解

Q2: 何时使用哪种多智能体模式?

  • 问题有明确的分工 → 主管模式

  • Agent 数量>5 且有层级结构 → 层级模式

  • 需要复杂的知识综合 → Coordinator 模式

  • 输入/输出是线性流 → 并行模式

Q3: 如何处理 Task 失败?

  1. 定义 max_retries 和重试策略(指数退避)

  2. 区分临时错误和永久错误

  3. 记录详细的错误日志便于调试

  4. 提供人工干预机制

Q4: 如何确保工作流的幂等性?

  1. 为每个 Task 设计幂等执行逻辑

  2. 使用检查点避免重复工作

  3. 使用事务或补偿机制

  4. 记录已完成的操作

Q5: 如何监控长时间运行的工作流?

  1. 在关键步骤记录日志

  2. 定期检查 Task 状态

  3. 设置超时告警

  4. 提供暂停和恢复机制

关键代码片段速查

构建 DAG

示例代码:

定义工作流

代码如下:

创建子智能体

以下是示例:

发送通知

具体实现如下:

扩展方向

短期优化

  1. 添加 Task 优先级支持

  2. 实现 Task 超时自动重试

  3. 完善错误处理和恢复机制

  4. 添加工作流可视化

长期规划

  1. 支持动态 Task 生成(运行时添加 Task)

  2. 分布式编排(跨多台机器)

  3. 高可用编排(编排器故障恢复)

  4. 自适应执行(根据资源动态调整并行度)

本章总结

第八章系统地介绍了 AI Agent 系统中的任务编排和工作流引擎设计。从单 Agent 内的 Task 分解开始,逐步深入到 FSM 工作流定义、多智能体协调、通信机制,最后在 MiniHarness 中实现了一个功能完整的编排引擎。

关键要点:

  • DAG 模型 为任务分解和依赖管理提供了数学基础

  • FSM 工作流 支持条件分支、循环和错误处理

  • 多智能体协调 有多种模式,需要根据问题特性选择

  • 可靠的通信 是多智能体系统的核心

  • 实战实现 展示了各个概念如何整合成完整系统

这些知识为后续章节的 MCP 工具集成、生产级优化和可靠性保障做了充分准备。

最后更新于