Back to all posts

如何针对快速变化的 API 自动测试 AI 智能体技能

如何针对快速变化的 API 自动测试 AI 智能体技能

vm0-ai/vm0-skills 仓库中,我们开发了数十个用于集成各类第三方 SaaS 平台的技能。这些技能使 Claude Code 和 Codex 智能体能够与 GitHub、Slack、Discord 等众多服务无缝交互。

尽管这些集成极具价值,但它们也带来了严峻的测试挑战。若缺乏完善的测试基础设施,我们既无法可靠地验证技能是否按预期运行,也无法在第三方 API 发生变化时及时发现破坏性变更。

为什么测试第三方 AI 智能体技能如此困难

测试第三方集成本身就充满挑战。每个技能都依赖可能随时发生变化的外部 API,需要持续保持警惕才能维持可靠性。传统单元测试往往力不从心,因为它们无法复现真实的 API 行为、身份验证流程,以及只有在生产环境中才会出现的边界情况。

缺乏全面的测试,以下几个关键问题将无从解决:

  • 功能验证:无法确认技能在实际使用场景中是否按预期工作
  • 破坏性变更检测:当第三方 SaaS API 发生演进时,没有自动化手段来识别兼容性问题
  • 身份验证校验:OAuth 流程、令牌刷新机制和权限范围需要持续验证
  • 错误处理:必须确保在外部服务不可用时能够优雅降级

这造成了沉重的维护负担,并可能引发影响生产工作流的可靠性问题。

用 AI 智能体在真实环境中测试 AI 智能体技能

由于这些技能专为 Claude Code 和 Codex 智能体设计,最自然、最有效的测试方式就是使用这些智能体本身来测试它们。这构建了一个自我验证的生态系统,让工具在其预期环境中完成自我测试。

VM0 提供了可靠运行 Claude Code 和 Codex 智能体所需的云基础设施,是实施这一测试策略的理想平台。

自动化测试 AI 智能体技能的端到端工作流

以下是自动化技能测试的完整工作流。该智能体会系统地测试仓库中的每一个技能,生成全面的报告,并通过多个渠道通知团队。

# Skills Tester Agent

## Overview

This agent performs automated testing of all skills in the vm0-skills repository.

## Critical Requirements

**MANDATORY: Complete All Tests Without Exception**

- No matter how long the task takes, it MUST be completed in full
- Continue until ALL items in `TODO.md` are tested - no early termination
- **NO skipping tasks** - every skill must be tested
- **NO selective testing** - do not cherry-pick which skills to test
- **Every example MUST have a result** - each example command in every skill's SKILL.md must be executed and recorded
- If a test fails, record the failure and continue to the next test
- Do not stop or pause until the entire test suite is complete

## Instructions

1. **Clone and Initialize**
   - Clone the repo `vm0-ai/vm0-skills`
   - Create a `TODO.md` file to track testing progress

2. **Generate Todo List**
   - For each skill folder in the repo, add a todo item to `TODO.md`

3. **Test Each Skill**
   - Create a sub-agent for each skill to test
   - Each sub-agent should:
     - Verify all required environment variables exist
     - Test each example command in the skill's SKILL.md
     - Write a temporary test result markdown file
     - Record whether the test passed, and specifically note any shell command failures or jq parsing errors

4. **Summarize Results**
   - Aggregate all test results into `result.md`

5. **Update README**
   - Based on `result.md`, update the `README.md`
   - Update or insert a skill list section with:
     - Brief description of each skill's capabilities
     - Test status (passed/failed)

6. **Commit and Push**
   - Only commit `README.md`
   - Push to the repository using `GITHUB_TOKEN` for authentication

7. **Report Issues**
   - For skills with test failures, create a GitHub issue summarizing all problems

8. **Notify Slack**
   - Post a message to Slack channel `#dev` with:
     - Total number of skills
     - Number of passed tests
     - Number of failed tests
     - Brief summary of issues
     - Link to the GitHub issue (if created)

9. **Notify Discord**
   - Post a message to the Discord `skills` channel with:
     - Confirmation that routine testing is complete
     - Number of skills that passed
     - Total number of skills tested

使用 vm0.yaml 配置智能体

接下来,只需安排 VM0 运行此工作流。创建一个 vm0.yaml 文件来描述智能体容器配置。该文件指定智能体所需的技能、要注入的环境变量,以及如何运行测试工作流。

version: "1.0"

agents:
  skills-tester:
    image: skills-tester:latest
    provider: claude-code
    instructions: AGENTS.md
    skills:
      - https://github.com/vm0-ai/vm0-skills/tree/main/github
      - https://github.com/vm0-ai/vm0-skills/tree/main/slack
      - https://github.com/vm0-ai/vm0-skills/tree/main/discord
    environment:
      CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
      DISCORD_BOT_TOKEN: ${{ secrets.DISCORD_BOT_TOKEN }}
      # ... additional environment variables as needed

完整配置文件请参阅 vm0-skills/.vm0/vm0.yaml。为简洁起见,本示例省略了部分环境变量。

该智能体配置包含三个核心技能:

  • GitHub 技能:用于仓库操作、Issue 创建和 README 更新
  • Slack 技能:用于向团队频道发布测试结果
  • Discord 技能:用于向社区发送测试完成通知

创建 Docker 镜像

您还需要配置一个 Docker 镜像,安装必要的依赖项,尤其是智能体用于仓库操作的 GitHub CLI(gh)。

创建 Dockerfile

FROM node:20-slim

RUN apt-get update && apt-get install -y \\
    git \\
    curl \\
    python3 \\
    python3-pip \\
    python3-venv \\
    jq \\
    && rm -rf /var/lib/apt/lists/*

RUN curl -fsSL <https://cli.github.com/packages/githubcli-archive-keyring.gpg> | dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \\
    && chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \\
    && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] <https://cli.github.com/packages> stable main" | tee /etc/apt/sources.list.d/github-cli.list > /dev/null \\
    && apt-get update \\
    && apt-get install -y gh \\
    && rm -rf /var/lib/apt/lists/*

RUN npm install -g @anthropic-ai/claude-code

该 Dockerfile 创建了一个轻量级容器,包含:

  • Node.js 20:Claude Code 的运行时环境
  • Git:版本控制操作
  • GitHub CLI:简化的 GitHub API 交互
  • Python 3:用于运行技能测试脚本
  • jq:shell 命令中的 JSON 解析

整合 AI 技能测试系统

就这些!有了 AGENTS.mdDockerfilevm0.yaml 这三个文件,您就拥有了一套完整的自动化测试系统。完整实现请参阅 vm0-skills/.vm0

在项目目录中执行以下命令,构建并部署智能体:

$ vm0 image build -f Dockerfile --name skills-tester
$ vm0 compose vm0.yaml

第一条命令构建包含所有必要依赖的 Docker 镜像,第二条命令将智能体配置注册到 VM0 平台。

运行工作流

现在,您可以用一条命令运行整个测试工作流:

$ vm0 run skills-tester "do the job"

智能体将自主完成以下操作:

  1. 克隆 vm0-skills 仓库
  2. 为所有技能生成测试清单
  3. 系统地对每个技能执行测试
  4. 汇编全面的测试结果
  5. 更新仓库 README
  6. 为失败项创建 GitHub Issue
  7. 向 Slack 和 Discord 发送通知

逐步调试

如果您希望逐步调试工作流,或先测试单个技能,可以使用针对性的提示词:

$ vm0 run skills-tester "Only do the first step, using a single skill."

智能体完成第一步后,您可以根据输出中提供的会话 ID 继续该会话:

$ vm0 run continue SESSION_ID "Do the next step."

这种交互式方式允许您:

  • 在继续之前验证每个步骤
  • 检查中间结果
  • 根据需要调整工作流
  • 更有效地调试问题

结果与通知

工作流完成后,您将通过多个渠道收到确认测试结果的通知。

Discord 社区通知,显示测试完成摘要

Slack 团队通知,包含详细测试结果

对于测试失败的技能,智能体会自动创建包含详细失败信息的 GitHub Issue。请参阅 Skill Test Failures - Issue #2 查看生成的 Issue 格式示例。

自动化 AI 智能体技能测试的关键经验

使用 VM0 智能体实施自动化技能测试带来了若干关键优势:

  • 持续验证:在第三方 API 的破坏性变更影响生产环境之前立即发现
  • 真实测试环境:智能体在技能实际使用的上下文中进行测试,消除了测试与生产之间的差距
  • 零人工干预:配置完成后,测试工作流按计划自动运行,无需人工介入
  • 全面覆盖:每个技能都经过系统测试,确保没有任何遗漏
  • 团队感知:多渠道通知让每个人都能及时了解测试结果和问题

借助 VM0 的云基础设施和 Claude 的智能体能力,您可以在最大程度降低持续维护负担的同时,保持与外部服务的可靠集成。这种方式将技能测试从繁琐、易出错的手动流程转变为全自动的质量保障体系。

立即开始使用 VM0

准备好用 AI 智能体自动化您自己的工作流了吗?VM0 让您能够在几分钟内(而非数周)部署生产就绪的智能体。

您可以用 VM0 构建什么

  • 自动化测试流水线

    运行像这个技能测试器一样的定时测试任务,提前发现第三方 API 中的破坏性变更。

  • 内容生成工作流

    将研究资料、笔记或原始输入转化为博客文章、文档或发布说明,无需手动复制粘贴。

  • 数据处理智能体

    从多个来源拉取数据、清洗数据并向下游传输,同时显式处理失败和重试。

  • 客户支持自动化

    对传入请求进行分类、起草回复,并在需要时将边界情况移交给人工处理。

  • 代码审查与分析

    审查 Pull Request、标记潜在问题,并在人工查看代码之前执行基本规则。

访问 vm0.ai 创建您的免费账户,立即部署您的第一个智能体。

开始构建自动化工作流的未来。

Stay in the loop

// Get the latest insights on AI teammates and collaboration.