🗺️ OpenClaw Agent渐进式任务规划
世界上有一种智慧叫渐进式规划,它不试图一步到位,而是走一步看一步,边做边调整...
"帮我策划一场线上活动"。这种任务,你不可能一开始就想好所有细节。先定主题,再定时间,再定嘉宾,再定流程——每一步的结果都影响下一步的计划。渐进式规划就是这套方法论。
📋 功能介绍
🎯 核心概念
| 概念 | 说明 | 比喻 |
|---|---|---|
| 计划(Plan) | 制定任务执行步骤 | 旅行攻略 |
| 执行(Execute) | 按计划执行任务 | 按攻略旅行 |
| 反思(Reflect) | 检查执行结果 | 回顾旅行体验 |
| 调整(Replan) | 根据结果调整计划 | 修改后续行程 |
| 递归分解 | 大任务拆成小任务 | 先定目的地再定路线 |
💡 规划模式对比
- 一次性规划 - 先想好所有步骤再执行,适合已知流程
- 渐进式规划 - 边做边规划,适合未知流程
- 递归分解 - 先粗后细,层层展开
- 自适应规划 - 根据结果动态调整
🚀 使用方法
1. Plan-and-Execute模式
# Plan-and-Execute配置
agents:
planner:
name: 任务规划师
planning:
mode: plan_and_execute
# 计划配置
plan:
# 先制定计划
initial_plan: true
# 计划粒度
granularity: medium # fine/medium/coarse
# 最大步骤数
max_steps: 20
# 执行配置
execute:
# 每步执行后反思
reflect_after_step: true
# 失败时重规划
replan_on_failure: true
max_replan: 3
prompt: |
你是一个任务规划师。
收到任务后:
1. 先制定执行计划(列出所有步骤)
2. 逐步执行每个步骤
3. 每步执行后检查结果
4. 根据结果调整后续计划
计划格式:
## 执行计划
1. [步骤1] 描述...
2. [步骤2] 描述...
3. [步骤3] 描述...
2. 递归任务分解
# 递归分解配置
agents:
recursive-planner:
name: 递归规划师
planning:
mode: recursive_decomposition
# 分解配置
decomposition:
# 最大递归深度
max_depth: 5
# 最小任务粒度(不再分解)
min_task_size: atomic # atomic=不可再分
# 估算时间
estimate_time: true
# 分解规则
rules:
# 复杂任务需要分解
- if:
estimated_steps: ">5"
action: decompose
# 不确定的任务需要探索
- if:
uncertainty: ">0.5"
action: explore_then_plan
prompt: |
收到任务后,递归分解:
1. 评估任务复杂度
2. 如果复杂,分解为子任务
3. 对每个子任务重复评估和分解
4. 直到每个子任务足够简单
5. 按依赖关系排序执行
输出格式:
```
📋 任务: xxx
├─ 📁 子任务1: xxx
│ ├─ 📄 具体操作1.1
│ └─ 📄 具体操作1.2
├─ 📁 子任务2: xxx
│ └─ 📄 具体操作2.1
└─ 📁 子任务3: xxx
```
3. 自适应规划
# 自适应规划配置
agents:
adaptive-planner:
name: 自适应规划师
planning:
mode: adaptive
# 自适应策略
adaptive:
# 执行过程中根据结果调整
adjust_during_execution: true
# 触发调整的条件
triggers:
- step_failed # 步骤失败
- new_info_found # 发现新信息
- goal_changed # 目标变更
- resource_change # 资源变化
# 调整策略
strategies:
failed_step:
- retry # 重试
- alternative # 备选方案
- skip # 跳过
- ask_human # 询问用户
new_info:
- update_plan # 更新计划
- re_prioritize # 重新排序
4. 进度追踪
# 进度追踪配置
agents:
tracked-planner:
name: 带追踪的规划师
planning:
tracking:
enabled: true
# 追踪内容
track:
- step_status # 步骤状态
- time_spent # 耗时
- tokens_used # Token消耗
- errors # 错误
# 进度报告
report:
interval: every_5_steps # 每5步报告
format: markdown
save_to: ./progress/
✨ 最佳实践
💡 规划技巧
- 先粗后细 - 先定大纲,再填充细节
- 依赖识别 - 找出任务间的依赖关系
- 并行机会 - 识别可并行执行的任务
- 检查点 - 关键节点设置检查
- 回滚点 - 失败时能回滚到安全状态
⚠️ 常见问题
- 规划过于详细,还没做就改了
- 规划过于粗糙,执行时不知道怎么做
- 不根据结果调整,一条路走到黑
- 忘记追踪进度,不知道完成到哪了
📝 实战案例:线上活动策划
用户: "帮我策划一场AI技术分享直播"
## 执行计划
### Phase 1: 活动定位(Planning)
📋 1.1 确定主题方向 → "OpenClaw Agent实战分享"
📋 1.2 确定目标受众 → AI开发者
📋 1.3 确定时间 → 下周五 20:00-21:30
### Phase 2: 内容准备(执行中)
📋 2.1 搜索热门AI话题 → 找到5个热点
📋 2.2 准备分享大纲 → 4个主题
📋 2.3 准备演示代码 → Agent搭建demo
📋 2.4 准备PPT大纲 → 30页
→ 执行中发现:2.3的demo太复杂
→ 调整计划:简化demo,增加视频演示
### Phase 3: 宣传推广
📋 3.1 撰写宣传文案
📋 3.2 制作宣传海报
📋 3.3 在社区发布
### Phase 4: 执行支持
📋 4.1 准备直播环境
📋 4.2 设置互动环节
📋 4.3 准备应急方案
进度: ████████░░ 80% (16/20步完成)
💻 代码示例
Plan-and-Execute
from openclaw import Agent
from openclaw.planning import PlanAndExecute
# 创建规划Agent
agent = Agent(
name="planner",
planning=PlanAndExecute(
max_steps=20,
replan_on_failure=True
)
)
# 执行复杂任务
result = agent.run(
"策划一场AI技术分享活动"
)
# 查看执行计划
print(result.plan)
# {
# "steps": [
# {"id": 1, "task": "确定主题", "status": "done"},
# {"id": 2, "task": "准备内容", "status": "done"},
# {"id": 3, "task": "准备环境", "status": "in_progress"},
# {"id": 4, "task": "宣传推广", "status": "pending"},
# {"id": 5, "task": "执行活动", "status": "pending"}
# ]
# }
# 查看进度
print(result.progress)
# "3/5 步骤完成 (60%)"
递归分解
from openclaw.planning import RecursiveDecomposition
agent = Agent(
name="recursive-planner",
planning=RecursiveDecomposition(
max_depth=5,
auto_execute=True
)
)
result = agent.run("搭建一个AI客服系统")
# 查看任务树
result.print_task_tree()
# 📋 搭建AI客服系统
# ├─ 📁 技术选型
# │ ├─ ✅ 比较LLM方案
# │ ├─ ✅ 选择OpenClaw
# │ └─ ✅ 确定架构
# ├─ 📁 知识库建设
# │ ├─ ✅ 整理FAQ
# │ ├─ ✅ 建立向量索引
# │ └─ 🔄 训练分类器
# ├─ 📁 Agent开发
# │ ├─ ⏳ 设计对话流程
# │ └─ ⏳ 开发工具接口
# └─ 📁 测试部署
# ├─ ⏳ 单元测试
# └─ ⏳ 生产部署
人工介入
# 需要确认的关键节点
agent = Agent(
name="collaborative-planner",
planning=PlanAndExecute(
human_checkpoints=[
"plan_approved", # 计划批准
"phase_complete", # 阶段完成
"budget_exceeded" # 超预算
]
)
)
# 执行中会暂停等待用户确认
result = agent.run("策划活动")
# 等待: "计划已制定,请确认 [Y/N]"
进度恢复
# 保存进度
agent.save_progress("project-planning.json")
# 恢复进度(从上次断点继续)
agent2 = Agent.load_progress("project-planning.json")
result = agent2.resume()
🔗 相关链接
- OpenClaw Agent工作流 - 工作流管理
- OpenClaw工作流编排 - 编排策略
- OpenClaw Agent编排 - 调度策略
- OpenClaw自我反思 - 执行反思
- ClawHub入门指南 - 发现更多Skills
📊 规划模式对比
| 模式 | 适用场景 | 灵活性 | 成本 |
|---|---|---|---|
| 一次性规划 | 已知流程、简单任务 | 低 | 低 |
| 渐进式规划 | 半已知流程 | 中 | 中 |
| 递归分解 | 复杂未知任务 | 高 | 高 |
| 自适应规划 | 动态变化环境 | 极高 | 极高 |