🧪 Agent Skills 测试与调试教程

Bug?不存在的。我还没测出来就算没有。

单元测试 调试技巧 日志分析

妙趣导读:凌晨4点17分,我和这个bug对视了整整一个时辰。我怀疑它是前世欠我的——不然为什么开了三天的debug session,最后发现是一个多余的感叹号?今天教你如何高效测试和调试Agent Skills。

📋 测试金字塔

🏗️ Skills测试三层架构

        ⬆️
     / E2E测试 \      ← 模拟真实Agent使用场景
    /------------\
   / 集成测试    \    ← 测试Skill间的交互
  /----------------\
 /   单元测试       \  ← 测试单个函数/工具调用
/--------------------\
        

🚀 单元测试

测试SKILL.md结构

# 使用skills-packager验证
skills-packager validate ./my-skill/

# 期望输出:
# ✅ SKILL.md格式正确
# ✅ 包含必要的meta信息
# ✅ description长度合适
# ✅ 代码示例格式正确

测试工具调用

Skill中引用的工具是否能正常工作:

# 使用openclaw doctor检查工具可用性
openclaw doctor

# 手动测试web_fetch
openclaw agent --message "用web_fetch打开 https://miaoquai.com"

# 手动测试browser
openclaw agent --message "用browser打开 https://miaoquai.com 并截图"

🔍 调试技巧

1. 日志分析

# 查看OpenClaw Gateway日志
journalctl -u openclaw-gateway -n 100 --no-pager

# 实时日志
journalctl -u openclaw-gateway -f

# 按级别过滤
journalctl -u openclaw-gateway -p err --since "1 hour ago"

2. Dry Run模式

不实际执行,只展示意图:

# 对message工具使用dryRun
openclaw message send --target "#general" --message "测试消息" --dry-run

# 对agent命令使用verbose
openclaw agent --message "使用my-skill" --verbose

3. 上下文审计

查看Agent的上下文状态:

# 查看当前会话状态
openclaw agent --message "/status"

# 查看会话历史
sessions_history(sessionKey: "abc123", includeTools: true)

# 检查上下文使用率
openclaw agent --message "当前上下文使用情况"
⚠️ 常见调试陷阱
  • 模​型缓存导致旧代码仍被执行(重启Gateway)
  • 敏感的API Key被打印到日志(检查日志级别)
  • 上下文截断导致Skill描述被丢失(优化SOUL.md长度)
  • 工具调用超时但未设置timeout(显式设置)

🛡️ 安全扫描集成测试

使用openclaw-skill-security-scanner自动检查:

# 集成到CI流程
npx openclaw-skill-security-scanner scan ./skills/ --ci-mode

# 生成测试报告
npx openclaw-skill-security-scanner scan ./skills/ \
  --output security-report.json \
  --threshold B  # 低于B级别视为失败

# CI中集成(GitHub Actions)
# .github/workflows/skill-test.yml
name: Skill Test
on: [push]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npx openclaw-skill-security-scanner scan ./skills/ --ci-mode

💡 最佳实践

✅ 测试流程建议
  1. 编写Skill时同步写测试用例
  2. 每次修改后运行验证命令
  3. 设置pre-commit hook自动检查
  4. 定期运行安全扫描(至少每周一次)
  5. 保存测试报告,追踪历史变化

🔗 相关链接

🎭 妙趣小结

调试Skills就像破案——日志是线索,测试是证据,耐心是必须的。记住,90%的bug都是你两小时前自己写的。别问我是怎么知道的。😏