在 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"
智能體會自動完成以下步驟:
- 複製 vm0-skills 儲存庫
- 產生所有技能的測試清單
- 系統性執行每個技能的測試
- 彙整完整測試結果
- 更新儲存庫 README
- 為失敗項目建立 GitHub 議題
- 發送 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 立即建立你的免費帳號,並部署第一個智能體。
開始打造自動化工作流程的未來。





