
駕馭 Claude 的智慧
事件開頭短結論: Anthropic 發布的 Claude AI 模型不斷進化,本文分享了三個實用的技巧,幫助開發者在開發應用時,能有效利用 Claude 的能力,同時兼顧效率與成本。
隨著人工智慧技術的快速發展,生成式 AI 系統如 Claude 也日益精進。然而,這種成長並非線性可預測,而是透過設定條件來引導。這對開發者而言,意味著必須不斷重新評估,以確保應用程式能跟上 Claude 的最新能力。
事件重點:
- 善用 Claude 既有的知識: 盡可能使用 Claude 擅長的工具,例如 Bash 和文字編輯器。
- 思考「我可以停止做什麼?」: 讓 Claude 掌控自己的行動,例如由 Claude 決定哪些工具結果需要被傳回,以及如何管理上下文。
- 謹慎設定邊界: 透過設計最大化快取命中率、使用宣告式工具,以及重新評估工具的使用,來實現 UX、可觀察性和安全性。
個人心得:
AI 模型的發展日新月異,身為開發者,我們不應將 AI 視為一成不變的黑盒子。相反地,應該積極探索 AI 的能力邊界,並隨時調整我們的應用程式設計,才能真正駕馭 AI 的力量。
現在,我們將分享三個團隊在構建能跟上 Claude 不斷進化的智慧,同時平衡延遲和成本的應用程式時,應採用的模式:
1. 使用 Claude 已經知道的
建議開發者使用 Claude 熟練的工具來構建應用程式。
例如,在 2024 年底,Claude 3.5 Sonnet 在 SWE-bench Verified 基準測試中達到 49% 的成績,當時已是頂尖水準,而它只使用了 bash 工具和文字編輯器工具來檢視、建立和編輯檔案。Claude Code 的基礎也是建立在這些工具之上。雖然 Bash 並非專為構建 agent 所設計,但 Claude 知道如何使用它,而且隨著時間的推移,它會變得越來越擅長使用它。
2. 問「我可以停止做什麼?」
隨著 Claude 越來越強大,應該測試 agent 框架對 Claude 無法獨自完成的事所做的假設。
- 讓 Claude 協調自己的行動: 一個常見的假設是,每個工具的結果都應該流回 Claude 的上下文視窗,以告知下一個動作。如果只需要將工具結果傳遞給下一個工具,或者 Claude 只關心輸出的一小部分,則處理令牌中的工具結果可能會很慢、成本高且不必要。
讓 Claude 擁有程式碼執行工具(例如,bash 工具或特定於語言的 REPL)來解決此問題:它允許 Claude 編寫程式碼來表達工具呼叫以及它們之間的邏輯。Claude 決定將哪些結果傳遞、篩選或管道到下一個呼叫,而無需觸及上下文視窗。只有程式碼執行的輸出會到達 Claude 的上下文視窗。
-
讓 Claude 管理自己的上下文: 任務特定的上下文引導 Claude 使用通用工具,如 bash 和文字編輯器工具。一個常見的假設是,系統提示應該使用特定於任務的指令手工製作。問題是,使用指令預先載入提示無法跨多個任務進行擴展:新增的每個令牌都會耗盡 Claude 的注意力預算,而且預先載入很少使用的指令會造成浪費。
賦予 Claude 存取 skills 的能力來解決此問題:每個 skill 的 YAML 前置碼都是簡短的描述,預先載入到上下文視窗中,提供 skill 內容的概覽。如果任務需要,Claude 可以透過呼叫讀取檔案工具來逐步揭示完整的 skill。
-
讓 Claude 保留自己的上下文: 運行時間很長的 agent 可能會超出單個上下文視窗的限制。一個常見的假設是,記憶系統應該依賴模型周圍的檢索基礎設施。我們的大部分工作都集中於讓 Claude 能夠以簡單的方式自己選擇要保留的內容。
例如,壓縮讓 Claude 總結其過去的上下文,以便在長時程任務中保持連續性。在多次發布中,Claude 越來越擅長於選擇要記住的內容。
記憶體資料夾是另一種方法,允許 Claude 將上下文寫入檔案,然後根據需要讀取。
3. 仔細設定邊界
Agent 框架在 Claude 周圍提供結構,以執行 UX、成本或安全性。
- 設計上下文以最大限度地提高快取命中率: 訊息 API 是無狀態的。Claude 無法看到先前回合的對話記錄。這意味著 agent 框架需要在每個回合中將新的上下文與所有先前的操作、工具描述和指令打包給 Claude。
提示可以根據設定的斷點進行快取。換句話說,Claude API 將上下文寫入快取,直到斷點,並檢查上下文是否與任何先前的快取項目匹配。由於快取的令牌是基本輸入令牌成本的 10%,agent 框架中的一些原則有助於最大限度地提高快取命中率。
-
使用宣告式工具進行 UX、可觀察性或安全性邊界: Claude 不一定知道應用程式的安全性邊界或 UX 介面。Claude 發出工具呼叫,由框架處理。bash 工具為 Claude 提供了廣泛的程式設計槓桿作用來執行動作,但它只給框架一個命令字串——每個動作的形狀都一樣。將動作提升到專用工具,讓框架獲得具有型別引數的特定於動作的勾點,它可以攔截、閘道、呈現或審核。
需要安全性邊界的動作是專用工具的自然候選者。可逆性通常是一個很好的標準,而且難以逆轉的動作(例如,外部 API 呼叫)可以透過使用者確認進行閘道。編寫 edit 類型的工具可以包含陳舊性檢查,以便 Claude 不會覆寫自上次讀取後已更改的檔案。
工具也適用於需要呈現給使用者的動作。例如,它們可以呈現為模式,以便向使用者清楚地顯示一個問題,給使用者多個選項,或阻止 agent 迴圈,直到使用者提供回饋。
最後,工具對可觀察性很有用。當動作是型別工具時,框架會獲得結構化的引數,它可以記錄、追蹤和重播。
展望未來:
Claude 的智慧前沿一直在變化。關於 Claude 無法做的事情的假設,需要隨著其能力的每次變化而重新測試。時間會告訴我們,應用程式中的結構或邊界應該如何基於這個問題進行修剪:我可以停止做什麼?
若要使用這裡討論的所有工具和模式,請查看我們的 claude-api skill。

