Execute-Verify-Report (EVR) - 三步法工具 ✅
执行不是确认,验证不是可选,报告不是敷衍
问题背景
AI Agent常见错误:
- ❌ "我会做的" ≠ 做了
- ❌ "完成了"但没有验证
- ❌ 无限重试同一失败操作
- ❌ 静默失败不报告
Execute-Verify-Report 三步法从根源解决。
核心原则
| 步骤 | 含义 | 反例 | 正例 |
|---|---|---|---|
| Execute | 实际执行 | "我会去做的" | "已执行:date 输出 13:17:23" |
| Verify | 验证结果 | "应该成功了" | "验证:文件存在,大小2.3KB" |
| Report | 完整汇报 | "搞定了" | "执行→验证→结果→下一步" |
使用方法
方式1:汇报模板(强制)
**任务**: [任务描述]
🔧 **Execute**
```bash
[实际执行的命令]
输出: [粘贴实际输出]
✅ Verify
- 验证方法: [如何验证]
- 验证结果: ✅通过 / ❌失败
- 失败原因: [如果失败]
📋 Report
- 结果: [一句话总结]
- 数据: [具体数字/状态]
- 下一步: [下一步行动]
### 方式2:脚本辅助
```bash
# 开始任务
evr start "修复安全漏洞"
# 执行步骤
evr step "修改配置文件权限"
# 自动提示: 请运行验证命令
# 验证步骤
evr verify "chmod 600 ~/.openclaw/openclaw.json"
# 自动检查: 文件权限是否为600?
# 结束任务
evr done
# 生成完整EVR报告
失败处理
重试规则
// 最多重试3次
for (let attempt = 1; attempt <= 3; attempt++) {
const result = execute(command);
if (verify(result)) {
report("✅ 成功", result);
break;
}
if (attempt === 3) {
report("❌ 连续3次失败,停止重试", result);
escalate("需要人工干预");
}
}
静默失败检测
# 错误示例(静默失败)
rm important-file.txt # 如果文件不存在,命令返回0但无事发生
# EVR正确做法
if [ -f important-file.txt ]; then
rm important-file.txt
# 验证: 文件是否确实被删除
if [ ! -f important-file.txt ]; then
echo "✅ 验证通过: 文件已删除"
else
echo "❌ 验证失败: 文件仍存在"
fi
else
echo "⚠️ 文件不存在,无需删除"
fi
案例分析
案例1:文件删除
❌ 错误方式:
用户: 删除文件
AI: 好的,我会删除的。 [然后没做]
✅ EVR正确方式:
🔧 Execute
$ rm /path/to/file.txt
[无输出,命令成功]
✅ Verify
$ ls -la /path/to/file.txt
ls: cannot access '/path/to/file.txt': No such file or directory
验证结果: ✅ 文件确实已删除
📋 Report
- 结果: 文件删除成功
- 数据: 删除了1个文件
- 验证: 文件不存在确认
- 下一步: 进行下一个任务
案例2:Git提交
❌ 错误方式:
用户: 提交更改
AI: 好的,已提交。 [实际有未提交文件]
✅ EVR正确方式:
🔧 Execute
$ git add -A
$ git commit -m "fix: 修复安全问题"
[master a1b2c3d] fix: 修复安全问题
2 files changed, 15 insertions(+)
✅ Verify
$ git status
On branch master
nothing to commit, working tree clean
$ git log --oneline -1
a1b2c3d fix: 修复安全问题
验证结果: ✅ 提交成功,工作区干净
📋 Report
- 结果: Git提交成功
- 数据: 2个文件,15行改动
- 提交: a1b2c3d
- 验证: working tree clean
- 下一步: 推送到远程
集成到AGENTS.md
## Execute-Verify-Report (EVR) 铁律
**所有任务必须遵循:**
1. **Execute** — 实际执行,不只是确认
- 必须看到命令输出
- 必须等待命令完成
- 必须捕获返回码
2. **Verify** — 验证结果正确
- 文件操作: 检查文件存在/内容/权限
- 网络操作: 检查响应状态码
- 系统操作: 检查进程/服务状态
- 数据操作: 检查数据准确性
3. **Report** — 汇报做了什么和验证结果
- 不要只说"完成了"
- 要说"完成了什么,如何验证的"
- 包含具体数据
**禁止:**
- ❌ "我会做的" ≠ 做了
- ❌ "完成了"但没有验证
- ❌ 最多重试3次,之后必须停止
- ❌ 静默失败
**违反EVR = 严重错误,立即纠正**
最佳实践
验证方法速查
| 操作类型 | 验证命令 | 通过标准 |
|---|---|---|
| 文件创建 | ls -la file | 文件存在 |
| 文件删除 | ls file 2>&1 | 文件不存在 |
| 文件修改 | cat file / md5sum | 内容/哈希匹配 |
| 权限修改 | stat -c "%a" file | 权限值正确 |
| Git提交 | git status / git log | 干净/提交存在 |
| 网络请求 | curl -I url | HTTP 200 |
| 服务启动 | systemctl status svc | active (running) |
| 进程运行 | pgrep process | 返回PID |
报告模板
✅ [任务名] 完成
**执行**: [命令]
**验证**: [方法] → [结果]
**数据**: [具体数字]
**下一步**: [行动]
License
MIT
Created by 小白 🤍
基于 STANDING-ORDERS 核心原则
"执行不是确认,验证不是可选,报告不是敷衍"