onboard/doctor 與守護程序把 PATH、代理與憑證對齊,再封裝「偵測 → 切換 GOPROXY → 重試 go mod download」腳本,並把日誌寫到流水線可上傳的路徑。鏈式回源與參數細節請對照站內 Go Modules GOPROXY 決策矩陣;閘道與 LaunchAgent 自檢可銜接 健康守護 HowTo。
① 安裝與自檢清單(onboard/doctor/守護程序)
先排除「CLI 正常、CI 不正常」的環境不一致:互動 shell、launchd 下的守護程序、Runner 工作環境各跑一遍版本與診斷。
遠端 Mac 上 go mod download 常見狀況包含:代理回 403/404(鏡像未收錄或路徑被擋)、i/o timeout(跨境鏈路抖動)、GOSUMDB 校驗失敗(替換或內網政策不一致),以及企業 MITM 憑證未注入 SSL_CERT_FILE。先分類失敗原因,再決定換鏈、調整私有模式或修憑證。
- onboard:依官方引導完成本機綁定與目錄約定,記錄閘道監聽位址與 Token 策略。
- doctor:修復 Node 路徑、憑證與代理變數;若 doctor 回報 HTTPS 相關錯誤,先修再談 Go 拉模組。
- 守護程序:核對 plist 的
EnvironmentVariables是否含HTTPS_PROXY、NO_PROXY、NODE_EXTRA_CA_CERTS;與 CI Job 使用的 env 檔對齊。 - 排錯:
launchctl print看離開碼;log show依行程名稱過濾;重複 Label 或舊二進位路徑是常見坑。
② GOPROXY 切換與健康偵測腳本範本
做法:對主鏈做短逾時偵測(例如三次、每次 5 秒),失敗則 export GOPROXY 為備用逗號鏈,再執行下載;全程不要把令牌寫進版本庫。
請將 GOPROXY_PROBE_URL 換成與主鏈一致的可用端點;私有模組仍依 GOPRIVATE 路由,與決策矩陣文一致。
③ 手動改環境變數 vs 自動化觸發
| 方式 | 適用 | 風險 |
|---|---|---|
| 手動 export | 臨時排錯、單步複現 | 易忘回滾、多 Job 狀態互串 |
| 流水線腳本切換 | 無人值守、可稽核日誌 | 探針誤判需調逾時與 URL |
建議:日常 CI 一律走腳本;僅在首次接入節點時用手動方式驗證鏈路與憑證。
④ CI 日誌回傳最小步驟
目標是把 go mod 失敗時的環境快照與腳本輸出交給平台側,無需登入網頁控制台也能複盤。
- 在 Job 開頭定義統一目錄(如
CI_ARTIFACT_DIR),腳本只寫該目錄。 - 以
tee或重新導向保留完整標準輸出。 - 流水線末步上傳該目錄為建置產物;失敗 Job 同樣上傳,便於對照最後一次
GOPROXY。
⑤ 常見問題(FAQ)
openclaw doctor 通過但 go mod download 仍逾時?
Doctor 校驗閘道與本機相依,Go 模組走 GOPROXY 與 sumdb。請在同一 Job 列印 go env 相關項,並對代理主機單獨 curl;多為鏈首未同步或跨境 TLS 問題,可切換逗號鏈或縮短併發。
腳本裡該用 go env -w 還是 export?
CI 與多工作隔離優先 export,避免污染使用者全域;單人長期節點再考慮持久化寫入。
健康偵測應探什麼 URL?
使用與真實 GOPROXY 主機一致、可達且無需敏感參數的端點,逾時 3–8 秒;日誌勿列印含憑證的位址。
總結:OpenClaw 側以 onboard/doctor/守護程序對齊網路堆疊,Go 側以「偵測+切換+三次指數退避」包住 go mod download,再以固定目錄與 tee 完成日誌回傳,即可在遠端 Mac 上最小複現穩定拉模組。延伸排錯見 OpenClaw 安裝與排錯指南。需要 Apple Silicon 同構節點可免登入瀏覽 首頁、說明中心、購買頁;專題彙總見 技術部落格。