![]()
你的AI編程助手每啟動一次,都在為垃圾信息付費。開發(fā)者Jared Sumner寫了個工具,扒了8個開源項目的上下文文件,發(fā)現(xiàn)74%的內(nèi)容純屬浪費token。這不是理論推測——他用了8條確定性規(guī)則,零大模型參與,純文件系統(tǒng)掃描,毫秒級出結(jié)果。
工具叫ctxlint。安裝只需一行命令:npx @ctxlint/ctxlint check。它專門審計AGENTS.md、CLAUDE.md、GEMINI.md、.cursorrules這些文件——就是你放在項目根目錄、每次對話都被完整加載的那堆"使用說明"。
token戰(zhàn)爭的隱藏戰(zhàn)場
用大模型寫代碼的人有個共同習慣:給AI準備一份"入職手冊"。文件里寫滿項目結(jié)構(gòu)、代碼規(guī)范、常用命令,指望AI少犯錯。Jared Sumner最初也是這么干的,直到他開始系統(tǒng)性地審查這些文件。
問題比他想象的更普遍。他克隆了8個熱門開源倉庫,這些項目的上下文文件都由專業(yè)團隊維護,按理說應該是標桿。ctxlint跑完,91%的檢測結(jié)果準確,零崩潰——同時暴露了觸目驚心的浪費模式。
最典型的三類垃圾信息:
目錄樹。幾乎每份自動生成的上下文文件都有。AI自己會用ls和find,你寫的樹狀結(jié)構(gòu)只是重復占用token——平均每份文件浪費14個token在完全無用的層級展示上。
失效命令。上下文文件里寫的npm run test:e2e,實際腳本早被重命名成test:integration。AI照做,報錯,花token排查,最后自己找到正確答案。用戶為同一件事付三倍錢。
幽靈文件引用。路徑寫的是src/config/auth.ts,實際文件在packages/core/src/config/auth.ts。monorepo項目里尤其常見,開發(fā)者按根目錄思維寫路徑,文件卻埋在兩層深的workspace包里。
Jared Sumner把這些問題分成信號與噪音。理想比例是信號占主導,但他檢測的典型文件里,62%是噪音,38%才是有用信息。按Claude Code的定價換算,每月能從0.09美元壓到0.03美元——省67%不是畫餅,是實打?qū)嵉膖oken賬單。
8條規(guī)則的殘酷篩選
ctxlint的8條規(guī)則全部基于文件系統(tǒng)事實,不調(diào)用任何大模型。這是刻意設(shè)計——規(guī)則必須可驗證、可復現(xiàn)、毫秒級執(zhí)行。
no-directory-tree直接封殺目錄樹。規(guī)則邏輯簡單粗暴:檢測到樹狀縮進結(jié)構(gòu)就報錯,建議刪除。Jared Sumner的原話是:「Agents discover file structure via ls/find — this just adds noise.」
stale-command和stale-file-ref是雙胞胎。前者交叉驗證package.json里的scripts字段,后者檢查路徑是否存在。monorepo場景下,工具會遞歸掃描所有workspace,確保相對路徑不會指向空氣。
token-budget是算賬規(guī)則。統(tǒng)計總行數(shù)、估算token數(shù)、計算信噪比。低于0.5的比例會被標黃,提醒用戶這份"入職手冊"已經(jīng)臃腫到影響效率。
最棘手的是redundant-readme。上下文文件和README重復是普遍現(xiàn)象——開發(fā)者先寫README,再抄一份給AI看。Jared Sumner用三元組重疊算法(trigram overlap)檢測相似度,閾值設(shè)在40%。「At 40% threshold, it catches real duplication but occasionally flags sections that share vocabulary without actually saying the same thing.」他還在調(diào)這個參數(shù),但寧可誤報也不漏報。
style-guide-rules-already-covered是條隱蔽規(guī)則。很多人會在上下文文件里寫"使用Prettier,單引號,無分號"——但.prettierrc早就配置好了。AI能讀到配置文件,重復聲明只是占用token的冗余保險。
最后兩條處理絕對路徑和敏感信息泄露。前者防止上下文文件里出現(xiàn)/home/username這種不可移植的路徑,后者掃描API key、密碼模式。這兩條更多是為了健壯性,而非token經(jīng)濟。
開源倉庫的體檢報告
Jared Sumner沒公布具體是哪8個倉庫,但描述了它們的共性特征:都是GitHub上活躍的項目,star數(shù)可觀,有專門的貢獻者維護上下文文件。換句話說,這是做得最好的那一批,不是野生個人項目。
即便如此,問題依然密集。最普遍的病灶是monorepo路徑混亂。開發(fā)者寫docs/architecture.md,實際文件在apps/web/docs/architecture.md。AI收到指令,找不到文件,要么浪費token搜索,要么直接幻覺生成一個"合理"的架構(gòu)描述。
失效命令的危害比浪費更嚴重。Jared Sumner觀察到典型故障鏈:AI執(zhí)行上下文文件推薦的命令→報錯→進入調(diào)試模式→嘗試修復→發(fā)現(xiàn)命令本身不存在→轉(zhuǎn)而探索可用腳本。原本一次請求能完成的事,變成三次請求加一個錯誤排查流程。
「Stale commands are dangerous, not just wasteful. You paid triple.」
目錄樹則是純粹的token黑洞。Jared Sumner發(fā)現(xiàn)幾乎每份自動生成的上下文模板都包含完整的文件樹,有些甚至嵌套到五層以上。AI不需要這個——啟動時的工具調(diào)用(tool use)會自動探索文件系統(tǒng),生成的樹比靜態(tài)文本更準確、更實時。
風格指南重復是另一個隱形消耗。很多團隊把ESLint配置、Prettier規(guī)則逐字抄進上下文文件,生怕AI不知道。但ctxlint會檢查這些規(guī)則是否已被配置文件覆蓋——90%的情況下,AI讀.eslintrc.json比讀自然語言描述更高效。
工具背后的產(chǎn)品思維
Jared Sumner的身份背景很有意思:他曾是Bun的核心開發(fā)者,那個用Zig語言重寫JavaScript運行器的激進項目。Bun的哲學是極致性能——啟動快、執(zhí)行快、內(nèi)存省。ctxlint延續(xù)了同一套思維,只是把優(yōu)化對象從運行時換成了上下文文件。
8條規(guī)則的選擇體現(xiàn)了明確的取舍。沒有AI參與的規(guī)則設(shè)計,意味著放棄了一些"智能"檢測能力——比如無法判斷某段文字描述是否清晰,只能檢查文件是否存在。但換來了確定性:同樣的輸入永遠得到同樣的輸出,運行成本趨近于零。
「Zero LLM dependency」是刻意為之的產(chǎn)品宣言。當整個行業(yè)都在把大模型塞進每個工具鏈環(huán)節(jié)時,Jared Sumner反其道而行——用確定性規(guī)則解決確定性問題,把大模型調(diào)用留給真正需要推理的場景。
這種設(shè)計也暴露了當前AI編程工具的尷尬處境。Claude Code、Cursor、Gemini CLI都支持上下文文件,但沒有任何一個提供原生審計工具。用戶只能憑感覺維護這些文件,不知道哪些內(nèi)容在被實際使用,哪些只是歷史遺留。
ctxlint填補了這個空白,同時也提出了一個尖銳問題:如果74%的上下文文件內(nèi)容都是浪費,那平臺方為什么不做內(nèi)置優(yōu)化?
可能的答案是商業(yè)動機。上下文文件越長,每次會話消耗的token越多,平臺收入越高。但這只是推測——更可能的解釋是優(yōu)先級問題。平臺團隊忙于競爭功能完整性,token效率是用戶側(cè)才會痛感的成本。
從個人工具到行業(yè)鏡子
ctxlint的GitHub倉庫目前星標數(shù)未公開,但Jared Sumner的推文獲得了顯著傳播。評論區(qū)最常見的反饋是:"我立刻檢查了自己的AGENTS.md,發(fā)現(xiàn)三個失效路徑。"
這種即時可驗證性是小工具傳播的關(guān)鍵。不需要理解復雜原理,運行一條命令就能看到自己項目的"體檢報告"。錯誤列表具體到行號,修復建議直接可執(zhí)行。
更深層的價值在于建立了評估標準。在此之前,"好的上下文文件"沒有客觀定義——有人追求詳盡,有人追求簡潔,全憑手感。ctxlint的8條規(guī)則提供了可量化的基準:無目錄樹、無失效引用、無重復配置、信噪比>0.5。
這些規(guī)則本身也會引發(fā)爭議。比如目錄樹真的完全無用嗎?某些復雜項目的架構(gòu)說明可能需要可視化層級。Jared Sumner的回應是:工具提供的是默認嚴格模式,用戶可以通過配置關(guān)閉特定規(guī)則。但默認立場很明確——先證明你需要它,再保留它。
redundant-readme規(guī)則的40%閾值同樣可調(diào)整。Jared Sumner承認當前版本會誤傷一些共享詞匯但語義不同的段落,但他選擇保守策略:寧可提醒用戶手動檢查,也不讓真正的重復漏網(wǎng)。
這種產(chǎn)品哲學和Bun一脈相承。不追求覆蓋所有邊緣情況,而是在核心路徑上做到極致。對于上下文文件這個新興領(lǐng)域,這種聚焦可能比全面更有價值——畢竟規(guī)范本身還在演化,工具需要保持輕量才能快速迭代。
Token經(jīng)濟學的微觀切片
ctxlint的檢測報告里有個細節(jié)值得玩味:每月0.09美元到0.03美元的對比。這個數(shù)字基于特定假設(shè)——某個"典型"使用頻率下的Claude Code定價。它很小,小到幾乎可以忽略;但它也很誠實,誠實到無法被包裝成"每年節(jié)省數(shù)千美元"的推銷話術(shù)。
Jared Sumner選擇展示真實數(shù)字,哪怕看起來不夠震撼。這種克制本身就是信號:工具面向的是對token成本敏感的開發(fā)者,不是需要ROI報表的采購決策者。
但微觀數(shù)字乘以規(guī)模就是宏觀圖景。假設(shè)一個10人團隊每天啟動50次AI會話,上下文文件平均浪費60%的token——月度浪費可能從幾美元累積到幾十美元。對于更大規(guī)模的組織,或者使用更昂貴模型(如GPT-4 Turbo)的場景,優(yōu)化空間會進一步放大。
更重要的是注意力成本。大模型的上下文窗口是有限的,被垃圾信息占用的部分無法用于實際任務。當AI需要處理200行上下文文件才能開始寫代碼,其中120行是噪音,有效工作記憶就被壓縮了40%。
這種壓縮不會直接體現(xiàn)在賬單上,但會體現(xiàn)在輸出質(zhì)量上——更頻繁的幻覺、更長的響應時間、更多輪次的澄清對話。ctxlint的token-budget規(guī)則試圖量化這種隱性成本,用信噪比作為健康指標。
當前版本的閾值設(shè)定(0.5)相當激進。大多數(shù)被檢測的文件都低于這個標準,意味著需要大幅刪減。Jared Sumner沒有解釋0.5的來源,可能是基于個人經(jīng)驗,也可能是早期測試的統(tǒng)計結(jié)果。無論如何,它設(shè)定了一個高門檻,迫使使用者重新審視自己的"入職手冊"是否真的必要。
工具的未來迭代方向也值得關(guān)注。Jared Sumner提到redundant-readme規(guī)則"still tuning",暗示會有基于實際反饋的閾值調(diào)整。其他可能的擴展包括:檢測過時的依賴版本、識別與代碼實際風格沖突的文字描述、甚至建議缺失的關(guān)鍵上下文(反向的lint)。
但這些都需要保持零LLM依賴的核心約束。一旦引入大模型做語義分析,工具就失去了確定性優(yōu)勢,運行成本也會從毫秒級跳到秒級。Jared Sumner似乎在這個邊界上很堅決——ctxlint是審計工具,不是寫作助手。
這種定位讓它可以和AI編程工具本身形成互補。Cursor或Claude Code負責生成和推理,ctxlint負責事后審計和持續(xù)維護。就像傳統(tǒng)開發(fā)中的linter和formatter,各自專注,組合生效。
一個尚未回答的問題是:平臺方會吸收這類功能嗎?理想的用戶體驗是上下文文件在編輯時就獲得實時反饋,而不是事后運行獨立工具。但這也意味著平臺需要暴露更多內(nèi)部機制——比如哪些內(nèi)容被實際加載、token如何分配、信噪比的實時計算。
目前看來,各大AI編程工具對此保持沉默。它們的競爭焦點仍在功能特性(多模態(tài)、agent能力、模型切換),而非效率優(yōu)化。ctxlint的存在某種程度上是這種市場結(jié)構(gòu)的副產(chǎn)品——用戶被迫自己解決平臺不愿解決的問題。
這也解釋了為什么一個單行命令安裝的小工具能獲得關(guān)注。它切中的不是技術(shù)難題,而是信息不對稱:用戶不知道自己寫的上下文文件有多低效,直到有人把數(shù)字擺到面前。
Jared Sumner的推文結(jié)尾沒有呼吁行動,沒有產(chǎn)品路線圖,只有一行簡單的安裝命令和檢測結(jié)果示例。這種克制和工具本身的設(shè)計風格一致——讓事實說話,讓用戶自己決定。
但評論區(qū)已經(jīng)有人開始追問:會不會有VS Code插件?能不能集成到CI流程?這些需求指向同一個方向:上下文文件的質(zhì)量控制,應該從個人習慣變成團隊規(guī)范。
如果ctxlint或類似工具成為標準配置,AI編程的工作流將被重新定義。不再是"寫一堆說明讓AI更聰明",而是"持續(xù)審計確保說明有效"。這種范式轉(zhuǎn)換和測試驅(qū)動開發(fā)(TDD)有相似之處——先定義正確性標準,再迭代實現(xiàn)。
對于已經(jīng)習慣AI輔助編程的開發(fā)者,這可能是個痛苦的調(diào)整。承認自己精心維護的AGENTS.md有74%是垃圾,比承認代碼有bug更難——前者涉及對"如何與AI溝通"的根本假設(shè)。
但Jared Sumner的數(shù)據(jù)就在那里。8個倉庫,91%檢測精度,零崩潰。目錄樹 universally useless,失效命令 dangerous not just wasteful,幽靈引用 mislead agents into searching for ghost files。
這些結(jié)論不需要大模型驗證,只需要文件系統(tǒng)掃描。或許正是這種確定性,讓ctxlint在充滿炒作的AI工具 landscape 中顯得格格不入——又格外可信。
你上次檢查自己的上下文文件是什么時候?
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.