要用上 dotnet-testing-agent-orchestration 系列的測試工作流程,前置得依所用的 AI Coding Agent,從幾個不同的 repo 手動下載、複製對應的 Skills、Agents 與 Hooks;若是 Copilot 版,還多一道建立 RAG 索引的手續。dotnet-testing-agent 工具包把這些下載、複製(以及 Copilot 版的索引建立)與後續更新都接手過來,省去整段手動前置。
前言
要在專案裡用上 dotnet-testing-agent-orchestration-claude(或 Copilot 版的 dotnet-testing-agent-orchestration)這套測試工作流程,開發者得先做一連串手動準備:
- 從
dotnet-testing-agent-skills下載測試知識 Skills - 再依使用的 AI Coding Agent,下載並複製對應的 agents、hooks、skills(Claude 走 orchestration-claude)
- 若是 Copilot 版,還得多裝
mcp-local-rag、建立測試技能索引
這些下載、複製、設定的瑣事,往往就是讓人卻步、只觀望而不動手嘗試的門檻。
dotnet-testing-agent 工具包(正式名稱 dotnet-testing-agent-vscode-extensions)就是為了拆掉這道門檻而做的 VS Code Extension:把上面那些手動下載、複製、設定交給它完成;之後 Skills 或 Agent 的更新,也一樣透過工具包處理。這篇以 Claude 模式為主軸,Copilot 模式則在後面獨立一段完整說明。
這個工具包是什麼
先把範圍講清楚:dotnet-testing-agent 工具包部署的是「讓 AI Coding Agent 看得懂 .NET 測試」的領域知識與工作流程定義,不是 .NET SDK、測試框架或執行環境那一類東西 — 那些仍由你自己準備。換句話說,它設定的是 AI 助手,不是你的測試執行環境。
它支援兩種模式 — GitHub Copilot 與 Claude Code — 兩邊共用同一份底層測試知識;自 v0.2.0 起,這兩種模式整合成單一工具包,裝一份 .vsix 就能在同一個面板裡切換使用。
前置需求
| 項目 | 最低版本 |
|---|---|
| VS Code | 1.85.0 |
| Node.js | 18.0.0 |
| 作業系統 | Windows 10/11、macOS(皆完整支援) |
另外依使用的模式,還需要對應的 AI 工具:Claude 模式需要 Claude Code(優先搭配 VS Code 的 Claude 擴充套件,也支援 Claude Code CLI);Copilot 模式需要 GitHub Copilot Chat(最新版、已登入)。
怎麼安裝這個工具包
工具包不走 VS Code Marketplace,而是從 GitHub Releases 取得 .vsix。
工具包的 GitHub 發布頁:https://github.com/kevintsengtw/dotnet-testing-agent-vscode-extensions

v0.2.0 Release - dotnet Testing Agent v0.2.0 安裝指南
https://github.com/kevintsengtw/dotnet-testing-agent-vscode-extensions/releases/tag/v0.2.0

下載 dotnet-testing-agent-0.2.0.vsix,然後使用 VS Code 的 延伸模組 的 從 VSIX 安裝(或用命令列 code --install-extension dotnet-testing-agent-0.2.0.vsix)。

裝好之後,VS Code 左側 Activity Bar 會多出一個「dotnet-testing-agent 工具包」的圖示 (機器人)。點開,最上面就是 CLAUDE 模式區塊,分成「總覽 / Skills / Agents」三個分頁。還沒初始化時,總覽會顯示「尚未初始化」,旁邊兩個按鈕:初始化 Claude、環境診斷。

部署 Claude 模式
從面板按「初始化 Claude」,或從命令面板執行「初始化 Claude 模式」,工具包會依序跑完四個步驟:
- 前置環境檢查 — 確認 Node.js 等執行環境就緒
- 部署 Skills 到
.claude/skills/ - 部署 Agents 與 Hooks 到
.claude/agents/與.claude/hooks/,並把 hooks 寫進.claude/settings.json - 寫入安裝記錄
manifest-claude.json
跑完之後,總覽分頁就會從「尚未初始化」變成「已初始化」,列出安裝時間與工具包版本(完成後的樣子,見後面「部署到位了沒」那張截圖)。
這幾個步驟,其實就是 Claude 系列「安裝與環境設定」那篇手動做的事 — 把 Skills、Agents、Hooks 一個個放進 .claude/。差別只在於,現在這些由工具包自動完成,不必每個專案都重做一遍。
這裡值得單獨點出 Claude 模式跟 Copilot 模式的一個本質差異:Claude 模式不需要 RAG,也不用安裝 mcp-local-rag、不用建本地索引庫。 它就是把定義檔部署到位,純檔案操作,所以比 Copilot 模式少了一層可能出錯的環節。(需要 mcp-local-rag 與本地索引的是 Copilot 模式,原因後面會提到。)
部署完成後的工作區內容
初始化後,專案會多出這樣的結構:
<專案>/
├── .claude/
│ ├── skills/ ← 測試知識 Skills 與 orchestrator skills
│ ├── agents/ ← Subagent 定義(4 組 × 4 個)
│ └── hooks/ ← 計時 hooks,並寫入 settings.json
└── .dotnet-testing-agent/
└── manifest-claude.json ← Claude 模式安裝記錄(不進 git)切到 Skills 分頁,可以看到部署了哪些 Skills、版本與路徑;下半部還單獨列出 Claude 專屬的 orchestrator skills — dotnet-test,以及 unit / integration / aspire / tunit 四個 orchestrator skill。

切到 Agents 分頁,則列出部署的 Subagent 定義,以及 Hooks 區塊(兩個計時用的 shell script,加上 settings.json 的 hooks 設定)。

到這裡,前置部署就完成了。接下來就跟系列文章講的一樣 — 打開 Claude Code,下一句斜線指令(例如「為 OrderService 撰寫單元測試」),Orchestrator 就接手後面整套流程。工具包的角色到「把定義檔部署到位」為止;真正跑測試這件事,還是交給 Claude Code 上的那套 orchestration。
部署到位了沒?環境診斷
最怕的往往不是部署不起來,而是「好像弄好了,但哪裡不太對」。所以工具包內建了一個環境診斷。
按總覽分頁的「環境診斷」,它會跑五項檢查,把結果列在下方:

五項分別是:Node.js 版本、.claude/skills/ 目錄、.claude/agents/ 目錄、.claude/hooks/ 目錄(連同 settings.json 是否已設定),以及 Claude Code CLI 是否安裝。任何一項沒過,診斷會標示出來;目錄類的問題還能直接重新部署修復。
比起自己一個檔案一個檔案核對,這張檢查表能很快回答一個問題:「我這個專案,到底準備好了沒?」
截圖裡的 Skills / Agents 數量會隨著上游知識庫的 release 版本浮動,以你初始化當下的診斷結果為準。
Copilot 模式:功能已完整,但不再改版
工具包同時容納 Copilot 與 Claude 兩種模式,各自獨立、互不干擾 — 同一個 Activity Bar 圖示底下,CLAUDE 模式與 COPILOT 模式是兩個可摺疊的區塊,各有各的初始化動作、各自的安裝記錄(manifest-claude.json 與 manifest.json)。

前面整篇都在講 Claude 模式,這裡就把 Copilot 模式一併說清楚。先把話講在前頭:Copilot 模式的功能已經完整、可以正常使用,但後續不會再進行任何改版。 它是這套架構最早的完整實作,會保留下來給既有使用者繼續用;新的開發與調整,都集中到 Claude 模式。
Copilot 模式與 Claude 模式最關鍵的差別,在於 Copilot Chat 取用 Skills 的方式 — 它不是直接讀檔案,而是透過 RAG(檢索增強) 去檢索 Skills 內容。也因為這樣,Copilot 模式比 Claude 模式多了一整層 RAG 相關的處理。
初始化會依序完成下面這些步驟(比 Claude 模式多):
- 前置環境檢查(Node.js、npm、
mcp-local-rag) - 部署 Skills 到
.github/skills/ - 部署 orchestration 定義到
.github/agents/ - 用
mcp-local-rag把 Skills 內容建立成本地 RAG 索引(LanceDB) - 寫入安裝記錄
manifest.json - 檢查上游 release 版本,有新版時跳出更新通知
初始化一開始,還會先讓你選安裝模式,差別在於 RAG 用的 embedding model 從哪裡來:

- 線上模式:由
mcp-local-rag自動從 HuggingFace 下載 embedding model - 離線模式:使用預先打包好的 model zip,不連 HuggingFace,適合企業內網或沒有外網的環境
面板分頁也比 Claude 模式多。Claude 模式只有「總覽 / Skills / Agents」,Copilot 模式則是「總覽 / Skills / Orchestration / RAG 索引 / 環境診斷」五個分頁。多出來的「RAG 索引」分頁可以重建索引,也能驗證索引 — 檢查 LanceDB 是否存在、文件與 chunk 數量,並做一次 smoke test 確認檢索真的回得來:

環境診斷也比 Claude 模式重,是七項檢查(Claude 模式是五項)。多出來的幾項都跟 RAG 有關:npm、mcp-local-rag、LanceDB 索引,再加上 Copilot Chat 本身是否安裝:

整體看下來,Copilot 模式因為要餵 RAG,環節比較多、依賴也比較重;Claude 模式因為 Claude Code 會直接讀取 .claude/skills/,把整層 RAG 都省掉了。這也是後續為什麼把重心放到 Claude 模式的原因之一。
上游更新了,怎麼辦?
工具包部署的內容,其實來自幾個各自獨立的上游 repo:
dotnet-testing-agent-skills— 共用的測試知識 Skills,兩種模式都會用到dotnet-testing-agent-orchestration— Copilot 模式的 orchestration 定義dotnet-testing-agent-orchestration-claude— Claude 模式的 agents / orchestration 定義
這幾個 repo 都會持續更新,所以工具包在「版本怎麼跟上」這件事上走的是「線上優先、內建備援」:初始化時優先從各自對應的 GitHub Release 抓最新版本,抓不到(例如沒有網路)才退回工具包內建的版本。
這樣做的好處是,這些定義可以獨立於工具包更新 — 上游出了新版,重新部署一次就拿得到,不必等工具包跟著改版。
順帶澄清一個容易搞混的地方:這裡講的「線上」跟前面 Copilot 模式選的「線上安裝模式」是兩回事。Copilot 那個指的是 RAG embedding model 從哪裡下載;這裡指的是上面這幾個上游 repo 的版本來源。
小結
工具包把「在 Claude Code 上備齊這套測試工作流程所需的 Skills、Agents、Hooks」這段手動工作自動化,再用環境診斷確認結果。對照系列裡手動安裝的那一篇,它把入門門檻往下降了一截。
尤其是當你想在多個專案、或讓整個團隊都用上這套工作流程的時候,省下的是反覆手動下載、複製與核對的功夫。
把定義檔部署到位之後,真正的主角還是 Claude Code 上那套 1 + 4 的 orchestration。工具包做的只是把前置那一段顧好。
參考資源
- dotnet-testing-agent 工具包(VS Code Extension):https://github.com/kevintsengtw/dotnet-testing-agent-vscode-extensions
- dotnet-testing-agent-skills:https://github.com/kevintsengtw/dotnet-testing-agent-skills
- dotnet-testing-agent-orchestration(Copilot 版):https://github.com/kevintsengtw/dotnet-testing-agent-orchestration
- dotnet-testing-agent-orchestration-claude(Claude Code 版):https://github.com/kevintsengtw/dotnet-testing-agent-orchestration-claude
- Claude Code 官方文件:https://docs.claude.com/en/docs/claude-code/overview
純粹是在寫興趣的,用寫程式、寫文章來抒解工作壓力