← 返回首頁
/indigo
/indigo
@_ndigo
189🔁 14
𝕏 (Twitter)🔥🔥
AI 中文摘要Claude 生成

核心目標

cx 是一款輕量化的命令列工具,用於幫助 AI Agent 更高效地導航程式庫,同時大幅節省 token 消耗。作者稱其為「10 倍更有效率的 LSP,為 AI 編程而生」,並以實際數據支撐其效能聲稱。

問題診斷與效率數據

作者分析了 105 場 Claude Code 工作階段(其中 73 場未使用 cx,32 場使用 cx),發現代理程式在程式碼導航上存在嚴重的浪費:

  • 66% 的檔案讀取是鏈式的 — 讀取 A 以找到 B 再找到 C,屬於探索性閱讀
  • 37% 是重複讀取 — 同一檔案在單一工作階段內被讀取多次
  • 平均單次讀取耗費 ~1,200 tokens(中位數 594),工作階段平均包含 21 次讀取

引入 cx 後,實際測量結果為 58% 更少的 Read 呼叫40-55% 更少的程式碼導航 token 消耗

成本階梯設計

cx 透過分級查詢提供不同的成本權衡:

  • cx overview src/fees.rs — 約 200 tokens,回答「這個檔案裡有什麼?」
  • cx definition --name calc — 約 200 tokens,顯示特定函式
  • cx symbols --kind fn — 約 70 tokens,列舉程式庫中的所有函式
  • cx references --name calc — ~1 次查詢,找出使用位置

為何不用語言伺服器 (LSP)

作者明確指出 LSP 為編輯器最佳化,特點為持久程序、1-2GB 記憶體占用、需要逐語言設定、由人類使用。cx 則針對 Agent 的實際需求 — 單純查詢程式庫結構 — 優化,無需常駐程序、無需編譯、無需專案設定。

功能模組

  • overview — 檔案目錄式概覽,顯示名稱、型別、簽名
  • symbols — 跨專案搜尋,支援 --kind--name(glob)、--file 篩選;可識別公開/匯出符號
  • definition — 提取函式主體而無需讀整個檔案,支援 --from--kind--max-lines 選項
  • references — 列舉所有使用位置,包含定義與使用點,顯示樹-坐標節點型別以指示用途方式(如 struct_item 表定義、use_list 表匯入)

技術實作

  • 首次呼叫時使用 Tree-sitter 解析所有原始檔案建立索引,儲存符號、簽名與位元組範圍
  • 後續呼叫以增量方式更新已變更檔案
  • 語言文法透過 tree-sitter-language-pack 動態下載為共享程式庫
  • 索引位置為 ~/.cache/cx/indexes/,索引鍵為路徑雜湊值
  • 專案根目錄偵測透過向上追蹤 .git,可透過 --root 覆蓋
  • 遵守 .gitignore 且支援 .cx-ignore 檔案進行額外排除

輸出與整合

  • overview、symbols、references 使用 TOON 格式(token 高效的結構化格式)
  • definition 使用純文字格式(中繼資料標頭 + 原始程式碼)以利可讀性
  • 所有命令支援 --json 選項
  • Agent 整合透過 cx skill 指令生成提示文本,教導 Agent 優先使用 cx 而非原始檔案讀取,可直接管道至 Claude Code 或其他相容工具的指令檔案

可擴展性

支援語言透過 Tree-sitter 查詢動態新增,無需編譯時依賴。文件提供 Swift 範例展示如何定義符號查詢、簽名提取邏輯與型別對應。