← 返回首頁
𝕏 (Twitter)🔥🔥🔥🔥

AI 語音朗讀 · Edge TTS

AI 中文摘要Claude 生成

Claude Code 的源程式碼揭示了一個完全不同的使用方式:它不是單純的聊天介面,而是一個 Agent 編排平台。大多數人只用了它的冰山一角,而掌握源程式碼中的 9 個關鍵設計就能達到 10 倍的生產力提升。

CLAUDE.md 在每個回合都被重新讀取——最高槓桿操作

這是最容易被忽視卻影響最大的優化。源程式碼顯示 Claude Code 不是在工作階段開始時讀取 CLAUDE.md,而是在「每一次」查詢迭代時重新讀取。大多數人要嘛 CLAUDE.md 檔案是空的,要嘛寫了一整本聖經進去,兩者都沒有善用這個機制。

檔案讀取遵循層級結構:

  • ~/.claude/CLAUDE.md — 全域層級(編碼風格、個人偏好)
  • ./CLAUDE.md — 專案層級(架構決策、命名慣例)
  • .claude/rules/*.md — 模組化規則
  • CLAUDE.local.md — 私人筆記(gitignore 列出)

你有 40,000 個字符的預算,但大多數人只用了 200 個。正確做法是在檔案中詳細記錄架構決策、檔案命名慣例、測試模式和「絕對不要做」的規則。模型每次都會讀這些內容,這就是讓 Claude Code 從通用助手變成「了解你的程式碼庫、符合你習慣的個人助手」的關鍵差異。

子 Agent 共享提示快取——並行化幾乎免費

當 Claude Code 衍生子 Agent 時,它建立一份位元組完全相同的父層級 context 副本,API 會快取這份副本。因此同時啟動 5 個 Agent 處理程式碼庫的不同部分,成本幾乎等於 1 個 Agent 順序執行的成本。

源程式碼中的子 Agent 有三種執行模型:

  • fork — 繼承父層級 context,最佳化快取
  • teammate — 在 tmux 或 iterm 中的獨立窗格,透過檔案型信箱通訊
  • worktree — 擁有自己的 git worktree,每個 Agent 一個隔離分支

大多數人單執行緒使用 Claude Code,一次一個任務,等待完成再給下一個。正確用法是同時啟動 5 個 Agent:一個進行安全審計、一個重構認證模組、一個撰寫測試、一個更新文件、一個修複 bug。架構本身就是為並行設計的。

權限系統應該被設定而非逐個點擊

每次 Claude Code 詢問「允許此操作?」並且你點擊是時,那其實代表設定不完整。源程式碼揭露一個 5 層設定級聯:

policy > flag > local > project > user

在 ~/.claude/settings.json 中,你可以設定 glob 模式來自動允許什麼動作:

{
  "permissions": {
    "allow": [
      "Bash(npm *)",
      "Bash(git *)", 
      "Edit(src/**)",
      "Write(src/**)"
    ]
  }
}

有三種權限模式:

  • bypass — 完全跳過權限檢查(快但危險)
  • allowEdits — 自動允許工作目錄內的檔案編輯
  • auto — 對每個動作執行 LLM 分類器(新功能,最佳平衡點)

Auto 模式有自己的允許/拒絕列表可配置。源程式碼顯示它並行執行多個解析器:使用者點擊、hook 分類器、bridge,第一個回應的獲勝。每次停下來點擊「允許」都是浪費時間。設定一次,永遠別再點。

五種壓縮策略——context 壓力是真實問題

源程式碼包含五種對話壓縮方法:

  • microcompact — 基於時間清除舊工具結果
  • context collapse — 對話片段摘要
  • session memory — 提取關鍵 context 到檔案
  • full compact — 整個歷史摘要
  • PTL truncation — 刪除最舊的訊息群組

這透露了一個重要事實:context 溢出是工程師團隊花費大量時間解決的核心問題。

實際含義:

  • 主動使用 /compact 指令,別等到系統自動壓縮導致重要 context 丟失
  • 預設視窗是 200K token,但使用 [1m] 模型後綴可選擇 1M token。對跨多個檔案的大規模重構很重要
  • 長工作階段會累積「session memory」——包含任務規格、檔案清單、工作流狀態、錯誤和學習心得的結構化摘要。這是為什麼恢復工作階段比重新開始更有效
  • 大型工具結果存到磁碟,只有 8KB 預覽傳給模型。如果貼上巨大檔案,模型可能只看到一小部分。保持輸入集中

經驗豐富的使用者會像玩電子遊戲存檔一樣使用 /compact:保存重要內容、清除不需要的、繼續推進。

Hook 系統是真正的擴充 API——25 個以上的生命週期事件

這是幾乎沒人知道的進階功能。源程式碼揭露 25 個以上可掛入的生命週期事件:

  • PreToolUse — 任何工具執行前
  • PostToolUse — 任何工具執行後
  • UserPromptSubmit — 發送訊息時
  • SessionStart / SessionEnd — 工作階段生命週期
  • 還有 20 多個

支援 5 種 hook 型別:

  • command — 執行 shell 指令
  • prompt — 透過 LLM 注入 context
  • agent — 執行完整 Agent 驗證迴圈
  • HTTP — 呼叫 webhook
  • function — 執行 JavaScript

實務例子:

  • 檔案寫入前自動執行 linting
  • 每次編輯後執行測試
  • 自動將相關文件注入到每個提示
  • 任務完成時發送 Slack 通知
  • 程式碼發佈前驗證安全模式

UserPromptSubmit hook 特別強大。你可以將 additionalContext 注入到每條訊息,無需手動輸入就能自動附加測試結果、最近 git diff 或專案狀態。這是在 Claude Code 基礎上構建客製化開發環境的方式——不是透過更好的提示,而是掛入系統本身。

工作階段持久化且可恢復——停止每次重新開始

每個對話都儲存為 JSONL 在 ~/.claude/projects/{hash}/{sessionId}.jsonl。源程式碼支援:

  • --continue — 恢復上次工作階段
  • --resume — 選擇特定過去工作階段
  • --fork-session — 從過去對話分支(特別實用)

Session memory 提取在壓縮過程中保留關鍵 context:任務規格、檔案清單、工作流狀態、錯誤和學習。大多數人每次開啟 Claude Code 都新建工作階段,就像每小時關閉 IDE 重新開啟一樣,所有關於你在做什麼、什麼失敗、學到什麼的 context 全消失。使用 --continue,讓 context 不斷累積,讓 session memory 隨時間累積學習。源程式碼明確為此設計了基礎設施。

工具系統執行 60 個以上工具的智慧批次處理

Claude Code 內建 60 多個工具,有趣的是「如何執行它們」。源程式碼將工具呼叫分為兩類:

  • concurrent — 唯讀操作(讀取檔案、搜尋、globbing)並行執行
  • serial — 修改操作(編輯、寫入、bash 指令)順序執行

當 Claude Code 需要讀取 10 個檔案理解程式碼庫時,它同時讀取全部 10 個。當需要編輯 3 個檔案時,順序執行避免衝突。內建工具之外,可連接 MCP 伺服器增加更多工具。源程式碼使用延遲載入——MCP 工具只在需要時載入,連接 5 個 MCP 伺服器不會拖累每個請求。

實務建議:如果工作流涉及外部系統(資料庫、雲端提供商、CI/CD),為它們連接 MCP 伺服器。架構會處理複雜性,你只需獲得更多功能。

串流架構意味中斷成本極低

整個管線使用非同步生成器產出個別事件。按 Escape 可乾淨中止當前串流,不會遺失先前 context。

這看似微小卻改變了使用方式。別等著看你知道會出錯的回應。立即中斷並改變方向。源程式碼就是為此設計的,先前 context 保留,中斷的回應乾淨丟棄,零成本。

像結對程式設計一樣:如果搭檔開始走錯路,你不會等他完成,你會說「其實改這樣」。同樣的邏輯。

重試系統比你想像更複雜

源程式碼揭露:

  • 10 次重試,指數退避加抖動(500ms 基礎)
  • 401/403 時自動 OAuth token 重新整理
  • 模型遞補:Opus 失敗 3 次 529 錯誤時自動降級到 Sonnet
  • 串流上 90 秒空閒監視——如果串流卡住自動降級為非串流
  • 持續模式無限重試,最大 5 分鐘退避

Claude Code 設計成可放著跑