# 策展 · X (Twitter) 🔥

> 作者：/indigo (@_ndigo) · 平台：X (Twitter) · 日期：2026-03-30

> 原始來源：https://x.com/_ndigo/status/2037939727094128752

## 中文摘要

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 範例展示如何定義符號查詢、簽名提取邏輯與型別對應。

## 標籤

CLI, Agent, 開源專案, cx
