前言¶
在 DSH(DeepSeek Harness)的插件生態中,51 單片機的開發流程通常涉及 Keil C51 編譯、Proteus 仿真以及人工判定 LED 亮滅。人工判定依賴視覺模型,受引腳編號漂移影響,結果不穩定。dsh-mcu-lab 插件將這條鏈路接進 DSH 會話,提供確定的判定依據(如編譯是否產出 hex、CPU 是否增長、是否有失敗標記文本),讓 AI 能夠直接在對話中完成開發閉環。
是什麼¶
這是一個 DSH 插件(lib/index.js)配合一個命令行內核(kernel/mcu_lab.py)的集合體。插件層負責向 DSH 註冊 5 個工具,接收 AI 參數並調用內核;內核層使用 Python 編寫,負責編譯、仿真和判定邏輯。
它解決的問題很具體:把原本需要人工拆解的“編譯 hex、複製到電路、跑仿真、看結果”這一系列操作,封裝成 AI 可直接調用的工具,輸出 PASS/FAIL 及判定依據。
核心功能¶
該插件提供以下核心能力:
- 5 個工具:
mcu_run(默認入口)、mcu_build(僅編譯)、mcu_sim(截圖)、mcu_verify(復判)、mcu_list(索引電路)。 - 命令行內核:
kernel/mcu_lab.py,支持check、list、build、run、verify、sim六個子命令。 - 編譯器支持:支持 Keil C51 和免費開源的 SDCC。
- 仿真與判定:集成 Proteus ISIS 仿真,提供確定性判定後端(無需視覺模型介入)。
安裝與啓用¶
方式一:裝進 DSH(獲取 5 個工具)¶
- 放置倉庫:將本倉庫放到 DSH 的 profile 模塊目錄下,目錄名必須與包名一致:
<DSH_HOME>\profiles\node_modules\dsh-mcu-lab\
(`<DSH_HOME>` 默認爲 `%USERPROFILE%\.dsh`)
- 添加裝載行:在對應 profile 的
cordis.patch.yml末尾添加:
- insert:
- id: mcu-lab
name: 'dsh-mcu-lab'
- 重啓 DSH:執行
dsh web重啓後,5 個工具將出現在會話中。
方式二:只用命令行內核(不依賴 DSH)¶
如果不需要 DSH 的插件層,可以直接運行內核腳本:
python kernel/mcu_lab.py check
python kernel/mcu_lab.py list
python kernel/mcu_lab.py build examples\led_blink.c
python kernel/mcu_lab.py run examples\led_blink.c <你的電路.DSN> --wait 6
python kernel/mcu_lab.py verify <你的電路.DSN> --wait 6
python kernel/mcu_lab.py sim <你的電路.DSN> --seconds 8 --shot out.png
典型用法¶
在會話中直接調用工具,例如:
把
examples/led_blink.c在這個電路上跑一遍,告訴我過沒過。
對應的命令行操作如下:
- 體檢環境:
python kernel/mcu_lab.py check
- 列出可用電路:
python kernel/mcu_lab.py list
- 編譯源碼:
python kernel/mcu_lab.py build examples\led_blink.c
- 運行仿真並判定:
python kernel/mcu_lab.py run examples\led_blink.c <你的電路.DSN> --wait 6
- 僅判定電路狀態:
python kernel/mcu_lab.py verify <你的電路.DSN> --wait 6
- 生成仿真截圖:
python kernel/mcu_lab.py sim <你的電路.DSN> --seconds 8 --shot out.png
前置條件與依賴¶
插件以 Windows 平臺爲基準,必須滿足以下條件:
- 操作系統:Windows 11(作者實測),其他平臺未驗證。
- 編譯器:Keil C51(或 SDCC)。Keil 專有關鍵字在 SDCC 路線下需自行改寫。
- 仿真軟件:Proteus ISIS(安裝路徑建議純英文,中文路徑會導致崩潰)。
- Python 環境:
- 建議版本:Python 3.13.15(作者實測)。
- 依賴包:僅編譯(
check/list/build)使用標準庫;仿真與判定(run/verify/sim)需安裝pywin32和Pillow。
- 環境變量:
DSH_MCU_LAB_KEIL:指向C51.exe。DSH_MCU_LAB_ISIS:指向ISIS.EXE。DSH_MCU_LAB_IFACE:指向接口腳本目錄(默認爲倉庫內的kernel/iface/)。
注意事項¶
- 目錄命名:安裝時,放入
node_modules的目錄名必須與包名dsh-mcu-lab一致。 - 源碼編碼:C51 源碼必須是純 ASCII,包含中文註釋會報 C141 語法錯誤。
- 確定性判定:判定邏輯依賴“仿真進程 CPU 是否增長”等確定性指標,而非讀取截圖像素,因此結果穩定。
- 未驗證項:Keil C51 和 Proteus ISIS 的具體版本要求未做嚴格驗證,僅作者實測環境爲 C51 9.00 和 Proteus 7.08 SP2。