Back to all posts

如何自動化測試智能體技能以因應快速變動的 API

如何自動化測試智能體技能以因應快速變動的 API

在 vm0-ai/vm0-skills 儲存庫中,我們已開發數十種技能,能與各種第三方 SaaS 平台整合。這些技能讓 Claude Code 和 Codex 智能體能無縫互動,支援如 GitHub、Slack、Discord 等多種服務。

雖然這些整合非常有價值,但也帶來了重大的測試挑戰。沒有合適的測試基礎設施,我們無法可靠驗證技能是否如預期運作,或在第三方 API 變動時偵測到破壞性變更。

為什麼測試第三方智能體技能很困難

測試第三方整合本質上就很困難。每個技能都依賴於可能隨時變動的外部 API,必須時刻保持警覺以維持可靠性。傳統的單元測試往往無法複製真實世界的 API 行為、認證流程,以及僅在生產環境中才會出現的邊緣案例。

缺乏全面測試時,會有幾個關鍵問題無法解決:

  • 功能驗證:我們無法確認技能在實際使用情境下能否如預期運作
  • 破壞性變更偵測:當第三方 SaaS API 變動時,沒有自動化方式識別相容性問題
  • 認證驗證:OAuth 流程、權杖刷新機制與權限範圍需持續驗證
  • 錯誤處理:需確保外部服務不可用時能優雅降級

這會造成重大的維護負擔與潛在的可靠性問題,進而影響生產工作流程。

使用智能體在真實環境中測試智能體技能

由於這些技能專為 Claude Code 和 Codex 智能體設計,最自然且有效的方法就是用這些智能體來測試自身技能。這樣能建立一個自我驗證的生態系統,讓工具在其預期環境中自我測試。

VM0 提供了可靠執行 Claude Code 和 Codex 智能體所需的雲端基礎設施,是實現此測試策略的理想平台。

智能體技能自動化測試的端到端工作流程

完整的自動化技能測試工作流程如下所述。這個智能體會系統性測試儲存庫中的每個技能,產生完整報告,並透過多個管道通知團隊。

# 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 技能:用於儲存庫操作、建立議題及更新 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 解析

組合智能體技能測試系統

就這麼簡單!只要有這三個檔案: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"

智能體會自動完成以下步驟:

  1. 複製 vm0-skills 儲存庫
  2. 產生所有技能的測試清單
  3. 系統性執行每個技能的測試
  4. 彙整完整測試結果
  5. 更新儲存庫 README
  6. 為失敗項目建立 GitHub 議題
  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 議題。範例請見 Skill Test Failures - Issue #2。

自動化智能體技能測試的關鍵收穫

使用 VM0 智能體實現自動化技能測試有多項關鍵優勢:

  • 持續驗證:即時捕捉第三方 API 的破壞性變更,避免影響生產環境
  • 真實測試環境:智能體在實際使用情境下測試技能,消除測試與生產落差
  • 零人工干預:配置完成後,測試工作流程會自動排程執行,無需人工介入
  • 全面覆蓋:每個技能都被系統性測試,確保不遺漏任何問題
  • 團隊即時掌握:多管道通知讓所有人都能即時獲知測試結果與問題

善用 VM0 的雲端基礎設施與 Claude 智能體能力,你可以維持與外部服務的可靠整合,同時大幅減輕持續維護負擔。這種方法將技能測試從人工、易出錯的流程,轉變為全自動的品質保證系統。

立即開始使用 VM0

準備好用智能體自動化你的工作流程了嗎?VM0 讓你在幾分鐘內就能部署可用於生產的智能體。

你可以用 VM0 建立什麼

  • 自動化測試流程

    執行像這個技能測試器一樣的排程測試作業,及早發現第三方 API 的破壞性變更。

  • 內容產生工作流程

    將研究、筆記或原始輸入自動轉換為部落格文章、文件或發佈說明,無需手動複製貼上。

  • 資料處理智能體

    從多個來源擷取資料、清理並下游傳遞,同時明確處理失敗與重試。

  • 客服自動化

    分流來件、草擬回覆,遇到特殊案例時再交由人工處理。

  • 程式碼審查與分析

    審查 Pull Request、標記潛在問題,並在人工審查前先執行基本規則檢查。

造訪 vm0.ai 立即建立你的免費帳號,並部署第一個智能體。

開始打造自動化工作流程的未來。

Stay in the loop

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