從一句抱怨開始
第三天了。
這塊點心小板真的夠硬。Claude Code 在大放送期間讓我能一直衝,結果還是頂到了用量限制。早上後來去參加研討會,腦子裡一直在想一件事:
我花了多少時間在 copy/paste?
JTAG 的 call stack、SWD 的暫存器狀態、Serial Console 的 log——一段貼過去,AI 給建議,我改一下 code,重新 build、flash、再抓 log,再貼回去。來來回回。有時貼錯視窗,有時貼漏了關鍵的那幾行。
跟以前純靠自己 debug 比起來,確實快很多。但還是不夠快。Bug 像俄羅斯套娃,抓掉一層,裡面還有一層。每一次的「這次應該好了」到「怎麼又掛了」的迴圈,都讓人想把鍵盤推開。
所以我在想,如果能消除人為因素的話呢?
一個想法:給 AI 眼睛跟手
問題說清楚了就好解決。
我需要的不是更聰明的 AI,而是讓 AI 能自己看、自己動、自己驗。
不再是我充當「人肉資料傳輸管道」,把硬體的訊號用眼睛看完之後再貼給 AI,而是讓 AI 直接接上硬體的感知介面,取得第一手的訊號,做出判斷,然後直接驅動工具鏈——build、flash、reset——再自己確認結果。
這個想法就是 AI-HIL(AI Hardware-in-the-Loop)。
Giving hardware the soul of AI, realizing automated closed-loop development in the physical world.
AI-HIL 是什麼
AI-HIL 把 Claude Code 從「code 產生器」升級成「系統級工程師」。
透過 Model Context Protocol (MCP),Claude Code 連接到實體硬體,獲得三種能力:
- 感知(Perception):讀 Serial log、JTAG call stack、電流波形、Camera 畫面
- 行動(Action):Build/Flash firmware、硬體 Reset、電源控制
- 閉環驗證(Closed-Loop Validation):自動確認修復是否有效,記錄 bug 模式
換句話說,AI 不再只是坐在我旁邊出主意,而是能自己上工的 AI Employee。
系統架構
┌─────────────────────────────────────────────┐
│ Decision Brain │
│ Claude Code CLI + CLAUDE.md │
└───────────────────┬─────────────────────────┘
│ MCP
┌───────────────────▼─────────────────────────┐
│ Nervous System — FastMCP │
└──────┬──────────────────────────┬───────────┘
│ │
┌──────▼──────────┐ ┌───────────▼────────────┐
│ Perception │ │ Action Plane │
│ Serial / SSH │ │ Build / Flash │
│ JTAG / SWD │ │ Hard Reset │
│ Webcam / CV │ │ GPIO / Sim │
│ PPK2 Power │ └────────────────────────┘
│ SDR / RF │
│ Thermal / Mic │ ┌────────────────────────┐
└─────────────────┘ │ Context Plane │
│ Datasheets / PDFs │
│ Golden Samples │
└────────────────────────┘
所有 MCP Server 都用 FastMCP(Python)實作。每個 Server 封裝一個硬體維度,回傳的是語意化的診斷結論,而不是原始的 binary 資料。
AI 看到的不是 0xE000ED28 = 0x0400,而是 Stack overflow detected in task foo。
閉環是怎麼運作的
Triage Diagnosis Remediation
(anomaly) → (JTAG + PPK2 → (Claude Code
detected + Vision) fixes code)
│ │
└───────────────────────────────────────┘
▼
Verification
PASS ──► Record bug → next Triage
FAIL ──► Diagnosis (retry)
五個步驟形成自動閉環:
- Triage — 感知平面偵測異常(電流異常高、log 出現錯誤)
- Diagnosis — AI 同時檢查 JTAG stack、熱像圖、電流波形
- Remediation — Claude Code 修改 C/Zig/Rust 原始碼
- Build & Flash — 自動編譯、燒錄到目標板
- Verification — Serial log + PPK2 確認修復有效,記錄進
CLAUDE.md
每一次成功的 bug 修復都會被記錄成知識,讓 AI 在下次遇到類似問題時更快收斂。
標準診斷 SOP
Claude Code 遇到硬體問題時的標準流程:
read_serial_log() # 先看 log 有沒有明顯錯誤
read_call_stack() # HardFault 或 hang 時
measure_current(5000) # 電源異常時
capture_frame() # 需要確認物理狀態時
build_firmware()
→ flash_firmware()
→ read_serial_log() # 確認 clean boot
為什麼這件事值得做
說老實話,這個專案目前還在 「Ideally?」的階段——有些 task 需要實體硬體才能跑,還在一步一步往前推進。
但背後的邏輯是清楚的:
AI 吃更精準的資料,自然就能把事辦好。
當我需要手動 copy/paste log 的時候,我是一個有很多 overhead 的人肉 pipe。我會分心,會貼錯,會遺漏關鍵訊號。當 AI 自己能讀 JTAG、自己能量電流、自己能 flash 新版本再驗證,它拿到的是完整、高保真、即時的訊號——背景雜訊少了,推理品質就高了。
這不只是「讓 debug 自動化」,這是把嵌入式開發者從重複的感知-傳輸-指令迴圈中解放出來,讓人可以專注在真正需要判斷力的事情上。
至於「躺著數 $$ 💰」的部分——那個還早得很。先把閉環建好。
專案在這裡
如果你也在做嵌入式開發,或是對 MCP + 硬體整合有興趣,歡迎來看看:
👉 github.com/kuochenfu/ai-hil-mcp
Quick start 很簡單:
git clone https://github.com/kuochenfu/ai-hil-mcp.git ~/ai-hil-mcp
cd ~/my-firmware-project
bash ~/ai-hil-mcp/setup.sh
Setup 完之後,Claude Code 開啟你的 firmware 專案時會自動連上 MCP servers。
claude mcp list
# serial-mcp: ... ✓ Connected
結語
有時候,最好的工程解法就從一句抱怨開始。
「為什麼我要一直貼 log?」
問清楚了,答案就在那裡:讓 AI 自己去看。
這條路還很長,但方向是對的。
專案 repo:kuochenfu/ai-hil-mcp
Comments & Feedback