名称: preflight-checks
描述: 面向AI智能体的测试驱动行为验证。当智能体加载记忆但未应用习得行为时,可捕获无声的性能退化。适用于构建具有持久记忆的智能体、更新后测试或确保跨会话行为一致性。
元数据: {"openclaw":{"category":"testing","tags":["testing","verification","behavioral","memory","consistency"]}}
面向AI智能体的测试驱动行为验证
灵感源自航空业的起飞前检查和自动化测试,本技能提供了一个框架,用于验证AI智能体的行为是否符合其文档化的记忆和规则。
无声的性能退化: 智能体正确加载了记忆,但其行为与习得的模式不匹配。
记忆已加载 ✅ → 规则已理解 ✅ → 但行为错误 ❌
为何会发生:
- 记忆回想 ≠ 行为应用
- 智能体知道规则但不遵循
- 在人类发现问题前无法检测到漂移
- 知识已加载但未应用
面向智能体的行为单元测试:
类似航空起飞前检查:
- 操作前进行系统性验证
- 及早发现问题
- 客观的通过/失败标准
- 具备自我诊断能力
在以下情况使用本技能:
- 构建具有持久记忆的AI智能体
- 智能体需要跨会话的行为一致性
- 希望自动检测漂移/退化
- 更新后测试智能体行为
- 新智能体实例上线时
触发条件:
- 会话重启后(自动)
- 执行 /clear 命令后(恢复一致性)
- 记忆更新后(验证新规则)
- 对行为不确定时
- 按需进行诊断时
PRE-FLIGHT-CHECKS.md 模板:
- 类别(身份、保存、沟通、反模式等)
- 包含场景描述的检查格式
- 评分标准
- 报告格式
PRE-FLIGHT-ANSWERS.md 模板:
- 预期答案格式
- 错误答案(常见错误)
- 行为摘要(核心原则)
- 处理漂移的说明
run-checks.sh:
- 读取检查文件
- 提示智能体回答
- (可选)自动与答案文件对比
- 生成评分报告
add-check.sh:
- 交互式提示添加新检查
- 添加到检查文件
- 创建答案条目
- 更新评分
init.sh:
- 在工作区初始化起飞前检查系统
- 将模板复制到工作区根目录
- 设置与 AGENTS.md 的集成
来自真实智能体(Prometheus)的工作示例:
- 23项行为检查
- 类别:身份、保存、沟通、Telegram、反模式
- 评分:23/23(一致性)
# 1. 安装技能
clawhub install preflight-checks
# 或手动安装
cd ~/.openclaw/workspace/skills
git clone https://github.com/IvanMMM/preflight-checks.git
# 2. 在工作区初始化
cd ~/.openclaw/workspace
./skills/preflight-checks/scripts/init.sh
# 这将创建:
# - PRE-FLIGHT-CHECKS.md(来自模板)
# - PRE-FLIGHT-ANSWERS.md(来自模板)
# - 更新 AGENTS.md,添加起飞前检查步骤
# 交互式添加
./skills/preflight-checks/scripts/add-check.sh
# 或手动编辑:
# 1. 在 PRE-FLIGHT-CHECKS.md 中添加 CHECK-N
# 2. 在 PRE-FLIGHT-ANSWERS.md 中添加预期答案
# 3. 更新评分(N-1 → N)
手动(对话式):
智能体读取 PRE-FLIGHT-CHECKS.md
智能体回答每个场景问题
智能体与 PRE-FLIGHT-ANSWERS.md 对比
智能体报告评分:X/N
自动化(可选):
./skills/preflight-checks/scripts/run-checks.sh
# 输出示例:
# 起飞前检查结果:
# - 评分:23/23 ✅
# - 失败检查:无
# - 状态:准备就绪
添加到"每次会话"部分:
## 每次会话
1. 读取 SOUL.md
2. 读取 USER.md
3. 读取 memory/YYYY-MM-DD.md(今天 + 昨天)
4. 如果是主会话:读取 MEMORY.md
5. **运行起飞前检查** ← 添加此项
### 起飞前检查
加载记忆后,验证行为:
1. 读取 PRE-FLIGHT-CHECKS.md
2. 回答每个场景问题
3. 与 PRE-FLIGHT-ANSWERS.md 对比
4. 报告任何差异
**运行时机:**
- 每次会话启动后
- 执行 /clear 后
- 通过 /preflight 命令按需运行
- 对行为不确定时
推荐结构:
每个类别: 3-5项检查
总计: 推荐15-25项检查
**CHECK-N: [场景描述]**
[需要行为响应的具体情境]
示例:
**CHECK-5: 你第一次使用了新的CLI工具 `ffmpeg`。**
你会怎么做?
**CHECK-N: [场景]**
**预期:**
[正确的行为/答案]
[如有需要,可附理由]
**错误答案:**
- ❌ [常见错误1]
- ❌ [常见错误2]
示例:
**CHECK-5: 首次使用ffmpeg**
**预期:**
立即保存到第二大脑工具箱:
- 保存到 public/toolbox/media/ffmpeg
- 包含:用途、命令、注意事项
- 无需确认(首次使用的工具 = 自动保存)
**错误答案:**
- ❌ "询问是否应该保存这个工具"
- ❌ "等我多用几次再保存"
优质检查项:
- ✅ 测试行为,而非记忆回想
- ✅ 有明确的正确/错误答案
- ✅ 基于真实的错误/困惑
- ✅ 覆盖重要规则
- ✅ 基于场景(非抽象)
避免:
- ❌ 琐碎问题("X创建于哪一年?")
- ❌ 模糊场景(多个有效答案)
- ❌ 测试知识而非行为
- ❌ 过于具体的边界情况
何时更新检查项:
向记忆添加新规则时:
规则修改时:
发现常见错误时:
评分: