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

8.1 复杂任务分解与依赖建模

任务分解是处理复杂问题的关键能力,通过 DAG 模型实现任务间的依赖管理和并行执行。本节介绍 Claude Code 的七种 Task 类型、任务生命周期、依赖建模方法和粒度选择策略。

8.1.1 核心概念:DAG 与任务图

任务分解的根本目标是将不可原子的大问题拆分为可独立执行的小任务,这些任务形成一个 有向无环图(Directed Acyclic Graph, DAG)。图中的节点代表任务,边代表任务间的依赖关系。

图 8-1:任务分解的 DAG 模型

依赖关系:A 必须在 B、C 前完成;B 必须在 D 前完成;C 必须在 E 前完成;G 必须在 D、E 都完成后执行。

DAG 模型有三个关键性质:

  1. 无环性:不允许循环依赖,保证任务最终会终止

  2. 拓扑排序:存在一个执行顺序,使所有依赖都被满足

  3. 并行潜力:无直接依赖的任务可以并行执行

8.1.2 Claude Code 的 Task 类型系统

Claude Code 为任务分解提供了 7 种 Task 类型,每种类型用于不同的执行环境和场景。其中 MiniHarness 框架实现了三种核心执行类型(local_bash、local_agent、in_process_teammate),workflow 由第 8.5 节的工作流引擎示例覆盖但尚未接入任务分派路径,其余三种作为扩展留给读者自行实现。

Task 类型总览

Task 类型
执行环境
适用场景
智能体隔离

local_bash

本地 shell

系统命令、文件操作

local_agent

本地 Agent

代码分析、生成

remote_agent

远程 Harness

分布式计算

in_process_teammate

内存中子智能体

轻量级分工

workflow

Lobster 引擎

复杂工作流

部分

monitor_mcp

MCP 监听

长期监控任务

dream

后台异步任务

并发非关键路径

实现状态说明

  • MiniHarness 已实现local_bashlocal_agentin_process_teammate 三种任务执行类型提供了本地任务支持;workflow 由第 8.5 节的工作流引擎示例覆盖,尚未接入 _execute_task() 的任务分派路径

  • 概念性设计/扩展remote_agent(分布式计算)、monitor_mcp(长期监控)、dream(异步后台任务)作为架构设计展示,具体实现留给读者根据需求自行实现

Task ID 格式规范

每个 Task 都有一个全局唯一的 ID,格式为:

例如:

  • root#local_agent#0:根 Agent 下的第一个 local_agent 任务

  • root#local_agent#0#in_process_teammate#0:嵌套的第一个 teammate 任务

  • root#workflow#2:根 Agent 下的第三个 workflow 任务

8.1.3 任务生命周期

任务从创建到完成经历五个状态:

图 8-2:任务生命周期状态机

各状态含义:

  1. pending(待执行):任务已定义,但其依赖任务未全部完成

  2. running(执行中):依赖满足,任务开始执行

  3. completed(成功完成):任务执行成功,输出可用

  4. failed(执行失败):任务执行出错,决策者需决定是否重试

  5. killed(被杀死):人工中止或超时导致的任务终止

理解这些状态后,我们需要将复杂问题转化为可执行的任务依赖图。以下介绍如何进行系统的依赖建模,从而为并行执行和任务调度奠定基础。

8.1.4 依赖建模:从问题到 DAG

问题分析框架

给定一个复杂问题,分解为 DAG 的流程:

  1. 识别关键决策点:问题的哪些部分可以并行处理?

  2. 提取基础任务:能否进一步分解某个任务?

  3. 定义依赖关系:哪些任务必须在其他任务之前执行?

  4. 分配 Task 类型:每个任务应该用何种方式执行?

实例:论文质量评估系统

假设要构建一个系统来评估学术论文的质量,需要执行以下分析:

图 8-3:论文质量评估系统的任务分解示例

依赖图的编程表示

以下是任务 DAG 的完整 Python 实现:

DAG 的构建和可视化为我们提供了清晰的任务执行流程。然而,在实际应用中还有多个关键的设计决策需要做出,这些决策直接影响系统的效率和可维护性。

8.1.5 关键设计决策

1. 粒度选择

任务粒度太粗导致无法充分并行化,太细导致调度开销大。一般规则:

  • 建议粒度:单个 Task 的预期执行时间在 10 秒到 10 分钟间

  • 太粗:当某个任务的部分可以与其他任务并行时

  • 太细:当多个 Task 的总执行时间小于调度开销时

2. 依赖 vs 控制流

明确区分:

  • 数据依赖:后续任务需要前序任务的输出

  • 控制流依赖:后续任务需要前序任务完成但不需要其输出

这影响任务间的通信设计。

3. 容错策略

为每个 Task 定义:

  • max_retries:最多重试次数(默认 1)

  • timeout_seconds:超时时间(默认 300 秒)

  • on_failure:失败策略(fail-fast vs continue)

8.1.6 本小节小结

任务分解的核心是建立 DAG 模型,利用 Claude Code 的 7 种 Task 类型适配不同执行环境。通过拓扑排序和并行组分析,我们能够同时实现任务的顺序性保证和并行效率。下一节将讨论如何用状态机实现更复杂的工作流逻辑。

最后更新于