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 也提供了其他可接受的署名錶述。