Claude Code 最佳實踐指南
概述
Claude Code 是一個代理式編程環境,它使 AI 能夠讀取檔案、執行指令並自主實作解決方案,而不僅僅是審查程式碼。為了最大化其效能,使用者必須管理上下文窗口(context window)——這包含了所有訊息、檔案讀取內容和指令輸出——因為當窗口填滿時,效能會下降。
實作自主驗證
為了防止使用者成為唯一的驗證環節,應為 Claude Code 提供確定性的訊號,以判斷任務何時完成。
驗證策略
- 驗證標準:與其提供模糊的要求,不如提供具體的測試案例(例如:「編寫一個 validateEmail 函式;user@example.com 為 true,invalid 為 false」)並指示 Claude 執行它們。
- 視覺驗證:對於 UI 變更,提供設計截圖並指示 Claude 擷取結果截圖並列出差異。
- 根本原因分析:在修復建置問題時,提供具體的錯誤,並要求建置在不壓制錯誤的情況下成功完成。
閘門機制
根據所需的自主程度,可以透過以下方式實作驗證:
- 單一提示詞:在單一訊息中請求檢查與迭代。
- 目標條件 (
/goal):使用獨立的評估器在每一輪後重新檢查條件。 - 停止鉤子 (Stop Hooks):在特定檢查通過前,阻止該輪結束的腳本。
- 驗證子代理 (Verification Subagents):使用全新的模型來反駁主要代理的結果。
工作流程:探索、規劃與編碼
直接跳入編碼可能會導致解決錯誤的問題。Anthropic 建議使用 plan mode 的四階段工作流程,將探索與執行分離:
- 探索 (Explore):理解程式碼庫和問題。
- 規劃 (Plan):定義實作策略。
- 編碼 (Code):執行計畫。
- 驗證 (Verify):確保解決方案符合標準。
提示詞與上下文優化
提供具體上下文
提示詞的精準度可以減少歧義並防止錯誤。有效的策略包括:
- 限定任務範圍:指定確切的檔案、情境和測試偏好(例如:「避免使用 mocks」)。
- 引導來源:引導 Claude 查看特定的 git 歷史紀錄或檔案,以回答架構問題。
- 引用模式:引導 Claude 參考現有的程式碼庫範例(例如:「HotDogWidget.php」)以確保一致性。
- 描述症狀:提供錯誤、可能的位置以及「已修復」的定義。
豐富內容整合
@引用:使用@直接引用檔案,以便 Claude 在回應前讀取它們。- 直接輸入:貼上圖片、提供文件 URL,或使用
cat error.log | claude傳遞數據。 - 自主擷取:指示 Claude 使用 Bash 指令或 MCP 工具來獲取必要的上下文。
環境配置
CLAUDE.md 檔案
CLAUDE.md 是一個持久的上下文檔案,會在每次會話開始時讀取。應保持其簡潔,以避免撐爆上下文窗口。
- 應包含內容:非顯而易見的 Bash 指令、自定義程式碼風格規則、偏好的測試執行器、儲存庫規範以及專案特定的架構決策。
- 應排除內容:標準語言慣例、詳細的 API 文件(請改用連結)以及頻繁變動的資訊。
權限與自動化
- 自動模式 (Auto Mode):使用分類模型僅攔截高風險動作(例如:權限提升),減少手動核准的需求。
- 權限白名單:特別允許安全的工具,如
npm run lint。 - 沙盒化 (Sandboxing):透過作業系統層級的隔離來限制檔案系統和網路存取。
擴充功能與工具
- CLI 工具:安裝如 GitHub CLI (
gh) 等工具,讓 Claude 比透過 API 更高效地管理 issue 和 PR。 - MCP 伺服器:將 Claude 連接到問題追蹤器、資料庫和 Figma 設計。
- 鉤子 (Hooks):在特定點執行的確定性腳本(例如:每次編輯後執行
eslint)。 - 技能 (Skills):儲存在
.claude/skills/中的專案特定知識,可透過/skill-name調用。 - 子代理 (Subagents):用於重型研究或對抗性審查的獨立上下文,以避免弄亂主會話。
- 插件 (Plugins):技能、鉤子和 MCP 伺服器的組合單元,包括針對強型別語言的程式碼智能插件。
會話管理
上下文維護
由於上下文窗口是主要的限制因素,因此需要積極的管理:
/clear:在不相關的任務之間重置上下文,防止出現「大雜燴式會話 (kitchen sink sessions)」。/compact:手動觸發對話歷史紀錄的摘要化。/btw:用於不應儲存到對話歷史紀錄的附帶問題。- 糾正方向:如果 Claude 在同一個問題上失敗了兩次,請
/clear會話並使用更具體的提示詞重新開始。
狀態控制
- 回溯與檢查點:使用
Esc + Esc或/rewind來還原先前的程式碼狀態或對話歷史紀錄。 - 恢復:使用
claude --continue或claude --resume來接續先前的會話。
擴展與自動化
非互動模式
使用 claude -p "prompt" 可以將其整合到 CI 流水線和 pre-commit hooks 中,輸出可選為純文字、JSON 或串流 JSON。
並行執行
- Worktrees:用於獨立 CLI 會話的隔離 git checkouts。
- 代理團隊:由一名團隊領導者協調多個會話的自動化流程。
- 編寫者/審查者模式 (Writer/Reviewer Pattern):使用獨立的會話進行實作與審查,以消除偏見。
扇出模式 (Fan-out Patterns)
對於大規模遷移,使用者可以透過識別檔案、生成任務列表並執行並行的非互動式調用來分配工作。
應避免的常見錯誤模式
- 大雜燴式會話 (The Kitchen Sink Session):在同一個會話中混合不相關的任務;解決方法是使用
/clear。 - 過度修正:重複修正同一個錯誤;解決方法是使用更好的提示詞重啟會話。
- CLAUDE.md 過於冗長:規則過多導致 Claude 忽略指令;解決方法是刪減內容。
- 信任與驗證間的落差:交付看似合理但未經測試的程式碼;解決方法是要求確定性的驗證。
- 無限探索:範圍不明確的研究填滿了上下文;解決方法是使用子代理。
Sources
相關
- 專案
- Dispatch
- Dispatch
- Dispatch
- Dispatch