在 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.md、Dockerfile 和 vm0.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"
智能体将自主完成以下操作:
- 克隆 vm0-skills 仓库
- 为所有技能生成测试清单
- 系统地对每个技能执行测试
- 汇编全面的测试结果
- 更新仓库 README
- 为失败项创建 GitHub Issue
- 向 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 创建您的免费账户,立即部署您的第一个智能体。
开始构建自动化工作流的未来。





