Agent Autopilot.Bak — 代理 Autopilot.Bak
v1.0.0Self-driving 代理 工作流 with heartbeat-driven task execution, day/night 进度 报告s, and long-term memory consolidation. Integrates with todo-management for task 追踪ing.
运行时依赖
安装命令
点击复制技能文档
代理 Autopilot
Sub-代理 自驱动工作流。让 代理 像项目经理一样自主推进项目:接任务 → 拆解 → 执行 → 汇报 → 循环。
依赖 todo-management 技能(任务跟踪) 快速初始化
首次为某个 代理 配置自驱动时,运行初始化脚本:
bash {baseDir}/scripts/init.sh <代理工作空间路径>
示例:
bash {baseDir}/scripts/init.sh ~/.OpenClaw/workspace-wangyi
脚本会自动:
创建 技能s/ 和 memory/ 目录 检查并安装 todo-management 技能(从主工作空间或全局复制) 初始化 报告-状态.json(定时任务状态跟踪) 检查核心文件(身份.md、SOUL.md 等)是否存在
- 定时任务总览
代理 的所有行为由 heartbeat 驱动。每次 heartbeat(默认约 30 分钟)触发时,代理 按以下清单依次检查和执行:
HEARTBEAT 触发(每 ~30 分钟) ↓ ┌─────────────────────────────────────────────┐ │ 定时任务 ①:自驱动执行循环(每次 heartbeat) │ │ → 检查 todo → 执行任务 → 记录结果 │ └─────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────┐ │ 定时任务 ②:进度汇报(白天每 N 小时) │ │ → 检查距上次汇报的间隔 → 到了就汇报 │ └─────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────┐ │ 定时任务 ③:长期记忆维护(每 6 小时) │ │ → 提炼日志到 MEMORY.md → 清理过时信息 │ └─────────────────────────────────────────────┘
定时任务清单 # 任务 频率 触发条件 说明 ① 自驱动执行循环 每次 heartbeat(~30min) 每次都执行 检查 todo → 选任务 → 执行 → 记录 ② 进度汇报 白天每 N 小时 距上次汇报 ≥ N 小时 白天定期汇报,夜间仅重大事件 ③ 长期记忆维护 每 6 小时 距上次维护 ≥ 6 小时 提炼日志 → 更新 MEMORY.md
所有定时任务的状态通过 memory/报告-状态.json 跟踪,避免重复执行。
- 定时任务 ①:自驱动执行循环
以下是写入 HEARTBEAT.md 的自驱动提示词模板:
定时任务 ① 自驱动执行循环(每次 heartbeat)
你是一个自驱动的项目经理。每次收到 heartbeat 时,立刻开始工作,不要回复 HEARTBEAT_OK。
执行流程:
- 用 todo.sh 查看任务列表(
bash {todoBaseDir}/scripts/todo.sh entry 列出) - 有 in_进度 的任务 → 继续执行,推进到下一步
- 有 pending 的任务 → 选优先级最高的,改为 in_进度,立刻开始执行
- 全部完成但目标未达成 → 分析项目现状,自主创建新任务,继续推进
- 执行完毕后更新 todo 状态(done / skipped),记录到 memory/YYYY-MM-DD.md
- 不要停下来问上级该做什么,自己判断下一步
永不空转。每次 heartbeat 都必须推进项目。目标未达成就不停。
任务生命周期 接到任务 → entry 创建 "任务描述" --group="{项目名}" (pending) ↓ 开始执行 → entry 状态 ID --状态=in_进度 ↓ 执行完成 → entry 状态 ID --状态=done ↓ 无法完成 → entry 状态 ID --状态=skipped(记录原因)
{todoBaseDir} = todo-management 技能 的安装路径。
自主创建任务
当所有任务完成但项目目标未达成时,代理 应自主分析现状并创建新任务:
bash {todoBaseDir}/scripts/todo.sh entry 创建 "基于分析结果优化下一步方案" --group="{项目名}"
- 定时任务 ②:进度汇报
以下是写入 HEARTBEAT.md 的汇报提示词模板:
定时任务 ② 进度汇报(白天每 {N} 小时)
每次 heartbeat 时,检查是否需要汇报。读取 memory/报告-状态.json 中的 last报告Time。
判断逻辑:
- 当前时间在白天(08:00-22:00):
- 当前时间在夜间(22:00-08:00):
汇报后更新 报告-状态.json(last报告Time、last报告Date、today报告Count)。 每条汇报开头加时间戳 [HH:MM]。汇报要具体、有数据,不要笼统。
汇报层级 代理(项目经理)→ 上级(总经理)→ 管理者(老板)
白天/夜间模式
代理 不在固定时刻汇报,而是按间隔周期汇报。每次 heartbeat 时检查:
获取当前时间 now ↓ 白天(08:00-22:00): 距上次汇报 ≥ N 小时?→ 汇报 有重大进展/阻塞?→ 立即汇报 ↓ 夜间(22:00-08:00): 有重大进展/阻塞?→ 汇报 否则 → 静默工作,攒到白天汇报
建议间隔 N:
高频项目(量化迭代等):白天每 2 小时 常规项目:白天每 3-4 小时 低频项目(文档撰写等):白天每 4-6 小时 汇报触发条件 条件 白天 夜间 距上次汇报超过 N 小时 ✅ 汇报 ❌ 静默 重大里程碑达成 ✅ 立即汇报 ✅ 立即汇报 遇到阻塞/需要决策 ✅ 立即汇报 ✅ 立即汇报 连续失败需换方向 ✅ 立即汇报 ✅ 立即汇报 普通任务完成 攒到周期汇报 攒到白天汇报 项目目标达成 ✅ 立即汇报 ✅ 立即汇报 汇报格式
周期汇报(白天常规):
[HH:MM] {emoji} {代理名} 进度汇报
📅 自上次汇报以来完成:
- {任务1}:{结果/数据}
- {任务2}:{结果/数据}
📊 关键指标:
- {指标1}:{当前值}
- {指标2}:{变化趋势}
📌 当前进行中:{任务描述} 🔜 接下来计划:{下一步} ⚠️ 问题/阻塞:{如有}
白天首次汇报(晨报):
[HH:MM] {emoji} {代理名} 今日首报 📋
📅 昨日/夜间完成:
- {任务1}:{结果/数据}
📌 今日计划:
- {任务1}(优先级:高)
- {任务2}(优先级:中)
📊 项目整体进度:{阶段描述}
白天末次汇报(晚报,21:00后触发):
[HH:MM] {emoji} {代理名} 今日总结 🌙
📅 今日完成:
- {任务1}:{结果/数据}
📊 关键指标变化:
- {指标1}:{之前} → {现在}
🔜 明日/夜间计划:{计划} 💡 今日心得/发现:{如有}
即时汇报(重大事件):
[HH:MM] {emoji} {代理名} 紧急汇报 🚨
📌 事件:{描述} 📊 影响:{数据/结论} 🔧 已采取措施:{操作} ❓ 需要决策:{如有}
汇报规则 每条消息开头加时间戳 [HH:MM] 汇报要具体、有数据,不要笼统 白天首次汇报自动包含昨日/夜间总结 进入夜间前的最后一次汇报自动包含全天总结 夜间静默期间的工作攒到白天首次汇报
- 定时任务 ③:长期记忆维护
以下是写入 HEARTBEAT.md 的记忆维护提示词模板:
定时任务 ③ 长期记忆维护(每 6 小时)
每次 heartbeat 时,检查是否需要维护记忆。读取 memory/报告-状态.json 中的 lastMemoryReview。
判断逻辑:
- 距 lastMemoryReview 超过 6 小时(或 lastMemoryReview 为 null)→ 执行记忆维护
- 否则 → 跳过
维护流程:
- 读取自上次维护以来的 memory/YYYY-MM-DD.md 日志
- 从日志中提炼写入 MEMORY.md:
- 清理 MEMORY.md 中已过时的信息(已完成的临时任务、已修复的 bug 等)
- 合并重复条目,保持结构清晰
- 更新 报告-状态.json 中的 lastMemoryReview
原则:精炼不精简,保留关键细节和数据。按项目/主题分类。重要条目标注日期。不删原始日志文件。 记忆维护不能跳过,这是 代理 持续运作的基础。
- 状态跟踪:报告-状态.json
所有定时任务的状态通过 memory/报告-状态.json 跟踪:
{ "last报告Time": "2026-02-22T14:30:00+08:00", "last报告Date": "2026-02-22", "today报告Count": 3, "lastMemoryReview": "2026-02-22T12:00:00+08:00" }
字段说明:
last报告Time:上次汇报的 ISO 时间戳,用于计算汇报间隔 last报告Date:上次汇报的日期,用于判断是否跨天(首报/末报) today报告Count:今天已汇报次数,跨天时重置为 0 lastMemoryReview:上次记忆维护的 ISO 时间戳,用于计算 6 小时间隔 每次 Heartbeat 的完整检查流程
- 读取 memory/报告-状态.json(不存在则创建空的)
- 获取当前时间 now
── 定时任务 ① 自驱动执行 ──
- 检查 todo 列表 → 执行任务 → 记录结果
── 定时任务 ② 进度汇报 ──
- 判断时段(白天 08:00-22:00 / 夜间)
- 白天: