记录 AutoExecutor 从"只分析不执行"到"真正执行代码"的完整修复历程
AutoExecutor 是 Harness Engineering 智能调度系统的核心组件,负责:
设计目标:
发现时间:2026-03-30 15:40
问题现象:
根本原因:
修复方案:
sessions_spawn 指令,明确启动 subagent验证结果:
发现时间:2026-03-30 20:30
问题现象:
根本原因:
sessions_spawn 是异步的,启动后立即返回sessions_yield 等待结果推送修复方案:
sessions_yield 强制等待:
sessions_yield --message "等待 Generator Agent 完成推送结果"
ls ~/Documents/stockmonitor/agentprocessdetail/{task_id}-execution-result.md
修复后流程:
Step 1: 查询 pending 任务 ↓ Step 2: sessions_spawn 启动 Generator ↓ Step 3: sessions_yield 结束当前 turn ⭐ 强制等待 ↓ [等待 Generator 完成推送] ↓ Step 4: 收到推送 → 检查执行记录文件 ↓ Step 5: 文件存在 → 更新数据库
发现时间:2026-03-30 15:29
问题现象:
根本原因:
修复方案:
sessions_spawn --runtime subagent --mode run \ --label "generator-{task_id}" \ --timeout-seconds 120 \ --task "你是 Generator Agent。任务:{task_name}..."
验证方式:
openclaw sessions list 是否有 subagent 记录发现时间:2026-03-30 19:33
问题现象:
巡检报告示例:
### 测试结果 - Orchestrator 多 Agent 协调: ✅ 通过 - Guard 护栏系统: ✅ 通过 - Observability 可观测性: ✅ 通过 **结论**: Harness 框架处于稳定可用状态
根本原因:
修复方案:
pythoncursor.execute('SELECT status, COUNT(*) FROM harness_tasks GROUP BY status')
pythoncursor.execute('SELECT id, name, progress FROM harness_tasks WHERE status="running" AND progress < 50')
bashls ~/Documents/stockmonitor/agentprocessdetail/
问题发现阈值:
| 异常类型 | 检查逻辑 | 告警阈值 |
|---|---|---|
| 任务卡住 | running > 30min 且 progress=0% | ⚠️ 需人工介入 |
| 数据库未同步 | 文件存在但 status=pending | 🔴 同步失败 |
| pending 堆积 | pending > 15 个 | ⚠️ 执行慢 |
| 连续错误 | consecutiveErrors > 3 | 🔴 任务失败 |
发现时间:2026-03-30 20:25
问题现象:
运行记录显示:
14:33 | task-1-2 架构设计 | 67秒 | ✅ "完成" 14:21 | task-2 实现测试 | 55秒 | ✅ "完成"
问题分析:
修复方案:
sessions_spawn → 启动 subagent sessions_yield → 结束当前 turn,等待推送 收到推送 → 继续后续步骤
发现时间:2026-03-30 16:54
问题现象:
harness_tasks 状态仍为 pending对比表:
| 任务 | 执行记录文件 | 数据库状态 |
|---|---|---|
| task-2-2 (15:37) | ✅ 存在 | ❌ pending |
| task-3-3 (16:40) | ✅ 存在 | ❌ pending |
| task-1-1 (20:24) | ❌ 不存在 | ✅ completed(虚假) |
根本原因:
修复方案:
sqlUPDATE harness_tasks
SET status='completed',
progress=100.00,
completed_at=NOW()
WHERE task_id='{task_id}';
发现时间:2026-03-30 19:33
问题现象:
修复方案:
### 任务运行状态 | 状态 | 数量 | |------|------| | completed | X | | running | X | | pending | X | ### 执行记录检查 - 最新执行记录:task-X-X-execution-result.md - 数据库同步状态:✅/❌ ### ⚠️ 发现的问题 1. task-3-3 执行记录存在但数据库 pending - 🔴 2. test-e2e running 30分钟无进展 - ⚠️ ### 建议 - 检查数据库同步逻辑
┌─────────────────────────────────────────────────────────────┐ │ OpenClaw Gateway │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ Cron 定时任务 │ │ │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ │ │ AutoExecutor │ │ 巡检任务 │ │ 调研任务 │ │ │ │ │ │ (1分钟) │ │ (1.5分钟) │ │ (1.5分钟) │ │ │ │ │ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │ │ │ └─────────┼────────────────┼────────────────┼─────────┘ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ sessions_spawn (subagent) │ │ │ │ ┌──────────────┐ ┌──────────────┐ │ │ │ │ │ Generator │ │ Evaluator │ │ │ │ │ │ Agent │ │ Agent │ │ │ │ │ └──────┬───────┘ └──────┬───────┘ │ │ │ └─────────┼────────────────┼──────────────────────────┘ │ │ │ │ │ │ ▼ ▼ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 项目执行 │ │ │ │ ~/Documents/stockmonitor/ │ │ │ │ ↓ │ │ │ │ 执行记录文件: agentprocessdetail/*.md │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ MySQL 数据库 (阿里云 RDS) │ │ │ │ harness_tasks / harness_reviews │ │ │ │ rm-bp13alr02x974o9707o.mysql.rds.aliyuncs.com │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 微信推送 (announce) │ │ │ │ channel: openclaw-weixin │ │ │ └─────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘
| 机制 | 说明 | 实现 |
|---|---|---|
| 异步执行 | sessions_spawn 启动 subagent | OpenClaw 内置 |
| 结果推送 | subagent 完成后自动推送结果 | OpenClaw 内置 |
| 强制等待 | sessions_yield 结束当前 turn | message 中明确调用 |
| 执行记录 | Generator Agent 写入文件 | agentprocessdetail/*.md |
| 数据库同步 | 检查文件后才更新状态 | MySQL UPDATE |
| 问题发现 | 巡检检查阈值告警 | 增强巡检 message |
┌─────────────────────────────────────────────────────────────┐ │ AutoExecutor 定时触发 (每 1 分钟) │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ Step 1: 检查数据库待执行任务 │ │ │ │ SELECT id, name, description │ │ FROM harness_tasks │ │ WHERE status='pending' │ │ ORDER BY priority DESC LIMIT 1 │ │ │ │ 结果: task-xxx (架构设计) │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ Step 2: sessions_spawn 启动 Generator Agent │ │ │ │ sessions_spawn --runtime subagent --mode run │ │ --label "generator-task-xxx" │ │ --timeout-seconds 120 │ │ --task "你是 Generator Agent。执行代码修改..." │ │ │ │ 返回: sessionKey, runId │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ Step 3: sessions_yield 强制等待 ⭐ 关键修复 │ │ │ │ sessions_yield --message "等待 Generator 完成" │ │ │ │ 当前 turn 结束,等待结果推送 │ └─────────────────────────────────────────────────────────────┘ │ │ [等待中...] │ ▼ [收到推送] ┌─────────────────────────────────────────────────────────────┐ │ Step 4: 检查执行记录文件 │ │ │ │ ls ~/Documents/stockmonitor/agentprocessdetail/ │ │ task-xxx-execution-result.md │ │ │ │ 文件存在 → 真正完成 │ │ 文件不存在 → 等待或重试 │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ Step 5: 更新数据库 │ │ │ │ UPDATE harness_tasks │ │ SET status='completed', │ │ progress=100.00, │ │ completed_at=NOW() │ │ WHERE task_id='task-xxx' │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 推送结果到微信 (announce) │ │ │ │ channel: openclaw-weixin │ │ message: "任务完成" │ └─────────────────────────────────────────────────────────────┘
| 实践 | 说明 | AutoExecutor 契合度 |
|---|---|---|
| Generator-Evaluator 对抗 | Generator 执行 → Evaluator 评审 | ⭐⭐⭐⭐⭐ 100% |
| 智能调度 | LLM 驱动任务决策 | ⭐⭐⭐⭐⭐ 100% |
| Checkpoint 恢复 | 断点续执行 | ⭐⭐⭐⭐ 80%(已修复) |
| Guard 护栏 | 拦截危险命令 | ⭐⭐⭐⭐⭐ 100% |
| Observability | 快照记录 | ⭐⭐⭐⭐⭐ 100% |
| 人工介入 | yes/no 确认 | ⭐⭐⭐⭐⭐ 100% |
| 问题发现上报 | 自动发现问题 | ⭐⭐⭐⭐ 80%(修复后) |
完全契合(5星):
rm -rf → reject,git push --force → confirm修复后契合(4星):
需要改进(3星):
| 维度 | 修复前 | 修复后 |
|---|---|---|
| 真正执行 | ⭐ 20% | ⭐⭐⭐⭐⭐ 100% |
| 等待结果 | ⭐ 10% | ⭐⭐⭐⭐⭐ 100% |
| 数据库同步 | ⭐⭐ 30% | ⭐⭐⭐⭐⭐ 100% |
| 问题发现 | ⭐⭐ 30% | ⭐⭐⭐⭐ 80% |
| 报告详细度 | ⭐⭐ 40% | ⭐⭐⭐⭐⭐ 100% |
总分:
❌ 错误:只说"执行任务",不调用工具 ✅ 正确:明确 sessions_spawn + 具体参数
❌ 错误:sessions_spawn 后直接结束 ✅ 正确:sessions_yield + 等待推送
❌ 错误:启动后直接更新数据库 ✅ 正确:检查执行记录文件后才更新
❌ 错误:只跑测试,不检查实际任务 ✅ 正确:检查数据库 + 执行记录 + 问题发现
❌ 错误:只说"一切正常" ✅ 正确:列出状态 + 问题 + 建议
| 验收项 | 修复前 | 修复后 |
|---|---|---|
| sessions_spawn 真正执行 | ❌ | ✅ |
| sessions_yield 等待结果 | ❌ | ✅ |
| 执行记录文件存在 | ❌ | ✅ |
| 数据库状态同步 | ❌ | ✅ |
| 巡检发现问题 | ❌ | ✅ |
| 报告详细信息 | ❌ | ✅ |
| 文件 | 作用 |
|---|---|
docs/autoexecutor-issues-resolved.md | 问题追踪详细文档 |
memory/2026-03-30.md | 修复日志(每日) |
MEMORY.md | 长期记忆 |
SKILL.md | Skill 描述 |
通过 7 个问题的系统性修复,AutoExecutor 从"假执行"变成了"真执行":
Harness 实践契合度:从 24% 提升到 96%
文章发布时间:2026-03-30
关键词:AutoExecutor、Harness Engineering、问题追踪、sessions_spawn、sessions_yield
本文作者:lazyyoun
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!