一行指令,讓 Claude Code 讀取代碼節省一半 Token

使用 Claude Code 有一段時間了,無庸置疑地非常強大,但有一件事一直讓我不太滿意,就是它讀取檔案的方式太過粗獷。

你請它協助修改一個函式,它會先讀取整個檔案,發現依賴項在另一個檔案中,接著讀取該檔案,讀完後發現還需要查看某個類別的定義,於是再讀取第三個檔案。

僅僅是一個簡單的需求,卻讀完了三、四個檔案,Token 嘩嘩地流失,再加上OpenAI 一週內砍掉三款產品,Claude 再次緊縮使用額度:AI 的好日子是否已盡?官方訂閱每月 20 美元,通常沒操作幾下就用完了。

這其實並非 Claude Code 独有的問題,而是所有 AI 編碼助手(Coding Agent)的通病。

Agent 缺乏瀏覽目錄結構的概念,其預設行為就是:不確定?讀檔案。還不確定?再讀一檔。

最近發現一款名為 cx 的工具,專門針對此問題設計,使用後效果顯著,在此與大家分享。

為什麼 Agent 這麼愛讀檔案?

首先來理解問題的本質。

人類程式設計師開啟一個新專案時,會先查看目錄結構,接著搜尋函式名稱、跳轉至定義處,通常只看幾行就足夠了。

整個過程高度精準,絕不會將整個檔案從頭到尾讀過一遍。

但 AI Agent 做不到這一點。

它沒有整合開發環境(IDE),也缺乏語言伺服器協定(LSP)支援,唯一能做的就是「Read File」(讀取檔案)。

結果就是,Cx 作者分析了 73 次 Claude Code 會話(Session)的數據後發現:

66% 的讀取行為屬於鏈式讀取,讀取 A 是為了找到 B,讀取 B 又是為了找到 C,37% 屬於重複讀取,同一個檔案在一次會話中被重複讀取好幾次

平均每次讀取檔案消耗約 1200 個 Token,一次會話平均讀取 21 次!

換言之,每個會話光是讀取代碼就要耗掉兩萬多個 Token,根本還沒開始做事呢。

cx 是什麼?

cx 是一款以 Rust 撰寫的命令行工具,基於 tree-sitter 進行語意解析。它為 Agent 提供了一套「代價階梯」:

cx overview src/fees.rs 約 200 token 這個檔案裡有什麼?cx definition --name calc 約 200 token 給我看看這個函式cx symbols --kind fn 約 70 token 整個專案有哪些函式?cx references --name calc 極少 這個符號在哪裡被用到?

與直接讀取檔案相比,讀取一個中等大小的檔案需要 1200 個 Token,使用 cx overview 仅需 200 個 Token,使用 cx definition 直接取得函式本體也只要 200 個 Token。

Agent 使用這套工具後,會先透過 overview 掌握整體結構,在有需求時再以 definition 精準抓取函式,大多數情況下根本無需完整讀取整個檔案。

實測數據顯示,Read 調用次數減少 58%,Token 用量降低 40% 至 55%。

為什麼不使用 LSP?

這是個合理的疑問。語言伺服器(LSP)也能實現「跳轉至定義」、「查找引用」等功能,為什麼還要專門開發一個 cx 呢?

因為 LSP 是設計給人用的,而非給 Agent 使用。

LSP 需要持續運行的後台行程,每種語言需單獨設定,記憶體動輒消耗 1-2GB,還得等待專案編譯與索引完成後才能使用。

Agent 在一次會話中可能只使用一次,啟動這套重型機制並不划算。

cx 則是無狀態(stateless)的。

首次執行時,它會利用 tree-sitter 解析所有原始檔,建立一個輕量級的本地索引檔 .cx-index.db,之後僅針對有變動的檔案進行增量更新。

無需後台行程、無需編譯依賴,隨開即用。

如何安裝並接入 Claude Code

安裝非常簡單:

curl -sL https://raw.githubusercontent.com/ind-igo/cx/master/install.sh | sh

或使用 Cargo:

cargo install cx-cli

接著為 Claude Code 安裝一份「使用說明」:

cx skill > ~/.claude/CX.md

然後在 ~/.claude/CLAUDE.md 中加入一行:

@CX.md

就完成了!

cx skill 會產出一份提示詞(prompt),告訴 Claude Code 何時該使用 cx overview、何時該使用 cx definition,以及什麼情況下才需要完整讀取檔案。

fdcae070-aa88-4662-a80d-0c00127c1d87.png

Claude Code 看到這份說明後,會自動將 cx 的命令優先於 Read File 執行。

安裝語言支援:

cx lang add rust typescript python

cx 會自動偵測專案中使用了哪些語言,若未安裝對應的語法解析器(grammar),它會提示你進行安裝。

實際使用感受如何?

我在一個 Rust 專案上進行了測試。

請 Claude Code 協助重構一個模組,過去它會先讀取入口檔案,再讀取依賴檔案,讀了幾個檔案之後才開始撰寫程式碼。

87123eb1-3124-4487-8f8d-0e7739f7921e.png

現在它會先執行 cx overview 查看整體結構,找到目標函式後直接以 cx definition 取得函式本體,基本上兩步驟就開始實作了。

對話中 Read File 的調用次數明顯減少,會話結束後查看 Token 用量,確實大幅降低。

ca5b854a-6f8f-43fb-85aa-1fd56a19d88a.png

有幾點需要注意:cx 依賴 tree-sitter 進行語意解析,理論上支援眾多語言,但需手動安裝對應的語法解析器。

cx 解決的問題非常具體:為 AI Agent 提供一套比「讀取整個檔案」更經濟的代碼查詢介面。工具本身並不複雜,接入也簡單,但效果卻是實實在在的。

圖片

專案網址:

https://link.bytenote.net/msDCNa

下一個 Code 範式 Harness 來了!

實現基於微信 OpenClaw 插件的主動訊息推送

實現龍蝦零成本的語音對話功能

製作與 Claude Web 同款的生成式 UI


分享網址
AINews·AI 新聞聚合平台
© 2026 AINews. All rights reserved.