在 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.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."
代理完成第一步後,您可以根據輸出中提供的 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 建立您的免費帳號,立即部署您的第一個代理。
開始打造自動化工作流程的未來。





