dependency-cruiser · 循環依賴 · OpenClaw · 遠端 Mac · 2026
2026 OpenClaw 前端實戰:
遠端 Mac 解析 dependency-cruiser JSON,產出循環依賴 PR 門禁摘要並與既有留言合併
2026.04.30
架構門禁與 PR 敘事負責人
約 7 分鐘閱讀
讀者:已用 dependency-cruiser 守邊界,卻苦於 JSON 龐大、票證與 Lint 不同步。結論:把 depcruise 機讀輸出收斂為單一路徑,以違規等級與模組上限定離開碼,經 OpenClaw 網關或簽章腳本產 Markdown,再以標記與他門禁合併同一則 PR 留言。
00 痛點拆解
- 契約漂移:stdout 與暫存路徑混用,jq 與留言腳本假設不一,夜間與 PR 事件交錯時難除錯。
- 敘事碎裂:循環清單過長時,難與 ESLint/Stylelint 網關摘要比較嚴重度。
- 祕鑰外溢:整圖貼進推論或公開票證,不如只傳路徑給網關讀檔;併 knip 摘要時須統一紅線。
01 摘要觸發:網關與腳本對照
擇一為主即可;觸發點在 JSON 落盤之後,並以註解雜湊或固定標記冪等。
| 面向 | OpenClaw 網關 | 簽章腳本(Runner) |
|---|---|---|
| 憑證 | 權杖留在網關;CI 只送路徑與閾值版號。 | Runner 注入 OIDC/短期 PAT,gh pr comment 單次送出。 |
| 合併 | 多區塊排序後一次 PATCH,順序固定。 | 讀舊留言再拼接,測試成本較高。 |
| 並列任務 | 常與 Playwright 分片報告同網段,票證一覽。 | 無網關時過渡用。 |
02 違規等級與模組數閾值
數字可貼 README 並以版號欄位共用;warn 僅留言標示、離開碼零;error 離開碼一以擋合併。
| 等級 | 條件示例 | 離開碼 |
|---|---|---|
| info | 無循環,或僅落在允許清單內。 | 0 |
| warn | 循環一至二道,且每道環上模組不超過六個;票證列表示例列不超過八行。 | 0(留言標 WARN) |
| error | 循環三道以上,或單環模組超過七個,或解析涵蓋模組數超過八百仍未縮小範圍。 | 1 |
正文僅前三道循環;路徑至多三層;全文改連結流水線產物。
03 可複現步驟(六步)
npx depcruise src --config .dependency-cruiser.js --output-type json --output artifacts/depcruise/graph.json
.dependency-cruiser.js鎖定no-circular與 exclude,勿與本機臨時設定分叉。- 本機與遠端 Mac同 cwd、同 Node 主版本,相對路徑一致。
- jq 或 Node 計循環道數、單環最大模組數、模組總數。
- 對照閾值定離開碼與 WARN,產單一 Markdown。
- 觸發:webhook 打網關,或 Runner 跑
node scripts/depcruise-pr-summary.mjs交 CLI。 - 以
<!-- openclaw:depcruise -->等標記 upsert,與他門禁區塊拼接後一次更新。
先穩定離開碼再開自動留言;調允許清單時遞增閾值版號以利還原。
04 可引用三點
(一)契約為單一路徑,如 artifacts/depcruise/graph.json。
(二)示例至多三道循環,其餘報件數。
(三)觸發鍵:JSON mtime 新於上一則摘要,或閾值版號變更,避免雙重推送。
小結
固定 JSON 路徑加分級閾值得可機讀訊號;網關或腳本產 Markdown;標記合併 PR 留言與 Lint 並陳。