Show HN:清除 Claude 留在程式碼庫裡的垃圾——CCN
CCN(Crap Comment Nuker)是一個基於真實解析器的互動式命令列工具,用於安全清理 AI 助手(如 Claude Code)留在程式碼庫中的註釋。它支援 JavaScript/TypeScript、Python、Java、Kotlin、Rust、C/C++,透過 acorn 和 tree-sitter 識別註釋,並在寫入前重新解析檔案,確保不會改動任何程式碼 token。內建逐條確認、相似註釋聚類、歷史記錄與 dry-run 模式,方便開發者批次清除垃圾註釋。
CCN(Crap Comment Nuker)是一款命令列互動工具,專門用來清理 AI 程式設計助手留在程式碼庫裡的註釋。專案透過 Show HN 釋出,作者自稱 Hardwick,並把倉庫放在了 GitHub 上。它的目標很直接:把 Claude Code、Copilot 這類工具生成的、散落在程式碼裡的“垃圾註釋”逐條找出來,由開發者決定是否刪除。工具的作者強調,CCN 不是基於正規表示式的猜測,而是為每種語言接入真正的解析器,因此不會誤傷程式碼。
在安全性上,CCN 的設計核心是一道“寫入閘門”(write gate)。JavaScript、CJS、MJS、ESM、JSX 使用 acorn 解析器,其他語言則使用 tree-sitter。解析器提供三樣東西:準確的註釋範圍(所以字串裡的 // 或 # 不會被當成註釋)、有效性檢查,以及葉節點不變式。每次寫入前,工具會重新解析檔案,任何導致 token 移動的編輯都會被拒絕,因為註釋本身不是 token,所以刪註釋不會改變程式碼結構。
CCN 支援的語言包括 JavaScript、TypeScript、TSX、Python、Java、Kotlin、Rust、C 和 C++,並覆蓋各自常見副檔名。首次使用非 JavaScript 語言時,工具會提示下載對應的語法檔案,並快取在 ~/.config/ccn/grammars,之後可以離線使用。
互動流程也做得比較完整。直接執行 ccn 會進入主選單,可以選擇清理程式碼庫、檢視歷史記錄或刪除歷史記錄。傳入目錄後,會依次經過目錄選單、語言選單、一句俏皮話和說明、逐條註釋確認四個介面。每條註釋會獨佔一屏,按 Y 刪除、N 保留、M 開啟聚類選單、Ctrl-C 退出。綠色提示表示該註釋可能“屬於這裡”,比如位於方法或類上方、帶 @marker,或包含 TODO、FIXME、HACK、NOTE;紅色則提示這是多行大塊註釋。按 M 進入“simulurity”聚類檢視,工具會找出程式碼庫中餘弦相似度不低於閾值的其他註釋,讓你一次性處理整組。
工具還提供了多種命令列引數:--lang 指定語言,--langs 列出支援的語言,--dry-run 只預覽不寫入,--remember 記住每次選擇,--demo 自動同意所有提示,--limit 限制每個檔案處理的塊數,--sim 設定聚類相似度閾值,--no-sim 關閉聚類,--fdelay 和 --cdelay 控制檔案間和塊間的延遲。配合 --remember,之後的執行會自動應用之前完全一致的選擇,但“可能屬於這裡”的註釋始終會詢問,而且寫入閘門每次都會執行。
每次真正執行刪除(不是 dry-run,也沒有被安全門拒絕)都會記錄到 ~/.config/ccn/recap.json,之後可以從主選單的 recap 裡回顧刪掉了哪些註釋,包括檔案位置和行號。這不是撤銷功能,只是回看記錄;被修改的檔案旁邊會留下 .bak 備份。歷史預設開啟,最多保留最近 200 次會話。
安裝方式為 npm install -g commentnuker,或者克隆倉庫後直接執行。Linux 和 macOS 支援良好,Windows 作者表示“可能不行”。許可證方面,專案是 source-available 而非 OSI 開源,商用需要單獨授權;即使你保留私有程式碼,也需要按 README 中的要求署名,例如註明“Built with Crap Comment Nuker from justcalljon.pro”。如果不想在公司的程式碼庫中出現“crap”這個詞,README 也提供了其他可接受的署名錶述。