2026 OpenClaw 前端實戰:
遠端 Mac 解析 knip 未使用匯出 JSON,產出 PR 可讀清理摘要並回傳
維護者在合併前需要可稽核的未使用匯出清單,但 knip 輸出散在終端與本機路徑,難與同一提交對齊。本文給最小可複現路徑:在遠端 Mac鎖定設定、落盤 JSON、對齊 CI 產物、以 OpenClaw 產 Markdown 摘要並冪等回傳 PR。結構含決策表、落地步驟、可引用欄位與誤報 FAQ。延伸:Bundle 圖譜與 tree-shaking 摘要、建置度量 PR 摘要、Monorepo 冒煙清單。💻🚀
00 痛點與決策矩陣
痛點一:僅貼終端表格,無法對應提交與分支。痛點二:monorepo 子套件 cwd 不一致導致誤判。痛點三:未與閘道排序對齊,昂貴步驟先跑才發現死碼清單過長。
| 策略軸 | 本機開發者 | 遠端 Mac 加 OpenClaw |
|---|---|---|
| 證據形式 | 螢幕捲動、難存檔 | 固定相對路徑 JSON 加 manifest 時間戳 |
| 與 PR 對齊 | 手動複製易錯 | 同一 git SHA 下載產物再渲染摘要 |
| 合併阻斷 | 憑感覺刪除 | 摘要附白名單與工單欄位供維運審核 |
01 knip 配置
以專案根為基準維護 knip.jsonc:明列 entry 涵蓋應用進入點、設定檔與測試工具鏈;project 納入原始碼目錄。monorepo 為每個 workspace 指定工作目錄或在腳本內切換 cwd,避免把 packages 外的範例誤掃進報告。與 TypeScript 路徑別名並用時,對齊 tsconfig 的 paths,必要時以 ignore 排除自動產生檔。版本鎖定寫入 manifest.json 以便事後比對。
① 報告檔名與 knip 主版本號。② 掃描根目錄與 workspace 名稱。③ entry 檔案數與忽略規則列數。
02 CI 產物路徑
在 workflow 內將 JSON 寫入固定相對路徑,例如 reports/knip-unused-exports.json,再以 actions/upload-artifact 上傳名稱 knip-json。遠端 Mac runner 下載至 .openclaw/reports/<sha>/knip.json,與建置日誌並列,避免與其他靜態分析檔名衝突。離開碼非零時仍應落盤,解析階段再判斷是否阻斷,以免空檔案誤判為綠燈。
03 摘要模板欄位
OpenClaw 讀 JSON 產 pr_knip_cleanup_summary.md,建議欄位含提交短哈希、未使用匯出總數、依檔案分組的前 N 筆清單、每列建議動作刪除或改為 type-only export、以及需人工覆核旗標。頂部附執行指令與設定檔雜湊,底部附白名單列與到期日。剔除主機絕對路徑,僅保留儲存庫相對路徑供 code review 直接點檔。
04 誤報處理 FAQ
動態路徑被標未使用?在摘要標示執行期載入並以設定收窄掃描範圍,必要時建立追蹤工單而非靜默略過。
barrel 檔全列紅?檢視 re-export 鏈與套件邊界,優先調整 entry 或改為顯式匯出,再考慮 ignorePatterns。
與 bundle 訊號衝突?併讀 import 圖譜摘要判斷是否真可刪;單看 knip 不足以證明執行期未引用。
- 遠端 Mac 上凍結 Node 與 lockfile,於專案根確認 knip 設定涵蓋 entry。
- 執行 knip 並輸出 JSON 至 reports 目錄,確認檔案大小與時間戳合理。
- CI 上傳同名 artifact,OpenClaw 以當前提交 SHA 下載到報告目錄。
- 以模板渲染 Markdown 摘要,做 schema 或必填欄位檢查後再發布。
- 以 HTML 註解錨點冪等寫入 PR 或呼叫內部 Webhook,失敗時退避重試。