Agent Autopilot
Sub-agent 自驱动工作流。让 agent 像项目经理一样自主推进项目:接任务 → 拆解 → 执行 → 汇报 → 循环。
依赖
- -
todo-management skill(任务跟踪)
快速初始化
首次为某个 agent 配置自驱动时,运行初始化脚本:
CODEBLOCK0
示例:
CODEBLOCK1
脚本会自动:
- - 创建 skills/ 和 memory/ 目录
- 检查并安装 todo-management skill(从主工作空间或全局复制)
- 初始化 report-state.json(定时任务状态跟踪)
- 检查核心文件(IDENTITY.md、SOUL.md 等)是否存在
1. 定时任务总览
Agent 的所有行为由 heartbeat 驱动。每次 heartbeat(默认约 30 分钟)触发时,agent 按以下清单依次检查和执行:
CODEBLOCK2
定时任务清单
| # | 任务 | 频率 | 触发条件 | 说明 |
|---|
| ① | 自驱动执行循环 | 每次 heartbeat(~30min) | 每次都执行 | 检查 todo → 选任务 → 执行 → 记录 |
| ② |
进度汇报 | 白天每 N 小时 | 距上次汇报 ≥ N 小时 | 白天定期汇报,夜间仅重大事件 |
| ③ | 长期记忆维护 | 每 6 小时 | 距上次维护 ≥ 6 小时 | 提炼日志 → 更新 MEMORY.md |
所有定时任务的状态通过 memory/report-state.json 跟踪,避免重复执行。
2. 定时任务 ①:自驱动执行循环
提示词
以下是写入 HEARTBEAT.md 的自驱动提示词模板:
CODEBLOCK3
任务生命周期
CODEBLOCK4
INLINECODE2 = todo-management skill 的安装路径。
自主创建任务
当所有任务完成但项目目标未达成时,agent 应自主分析现状并创建新任务:
CODEBLOCK5
3. 定时任务 ②:进度汇报
提示词
以下是写入 HEARTBEAT.md 的汇报提示词模板:
CODEBLOCK6
汇报层级
CODEBLOCK7
白天/夜间模式
Agent 不在固定时刻汇报,而是按间隔周期汇报。每次 heartbeat 时检查:
CODEBLOCK8
建议间隔 N:
- - 高频项目(量化迭代等):白天每 2 小时
- 常规项目:白天每 3-4 小时
- 低频项目(文档撰写等):白天每 4-6 小时
汇报触发条件
| 条件 | 白天 | 夜间 |
|---|
| 距上次汇报超过 N 小时 | ✅ 汇报 | ❌ 静默 |
| 重大里程碑达成 |
✅ 立即汇报 | ✅ 立即汇报 |
| 遇到阻塞/需要决策 | ✅ 立即汇报 | ✅ 立即汇报 |
| 连续失败需换方向 | ✅ 立即汇报 | ✅ 立即汇报 |
| 普通任务完成 | 攒到周期汇报 | 攒到白天汇报 |
| 项目目标达成 | ✅ 立即汇报 | ✅ 立即汇报 |
汇报格式
周期汇报(白天常规):
CODEBLOCK9
白天首次汇报(晨报):
CODEBLOCK10
白天末次汇报(晚报,21:00后触发):
CODEBLOCK11
即时汇报(重大事件):
CODEBLOCK12
汇报规则
- - 每条消息开头加时间戳 INLINECODE3
- 汇报要具体、有数据,不要笼统
- 白天首次汇报自动包含昨日/夜间总结
- 进入夜间前的最后一次汇报自动包含全天总结
- 夜间静默期间的工作攒到白天首次汇报
4. 定时任务 ③:长期记忆维护
提示词
以下是写入 HEARTBEAT.md 的记忆维护提示词模板:
CODEBLOCK13
5. 状态跟踪:report-state.json
所有定时任务的状态通过 memory/report-state.json 跟踪:
CODEBLOCK14
字段说明:
- -
lastReportTime:上次汇报的 ISO 时间戳,用于计算汇报间隔 - INLINECODE6 :上次汇报的日期,用于判断是否跨天(首报/末报)
- INLINECODE7 :今天已汇报次数,跨天时重置为 0
- INLINECODE8 :上次记忆维护的 ISO 时间戳,用于计算 6 小时间隔
每次 Heartbeat 的完整检查流程
CODEBLOCK15
6. 自主决策规则
可以自主决定的
- - 技术方案选择(用什么算法、什么架构)
- 任务优先级排序
- 迭代方向(基于数据分析结果)
- Bug 修复和代码优化
- 创建新的子任务
必须上报的
- - 项目方向性变更
- 需要外部资源(新 API key、新服务器等)
- 影响其他项目的决策
- 连续多次失败,需要换思路
决策原则
- - 数据驱动:每个决策都要有数据支撑
- 快速试错:小步快跑,不要花太长时间在一个方向
- 记录决策:每个重要决策写入 memory,包括原因和预期结果
7. Memory 记录规范
每日记录(memory/YYYY-MM-DD.md)
每次执行任务后追加记录:
CODEBLOCK16
8. 完整 HEARTBEAT.md 模板
综合三个定时任务的完整模板(复制后按需修改 {占位符}):
CODEBLOCK17
9. 新 Agent 初始化清单
用此 skill 配置新的自驱动 agent 时:
- 1. 创建工作空间: INLINECODE10
- 写入身份文件:IDENTITY.md、SOUL.md、USER.md
- 写入 MEMORY.md:包含完整的核心规则(时间戳、git、文件删除禁令、工具分工、汇报机制、任务管理)
- 写入 HEARTBEAT.md:按模板配置三个定时任务,设定汇报间隔 N
- 确保 todo-management skill 已安装
- 创建初始 todo 条目:把项目目标拆解为具体任务
- 设置 heartbeat interval:建议 30 分钟
⚠️ 核心规则必须完整复制,不能缩略、不能"同上"。每个 agent 是独立的,醒来时只看自己工作空间的文件。
10. 故障恢复
Agent 可能因为各种原因中断。恢复流程:
- 1. 读取 memory/最近日期.md,了解上次做到哪里
- 检查 todo 列表,找到 in_progress 的任务
- 检查 memory/report-state.json,判断是否需要补发汇报或执行记忆维护
- 评估是否需要重做或继续
- 恢复执行循环
如果 todo.db 丢失或损坏:
- - 从 memory 日志重建任务列表
- 从 git log 推断项目进度
如果 report-state.json 丢失:
- - 重新创建,所有时间戳设为 null
- 下次 heartbeat 会自动触发汇报和记忆维护
Agent Autopilot
Sub-agent 自驱动工作流。让 agent 像项目经理一样自主推进项目:接任务 → 拆解 → 执行 → 汇报 → 循环。
依赖
- - todo-management skill(任务跟踪)
快速初始化
首次为某个 agent 配置自驱动时,运行初始化脚本:
bash
bash {baseDir}/scripts/init.sh
示例:
bash
bash {baseDir}/scripts/init.sh ~/.openclaw/workspace-wangyi
脚本会自动:
- - 创建 skills/ 和 memory/ 目录
- 检查并安装 todo-management skill(从主工作空间或全局复制)
- 初始化 report-state.json(定时任务状态跟踪)
- 检查核心文件(IDENTITY.md、SOUL.md 等)是否存在
1. 定时任务总览
Agent 的所有行为由 heartbeat 驱动。每次 heartbeat(默认约 30 分钟)触发时,agent 按以下清单依次检查和执行:
HEARTBEAT 触发(每 ~30 分钟)
↓
┌─────────────────────────────────────────────┐
│ 定时任务 ①:自驱动执行循环(每次 heartbeat) │
│ → 检查 todo → 执行任务 → 记录结果 │
└─────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────┐
│ 定时任务 ②:进度汇报(白天每 N 小时) │
│ → 检查距上次汇报的间隔 → 到了就汇报 │
└─────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────┐
│ 定时任务 ③:长期记忆维护(每 6 小时) │
│ → 提炼日志到 MEMORY.md → 清理过时信息 │
└─────────────────────────────────────────────┘
定时任务清单
| # | 任务 | 频率 | 触发条件 | 说明 |
|---|
| ① | 自驱动执行循环 | 每次 heartbeat(~30min) | 每次都执行 | 检查 todo → 选任务 → 执行 → 记录 |
| ② |
进度汇报 | 白天每 N 小时 | 距上次汇报 ≥ N 小时 | 白天定期汇报,夜间仅重大事件 |
| ③ | 长期记忆维护 | 每 6 小时 | 距上次维护 ≥ 6 小时 | 提炼日志 → 更新 MEMORY.md |
所有定时任务的状态通过 memory/report-state.json 跟踪,避免重复执行。
2. 定时任务 ①:自驱动执行循环
提示词
以下是写入 HEARTBEAT.md 的自驱动提示词模板:
markdown
定时任务 ① 自驱动执行循环(每次 heartbeat)
你是一个自驱动的项目经理。每次收到 heartbeat 时,立刻开始工作,不要回复 HEARTBEAT_OK。
执行流程:
- 1. 用 todo.sh 查看任务列表(bash {todoBaseDir}/scripts/todo.sh entry list)
- 有 inprogress 的任务 → 继续执行,推进到下一步
- 有 pending 的任务 → 选优先级最高的,改为 inprogress,立刻开始执行
- 全部完成但目标未达成 → 分析项目现状,自主创建新任务,继续推进
- 执行完毕后更新 todo 状态(done / skipped),记录到 memory/YYYY-MM-DD.md
- 不要停下来问上级该做什么,自己判断下一步
永不空转。每次 heartbeat 都必须推进项目。目标未达成就不停。
任务生命周期
接到任务 → entry create 任务描述 --group={项目名} (pending)
↓
开始执行 → entry status ID --status=in_progress
↓
执行完成 → entry status ID --status=done
↓
无法完成 → entry status ID --status=skipped(记录原因)
{todoBaseDir} = todo-management skill 的安装路径。
自主创建任务
当所有任务完成但项目目标未达成时,agent 应自主分析现状并创建新任务:
bash
bash {todoBaseDir}/scripts/todo.sh entry create 基于分析结果优化下一步方案 --group={项目名}
3. 定时任务 ②:进度汇报
提示词
以下是写入 HEARTBEAT.md 的汇报提示词模板:
markdown
定时任务 ② 进度汇报(白天每 {N} 小时)
每次 heartbeat 时,检查是否需要汇报。读取 memory/report-state.json 中的 lastReportTime。
判断逻辑:
- lastReportDate 不是今天 → 发「今日首报」(包含昨日/夜间工作总结 + 今日计划)
- 距 lastReportTime 超过 {N} 小时 → 发「周期汇报」(自上次以来的进展 + 关键指标 + 下一步)
- 当前时间 ≥ 21:00 且今天未发过总结 → 发「今日总结」(全天成果 + 指标变化 + 明日计划)
- 有重大进展或阻塞 → 发「即时汇报」
- 否则 → 不汇报,静默工作,攒到明天首报
汇报后更新 report-state.json(lastReportTime、lastReportDate、todayReportCount)。
每条汇报开头加时间戳 [HH:MM]。汇报要具体、有数据,不要笼统。
汇报层级
Agent(项目经理)→ 上级(总经理)→ 管理者(老板)
白天/夜间模式
Agent 不在固定时刻汇报,而是按间隔周期汇报。每次 heartbeat 时检查:
获取当前时间 now
↓
白天(08:00-22:00):
距上次汇报 ≥ N 小时?→ 汇报
有重大进展/阻塞?→ 立即汇报
↓
夜间(22:00-08:00):
有重大进展/阻塞?→ 汇报
否则 → 静默工作,攒到白天汇报
建议间隔 N:
- - 高频项目(量化迭代等):白天每 2 小时
- 常规项目:白天每 3-4 小时
- 低频项目(文档撰写等):白天每 4-6 小时
汇报触发条件
| 条件 | 白天 | 夜间 |
|---|
| 距上次汇报超过 N 小时 | ✅ 汇报 | ❌ 静默 |
| 重大里程碑达成 |
✅ 立即汇报 | ✅ 立即汇报 |
| 遇到阻塞/需要决策 | ✅ 立即汇报 | ✅ 立即汇报 |
| 连续失败需换方向 | ✅ 立即汇报 | ✅ 立即汇报 |
| 普通任务完成 | 攒到周期汇报 | 攒到白天汇报 |
| 项目目标达成 | ✅ 立即汇报 | ✅ 立即汇报 |
汇报格式
周期汇报(白天常规):
[HH:MM] {emoji} {agent名} 进度汇报
📅 自上次汇报以来完成:
- - {任务1}:{结果/数据}
- {任务2}:{结果/数据}
📊 关键指标:
- - {指标1}:{当前值}
- {指标2}:{变化趋势}
📌 当前进行中:{任务描述}
🔜 接下来计划:{下一步}
⚠️ 问题/阻塞:{如有}
白天首次汇报(晨报):
[HH:MM] {emoji} {agent名} 今日首报 📋
📅 昨日/夜间完成:
📌 今日计划:
- - {任务1}(优先级:高)
- {任务2}(优先级:中)
📊 项目整体进度:{阶段描述}
白天末次汇报(晚报,21:00后触发):
[HH:MM] {emoji} {agent名} 今日总结 🌙
📅 今日完成:
📊 关键指标变化:
🔜 明日/夜间计划:{计划}
💡 今日心得/发现:{如有}
即时汇报(重大事件):
[HH:MM] {emoji} {agent名} 紧急汇报 🚨
📌 事件:{描述}
📊 影响:{数据/结论}
🔧 已采取措施:{操作}
❓ 需要决策:{如有}
汇报规则
- - 每条消息开头加时间戳 [HH:MM]
- 汇报要具体、有数据,不要笼统
- 白天首次汇报自动包含昨日/夜间总结
- 进入夜间前的最后一次汇报自动包含全天总结
- 夜间静默期间的工作攒到白天首次汇报
4. 定时任务 ③:长期记忆维护
提示词
以下是