Guide

为什么AI代理处理复杂任务总是失败?结构化任务分解如何解决这个问题

AI

AI Skills Team

7/12/2026 2 min

问题所在:当你的AI代理在细节中迷失方向

你给了AI代理一个清晰的需求说明。你描述了想要构建的功能。你甚至提供了现有代码库的上下文信息。然而,工作几分钟后,代理却产出了一团乱麻——半成品的函数、缺失的错误处理,以及不符合实际需求的测试。

这种情况并不罕见。当代理在没有结构化方法的情况下处理复杂任务时,这是一种常见的失败模式。核心问题是庞大、模糊的任务压垮了代理连贯规划和执行的能力。代理可能开始实现某一部分,意识到需要另一部分,然后回溯,最终产生难以验证的混乱实现。

为什么会发生这种情况

AI代理,特别是在代码生成环境中运行的代理,具有有限的上下文窗口和推理能力。面对大型任务时,它们通常会:

  • 过早进入实现阶段,没有充分理解依赖关系
  • 遗漏边界情况,因为任务范围太广,无法考虑所有场景
  • 创建不一致的代码,因为它们在问题的不同部分之间切换
  • 产生不可测试的输出,因为没有明确定义验收标准

结果是时间浪费、调试头痛,以及对代理能力的信任丧失。你最终花在修复代理工作上的时间比自己动手做还要多。

一个好的解决方案应该改变什么

有效的方法需要将模糊的需求转化为具体的、有序的步骤。它应该:

  1. 强制在编码前进行明确规划——路径不清晰就不开始实现
  2. 将工作分解为小的、可验证的块,可以在单个专注的会话中完成
  3. 明确依赖关系,让代理先构建基础
  4. 为每个任务包含验证步骤,以便尽早发现错误
  5. 允许并行化,当有多个代理或会话可用时

这不是为了让代理“更聪明”——而是给它一个结构化的框架来弥补其局限性。

介绍规划与任务分解技能

解决这个问题的一个实用方案是规划与任务分解技能。这个技能提供了一种结构化的方法,用于将复杂工作分解为具有明确验收标准的可管理任务。

这个技能不是魔法解决方案——它是一种严谨的方法,迫使代理和人类在开始前都仔细思考工作。它在以下情况下特别有用:

  • 你有需求说明或明确的要求,但需要将它们分解为可实现的单元
  • 任务感觉太大或太模糊而无法开始
  • 工作需要跨多个代理或会话并行化
  • 你需要向人类传达范围
  • 实现顺序不明显

这个技能不适用的情况

这个技能并非适用于所有情况。在以下情况下你可能不需要它:

  • 进行范围明显的单文件更改
  • 需求说明已经包含定义良好、有序的任务
  • 更改很琐碎(如修复拼写错误或更新常量)

对简单任务使用它会增加不必要的开销。

技能在实践中如何工作

这个技能遵循一个五步过程,将需求转化为可执行的计划。

第1步:进入计划模式(只读分析)

在编写任何代码之前,代理以只读模式运行。它阅读需求说明和相关代码库部分,识别现有模式和约定,映射组件之间的依赖关系,并记录风险和未知因素。

关键规则: 在此阶段不编写代码。输出是计划文档,而不是实现。

第2步:识别依赖关系图

代理映射什么依赖什么。例如:

数据库模式
    │
    ├── API模型/类型
    │       │
    │       ├── API端点
    │       │       │
    │       │       └── 前端API客户端
    │       │               │
    │       │               └── UI组件
    │       │
    │       └── 验证逻辑
    │
    └── 种子数据/迁移

实现顺序遵循这个图的自底向上方式:先构建基础。

第3步:垂直切片,而非水平切片

这是许多开发者(和代理)出错的地方。技能强制执行垂直切片——一次构建一个完整的功能路径,而不是先构建所有数据库,然后所有API,然后所有UI。

错误的(水平切片):

任务1:构建整个数据库模式
任务2:构建所有API端点
任务3:构建所有UI组件
任务4:连接一切

正确的(垂直切片):

任务1:用户可以创建账户(注册功能的模式+API+UI)
任务2:用户可以登录(认证模式+API+UI)
任务3:用户可以创建任务(任务模式+API+UI)
任务4:用户可以查看任务列表(查询+API+UI)

每个垂直切片都交付可工作、可测试的功能。

第4步:编写结构化任务

每个任务遵循特定模板:

## 任务 [N]:[简短描述性标题]

**描述:** 一段话解释这个任务完成什么。

**验收标准:**
- [ ] [具体的、可测试的条件]
- [ ] [具体的、可测试的条件]

**验证:**
- [ ] 测试通过:`npm test -- --grep "feature-name"`
- [ ] 构建成功:`npm run build`
- [ ] 手动检查:[验证内容描述]

**依赖:** [此任务依赖的任务编号,或“无”]

**可能涉及的文件:**
- `src/path/to/file.ts`
- `tests/path/to/test.ts`

**估计范围:** [小:1-2个文件 | 中:3-5个文件 | 大:5+个文件]

第5步:排序和添加检查点

任务被安排为满足依赖关系,每个任务使系统保持在工作状态,并且每2-3个任务后出现验证检查点。高风险任务被放在早期以快速失败。

显式检查点如下所示:

## 检查点:任务1-3之后
- [ ] 所有测试通过
- [ ] 应用程序构建无错误
- [ ] 核心用户流程端到端工作
- [ ] 继续前与人类审查

实际考虑因素

任务大小指南

技能提供了清晰的大小指南:

大小 文件 范围 示例
XS 1 单个函数或配置更改 添加验证规则
S 1-2 一个组件或端点 添加新的API端点
M 3-5 一个功能切片 用户注册流程
L 5-8 多组件功能 带过滤和分页的搜索
XL 8+ 太大——需要进一步分解

如果任务是L或更大,应该分解为更小的任务。代理在S和M任务上表现最佳。

何时进一步分解任务:

  • 需要超过一个专注的会话(大约2小时以上的代理工作)
  • 你无法用3个或更少的要点描述验收标准
  • 它涉及两个或更多独立子系统(例如,认证和计费)
  • 你在任务标题中写了“和”(这是两个任务的标志)

并行化机会

当有多个代理或会话可用时:

  • 可以安全并行化: 独立的功能切片、已实现功能的测试、文档
  • 必须顺序执行: 数据库迁移、共享状态更改、依赖链
  • 需要协调: 共享API契约的功能(先定义契约,然后并行化)

输出文件

技能产生两个关键文件:

  • 计划文档: 保存到 tasks/plan.md
  • 任务列表: 保存到 tasks/todo.md

这些路径是下游工具期望的约定。

评估这个技能是否适合你的工作流程

最佳用例

这个技能在以下情况下表现出色:

  1. 构建新功能,跨越多个文件或组件
  2. 重构现有代码,需要仔细映射依赖关系
  3. 熟悉不熟悉的代码库,代理在更改前需要理解结构
  4. 协调多个代理处理相关任务
  5. 估计项目范围供人类在实现前审查

何时避免使用

在以下情况下不要使用这个技能:

  • 更改琐碎且容易理解
  • 你正在做范围明显的单文件编辑
  • 需求说明已经包含完美排序、大小合适的任务
  • 时间压力使规划开销不可接受(尽管这通常是虚假的节约)

设置上下文

这个技能是Addy Osmani的agent-skills仓库的一部分。它设计用于可以遵循结构化指令的AI编码代理。除了在代理的技能目录中拥有该技能外,不需要特殊安装。

安全信号

  • 技能强调在实现前进行只读规划
  • 它要求每个任务都有明确的验收标准
  • 它包含验证步骤以尽早发现错误
  • 它促进小而专注的任务,更容易审查和测试

仓库信号

agent-skills仓库有显著的社区关注度,超过76,000个星标。该技能是旨在提高代理可靠性的精选集合的一部分。仓库包含文档和示例,但与任何开源工具一样,你应该审查实现以确保它符合你的安全要求。

常见陷阱及如何避免

“我会边做边想”

这就是你最终得到混乱实现和返工的方式。十分钟的规划可以节省数小时的调试时间。

“任务很明显”

无论如何都要写下来。显式任务能揭示隐藏的依赖关系和被遗忘的边界情况。

“规划是开销”

规划就是任务。没有计划的实现只是打字。

“我都能记在脑子里”

上下文窗口是有限的。书面计划能跨越会话边界和上下文压缩而存在。

需要警惕的危险信号

如果你看到这些模式,规划过程需要改进:

  • 没有书面任务列表就开始实现
  • 任务说“实现功能”而没有验收标准
  • 计划中没有验证步骤
  • 所有任务都是XL大小
  • 任务之间没有检查点
  • 没有考虑依赖顺序

开始使用

如果你正在处理AI代理难以可靠完成的复杂任务,考虑检查规划与任务分解技能。从一个小型、定义良好的项目开始,看看结构化方法如何影响代理的输出质量。

这个技能不会让你的代理更聪明,但它会给它一个框架来弥补其局限性——将模糊的需求转化为具体的、可验证的步骤,从而产生更可靠的结果。

延伸阅读