Anthropic 的 Thariq Shihipar 在這場兩小時的工作坊中,深入介紹了 Claude Agent SDK 的設計理念與實戰用法。從「為什麼 Bash 是你唯一需要的工具」到如何設計 Agent 迴圈的三大步驟(蒐集上下文、執行動作、驗證結果),再到現場使用 Claude Code 原型製作一個 Pokemon Agent。這場工作坊不只是技術教學,更揭示了 Anthropic 內部建構 Agent 的核心哲學:簡單但不容易,讓模型像被關在房間裡的人一樣自主解決問題。
原影片連結:https://www.youtube.com/watch?v=TqC1qOfiVcQ
影片重點
- Claude Agent SDK 建構在 Claude Code 之上,將內部建構 Agent 的最佳實踐打包成開發者可用的框架
- Bash 是最強大的 Agent 工具:它是第一個「Code Mode」,能組合、儲存、動態生成腳本,取代大量專用工具
- Agent 迴圈的三大步驟:蒐集上下文(Gather Context)、執行動作(Take Action)、驗證結果(Verify Work)
- 用程式碼生成(Code Generation)來處理非程式碼任務,例如查天氣、分析電子郵件
- Sub-Agent 是管理上下文視窗的關鍵手段,可平行處理任務並回傳結果給主 Agent
- Skills 是一種漸進式上下文揭示(Progressive Context Disclosure)機制,讓 Agent 按需載入專業知識
- 安全性採用「瑞士起司防禦」模型:模型對齊 + 權限控制 + Sandbox 多層防護
- 建構 Agent 時應優先考慮:問題的可驗證性和狀態的可逆性
詳細內容
[00:00] 開場與議程概覽
Thariq 開場介紹了本次工作坊的議程:什麼是 Claude Agent SDK、為什麼要使用它、什麼是 Agent、如何設計 Agent,以及現場 live coding 環節。他強調這不是一個預先準備好的 demo,而是會現場思考、即時解決問題,因為建構 Agent 迴圈本身就是一門「藝術與直覺」。
[02:30] AI 功能的演進:從單一 LLM 到 Agent
Thariq 描述了 AI 功能的三個演進階段。最初是單一 LLM 功能,像是分類文字、回傳固定類別的回應。接著是工作流(Workflow),例如標記電子郵件、透過 RAG 索引程式碼庫來提供補全建議,這些都有非常結構化的輸入輸出。現在進入了 Agent 時代,以 Claude Code 為典型代表——你不限制它能做什麼,只是用自然語言與它對話,它會自主決定行動軌跡、建構自己的上下文,高度自主地工作。
[05:00] 為什麼建構在 Claude Code 之上
Anthropic 在內部建構 Agent 時,發現不斷重複打造相同的元件:工具系統、迴圈執行、Prompt 設計、檔案系統互動、Skills、Sub-Agent、Web Search、記憶體管理、壓縮(Compacting)、Hooks 等。Claude Agent SDK 就是把這一切打包起來供開發者使用。
一個關鍵發現是:Claude Code 釋出後,不只工程師在用,財務、資料科學、行銷等非技術人員也開始使用它來處理非程式碼任務。Anthropic 意識到這是一個自然湧現的模式,於是決定把 Agent SDK 建構在 Claude Code 之上。這些都是從大規模部署 Claude Code 中學到的經驗教訓,例如工具使用錯誤處理、上下文壓縮等最佳實踐。
[10:00] Bash Is All You Need — Bash 是最強大的 Agent 工具
這是 Thariq 最核心的主張。Bash 工具讓 Claude Code 如此強大,因為它本質上是第一個「Code Mode」——即程式化工具呼叫(Programmatic Tool Use)。Bash 能做到的事情包括:
- 將工具呼叫結果儲存到檔案
- 動態儲存記憶
- 動態生成腳本並執行
- 組合功能(如 tail、grep)
- 使用既有軟體(如 FFmpeg、LibreOffice)
如果你在設計一個 Agent 框架,傳統做法是為每個功能建立專用工具(搜尋工具、lint 工具、執行工具),最終會有幾十甚至上百個工具。而 Claude Code 只用 grep 和你的套件管理器(如 npm run test、npm run lint)就能搞定,甚至能在你沒有 linter 時主動幫你安裝 ESLint。
[15:00] Bash 在非程式碼 Agent 中的威力
Thariq 用電子郵件 Agent 舉例。假設用戶問「這週我在叫車上花了多少錢?」沒有 Bash 的 Agent 搜尋收件匣得到一百封郵件,然後必須在上下文中「思考」所有內容。就像有人把一疊紙丟給你讓你算數一樣困難。
有了 Bash,Agent 可以把搜尋結果存到檔案、用 grep 過濾價格、用腳本加總、甚至自我檢查——把每個價格存成帶行號的檔案,事後逐一核對。這種組合能力是 Bash 的核心優勢。
另一個例子是影片會議 Agent:要找出財報電話會議中講者提到「季度業績」的所有時刻,可以用 FFmpeg 切割影片、用 jq 分析資料。
[22:00] 工具(Tools)vs Bash vs 程式碼生成(Codegen)
Thariq 介紹了 Agent 可用的三種行動方式:
工具(Tools):極度結構化、非常可靠、最少重試。缺點是上下文佔用大(50-100 個工具會讓模型混亂)、不可組合、不可發現。適合原子操作,如寫入檔案、發送電子郵件等不可逆動作。
Bash:高度可組合、靜態腳本佔用少量上下文、支援漸進式發現(如 playwright --help)。缺點是需要一些發現時間,呼叫成功率可能略低。
程式碼生成(Codegen):最高組合能力、動態腳本。缺點是執行時間最長(需要 lint、可能需要編譯)。適合高度動態的邏輯、API 組合、資料分析。
在 Claude Code 中,寫入檔案用的是專用工具(因為需要用戶審批),但搜尋、lint、錯誤檢查等都用 Bash。
[30:00] Skills — 漸進式上下文揭示
Skills 是 Claude Code 最近推出的功能,本質上是一組檔案的集合。Agent 需要完成某個任務時,會進入 Skills 資料夾讀取指令、執行腳本。例如 DOCX Skills 教 Agent 如何用程式碼生成來建立文件檔案。
Skills 適合需要大量專業知識的可重複任務。例如最近釋出的前端設計 Skill,就是由 Anthropic 最優秀的 AI 前端工程師精心打磨的 Prompt。Skills 也是「Bash Tool 信仰」的體現——它們本質上就是 Agent 可以 cd 進去閱讀的資料夾。
關於 Skills 與 Claude.md 的區分,Thariq 坦言這些概念都還很新(Skills 才釋出兩週),最佳實踐仍在探索中。大方向是 Skills 用於漸進式上下文揭示——Agent 按需載入,而非一開始就把所有資訊塞進 Prompt。
[38:00] Agent 迴圈的設計
Agent 迴圈的三大步驟:
- 蒐集上下文(Gather Context):對 Claude Code 來說是 grep 和尋找檔案;對電子郵件 Agent 來說是找到相關郵件。很多人會低估或跳過這一步。
- 執行動作(Take Action):Agent 有了正確工具後如何完成工作——程式碼生成和 Bash 是更靈活的行動方式。
- 驗證結果(Verify Work):這是選擇 Agent 適用場景的關鍵指標。如果你能驗證工作成果(如程式碼可以 lint、編譯、執行),那它就是很好的 Agent 候選場景。研究類任務較難驗證,但可以透過引用來源來部分達成。
設計 Agent 迴圈的第一法則:反覆閱讀 Agent 的 Transcript,觀察它在做什麼、為什麼這樣做、你能如何幫助它。
[45:00] 實戰案例:試算表 Agent 設計
Thariq 用試算表 Agent 作為案例,帶領觀眾思考如何設計搜尋、執行和驗證步驟。
對於搜尋試算表,觀眾提出了多種方案:轉成 CSV 後用 grep、用 AWK、用 Google APIs、用 SQLite 直接查詢 CSV。Thariq 特別推崇 SQLite 方案——把問題轉換成模型熟悉的介面(SQL),是很有創意的 API 設計。其他搜尋介面設計包括:使用試算表座標語法(如 B3:B5)、SQL 查詢、XML 查詢(因為 XLSX 底層是 XML)。
關鍵洞察:蒐集上下文是非常有創意的工作,只嘗試一種方法絕對不夠。要嘗試 SQL、grep、座標搜尋等多種方式,跑測試比較效果。
[55:00] Sub-Agent 的威力
Sub-Agent 是管理上下文的利器。主 Agent 可以派出搜尋 Sub-Agent 去做大量工作,只需要看最終結果,避免上下文汙染。例如試算表 Agent 可以同時派出多個讀取 Sub-Agent,分別讀取和摘要不同的工作表,然後回傳結果。
Thariq 特別自豪的是 Claude Code 在 Sub-Agent 搭配 Bash 方面的表現。平行執行多個 Sub-Agent 時,Bash 會產生很多複雜的 Race Condition,Claude Code 團隊投入了大量工作來解決這些問題。
[62:00] 安全性:瑞士起司防禦模型
面對「給 Agent 這麼大的權力,如何確保安全?」的問題,Thariq 介紹了「瑞士起司防禦」(Swiss Cheese Defense):每一層都有防禦,加在一起就能攔住一切。
- 模型層:對齊訓練(推薦參考 Anthropic 的 Reward Hacking 論文)
- 框架層:權限控制、Prompt 約束、Bash 工具解析器(能可靠地知道 Bash 在執行什麼)
- Sandbox 層:沙箱化網路請求和檔案系統操作,防止資料外洩
如果 Agent 被惡意接管,Sandbox 確保它無法將資訊外送。搭配 Cloudflare、Modal、E2B、Daytona 等 Sandbox 提供商,可以做到不在個人電腦或有生產環境密鑰的機器上運行。
[70:00] 上下文管理與壓縮
Thariq 分享了一個有趣的觀察:很多用戶告訴他「我已經 Compact 五次了」,而他自己幾乎從不需要 Compact。原因是他習慣頻繁清除上下文視窗——在程式碼開發中,狀態儲存在程式碼庫的檔案裡,Agent 只需要看 git diff 就能了解當前變更,不需要整個聊天記錄。
對於非技術用戶的 Agent,上下文管理更具挑戰。可能的方案包括:每次新問題時自動 Compact、將用戶偏好儲存到檔案系統、讓試算表本身承載狀態。核心觀點是不需要百萬 Token 的上下文,只需要好的上下文管理和 UX 設計。
[75:00] 現場原型製作:Pokemon Agent
Thariq 現場演示了如何用 Claude Code 建構一個 Pokemon Agent。他先讓 Claude Code 去搜尋 PokeAPI 並生成一個 TypeScript 函式庫(包含 getPokemonByName、listPokemon、getSpecies 等介面)。
他對比展示了兩種方案:
- 純工具版:用 Messages API 定義了
getPokemon、getPokemonSpecies、getMove等工具,透過工具呼叫回答「Generation 2 的水系 Pokemon 有哪些?」 - Claude Code 版:只用 Claude.md 描述 API、提供範例腳本,讓 Agent 自己寫腳本查詢和分析
Claude Code 版能處理更複雜的問題,如「我想組一個以 Venusaur 為核心的隊伍,根據 Smogon 資料給建議」——它會搜尋 Smogon 文字資料、分析最常見隊友、生成分析腳本。
[85:00] 從原型到產品化
部署 Agent 有兩種路線。第一種是本地應用——因為 AI 的運行開銷,本地 App 可能會重新流行(如 Claude Code 就是本地運行)。第二種是 Sandbox 託管,使用 Cloudflare 等提供商,程式碼可以簡單到 sandbox.start() 然後 bun agent.ts。
一個進階技巧:如果 Agent 需要自適應 UI,可以在 Sandbox 中運行 Dev Server,Agent 編輯程式碼後即時重新整理,用戶直接與動態網站互動。這也是 Lovable 等網站建構器的工作原理。
[90:00] 重要建議與哲學
Thariq 分享了幾個關鍵建議:
關於寫程式碼的心態:我們能用 AI 加快 10 倍寫程式碼,也應該 10 倍速度丟棄程式碼。不要過度投資在預測未來的架構上,建構今天有效的東西,準備好之後重寫。對新創公司來說,這是對抗大公司六個月孵化週期的最大優勢。
關於 Hooks 的用法:Hooks 可以在每次工具呼叫後插入確定性驗證,也可以注入即時上下文變更(如用戶在 Agent 工作期間修改了試算表)。
關於大型程式碼庫:目前的做法是撰寫好的 Claude.md、確保 Agent 從正確的目錄開始、建立完善的驗證步驟和 Hooks。語意搜尋(Semantic Search)的問題在於模型不是在語意搜尋上訓練的,而 grep 是模型熟悉的工具。
我的想法
這場工作坊最讓我印象深刻的觀點是「把 Agent 想成被關在房間裡的人」這個比喻。你會希望給這個人一台電腦和網路,而不是一疊你認為「可能有用」的紙。這重新定義了我們設計 Agent 的思維——與其精心挑選上下文餵給模型,不如給它工具讓它自己去找需要的資訊。
「Bash Is All You Need」的主張初聽有些極端,但背後的邏輯很紮實:每新增一個專用工具,都是在假設我們知道 Agent 需要什麼。而 Bash 的通用性讓 Agent 能發現和組合任何工具,這種靈活性在面對真實世界的複雜問題時特別有價值。
另一個值得注意的點是 Thariq 反覆強調「Read the Transcript」。建構 Agent 不像傳統軟體開發那樣有確定的設計模式可以遵循,它更像是在理解一個有機體——你需要觀察它的行為、理解它的偏好、為它設計合適的環境。這種「養模型」的心態轉變,對於從傳統工程背景轉向 AI Agent 開發的人尤其重要。
最後,「簡單但不容易」這個定位很精準。Agent 的程式碼量不需要大,但每一行背後都需要對模型行為的深刻理解和大量實驗。這也是為什麼 Thariq 比喻 Agent SDK 像 React——雖然一開始覺得麻煩(JSX、Bundler、Sandbox),但它提供了正確的抽象層級,讓你能專注在真正重要的領域問題上。
進階測驗:Claude Agent SDK 完整工作坊
共 5 題,包含情境題與錯誤診斷題。
