掃描方法與成本控制

這份記錄「怎麼跑掃描、花多少、踩過什麼坑」,讓後續批次不必重新摸索。

§1

工具

Claude Code 官方 plugin claude-security@claude-plugins-official v0.10.2.3。

啟動方式是 /claude-security 開選單,選 Scan codebase。 它實際跑的是 claude-security:scan workflow,會派出一群 subagent 分工。

§2

掃描設定

第一批用的參數:

項目
掃描根目錄 ~/Projects/Jedicogy/module/jedi-python-package
scope jedi-common,jedi-iam(453 個 tracked 檔)
effort medium
focus attack-surface(tests/dist/docs 只當背景參考,不當稽核目標)
§3

effort 等級與成本

這是踩坑重點。四個等級的差別全在研究階段派多少 agent,驗證面板固定三人。

等級 研究規模 實際 agent 數(約)
low 單一 researcher 掃完整個 scope 5 到 6
medium 每個「元件 × 弱點類別」各一位,再加一輪 breadth sweep 40 以上
high 每格兩位、兩輪 sweep、更細的元件切分 80 以上
max high 再加紅隊逐條反駁 更多

medium 為什麼這麼貴:它先把套件切成 N 個元件,然後展開成矩陣派工。 每個 agent 都從零開始讀檔、沒有共用 context,所以同一支 ldap_adapter.py 被至少 8 個 researcher 各讀了一遍——這也是為什麼 32 筆原始發現去重後只剩 19 條。 重複的發現就是重複的 token。

再加上 researcher 與 verifier 的設定是 effort: xhighmodel: inherit, 等於一百多次前沿模型的高強度推理。

§4

實際發生的事(2026-09-05)

  1. 第一輪 medium:跑約 40 分鐘,派出 40 個 agent,研究階段收到 32 筆候選發現。 因為成本明顯失控,在面板驗證開始前手動停掉。 這 32 筆就是 batch1 清單的來源,屬未驗證的原始宣稱。

  2. 第二輪 low(只掃 jedi-iam):想驗證 low 是否真的便宜。 確實只派了 2 個 researcher(一個主掃、一個 secrets pass), 但跑了 2 小時 15 分後全部 agent 因 session 額度用盡而失敗,零產出。 工具重試了 4 次都撞同一道牆。

§5

給下一批的建議

  • 用 low,除非有特別理由。從第一輪的結果看,medium 多出來的 30 幾個 agent 主要產出的是重複發現,不是新發現。
  • 一次只掃一支套件。453 個檔已經讓 low 跑了兩小時以上。
  • 確認額度充足再開始。掃描是 all-or-nothing——中途沒額度就整輪報廢, 已經跑完的 agent 結果拿不到正式報告(雖然還能從 journal.jsonl 手動撈)。
  • 主 session 可以先切便宜模型再啟動,subagent 會繼承主 session 的模型。
§6

撈中斷結果的方法

掃描中止時,正式報告不會產生,但每個 agent 的回傳都寫在 workflow 的 journal:

~/.claude/projects/<專案>/<session>/subagents/workflows/<run-id>/journal.jsonl

每行是一個 JSON,{"type":"result", "result":{"findings":[...]}} 就是該 agent 的發現。 用 Python 逐行解析、按 file + title 去重即可還原清單。

第一輪的 run id 是 wf_442f835c-ddf