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 流程、Token 更新機制及權限範圍需要持續驗證
  • 錯誤處理:我們必須確保在外部服務無法使用時能夠優雅降級

這造成了沉重的維護負擔,以及可能影響正式工作流程的潛在可靠性問題。

在真實環境中使用 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."

代理完成第一步後,您可以根據輸出中提供的 Session 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.