Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

繁體中文 | 简体中文 | English

AI Agent 學習路徑

awesome-agentic-ai-zh

🤖 AI Agent 學習地圖 — 從基本 LLM 概念到自己打造多 agent 系統

學習路線圖 + 145+ 資源 curation + 簡單 illustrative 案例
結構化 8 階段、從「LLM 是什麼、token 怎麼算」走到 multi-agent 編排、Computer Use / Browser Use / Sandbox

License 繁中 简中 EN GitHub stars GitHub forks 線上文件站


🎯 專案介紹

本 repo 角色定位學習路線圖 + 145+ 資源 curation + 簡單 illustrative 案例——三件事為核心、幫想學 AI / AI agent 的人從「不知道從哪開始」走到「能設計多 agent 系統」。

具體做法:

核心做什麼規模
學習路線圖把網路散落的高品質專案、教材、必修閱讀,按從零開始、循序漸進整理成 8 個階段(含 Stage 5 + Stage 8 兩個共用 hub)+ 2 條學習路線 + 5 條延伸路徑8 stages、2 tracks
資源 curation每階段精選 145+ 個 project(含星等、適合誰、教什麼、怎麼跑),加上中文 AI 生態(DeepSeek / Zhipu / Kimi 等)MCP / Skill 完整 catalog145+ projects、62 MCP/Skill
簡單 illustrative 案例每階段附 1-5 個基礎練習(70-150 行 starter + dual-path Ollama/Anthropic SDK 對照 + mock-based test)23 個練習 folder

走完整條路線,你會從「LLM 使用者」進階到「agent 系統建構者」——能看懂 framework 在做什麼、能設計多 agent 協作、能寫自己的 MCP server。

📖 關於中英文混用:本專案保留 AI Agent 領域常見英文術語(Prompt Engineering / Context Engineering / Harness / MCP / Skills / RAG 等),因為官方文件、paper、GitHub repo 與 API 文件多以英文為主。每個重要概念會提供 中文理解名 + 英文正式術語 + 一句白話定位,讓讀者能先理解概念,再對接英文生態。完整對照見 resources/glossary.md


📋 目錄


📚 快速開始

🚀 第一次接觸 AI agent / 沒寫過 code?

先看 resources/setup-guide.md — 30-45 分鐘從零帶你申請 API key、裝好 Python、跑出第一個 LLM hello-world。

線上閱讀

本地下載

git clone https://github.com/WenyuChiou/awesome-agentic-ai-zh.git
cd awesome-agentic-ai-zh
# 從 stages/00-foundations.md 開始

✨ 你會收穫什麼?

  • 📖 完全免費 — MIT 授權,所有內容開放共學
  • 🗺️ 兩條學習路徑 — Track A(CLI Power User)給「想 USE 現成 CLI agent」的人;Track B(Agent Builder)給「想 BUILD 自己 agent」的人。共用 Stage 0-2 基礎
  • 🛠️ 基礎動手練習 — 每階段附 1-5 個 illustrative 練習(題目 + dual-path SDK 對照 + success criteria)。定位是基礎入門 + 路線確認——chapter-length 深度練習見對應 stage 的 hello-agents / Anthropic Cookbook callout
  • 🎯 精選 145+ 個 projects — 每個都附星等推薦、適合誰、教什麼、怎麼跑(含本地 LLM 執行:Ollama、llama.cpp、LocalAI、MLX)
  • 🌏 三語完整維護 — 繁中(canonical)/ 簡中 / English,三版皆完整維護、英文非薄翻譯
  • 🎓 不只「框架」、還有「Claude Code 生態」 — MCP / Skills / Plugins / SDK 完整堆疊
  • 🔬 5 條依使用者分流的延伸路線 — 研究員 / 開發者 / 老師 / 知識工作者 / 日常使用者
  • ⏱️ 預估時程寫清楚 — Track A 8-10 週 / Track B 主幹最少 16-22 週、現實 5-7 個月(每週 5-8 hr)

🗺️ 學習地圖(兩條學習路徑)

AI Agent 學習地圖

走完 Stage 0-2(共用基礎) 之後,依你的目的選一條學習路徑:

  • Track A — CLI Power User:你想現成的 CLI agent(Claude Code、Codex、OpenCode、Gemini CLI 等)把工作做順、效率拉高,不打算自己從零寫 agent。3 個 sub-stage(A1-A3)。
  • Track B — Agent Builder:你想從零打造自己的 agent——學 framework、寫 ReAct、設計 multi-agent。Stage 3-7 是主路線。

兩條學習路徑不互斥——多數人是先走 A 把 CLI 用起來,再回到 B 學內部運作;或反過來也行。Stage 5(Claude Code 生態)兩條路徑都會用到。

共用基礎(Stage 0-2)

Stage主題關鍵內容預估時程
0基礎準備(Foundations)Python · CLI · git · API · JSON1-2 週
1LLM 基礎(LLM Basics)token · API · 各家 LLM 比較 · 本地 LLM1 週
2Prompt 設計(Prompt Engineering)系統 prompt · few-shot · CoT1-2 週

Track A — CLI Power User(想用 CLI 把事情做完)

Stage主題關鍵內容預估時程
A1選一個 CLI Agent,開始用它做事(CLI Agent Intro & Selection)7 主流 CLI 比較 · 安裝 · 第一次跑1 週
A2建立可重複使用的 CLI 工作流程(CLI Workflow Patterns)CLAUDE.md · slash command · 多步驟拆解1-2 週
A3把 CLI Agent 接進真實工作流程(Integration & Production)MCP 接 CLI · CI 自動化 · cost / observability1-2 週
+5Stage 5 — Claude Code 生態共用 hubMCP · Skills · Plugins · Subagents、Track A 必看 5.1-5.4 / 選讀 5.5-5.61-2 週(Track A 視角)
+8Stage 8 — Agent Interfaces共用 hubComputer Use · Browser Use · Code Sandbox、Track A 視角看 Track A 怎麼用1-2 週(Track A 視角)

Track A 預估總時程:含 Stage 0-2(共用基礎)+ A1-A3 + Stage 5 + Stage 8(兩個共用 hub)= 約 8-10 週。核心參考:resources/cli-agents-guide.md

Track B — Agent Builder(從零打造 agent)

Stage主題關鍵內容預估時程
3工具使用與第一個 Agent(Tool Use & Hello Agent)function calling · ReAct · 5 個動手練習2-3 週
4Agent 框架(Agent Frameworks)LangGraph · AutoGen · CrewAI · Smolagents2-3 週
5 ⭐⭐Claude Code 生態系(Claude Code Ecosystem)共用 hub、Track A 也學)MCP · Skills · Plugins · Subagents3-4 週(Track B 視角)
6上下文管理(Context Engineering):RAG 與 Memoryvector DB · long-term memory · contextual retrieval2 週
7多 Agent 系統與穩定運作(Multi-Agent & Production)multi-agent orchestration · eval · observability · SDK 進階2-4 週
7.5進階 Agentic Workflow 概念(Advanced Agentic Concepts)(reading map)工作邊界 · PAR loop · agent-as-judge · 12 個進階概念 + reading list1 週(不寫 code)
8 ⭐⭐Agent 操作介面(Agent Interfaces)共用 hub、Track A 也學)Computer Use · Browser Use · Code Sandbox、2024-2026 frontier2-3 週(Track B 視角)

Track B 預估總時程:主幹最少 16-22 週、現實 5-7 個月(每週 5-8 hr 兼職)

兩個共用 hub(Track A + Track B 都會用到)

  • Stage 5 = Claude Code 生態(MCP / Skills / Plugins / Subagents)—— Track A 學 MCP 接 CLI、Track B 學 agent runtime 結構
  • Stage 8 = Agent Interfaces(Computer Use / Browser / Sandbox、2024-2026 frontier)—— Track A 學「怎麼用」委派任務、Track B 學「怎麼 build」embed 進 agent

兩個 hub 出現在兩條 track 內、視角不同、學的深度也不同(內文有 Track A / Track B 分視角段)。

💡 想看跨 stage 的完整範例? 7 步打造你的第一個 AI Agent — 同一個 Paper Summary Bot 從 Stage 1 一路寫到 Stage 7,~350 行真實程式碼(Track B 適用

走完主幹後,依你的身分挑一條延伸路線繼續走。不確定挑哪條?

Branch 決策樹

💡 「日常使用者」這條路線不必走完主幹就能直接讀——是給「想用 AI、但不一定要寫 code」的人。

路線適合誰主題
🔬 研究人員研究生、博後、PI文獻整理 · paper 寫作 · multi-agent review
💻 開發者軟體工程師Cursor · Aider · CLI delegation · code review
🎓 教師老師、講師備課 · 投影片 · 學生 feedback · 隱私 / 倫理 · prompt 範本
📊 知識工作者顧問、PM、分析師Email · 會議紀錄 · report 自動化
👥 日常使用者ChatGPT / Claude.ai 使用者寫信 · 學習 · 隱私場景 · CLI agent 入門

💡 如何學習

這份路線圖兼顧概念與實作,目標是帶你從 LLM 使用者一路走到 agent 系統建構者。適合有基本 Python 能力的開發者、研究生、自學者。動手之前,先確認你有:

  • 基本 Python — 寫過 function、用過 API、看得懂 JSON
  • 基本 git — clone、commit、push
  • 想學的動機 — agent 是 2024-2026 變化最快的領域,需要持續投入(2026 仍每月推新 model / 新 framework)

上面有缺的就從 Stage 0 補齊;都會了就直接跳 Stage 1

主幹分 5 部分:

  • Part 1(Stage 0-2):基礎與 LLM 入門 — Python / git / API、什麼是 LLM、怎麼設計 prompt
  • Part 2(Stage 3-4):建構你的 Agent — 從 tool use 進化到 agent,學主流 framework
  • Part 3(Stage 5) 共用 hub — Claude Code 生態系(MCP / Skills / Plugins / Subagents、Track A + B 都會用到)
  • Part 4(Stage 6-7):進階整合 — memory / RAG / multi-agent 協作 / harness engineering
  • Part 5(Stage 8) 共用 hub — Agent Interfaces(Computer Use / Browser Use / Code Sandbox、2024-2026 frontier、Track A + B 都會用到)

🔭 三層概念進化prompt engineering(Stage 2、單一 prompt 怎麼寫)→ context engineering(Stage 3 之後、怎麼動態組 system prompt + memory + retrieved chunks + tool schema)→ harness engineering(Stage 7、agent loop / eval / observability / deploy 整套包成 production system)。3 個術語對應 3 個 phase、不必另外找資源。詳見 stages/02-prompt-engineering.md#-進階context-engineering不是-prompt-engineering-了stages/07-multi-agent-production.md 必修閱讀 5+6。

走完主幹(14-19 週)後,依你的身分(研究員 / 開發者 / 老師 / 知識工作者 / 日常使用者)挑一條延伸路線繼續走。

最重要的一句話:不要跳過 動手練習。每個 stage 的 動手練習都是「不動手就學不會」的東西,光讀過去後面會卡住。

🎓 動手練習怎麼用才對:每個練習 folder 裡的 starter.py完整解答、不是 TODO skeleton。如果你 clone 下來直接 cat starter.py + python test.py pass、會誤以為「我學會了」、其實沒寫一行 code。正確學習法mv starter.py starter_reference.py、看 signature 不看 body、自己重寫、卡住才回去對照。完整方法論 + 每個 stage 的時間預算 + 卡住處理流程看 docs/HOW_TO_USE.md

準備好了嗎?從 Stage 0 開始


📚 相關資源

完整的相關資源(用語說明 + 常用 MCP / Skill highlight + awesome lists + 中文社群)抽到 RESOURCES.md 避免主頁過長。

直接看常用入口、依情境分組:

🚀 入門 / 環境設定

你的狀況去哪內容
完全沒寫過 code、第一次接觸 AI agentresources/setup-guide.md30-45 分鐘從零裝好(API key、Python、第一個 hello-world)
不知道挑哪個 LLM providerresources/setup-guide.md AAnthropic / OpenAI / DeepSeek / Kimi / NVIDIA NIM 對照
同主題 awesome list / 中文社群RESOURCES.md 同主題清單5-10 分鐘逛一輪

📖 概念 / 用語

你的狀況去哪內容
不懂某個詞(LLM / agent / RAG / token / MCP / Skill / 向量資料庫…)resources/glossary.md30+ 詞、每個 30-80 字 + 哪 stage 講細的
想搞懂 agent 為什麼有的在 terminal、有的在 Telegram、有的在 Jetsonresources/agent-paradigms.md5 種 agent 型態 mental model + Hermes / OpenClaw 例子
MCP / Skills / Plugins 用語對照RESOURCES.md 三個核心用語1 頁速查表

🛠 動手實作

你的狀況去哪內容
想動手寫 Skill / MCP server / 接 Word / Zotero / 本機 LLMresources/cookbook.md6 個 step-by-step recipe、每個 30-50 分鐘
想用 subagent 但不知該派誰、怎麼派、派什麼工作resources/subagent-cookbook.md15 個複製貼上即用的 dispatch recipe
自己寫 subagent / 組合多個 / debug 跑壞的(進階)resources/subagent-advanced.mddescription 寫法 4 個 bug + composition 3 pattern + debug 5 切點
卡在 tool calling(LLM 不呼叫 / schema 寫不好 / ReAct loop 跑不停)examples/stage-5/tool-calling-tutor/可裝進 Claude Code 的 skill、4-symptom diagnostic
動手練習怎麼正確使用(主動 vs 被動模式)docs/HOW_TO_USE.md5-10 分鐘讀完、配合每個 stage 用

🔌 接日常工具 / 找 MCP server

你的狀況去哪規模
接 Notion / Obsidian / Excel / GitHub 等工具RESOURCES.md 接日常工具7-8 個 highlight
完整 MCP server / Skill 目錄(含星等、分類)resources/mcp-skills-catalog.md62 條、6 大分類

🔬 研究 / production 級

你的狀況去哪內容
研究 workflow + multi-LLM delegation skillRESOURCES.md 研究工作流本 repo 維護者出品的 Claude Code 研究 skill 對
CLI agent 7 家對照 + production 搭配resources/cli-agents-guide.mdTrack A 的核心參考、148 行
Schema 設計規則(tool calling 必看)resources/schema-design-cheatsheet.md5 條黃金規則 + 5 個 anti-pattern

🤝 如何貢獻

這個 repo 是一個 AI 學習文件,如果你也有蒐集很好的資源,也歡迎貢獻:

  • 🐛 回報 Bug — 內容錯誤、連結失效、過時資訊 → 開 Issue
  • 💡 提建議 — 缺什麼 stage、該加哪個 project → 開 Issue 討論
  • 📝 完善內容 — 改進現有 stage 內容、修 typo → 直接 PR
  • ✍️ 新增 project — 在某個 stage 加 1-3 個 project,並附上「為什麼這個 project 適合放這個 stage」的說明
  • 🌏 翻譯 — 補英文 companion 沒翻到的段落,或翻成其他語言
  • 🌱 擔任 Stage / Branch maintainer — 長期 review 特定領域,詳見 CONTRIBUTORS.md

PR 流程跟 style 規範請看 CONTRIBUTING.mdresources/style-guide.md

📅 想看最近 ship 了什麼CHANGELOG.md(最近 14 天)。 Maintainer 內部進度與 launch checklist 放在 .github/launch-checklist.md(內部文件)。


🙏 致謝

Inspiration

  • Datawhale Hello-Agents — 中文圈最完整的 chapter-length agent 教材,本 repo 的「章節 + 進度」結構受這份啟發;每個 stage / 練習 folder 都有 📚 callout 點過去深度章節。特別感謝。
  • Datawhale 社群 — 中文 ML 共學社群的標竿,本 repo 多個 anchor project 來自這裡
  • liyupi/ai-guide — 中文圈最大「AI 資源大全」,跟 Vibe Coding 教學齊全(涵蓋 Agent Skills / RAG / MCP / A2A / Harness Engineering)。本 repo 是「結構化路線」、ai-guide 是「廣度資源庫」,互為補充

其他相關專案

同主題、不同切入角度的清單,搜資源時可以一起用:

這些是純清單形式(看到再挑),本 repo 的不同點是有「從 Stage 0 一路走到 production 的學習順序」。

貢獻者

Contributors

新貢獻者會自動出現在上方。完整列表 → GitHub Contributors

個人


🎓 引用

如果這個學習地圖對你的學習或工作有幫助,歡迎引用:

@misc{awesome_agentic_ai_zh_2026,
  title = {awesome-agentic-ai-zh: A Structured Learning Roadmap for Agentic AI},
  author = {Chiou, Wenyu},
  year = {2026},
  url = {https://github.com/WenyuChiou/awesome-agentic-ai-zh},
  note = {8-stage learning path from prerequisites to Agent Interfaces (Computer Use / Browser Use / Sandbox), with curated projects + hello-X demos. Bilingual (zh-TW / English).}
}

📈 Star History

Star History Chart


License

MIT。Maintained by @WenyuChiou

⭐ 如果這個 repo 對你有幫助,歡迎給個 Star — 這對作者繼續更新是很大的鼓勵

Stage 0 — 基礎準備(Foundations)

繁體中文 | 简体中文 | English

時間估算:1-2 週(約 5-15 小時,已具備可跳過)

💡 看不懂某個詞?翻 resources/glossary.md 查 30 秒再回來。Stage 0 還不會碰太多 jargon,但接下來幾 stage 會。 🗺️ 想先看 agent 的全景地圖(為什麼有的 agent 在 terminal、有的在 Telegram、有的在 Jetson 板子)?→ resources/agent-paradigms.md(5 種 agent 型態,10 min 讀完)

📋 本章組成:跳過條件檢查 → 環境設定步驟 → 進入 Stage 1(foundation stage,無「學習目標 / 進入條件」框架)
🔑 關鍵名詞:見 resources/glossary.md(每 stage 用到的術語都收在那裡)

何時可以跳過這個階段

如果你能:

  • 寫一個會呼叫公開 API 並解析 JSON 回應的 Python 函式
  • 用 git 做 clone、commit、push,並處理基本的 merge 衝突
  • 在自己的作業系統上使用命令列(cd、ls、mkdir、執行 script)
  • 看懂 YAML / JSON 檔案

直接跳到 Stage 1

如果做不到,就把這個階段走完。不要跳——後面每個階段都會預設你已經會這些。

📌 學習目標

  • 寫 Python:函式、類別、async/await 基本用法
  • 用 git:clone、branch、commit、push、基本衝突處理
  • 用 REST API:發 GET/POST、解析 JSON、處理 auth header
  • 讀寫 YAML 跟 JSON

🛠 動手練習

  • 練習:Python — 寫一個 Python script 呼叫 https://api.github.com/users/torvalds 並印出 follower 數量
  • 練習:git — clone 任何一個公開 repo,做一次 commit,push 到自己的 fork
  • 練習:CLI — 用命令列建幾個資料夾跟檔案(macOS / Linux:mkdir project && cd project && mkdir src tests docs;Windows PowerShell:New-Item -ItemType Directory -Path project,project\src,project\tests,project\docs)、執行 Python script、把輸出存到檔案
  • 練習:YAML — 用 Python 讀一個 .yaml 設定檔,改一個值,再寫回去
  • 練習:API auth — 去 github.com/settings/tokens 產生一個 personal access token(給最少權限:read:user),呼叫 https://api.github.com/user 需 auth 的 endpoint,看 401(無 token)vs 200(帶 token)的差別。注意:production agent 一定會用到 API auth,所以這一題要做

🎯 精選資源(不是完整 Project,只是學習素材)

按 5 個 prereq 主題分類、18 個資源一張表搞定。挑入口看「適合誰」、想深入點連結看 repo / 網站

主題資源適合誰為什麼推薦 / 備註
PythonPython Crash Course從零學 Python書 + 練習;書付費、練習免費
Real Python已會基礎、想深入單一主題高品質免費文章、Google 搜尋常出現
Corey Schafer YouTube喜歡英文影片學習者從基礎到進階、講解清楚
Boot.dev想要互動式練習部分免費、付費含完整 backend 路線
runoob.com Python 教學中文讀者快速查語法中文 Python 入門參考
GitPro Git book想徹底搞懂 Git免費完整參考書、官方推薦
Atlassian Git Tutorials想學 workflow(branch / merge / rebase)以 workflow 為主、視覺化好
Oh Shit, Git!?!出包時急救「我搞砸了 X、怎麼救」cheat sheet
git-flight-rules想要更深的急救手冊高人氣 cheat sheet、覆蓋場景更廣
CLI / ShellThe Art of Command Line想系統性學命令列★ 160k+、多語言版、新手到進階都涵蓋
Learn Shell喜歡互動式練習互動式 Bash 教學、瀏覽器內跑
explainshell.comdebug shell 指令把任何 shell 指令拆解講解(debug 救星)
REST APIMDN — HTTP想搞懂 HTTP 協定最 canonical 的 web reference
Postman Learning Center用 GUI 探索 APIAPI 探索工具、視覺化好
HTTPie偏好 CLI、curl 太醜curl 友善的命令列 HTTP client
YAML / JSONYAML 官網需要查語法規格YAML 規格文件
JSON crash course第一次接觸 JSON官方快速指南
jq命令列處理 JSONagent 工作中常用、處理 API response 必備

為什麼有這個階段

大多數「AI agent」教學都預設你已經會這些。如果你還沒,就會在奇怪的地方卡關(tool 需要 async、設定檔是 YAML、SDK 安裝要用 git)。在這裡花一週的投資,可以省下後面 10 週以上的挫折。


走完 Stage 0 了? 接下來 Stage 1 — LLM 基礎 會用 5-8 小時帶你做完第一次 LLM API 呼叫、認識 token / context window / temperature,以及用 per-token 計價估算實際任務成本。繼續往下走 →

Stage 1 — LLM 基礎(LLM Basics)

繁體中文 | 简体中文 | English

時間估算:1 週(約 5-8 小時)

👋 Stage 0 來的:好,環境已經夠用——這 5-8 小時:第一次成功呼叫 Claude / GPT / Gemini API、搞懂 token / context window / temperature 怎麼影響輸出、用 per-token 計算實際成本。直接從這裡開始的:先確認你能跑 Python script、有任一家供應商的 API key——做不到請先回 Stage 0

💡 看不懂某個詞(LLM / token / context window / temperature / RAG / agent⋯)→ 先翻 resources/glossary.md 查 30 秒再回來。

📋 本章組成:學習目標 → 進入條件 → 必修閱讀 →〔可選 · 概念地圖〕→ 動手練習 → 精選 Projects → 自我檢查
🔑 關鍵名詞:見 resources/glossary.md(每 stage 用到的術語都收在那裡)

三個核心詞(先記住、後面 stage 都會用到)

中文一句話
token詞元模型計算文字長度與費用的基本單位(中文 1 字 ≈ 1.5-2 token)
context window上下文視窗模型一次能看到多少 token(Claude 1M / GPT ~400k / Gemini 2M)
temperature隨機程度參數控制回答穩定或發散(0 = 最穩定、1 = 創意;分類任務用 0.0-0.3、創作用 0.7-1.0)

→ 這 3 個詞貫穿後續所有 stage。Stage 1 的目標就是讓你用 API 跑出來、親手摸到它們如何影響輸出。

📌 學習目標

走完這個階段後你會:

  • 解釋 LLM 是什麼、token 是什麼、context window 是什麼意思
  • 第一次成功呼叫 Claude / GPT / Gemini API 並解析回應
  • 在強項上比較四大 LLM 家族(Claude / GPT / Gemini / Llama)
  • 用 per-token 計價來估算單次任務的成本

🌐 主流 LLM 家族對比(2026-05 snapshot)

「Claude 跟 GPT 有什麼不同?」「中國模型能用嗎?」「我該裝 Ollama 跑哪個 OSS model?」——這節給你客觀對照。不下「最好」結論——用 強項 / 適合任務 / 弱項 3 維比較、附官方 docs URL讓你自己 verify。

💡 先解釋幾個名詞

  • Context window = LLM 一次能記住的對話量、有上限(譬如 200k token ≈ 15 萬中文字)
  • Apache 2.0 / MIT = 可商用 / 可改 / 可閉源的開源條款;Llama Community License = 開源但有條款限制(譬如 ≥ 7 億 MAU 要授權)
  • Frontier model = 各家最強旗艦;OSS = open-source、weights 可下載 self-host

🇺🇸 美系商業 frontier(3 家)

這 3 家是 SaaS API、付 token 用、不能 self-host:

Model 家族旗艦(2026-05)Context強項適合任務官方 docs
Claude(Anthropic)Opus 4.7 / Sonnet 4.6 / Haiku 4.51M(Haiku 4.5 為 200k)long-form / coding / agent / safety alignment寫 paper / code review / agent runtimeplatform.claude.com/docs
GPT(OpenAI)GPT-5.5 / GPT-5 / o-series~400k通用 / function calling / ecosystem 最廣廣度查詢 / function-call 框架 / GPTs 生態platform.openai.com/docs/models
Gemini(Google)3.1 Pro / Flash2M(Pro 系列、Flash 為 1M)長 context / 原生 multimodal / Google 整合PDF / 影音 / 大量文件 / Google Workspaceai.google.dev

🇨🇳 中國商業 + 開源 frontier(7 家)

中文場景的主力——有些純 API(DeepSeek / Kimi / Hunyuan)、有些同時釋出 OSS weights(Qwen / GLM-5.1 / Yi 可在 Ollama 跑):

Model 家族旗艦(2026-05)Context強項適合任務授權官方
DeepSeek(深度求索)V3(deepseek-chat)/ R1(deepseek-reasoner)⚠️ V4 系列 weights 開源、消費 API 尚未全公開128k推理 / coding / cost 最低大量 token / code 生成 / mathAPI proprietary、部分 weights OSS 在 HFapi-docs.deepseek.com
Qwen(阿里)Qwen3(cloud DashScope + Apache 2.0 OSS)128k+中文最強 OSS / 多模態 / agent中文長文 / agent / self-hostApache 2.0(OSS)+ proprietary(cloud)qwen.ai · DashScope
Kimi(Moonshot)K2.6 multimodal + Agent超長 context(1M+)長 context / 中文長文整本書讀 / 文獻分流Proprietaryplatform.moonshot.cn
GLM(智譜 Zhipu)GLM-5 proprietary / GLM-5.1 Apache 2.0128k中文 / tool use / agent中文 agent / 多輪對話proprietary + Apache 2.0(5.1)open.bigmodel.cn · chatglm.cn
Hunyuan(騰訊)T1(deep-thinking、Transformer-Mamba MoE)+ TurboS128k可比 DeepSeek R1 推理、中文中文推理 / 騰訊生態Proprietaryhunyuan.tencent.com
MiniMaxabab6.5 + M2.7200k多模態 / 中文長 prose中文寫作 / 影音 multimodalProprietaryplatform.minimax.io
Yi(01.AI / 李開復)Yi-Lightning(API 新旗艦)/ Yi-34B-Chat(OSS、200k context)200k中文 OSS 替代 Llama中文 self-host / 中文 APIApache 2.0(OSS)/ proprietary(Lightning)01.ai · GitHub

⚠️ 小米 MiMo 雖在 resources/cli-agents-guide.md 列入 Hermes Agent routing、但 2026-05 無權威官方 source 可驗證、暫不收進此表。要試 → 透過 Hermes Agent 200+ provider routing 接入。

🌍 西方開源(4 家、self-host 主力)

跑在自己機器、不付 API、隱私敏感場景的主力——可透過 Ollama 一行指令裝起來:

Model 家族大小(活躍)License強項適合任務官方
Llama(Meta)3.3 70B(Llama 4 截至 2026-05 還沒釋出Llama Community License通用 / 生態最廣 / Ollama 預設self-host 入門 / fine-tune basellama.com · HF Meta
Gemma(Google)Gemma 4 26B MoE + 31B dense(2026-04 釋出、Arena #3)Apache 2.0小巧高效 / Apple MLX 整合好 / multimodalEdge / mobile / 4-8GB RAM 機器ai.google.dev/gemma
Mistral(Mistral AI)7B / Mixtral 8x7B / CodestralApache 2.0(OSS 部分)開源 7B 級最強商用 self-host / EU 主權mistral.ai · HF Mistral
Phi(Microsoft)Phi-4 14B reasoning + Phi-4-multimodal-instruct(multimodal 版)MIT小但強 / reasoning / 適 edge4GB+ RAM / mobile / reasoning 入門HF microsoft

🎯 我該選哪家?(按場景反查)

你的場景推薦 + 為什麼
第一次學 LLM API、教材完整度優先Claude — Anthropic Cookbook + Courses 是社群公認最完整
寫長文 / paper / code reviewClaude Sonnet — long-form prose 強項
多模態(PDF / 影音 / 圖)GeminiKimi — 原生 multimodal
廣度查詢 + function calling 框架GPT — ecosystem 最廣、SDK 整合最深
中文場景 + 商業 APIKimi(長 context 強、能塞整本書)或 DeepSeek(cost 最低)或 GLM(agent 友善)
中文場景 + 開源 self-hostQwen 3(Apache 2.0、目前中文最強 OSS)
推理 / math(reasoning model)DeepSeek R1 / Hunyuan T1 / OpenAI o-series
隱私 / offline / 不付 APILlama 3.3 / Gemma 4 / Qwen 3 OSS via Ollama
Edge / 4GB RAM 機器Gemma 4 / Phi-4 / Qwen 3(3B 以下版本)
100k+ token 大文件Gemini 3.1(2M context)或 Kimi K2.6(1M+)
想 cost 最低(API 帳單敏感)DeepSeek V4-Flash — 同級英文 model 中 token 單價最低

📊 中立 benchmark 資源(自己 verify、不靠單一 source)

資源用途URL2026-05 狀態
Artificial Analysis第三方 benchmark + price/latency 整合(含中國 model)https://artificialanalysis.ai/✓ Active
Arena AI(前 LMSYS Chatbot Arena)人類盲測 ELO 排名https://arena.ai/leaderboard/text✓ Active
Vellum LLM leaderboard多 benchmark 整合https://www.vellum.ai/llm-leaderboard✓ Active
HuggingFace OpenLLM Leaderboard開源 model 排名https://huggingface.co/spaces/open-llm-leaderboard⚠️ 2026-05 偶爾 runtime error、改看 Arena AI 開源 tab
SuperCLUE(中文 benchmark)中文場景權威評測https://www.superclueai.com/✓ Active

⚠️ 重要警語

  • ⚠️ Benchmark ≠ production performance——LLM 在你 specific 任務的表現要自己跑 small eval(譬如貼 10 個你真實 prompt 看哪家答得最像你要的)、不能只看排名選
  • ⚠️ Frontier 6 個月洗牌一次——上面所有數字是 2026-05 snapshot、之後請以官方 docs / Artificial Analysis 為準
  • ⚠️ 「強項」是 relative、不是 absolute——所有 frontier model 都能完成基本任務、差別在邊際情境
  • ⚠️ 中文場景看 SuperCLUE——一般國際 benchmark(如 MMLU)以英文為主、中文表現可能跟英文不一致

🚪 進入條件

你應該已經:

  • 能跑 Python script
  • 概念上知道 HTTP / REST 是什麼
  • 至少有一家供應商的 API key(Anthropic / OpenAI / Google)

如果還沒——先回 Stage 0。

📚 必修閱讀

  1. Anthropic — Claude 模型總覽 — 官方模型 family、含 2026 最新 Opus 4.7 / Sonnet 4.6 / Haiku 4.5
  2. anthropics/courses — Anthropic API Fundamentals ⭐⭐⭐⭐⭐ ★ 21k+ — Anthropic 官方 5 course umbrella、module 1「Anthropic API Fundamentals」對應本 stage。Jupyter notebook、用 Claude 3 Haiku(最便宜)跑、跟著做就能拿到 API 基本功
  3. OpenAI Quickstart — 第一次 API call 的步驟
  4. A Visual Guide to LLM Tokenizers — Hugging Face 的入門
  5. Anthropic API Pricing — 把計價表看完,算一下 1k input + 1k output 的成本

🎥 中文影片補充(強烈推薦)

🛠 動手練習(基礎 illustrative 練習)

🦙 本 stage 預設用 Ollama(成本考量、本機 gemma4:e4b 跑得動、$0/run)。每個練習都有 Path A(Ollama、預設)+ Path B(Anthropic、選擇性、想看 cloud 高品質時用)。完整 3 路 trade-off 見 examples/README.md

💰 Stage 1 預算估算(全 6 練習各跑 3-5 次):全本機 = $0全 haiku ≈ $0.30全 sonnet ≈ $0.90。完整 model 清單 + Stage 1-7 全程預算估算見 examples/README.md#推薦-llm-清單

💡 不裝 Ollama 也能讀 — 每個練習的 Path B 區塊就是 Anthropic 版、選一個跑就行。先 pip install openai && ollama pull gemma4:e4b 就裝好 Path A 環境。

練習 1:LLM API(hello world)

五行 Python 呼叫 LLM 並印出回應。預設用 Ollama 本機跑(免費、offline);想看 cloud 答案品質改 Path B Anthropic。詳見 examples/README.md

📋 起手碼 — Path A(本機 Ollama gemma4:e4b、預設)(複製到 practice_1.pypython practice_1.py 就跑)
# 需要:pip install openai      (用 OpenAI-compatible SDK 跟 Ollama 溝通)
# 前置:ollama pull gemma4:e4b && ollama serve
import sys
if hasattr(sys.stdout, "reconfigure"):
    sys.stdout.reconfigure(encoding="utf-8", errors="replace")

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:11434/v1",
    api_key="ollama",  # Ollama 不檢查、隨便填
)

r = client.chat.completions.create(
    model="gemma4:e4b",   # 換成 qwen2.5:3b / llama3.2:3b 也可
    max_tokens=100,
    messages=[{"role": "user", "content": "用一句話自我介紹。"}],
)

# === 自我驗證 ===
text = r.choices[0].message.content
print("回應:", text)
print("usage:", r.usage)

assert r.choices[0].finish_reason in ("stop", "length"), f"非預期 finish_reason: {r.choices[0].finish_reason}"
assert len(text) > 0, "回應不應為空"
assert r.usage.completion_tokens > 0, "output token 應 > 0"
print("✅ 練習 1 通過 — Ollama gemma4:e4b 已能本機回應、$0/次")

預期輸出(樣本):

回應:嗨!我是 Gemma、一個由 Google 訓練的開源語言模型...
usage: CompletionUsage(completion_tokens=35, prompt_tokens=12, total_tokens=47)
✅ 練習 1 通過 — Ollama gemma4:e4b 已能本機回應、$0/次

慢嗎? Gemma 4B 在 CPU 上約 5-30s/答案、有 GPU(RTX 3060+)<2s。要更快用 gemma3:1b、要更聰明改 qwen2.5:14b / llama3.3:8b(需 8GB+ VRAM)。

📋 起手碼 — Path B(Anthropic API、選擇性、想看 cloud 高品質時)(複製到 practice_1_anthropic.py
# 需要:pip install anthropic
# 環境變數:export ANTHROPIC_API_KEY=sk-ant-...
import sys
if hasattr(sys.stdout, "reconfigure"):
    sys.stdout.reconfigure(encoding="utf-8", errors="replace")

import anthropic

client = anthropic.Anthropic()
msg = client.messages.create(
    model="claude-haiku-4-5",  # haiku 最便宜;換 sonnet 改這行
    max_tokens=100,
    messages=[{"role": "user", "content": "用一句話自我介紹。"}],
)

# === 自我驗證 ===
text = msg.content[0].text
print("回應:", text)
print("usage:", msg.usage)

assert msg.stop_reason in ("end_turn", "max_tokens"), f"非預期 stop_reason: {msg.stop_reason}"
assert len(text) > 0, "回應不應為空"
assert msg.usage.input_tokens > 0 and msg.usage.output_tokens > 0, "token 數應 > 0"
print("✅ 練習 1 通過 — 你已成功打通 Anthropic API")

預期輸出(樣本):

回應:我是 Claude,一個由 Anthropic 訓練的 AI 助理...
usage: Usage(input_tokens=18, output_tokens=42, ...)
✅ 練習 1 通過 — 你已成功打通 Anthropic API

成本:每次 ~$0.001 (haiku) / $0.004 (sonnet)、跑這個 hello world 比 Ollama 快 5-15 倍。

練習 2:Tokens

同一個 prompt 跑 100 次,觀察 token 數的變化。

  • 注意:temperature ≠ 0 會產生變動
  • 注意:同一句話的英文 vs 中文 token 數差異
📋 起手碼 — Path A(本機 Ollama gemma4:e4b、預設)(複製到 practice_2.py
# 需要:pip install openai     (OpenAI-compatible SDK 跟 Ollama 溝通)
# 前置:ollama pull gemma4:e4b && ollama serve
import sys, statistics
if hasattr(sys.stdout, "reconfigure"):
    sys.stdout.reconfigure(encoding="utf-8", errors="replace")

from openai import OpenAI

client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")

PROMPTS = {
    "中文": "用一句話描述一隻貓在做什麼。",
    "English": "Describe in one sentence what a cat is doing.",
}

N = 10  # 本機慢、N 小一點;確認 OK 後加大
for label, prompt in PROMPTS.items():
    output_tokens = []
    for _ in range(N):
        r = client.chat.completions.create(
            model="gemma4:e4b",
            max_tokens=80,
            temperature=1.0,  # 拉高 temperature 看 variance
            messages=[{"role": "user", "content": prompt}],
        )
        output_tokens.append(r.usage.completion_tokens)
    print(f"\n[{label}] prompt: {prompt}")
    print(f"  input tokens: {r.usage.prompt_tokens}")
    print(f"  output tokens — min={min(output_tokens)} max={max(output_tokens)} mean={statistics.mean(output_tokens):.1f} stdev={statistics.stdev(output_tokens):.1f}")

# === 自我驗證 ===
assert max(output_tokens) > min(output_tokens), "temperature=1.0 下、output 長度應該有 variance"
print("\n✅ 練習 2 通過 — 觀察到 temperature 對 output token 的 variance、本機跑 $0")
print("💡 中文 prompt 通常 input tokens 比 English 多(中文 token 化通常一字 ≈ 2 tokens)")

預期輸出(樣本):

[中文] prompt: 用一句話描述一隻貓在做什麼。
  input tokens: 32
  output tokens — min=18 max=58 mean=35.2 stdev=11.4

✅ 練習 2 通過 — 觀察到 temperature 對 output token 的 variance、本機跑 $0
📋 起手碼 — Path B(Anthropic API、選擇性)(複製到 practice_2_anthropic.py
# 需要:pip install anthropic
import sys, statistics
if hasattr(sys.stdout, "reconfigure"):
    sys.stdout.reconfigure(encoding="utf-8", errors="replace")

import anthropic

client = anthropic.Anthropic()
PROMPTS = {"中文": "用一句話描述一隻貓在做什麼。", "English": "Describe in one sentence what a cat is doing."}

for label, prompt in PROMPTS.items():
    output_tokens = []
    for _ in range(20):
        msg = client.messages.create(model="claude-haiku-4-5", max_tokens=80, temperature=1.0,
                                     messages=[{"role": "user", "content": prompt}])
        output_tokens.append(msg.usage.output_tokens)
    print(f"[{label}] input={msg.usage.input_tokens} output min/max/mean={min(output_tokens)}/{max(output_tokens)}/{sum(output_tokens)/len(output_tokens):.1f}")

主要差異client.messages.create()client.chat.completions.create()usage.output_tokensusage.completion_tokensusage.input_tokensusage.prompt_tokens成本:40 次 ≈ $0.01。

練習 3:Pricing / Latency

Cost-sensitive 工作必修:算出你的 hello-world prompt 跑 1000 次在不同 model 上的成本。Ollama 本機是 $0 但有 latency 成本;Cloud LLM 有 $ 成本但快。會算這兩個 trade-off 才能挑對 model

📋 起手碼 — Path A(本機 Ollama gemma4:e4b、量 latency)(複製到 practice_3.py
# 需要:pip install openai
# 前置:ollama pull gemma4:e4b && ollama serve
import sys, time
if hasattr(sys.stdout, "reconfigure"):
    sys.stdout.reconfigure(encoding="utf-8", errors="replace")

from openai import OpenAI

client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")

# 量 5 次 latency
latencies = []
for _ in range(5):
    t0 = time.time()
    r = client.chat.completions.create(
        model="gemma4:e4b",
        max_tokens=200,
        messages=[{"role": "user", "content": "你好!自我介紹一下。"}],
    )
    latencies.append(time.time() - t0)

# 統計
avg_latency = sum(latencies) / len(latencies)
out_tok_avg = r.usage.completion_tokens  # 末次當代表
tps = out_tok_avg / avg_latency if avg_latency > 0 else 0

print(f"model: gemma4:e4b (本機)")
print(f"5 次 latency (sec): min={min(latencies):.2f} max={max(latencies):.2f} mean={avg_latency:.2f}")
print(f"avg output: {out_tok_avg} tokens、約 {tps:.1f} tokens/sec")
print(f"\n1000 次成本: $0 (本機)、預計時長: {avg_latency * 1000 / 60:.1f} 分鐘")

# === 自我驗證 ===
assert avg_latency > 0, "latency 應 > 0"
assert out_tok_avg > 0, "output token 應 > 0"
print(f"\n✅ 練習 3 通過 — 本機 model $0 但要花 {avg_latency * 1000 / 60:.0f} 分鐘跑 1000 次")
print("💡 對照 Path B Anthropic:1000 次只要 ~10-20 分鐘但要 $0.25(haiku)")

預期輸出(樣本):

model: gemma4:e4b (本機)
5 次 latency (sec): min=4.21 max=8.93 mean=6.54
avg output: 48 tokens、約 7.3 tokens/sec

1000 次成本: $0 (本機)、預計時長: 109.0 分鐘

✅ 練習 3 通過 — 本機 model $0 但要花 109 分鐘跑 1000 次
💡 對照 Path B Anthropic:1000 次只要 ~10-20 分鐘但要 $0.25(haiku)
📋 起手碼 — Path B(Anthropic API、算 $ 成本)(複製到 practice_3_anthropic.py
# 需要:pip install anthropic
import sys
if hasattr(sys.stdout, "reconfigure"):
    sys.stdout.reconfigure(encoding="utf-8", errors="replace")

import anthropic

# Anthropic 2026 Q2 公開計價(每 1M token、USD)— 跑前對照 https://www.anthropic.com/pricing
PRICING = {
    "claude-haiku-4-5":   {"input": 1.00, "output":  5.00},
    "claude-sonnet-4-6":  {"input": 3.00, "output": 15.00},
    "claude-opus-4-7":    {"input": 5.00, "output": 25.00},  # Opus 4.7 (April 2026) 價格下調至 5/25
}

client = anthropic.Anthropic()
MODEL = "claude-haiku-4-5"

msg = client.messages.create(model=MODEL, max_tokens=200,
                             messages=[{"role": "user", "content": "你好!自我介紹一下。"}])
in_tok, out_tok = msg.usage.input_tokens, msg.usage.output_tokens
rates = PRICING[MODEL]
cost_one = (in_tok * rates["input"] + out_tok * rates["output"]) / 1_000_000

print(f"model: {MODEL}")
print(f"single: input={in_tok} output={out_tok} → ${cost_one:.6f}")
print(f"1000 calls cost across model tiers:")
for name, r in PRICING.items():
    c = (in_tok * r["input"] + out_tok * r["output"]) / 1_000_000 * 1000
    print(f"  {name:<22} ${c:.4f}")

# === 自我驗證 ===
assert cost_one > 0, "Cloud LLM 一定有成本"
print(f"\n✅ 練習 3 通過(Anthropic)— 1000 次 haiku ≈ $0.25、sonnet 4.6 ≈ $0.76、opus 4.7 ≈ $1.27")

預期輸出

model: claude-haiku-4-5
single: input=14 output=48 → $0.000254
1000 calls cost across model tiers:
  claude-haiku-4-5       $0.2540
  claude-sonnet-4-6      $0.7620
  claude-opus-4-7        $1.2700

Trade-off 對照:本機 Ollama 跑 1000 次免費但要 ~2 hr;Anthropic haiku ~10 min $0.25;sonnet ~10 min $0.76。production 場景才考慮 cloud;學習 / 實驗 / debug 全用本機

練習 4:Cross-Provider 比較

同一個 prompt 同時送給 Claude、GPT、Gemini,比較三家的回應差異。觀察「同一句話為什麼產生不同答案」——回答風格、長度、判斷取捨都不一樣。建議用 OpenAI、Anthropic、Google 三家 SDK 各一段程式呼叫。

基礎 starter 範本examples/stage-1/04-cross-provider/(含三家 SDK 並行呼叫 + table 對照、缺哪家 key 就 skip 哪家;illustrative,不是 chapter-length 完整教學

練習 5:Error Handling

故意觸發錯誤情境並寫 retry:

  • API key 錯誤 → 看怎麼 raise
  • prompt 超長 → context window 滿了會發生什麼
  • 網路斷掉 → 寫一個有 exponential backoff 的 retry wrapper

這是後面 Stage 3-7 寫 production agent 一定會用到的基礎。

基礎 starter 範本examples/stage-1/05-error-handling/(含 mock-based test、不用真的斷網就能驗證 retry 邏輯;illustrative,不是 chapter-length 完整教學

練習 6:Local LLM

不付 API 費用、跑在自己電腦上:用 Ollama 下載一個小模型(建議 llama3.2:3bqwen2.5:3b),用 OpenAI-相容 API 呼叫它。

# 1. 裝 Ollama: https://ollama.com
ollama pull qwen2.5:3b
ollama serve  # 預設 port 11434
📋 起手碼(複製到 practice_6.py
# 需要:pip install openai
# 前置:Ollama 已 serve、qwen2.5:3b 已 pull
import sys
if hasattr(sys.stdout, "reconfigure"):
    sys.stdout.reconfigure(encoding="utf-8", errors="replace")

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:11434/v1",
    api_key="ollama",  # Ollama 不檢查、隨便填
)

r = client.chat.completions.create(
    model="qwen2.5:3b",
    messages=[{"role": "user", "content": "用 3 句話介紹什麼是 ReAct。"}],
)

text = r.choices[0].message.content
print("回應:", text)

# === 自我驗證 ===
assert len(text) > 10, "回應太短、Ollama 可能沒跑起來"
print(f"✅ 練習 6 通過 — 你的本機 Ollama 已能透過 OpenAI-compatible API 呼叫")
print(f"💡 跑這次完全沒花錢(除了你的電力)")

預期輸出(樣本、實際內容因 model 而異):

回應:ReAct 是一種讓 AI 結合「推理」和「行動」的方法...
✅ 練習 6 通過 — 你的本機 Ollama 已能透過 OpenAI-compatible API 呼叫
💡 跑這次完全沒花錢(除了你的電力)

為什麼要做:學會跑本地 LLM 後,後面 Stage 3-6 的實驗都不會被 API 費用卡住;隱私敏感場景也能 offline。

沒裝 Ollama 也想跑:把 base_url 換成 LM Studio (http://localhost:1234/v1) 或 vLLM endpoint、API 介面一樣。

🎯 精選 Projects

按用途分 5 類、17 個項目一張表搞定。挑入口看「適合誰」、想深入點連結看 repo / 課程網站

分類Project適合誰為什麼推薦 / 備註
官方 cookbook / 入門Anthropic Cookbook⭐⭐⭐⭐⭐開始用 Claude API、當參考書查Claude API 全功能 notebook(tool use / batch / prompt cache),★ 42k+、MIT
Anthropic Courses⭐⭐⭐⭐⭐系統性從零學一遍 ClaudeAnthropic 自家完整 5 門課(API 基礎 / prompt eval / real-world prompting / tool use),★ 21k+。先跑 anthropic_api_fundamentals
OpenAI Cookbook⭐⭐⭐⭐⭐用 OpenAI API + structured output / function calling跟 Anthropic Cookbook 對照、★ 73k+、MIT。比 Anthropic 大很多、用搜尋
Anthropic Claude API Quickstart⭐⭐⭐⭐5 分鐘上手官方文件、加 bookmark 用
中文教材
(章節式)
datawhalechina/happy-llm⭐⭐⭐⭐⭐中文讀者想徹底搞懂 LLM 原理對應 Karpathy「Zero to Hero」中文版,★ 29k+。等同 HF LLM Course 中文版
datawhalechina/llm-universe⭐⭐⭐⭐⭐中文新手想用 LLM 做東西API 基礎 / 知識庫 / RAG / 進階技巧,★ 12k+
datawhalechina/llm-cookbook⭐⭐⭐⭐想要完整中文 LLM 學習路線Andrew Ng 課程中文翻譯改編(⚠️ 2025-06 後更新放緩、CC BY-NC-SA)
jingyaogong/minimind⭐⭐⭐⭐看完 Karpathy 影片想實際跑訓練2hr 從零訓 64M LLM、Pretrain + SFT + LoRA + DPO + RLHF 全包,★ 48k+、Apache-2.0
英文 course
(系統式)
HuggingFace — LLM Course⭐⭐⭐⭐⭐想搞懂 transformer 內部 + HF 生態含 transformer 原理 + 應用、Apache 2.0
LangChain Academy⭐⭐⭐⭐喜歡影片教學的視覺型學習者LangChain 官方免費課、含 RAG / agent。忽略 LangChain 行銷段落
本地端執行
(不付 API 費)
ollama/ollama⭐⭐⭐⭐⭐第一次跑本地 LLM本 repo Path A 預設、OpenAI-compat API、★ 170k+
ggml-org/llama.cpp⭐⭐⭐⭐⭐想搞懂 quantization / 為什麼 7B 能塞 8GB RAMOllama 底層 inference engine,★ 108k+、MIT
mudler/LocalAI⭐⭐⭐⭐團隊合規、要 self-host 全套 OpenAI 替代drop-in OpenAI API 替代品(chat / embedding / image / TTS / STT),★ 46k+
ml-explore/mlx⭐⭐⭐⭐Mac 開發、想榨乾 Apple SiliconApple 為 M1+ 量身打造的 ML framework,★ 25k+。搭 mlx-lm 用最方便
從零打造
(理解原理)
karpathy — Let's build GPT from scratch⭐⭐⭐⭐⭐想搞懂 LLM 內部、不只會呼叫2hr 高密度影片、用 PyTorch 從零打造 GPT。暫停跟著寫 code 不要被動看
rasbt/LLMs-from-scratch⭐⭐⭐⭐⭐想用整本書速度慢慢讀完Karpathy 影片的書本版:tokenizer → attention → pretraining → finetuning,★ 91k+、Apache-2.0
karpathy/LLM101n⭐⭐歷史紀錄⚠️ 已封存(2024-08)、只有大綱、課程沒做完。直接看上面的「Build GPT from scratch」影片即可

💡 建議閱讀路徑:API 入手就 Anthropic / OpenAI Cookbook → 中文系統路線就 happy-llm + llm-universe → 想深入內部就 Karpathy 影片 + rasbt 書搭 code → 想跑本地就 Ollama 起步、進階再讀 llama.cpp。

✅ 進 Stage 2 前的自我檢查

你能不能:

  • 用 5 行 Python 呼叫 Claude API
  • 解釋為什麼「你好」可能用 2 個 token,但「Hello」只用 1 個
  • 大致說出 Claude Sonnet vs Opus 的 per-token 價格
  • 各說出 Claude / GPT / Gemini / Llama 的一個強項

如果可以 → 進 Stage 2 — Prompt Engineering

如果不行 → 重看 Anthropic Quickstart + 把上面 3 個 hello-X 都跑一次。


Stage 1 完成? 接下來 Stage 2 — Prompt Engineering 會用 5-12 小時帶你寫出可重用的結構化 prompt、用 few-shot 跟 chain-of-thought 解推理題、並學會用 eval 量化 prompt 改善幅度。繼續往下走 →

Stage 2 — Prompt 設計(Prompt Engineering)

繁體中文 | 简体中文 | English

時間估算:1-2 週(約 5-12 小時)

👋 Stage 1 來的:好,你會呼叫 API 了——這 5-12 小時:寫出可重用的結構化 prompt、用 few-shot 跟 chain-of-thought 解難題、用 eval 量化 prompt 改善幅度。直接從這裡開始的:先確認你會呼叫 LLM API、會用 token 算成本——做不到請先回 Stage 1

💡 用語不熟(prompt / few-shot / CoT / system prompt⋯)→ 翻 resources/glossary.md

📋 本章組成:學習目標 → 進入條件 → 必修閱讀 →〔可選 · 概念地圖〕→ 動手練習 → 精選 Projects → 自我檢查 🔑 關鍵名詞:見 resources/glossary.md(每 stage 用到的術語都收在那裡)

📌 學習目標

走完這個階段後你會:

  • 寫出結構化 prompt(角色 + 任務 + 格式 + 範例)
  • 應用 few-shot prompting,並知道什麼時候有用
  • 在推理任務上使用 chain-of-thought(CoT)
  • 反覆迭代修改一個 prompt 並衡量改善
  • 看出什麼時候 prompt 已經到極限了(這時你需要 tool / agent)

🚪 進入條件

你應該已經:

  • 會呼叫 LLM API(Stage 1)
  • 會解析 / 走訪 API 回應

📚 必修閱讀

  1. anthropics/prompt-eng-interactive-tutorial ⭐⭐⭐⭐⭐ ★ 35k+ — Anthropic 官方互動教學、9 章 Jupyter notebook(basic / intermediate / advanced + appendix),含 playground 跟 answer key。用 Claude 3 Haiku(最便宜)跑得起來、Stage 2 的 canonical 動手教材。也是 anthropics/courses 5 course umbrella 的 module 2,想看更廣(含 API Fundamentals / Real World Prompting / Eval / Tool Use)直接看 umbrella
  2. anthropics/courses — Real World Prompting ⭐⭐⭐⭐ ★ 21k+ — 同 umbrella 的 module 3,「真實情境下怎麼用 prompting」:chatbot / legal / financial / coding 案例 walk-through。看完 #1 再來看 #2
  3. Anthropic Prompt Engineering Guide — 官方 docs、配合上面 #1 一起讀
  4. OpenAI Prompt Engineering — OpenAI 觀點
  5. dair-ai Prompt Engineering Guide — 學術風,深入
  6. Anthropic — Prompting Best Practices — 直接清楚

🎥 中文影片補充(強烈推薦)

🛠 動手練習

🦙 本 stage 預設用 Ollama gemma4:e4b(成本考量、$0/run)。Prompt engineering 對小 model 更有教學價值——小 model 對 prompt 質量敏感、能讓你看清楚 system prompt / few-shot / CoT / refinement 各自帶來多少改善。每個練習都有 Path A(Ollama、預設)+ Path B(Anthropic、選擇性)。

💰 Stage 2 預算估算(全 4 練習各跑 3-5 次):全本機 = $0全 haiku ≈ $0.20全 sonnet ≈ $0.60。Few-shot 分類任務的 12 calls × 5 reps ≈ $0.30 haiku / $0.90 sonnet。完整預算見 examples/README.md#推薦-llm-清單

完整 3 路 trade-off 見 examples/README.md

練習 1:System Prompt

同樣的 user message,三個不同的 system prompt。觀察人格 / 輸出格式怎麼變。

📋 起手碼 — Path A(本機 Ollama gemma4:e4b、預設)(複製到 practice_1.py
# 需要:pip install openai
# 前置:ollama pull gemma4:e4b && ollama serve
import sys, json
if hasattr(sys.stdout, "reconfigure"):
    sys.stdout.reconfigure(encoding="utf-8", errors="replace")

from openai import OpenAI

client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")

# 同一個 user message、3 個不同 system prompt
SYSTEM_PROMPTS = {
    "嚴肅律師": "你是嚴謹的合約律師。回答要精準、引用法條編號、避免任何主觀形容詞。",
    "幼兒園老師": "你是溫柔的幼兒園老師、要對 5 歲小孩說話。用比喻、口語、少於 80 字。",
    "JSON 機器": "你只回 JSON。schema: {\"answer\": string, \"confidence\": float}",
}

USER_MSG = "請幫我解釋什麼是租賃合約。"

outputs = {}
for label, system in SYSTEM_PROMPTS.items():
    # Note: Ollama 把 system 放 messages 第一筆(不像 Anthropic 用 system= 參數)
    r = client.chat.completions.create(
        model="gemma4:e4b",
        max_tokens=200,
        messages=[
            {"role": "system", "content": system},
            {"role": "user", "content": USER_MSG},
        ],
    )
    outputs[label] = r.choices[0].message.content
    print(f"\n--- [{label}] ---")
    print(outputs[label])

# === 自我驗證 ===
json_output = outputs["JSON 機器"]
assert "{" in json_output and "}" in json_output, "JSON 機器版輸出應該含 JSON braces"
try:
    parsed = json.loads(json_output.strip().split("\n")[-1] if "\n" in json_output else json_output)
    assert "answer" in parsed, "JSON schema 應包含 answer 欄位"
except json.JSONDecodeError:
    pass # 容許 model 回 JSON 含解釋文字、最後一筆才是 JSON
print(f"\n✅ 練習 1 通過 — 同一個問題、3 種人格 / 格式 / 語氣")
print("💡 觀察:律師長、老師短、JSON 機器一定是 {...}")

預期輸出(樣本、gemma4:e4b 對 system prompt 遵循度 OK 但不如 Claude 嚴謹):

--- [嚴肅律師] ---
依民法第 421 條...

--- [幼兒園老師] ---
租賃合約就像借玩具給朋友、講好什麼時候還、要付多少糖果...

--- [JSON 機器] ---
{"answer": "租賃合約是當事人約定一方以物租與他方使用...", "confidence": 0.85}
📋 起手碼 — Path B(Anthropic API、選擇性)(複製到 practice_1_anthropic.py
# 需要:pip install anthropic
import sys, json
if hasattr(sys.stdout, "reconfigure"):
    sys.stdout.reconfigure(encoding="utf-8", errors="replace")

import anthropic
client = anthropic.Anthropic()
SYSTEM_PROMPTS = {
    "嚴肅律師": "你是嚴謹的合約律師。回答要精準、引用法條編號、避免任何主觀形容詞。",
    "幼兒園老師": "你是溫柔的幼兒園老師、要對 5 歲小孩說話。用比喻、口語、少於 80 字。",
    "JSON 機器": "你只回 JSON。schema: {\"answer\": string, \"confidence\": float}",
}
USER_MSG = "請幫我解釋什麼是租賃合約。"

outputs = {}
for label, system in SYSTEM_PROMPTS.items():
    # Anthropic 用 system= 參數(不放 messages 內)
    msg = client.messages.create(model="claude-haiku-4-5", max_tokens=200,
                                 system=system, messages=[{"role": "user", "content": USER_MSG}])
    outputs[label] = msg.content[0].text
    print(f"\n--- [{label}] ---")
    print(outputs[label])

# 同樣的 JSON assert(schema 跨 backend 通用)
json_output = outputs["JSON 機器"]
assert "{" in json_output and "}" in json_output
print(f"\n✅ 練習 1 通過(Anthropic)")

主要差異

  • Anthropic: system=... 參數
  • Ollama / OpenAI-compatible: messages=[{"role": "system", ...}, ...]

Anthropic 對 system prompt 遵循度通常比 4B 小 model 更嚴謹——「嚴肅律師」會真的引用法條編號。

練習 2:Few-Shot

挑一個分類任務。先用 0-shot 跑,再用 3-shot 跑。量一下準確率差多少。

📋 起手碼 — Path A(本機 Ollama gemma4:e4b、預設)(複製到 practice_2.py
# 需要:pip install openai
# 前置:ollama pull gemma4:e4b && ollama serve
import sys
if hasattr(sys.stdout, "reconfigure"):
    sys.stdout.reconfigure(encoding="utf-8", errors="replace")

from openai import OpenAI

client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")

# 中文情緒分類(正面 / 負面 / 中立)
TEST_SET = [
    ("這部電影超讚、看完想再看一次!", "正面"),
    ("劇情無聊、演員演技尷尬。", "負面"),
    ("這是一部 2019 年的電影。", "中立"),
    ("我不確定喜不喜歡、可能再想想。", "中立"),
    ("第一集很不錯但第二集就崩了。", "負面"),
    ("看完心情很好、推薦!", "正面"),
]

FEW_SHOT_EXAMPLES = """範例:
input: 這家餐廳的牛排好吃到讓我哭出來。
output: 正面

input: 服務生態度很差、我再也不會來了。
output: 負面

input: 這家店位於新北市三重區。
output: 中立
"""


def classify(text: str, *, use_few_shot: bool) -> str:
    prefix = FEW_SHOT_EXAMPLES + "\n" if use_few_shot else ""
    prompt = f"{prefix}input: {text}\noutput:"
    r = client.chat.completions.create(
        model="gemma4:e4b",
        max_tokens=10,
        messages=[{"role": "user", "content": prompt}],
    )
    return r.choices[0].message.content.strip().splitlines()[0]


def evaluate(use_few_shot: bool) -> tuple[int, int]:
    correct = 0
    for text, label in TEST_SET:
        pred = classify(text, use_few_shot=use_few_shot)
        ok = label in pred
        print(f" {'✓' if ok else '✗'} [{label}] {text[:30]}... → '{pred}'")
        if ok:
            correct += 1
    return correct, len(TEST_SET)


print("=== 0-shot ===")
c0, n = evaluate(use_few_shot=False)
print(f"正確 {c0}/{n} = {c0/n:.0%}")

print("\n=== 3-shot ===")
c3, _ = evaluate(use_few_shot=True)
print(f"正確 {c3}/{n} = {c3/n:.0%}")

# === 自我驗證 ===
assert c3 >= c0, f"預期 3-shot 不比 0-shot 差、實際 {c3} < {c0}(小 model 樣本小、跑幾次比較)"
print(f"\n✅ 練習 2 通過 — 0-shot {c0}/{n}、3-shot {c3}/{n}(本機 $0)")
print("💡 觀察:'中立' 在 0-shot 容易被誤判成正面或負面、3-shot 後改善明顯")
print("💡 小 model(gemma4:e4b)通常 0-shot 表現比 Claude 差更多、所以 few-shot 改善幅度更大")
📋 起手碼 — Path B(Anthropic API、選擇性)(複製到 practice_2_anthropic.py
# 需要:pip install anthropic
# 把 starter Path A 的 client 跟 classify() 改成:
import anthropic
client = anthropic.Anthropic()

def classify(text: str, *, use_few_shot: bool) -> str:
    prefix = FEW_SHOT_EXAMPLES + "\n" if use_few_shot else ""
    msg = client.messages.create(
        model="claude-haiku-4-5",
        max_tokens=10,
        messages=[{"role": "user", "content": f"{prefix}input: {text}\noutput:"}],
    )
    return msg.content[0].text.strip().splitlines()[0]
# 其餘 TEST_SET / FEW_SHOT_EXAMPLES / evaluate() 跟 Path A 一樣

成本:6 題 × 2 條件 = 12 次 ≈ $0.005。Claude 通常 0-shot 已經有不錯準確率、所以 few-shot 改善幅度比小 model 小。

練習 3:CoT

挑一個數學文字題,比較:

  • 純 prompt
  • 純 prompt + 「Let's think step by step」
  • 純 prompt + 一個展示 CoT 的範例
📋 起手碼 — Path A(本機 Ollama gemma4:e4b、預設)(複製到 practice_3.py
# 需要:pip install openai
# 前置:ollama pull gemma4:e4b && ollama serve
import sys, re
if hasattr(sys.stdout, "reconfigure"):
    sys.stdout.reconfigure(encoding="utf-8", errors="replace")

from openai import OpenAI

client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")

QUESTION = "小明有 3 顆蘋果。他給了小華 1 顆、又從媽媽那邊拿到 5 顆、然後吃了 2 顆。請問現在剩幾顆?"
ANSWER = 5 # 3 - 1 + 5 - 2 = 5

COT_EXAMPLE = """範例:
Q: 一隻雞有 2 隻腳。3 隻雞跟 1 個人共有幾隻腳?
A: 讓我一步一步算。3 隻雞 × 2 隻腳 = 6 隻腳。1 個人有 2 隻腳。總共 6 + 2 = 8 隻腳。答案是 8。
"""


def ask(prompt: str) -> str:
    r = client.chat.completions.create(
        model="gemma4:e4b",
        max_tokens=300,
        messages=[{"role": "user", "content": prompt}],
    )
    return r.choices[0].message.content


def extract_number(text: str) -> int | None:
    nums = re.findall(r"-?\d+", text)
    return int(nums[-1]) if nums else None


# A. 純 prompt
out_a = ask(QUESTION); ans_a = extract_number(out_a)

# B. + Let's think step by step
out_b = ask(QUESTION + "\nLet's think step by step."); ans_b = extract_number(out_b)

# C. + CoT example
out_c = ask(COT_EXAMPLE + "\n\nQ: " + QUESTION + "\nA:"); ans_c = extract_number(out_c)

for label, out, ans in [("A 純 prompt", out_a, ans_a), ("B +step-by-step", out_b, ans_b), ("C +CoT example", out_c, ans_c)]:
    print(f"\n--- [{label}] 答案={ans} {'✓' if ans == ANSWER else '✗'} ---")
    print(out[:200])

# === 自我驗證 ===
correct = sum(1 for a in (ans_a, ans_b, ans_c) if a == ANSWER)
assert correct >= 1, f"3 種 prompt 至少要 1 種答對、實際 {correct}/3"
# 小 model 對 CoT 依賴性更高、放寬條件:B 或 C 至少 1 對(vs Anthropic Path B 要求嚴格)
assert ans_b == ANSWER or ans_c == ANSWER, "B (step-by-step) 或 C (CoT example) 至少一種要答對 — CoT 對小 model 是基本功"
print(f"\n✅ 練習 3 通過 — {correct}/3 答對(本機 $0)")
print(f"💡 觀察小 model:A 純 prompt 通常答錯、B/C 加 CoT 後明顯改善——比 Claude 更能凸顯 CoT 重要性")
📋 起手碼 — Path B(Anthropic API、選擇性)(複製到 practice_3_anthropic.py

把 Path A 的 client + ask() 改成:

import anthropic
client = anthropic.Anthropic()

def ask(prompt: str) -> str:
    msg = client.messages.create(model="claude-haiku-4-5", max_tokens=300,
                                 messages=[{"role": "user", "content": prompt}])
    return msg.content[0].text

Claude 通常 3/3 全對(包括 A 純 prompt)—— 對照 gemma4:e4b 可能只 1-2/3 對,能看到 CoT 對小 model 的價值。

練習 4:Iterative Refinement

拿一個模糊的 prompt,refine 5 次。把每一輪記下來。觀察哪些改動會提升品質。

📋 起手碼 — Path A(本機 Ollama gemma4:e4b、預設)(複製到 practice_4.py)— 這題沒有「對錯」、重點是觀察過程
# 需要:pip install openai
# 前置:ollama pull gemma4:e4b && ollama serve
import sys
if hasattr(sys.stdout, "reconfigure"):
    sys.stdout.reconfigure(encoding="utf-8", errors="replace")

from openai import OpenAI

client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")

# 5 個 iteration、每一輪 prompt 都比前一輪更具體
PROMPTS = {
    "v1 模糊": "寫一段介紹 ReAct 的文字。",
    "v2 加目標讀者": "寫一段介紹 ReAct 的文字、給寫過 Python 的軟體工程師看。",
    "v3 加格式": "寫一段介紹 ReAct 的文字、給寫過 Python 的軟體工程師看。100 字以內、用一個段落。",
    "v4 加 example 要求": "寫一段介紹 ReAct 的文字、給寫過 Python 的軟體工程師看。100 字以內、用一個段落、結尾舉一個具體例子(譬如查天氣)。",
    "v5 加禁忌": "寫一段介紹 ReAct 的文字、給寫過 Python 的軟體工程師看。100 字以內、用一個段落、結尾舉一個具體例子(譬如查天氣)。不要用「賦能」「驅動」「智能」這類空泛詞彙。",
}

outputs = {}
for label, prompt in PROMPTS.items():
    r = client.chat.completions.create(
        model="gemma4:e4b",
        max_tokens=200,
        messages=[{"role": "user", "content": prompt}],
    )
    text = r.choices[0].message.content
    outputs[label] = text
    print(f"\n--- [{label}] ({len(text)} chars) ---")
    print(text)

# === 自我驗證 ===
v1_len, v5_len = len(outputs["v1 模糊"]), len(outputs["v5 加禁忌"])
banned_words = ("賦能", "驅動", "智能")
v5_has_banned = any(w in outputs["v5 加禁忌"] for w in banned_words)
assert v5_len > 0, "v5 必須有輸出"
assert not v5_has_banned, f"v5 應該避免禁忌詞、實際含: {[w for w in banned_words if w in outputs['v5 加禁忌']]}"
print(f"\n✅ 練習 4 通過 — v5 長度 {v5_len}、無禁忌詞(本機 $0)")
print(f"💡 觀察:v1 ({v1_len} chars) 通常比 v5 ({v5_len} chars) 「鬆」、加約束會逼 prompt 收斂")
print("💡 用 gemma4:e4b 跑這題特別有感——小 model 對 prompt 質量極敏感、5 輪 refine 的差距會比 Claude 更明顯")
📋 起手碼 — Path B(Anthropic API、選擇性)(複製到 practice_4_anthropic.py

把 Path A 的 client + 迴圈內 client.chat.completions.create(...) 改成:

import anthropic
client = anthropic.Anthropic()

# 迴圈內:
msg = client.messages.create(model="claude-haiku-4-5", max_tokens=200,
                             messages=[{"role": "user", "content": prompt}])
text = msg.content[0].text

其餘 PROMPTS / outputs / assert 邏輯完全相同。成本:5 次 ≈ $0.002。

Claude vs gemma4 對 prompt 細緻度的差別:Claude haiku 通常 v1 已能寫出 OK 段落、v5 加上約束後優化幅度較小;小 model v1 常空泛無用、v5 加禁忌後才開始能讀。

進階做法:把這 5 輪輸出全存進 csv、Stage 7 練習 2 會教怎麼把這變成 eval harness(評估腳手架、即「跑評估用的外圍程式 / 控制層」、完整定義見下面 進階:prompt → context → harness 三層 engineering)量化「prompt 改善了多少」。

🎯 精選 Projects

按用途分 4 類、9 個項目一張表搞定。挑入口看「適合誰」、想深入點連結看 repo / 網站

分類Project適合誰為什麼推薦 / 備註
學術 / 教學風 guide
(先看這個)
dair-ai/Prompt-Engineering-Guide⭐⭐⭐⭐⭐當參考書、需要某技巧再來查從基礎到進階(CoT / ToT / ReAct / RAG)端到端,★ 74k+、MIT
PromptingGuide.ai⭐⭐⭐⭐手機閱讀、想要可跑範例跟 dair-ai GitHub 同樣內容、做成網站 + 可跑範例
NirDiamant/Prompt_Engineering⭐⭐⭐⭐偏好「邊跑邊學」22 種技巧(zero-shot → CoT → ReAct → constitutional)獨立 notebook,★ 7k+。比 dair-ai 更動手(⚠️ NOASSERTION 自訂條款、研究/非商用為主)
官方 cookbookAnthropic Cookbook — Prompt patterns⭐⭐⭐⭐⭐Claude 進階 prompting(含 prompt caching / multimodal)Stage 1 已介紹、本 stage 重點看 misc/prompt_caching.ipynbmultimodal/
GoogleCloudPlatform/generative-ai⭐⭐⭐用 Google 技術棧(PaLM / Gemini)Google Cloud 的 prompting cookbook、跨廠商觀點
靈感 collection
(找模式、不要照抄)
f/awesome-chatgpt-prompts⭐⭐⭐卡關時找靈感上百個「Act as a [角色]...」prompt,★ 162k+、CC0。把模式拿出來改寫、不要照抄
Production 管理
(規模化)
microsoft/prompt-engine⭐⭐⭐production 要管很多 prompt 時TypeScript library、管理樣板 + 對話歷史
microsoft/promptflow⭐⭐⭐團隊型應用、需要 eval視覺化 prompt 設計 + 評估工具,★ 11k+
stanfordnlp/dspyStage 2 → 3 橋⭐⭐⭐⭐⭐跑完 dair-ai 想規模化 prompt把 prompt 當 code 寫——define signature / module、用 compiler 自動最佳化,★ 34k+、MIT。framework 非 tutorial、門檻較高、搭配 dspy.ai 官方 tutorial 讀

💡 建議閱讀路徑:dair-ai guide 入手(理論) → Anthropic Cookbook 看 Claude 實作 → NirDiamant 邊跑邊學 → 進 production 時讀 dspy。

🔭 進階:prompt → context → harness 三層 engineering

LLM-powered system 的工程實踐分成 3 層 stack(不是 1 次 call vs N 次 call)。每一層工程的對象不一樣

  • Prompt Engineering(本 stage)= 工程「送進模型的那段字串
  • Context Engineering(Stage 6)= 工程「每次 call 時、 context window 裡裝什麼資訊」——把 RAG retrieve 結果、memory、tool definitions、對話 history 動態組裝
  • Harness Engineering(Stage 7)= 工程「模型外面的 runtime / scaffolding」——agent loop、retry、sandbox、observability、deployment 等所有非 LLM 程式碼

→ 三層正交:一次 call 的 RAG app 也在做 context engineering(重點是組 context、不是 call 幾次);50 次 call 但沒做 retrieval 的 chatbot 仍只在做 prompt engineering。

完整三層 lineage(本路線的學習進度)

Discipline工程「什麼」在哪一 stage 完整學
1. Prompt Engineering送進 LLM 的字串本身(system prompt / few-shot / format)本 stage(Stage 2)
2. Context Engineeringcontext window 裡裝什麼資訊(RAG / memory / tool defs / history)Stage 6 — Memory · RAG · Context Engineering
3. Harness EngineeringLLM 外面的 runtime scaffolding(agent loop / retry / sandbox / observability)Stage 7 Harness Engineering ⭐ 完整對照表

💡 Karpathy 2025-06:「context engineering 是把對下一步有用的資訊剛好填進 context window 的精細藝術」(it's about what goes in the window)。

💡 Simon Willison / Addy Osmani:「coding agent = LLM + harness」、harness = 所有不是 model 本身的程式碼。OpenAI 2026-02 也使用 "Harness Engineering" 這個說法

這個 stage 不用學完後兩層,只是給方向性提示——進入 Stage 6 / 7 時會接續這個 lineage。

延伸閱讀(不必修、未來想深挖時看):

✅ 進 Stage 3 前的自我檢查

你能不能:

  • 寫一個有 system message + user message + 3 個範例 message 的 prompt(few-shot)
  • 示範 CoT 在某個推理任務上提升準確率
  • 反覆 refine 一個 prompt 5 次,每一版都留下記錄
  • 看出 prompt 不是對的工具的時候(這時要用 tool use)

如果可以 → 進 Stage 3 — Tool Use & Agent 入門。這是最重要的一個階段——prompt 不要急著跳過去,但也不要卡在這裡。

Stage 3 — 工具使用與第一個 Agent(Tool Use & Hello Agent)⭐

繁體中文 | 简体中文 | English

時間估算:2-3 週(約 10-20 小時)

💡 用語密集(agent / tool use / function calling / ReAct / structured output⋯)→ 翻 resources/glossary.md 2。 🗺️ 進 Track A(CLI Power User)還是 Track B(Agent Builder)前,先看 resources/agent-paradigms.md — 5 種 agent 型態的全景圖,幫你選軌。

📋 本章組成:〔開場框景:AI/LLM/Agent 三者關係〕→ 學習目標 → 進入條件 → 必修閱讀 →〔可選 · 概念地圖〕→ 動手練習 → 反思(概念 + 路由)→ 精選 Projects → 自我檢查 🔑 關鍵名詞:見 resources/glossary.md 2

🤖 開始前:AI / LLM / Agent — 三者怎麼分?

本節是「開場框景」(由大到小 pedagogy):先把學習者腦中的 mental hierarchy 建好,再進 學習目標、練習。這節只做簡短說明 + 對照,深度入門讀物已經是中英文圈各自的 canonical reference(見下方資源)。不是重寫 hello-agents Ch1。

一張階層圖先建立認知

AI / ML / DL / LLM 與 Agent 的關係

「Agent」不是「比 LLM 更厲害的模型」,也不是 LLM 樹狀分類底下的一個分支。Agent 是個跨層抽象的系統,把 LLM 當作其中一個元件來用。Cursor / Claude Code / Hermes Agent 內部都還是同一批 LLM(Claude / GPT / Gemini)—— 差別是怎麼把 LLM 包進工具呼叫迴圈裡。

三行對照(最快版)

是什麼你給它什麼、它回什麼例子
AI整個學科太抽象、不能直接「用」ML、DL、LLM、RL 都是 AI 子領域
LLM把文字映射到文字的單一模型給 prompt → 回字GPT-5、Claude、Llama 3、Qwen
AgentLLM + 工具 + loop 的系統給任務 → 自己跑多步驟達成Cursor、Claude Code、Hermes Agent

一句話:LLM 像是會理解與產生文字的大腦;Agent 則是把這個大腦接上工具、流程與回饋迴圈,讓它能完成多步驟任務的系統。

Agent 的 3 個最小必要部件(這就是 agent vs LLM 的核心差別)

部件角色在哪學
🧠 LLM(brain)推理 / 決策 / 自然語言Stage 1 已學
🔧 Tools(hands)對世界做事(call API、跑 code、查資料)本 stage
🔁 Loop(heartbeat)想 → 做 → 看結果 → 再想(ReAct)本 stage 練習 3

這 3 個合在一起就是 agent 的最低定義。沒有 tools / loop,那只是「LLM + 你寫 retry」,不算 agent。

Agent 的經典範式(thinking patterns)

學完最小 3 部件後、下一層是「LLM 怎麼想」。hello-agents Ch4「智能體經典範式構建」整章在講這個。簡短對照:

範式是什麼在哪學
CoT(Chain-of-Thought、思維鏈)LLM 寫出推理過程再給答案、不只給結論——是個 prompting 技巧、不是 agent 結構Stage 2 學習目標 + 動手練習(推理任務 CoT)
ReAct(Reasoning + Acting)在 Loop 裡套 CoT:Thought(想)→ Action(呼叫 tool)→ Observation(看結果)→ Thought ...,是 Loop 部件最常見的實作本 stage 練習 3 + ReAct paper (Yao 2022)
Reflection跑完一輪後讓 LLM 批改自己、根據 feedback 重答本 stage 反思(concept + 路由)
Planning(任務分解)把大任務拆成子任務、可分給多個 agent 各做Stage 4 什麼是 multi-agent framework

→ 這些範式都是「LLM 自我引導」的不同變化、堆疊在 3 部件(LLM + Tools + Loop)之上。「Agent 是什麼」用 3 部件就講完了;「Agent 怎麼想」需要這 4 個範式才講得完整

💡 延伸組件(agent 變強的 infrastructure、但不是「是不是 agent」的判準):

  • 記憶 / RAG(agent 能跨對話記住東西)→ Stage 6 完整教
  • 反思 / self-critique(agent 看自己答案、發現問題、回頭改)→ 基本版見 本 stage 反思(concept + paper routing);帶持久 memory 的進階版見 Stage 6 Reflexion with Memory
  • Production harness(telemetry / safety / retry / orchestration)→ Stage 5 5.6

這些都是 advanced pattern——Stage 3 教最小可行 agent、後面 stage 教怎麼變強。

📚 深度入門資源(中英文 / 影片優先)

🀄 中文

  1. 李宏毅 — 生成式 AI 導論(2024 春台大課程) ⭐⭐⭐ — 中文圈最高品質的 AI / LLM / agent 學術級導論。每集 30-60 分鐘、台大授課、官方頁含投影片 + YouTube 連結。LLM / agent 概念都涵蓋。最新整合版見 GenAI-ML 2025 秋、YouTube 主頻道 @HungyiLeeNTU
  2. datawhalechina/hello-agents Ch1「初識智能體」 ⭐ — 文字版最完整中文 agent 導論
  3. datawhalechina/hello-agents Ch2「智能體發展史」 — BabyAGI → AutoGPT → Claude Code 演化脈絡
  4. 3Blue1Brown 中文配音版 — LLM / Transformer 視覺化解說(中文配音)

🇺🇸 English

  1. Andrej Karpathy — "Intro to Large Language Models" ⭐⭐⭐(1hr)— LLM 從零開始 visual intro(ex-OpenAI / ex-Tesla AI Director、英文圈最重視的 LLM 入門影片)
  2. Andrej Karpathy — "Let's build GPT from scratch" ⭐⭐(2hr)— 想看 LLM 內部到程式碼級的人
  3. 3Blue1Brown — "But what is a Transformer?" ⭐⭐⭐ — visual 解釋 LLM,英文圈最被推薦的視覺化教材
  4. Lilian Weng — "LLM Powered Autonomous Agents" ⭐⭐⭐ — canonical 1-page agent anatomy(Planning / Memory / Tool use / Action)、英文圈被引用最多的 agent 解剖文
  5. Anthropic — "Building Effective Agents" ⭐ — Anthropic 觀點:何時該用 agent、何時 workflow 就夠
  6. Chip Huyen — "Agents" — practitioner 視角,full chapter 級深度

選讀 / 進階補充

📌 資源清單上限規則:本 section 是 router 不是 tutorial。主清單合計上限 10 條(中 4 + 英 6),要加新資源前必須先移除一條。選讀區不計入主清單上限。

💡 推薦學習路徑:先看 1-2 個影片(中:李宏毅、英:Karpathy / 3Blue1Brown)建立 visual mental model → 再讀 1-2 個 blog(Lilian Weng / Anthropic)拿到 working definition → 再回本 stage 動手練習。不必全部看完,這是 reference library 不是 reading list。


這是整個學習路線最關鍵的一站。你建過一個 agent 才算真懂 agent——本 stage 的基礎練習建議至少實際手寫一次、再依需求往 hello-agents 或本 stage 精選 projects 找深度教材。

📌 學習目標

完成這個 stage 後你會:

  • 講得出為什麼 LLM 需要 tools(它不是萬能的,而且文字以外的事它都做不了)
  • 定義一個 tool schema,並讓 LLM 呼叫它
  • 從零(不靠任何 framework)寫出一個單步 ReAct agent
  • 寫出多步 ReAct agent,並讓它自己判斷何時該停
  • 分得出哪種問題該用 tool use、哪種純 prompt 就夠

🚪 進入條件

你應該已經:

  • 有可以跑的 Claude / OpenAI / Gemini API 權限(Stage 1)
  • 對 prompt engineering 基礎已經上手(Stage 2)
  • 能寫一個吃 JSON 進、吐 JSON 出的 Python 函式

📚 必修閱讀

  1. Anthropic — Tool Use — 官方指南
  2. anthropics/courses — Tool Use ⭐⭐⭐⭐⭐ ★ 21k+ — Anthropic 官方 5 course umbrella、module 5「Tool Use」對應本 stage。Jupyter notebook 互動式練習、含 multimodal prompts / streaming / tool 實作 walk-through
  3. ReAct: Synergizing Reasoning and Acting in Language Models — Yao et al. 2022,奠基論文。至少讀 abstract 跟 Section 3。
  4. OpenAI — Function Calling — function calling 格式參考
  5. Build an agent from scratch — 從零打造 agent 的故事式導覽

🛠 動手練習(基礎 illustrative 練習)

🦙 本 stage 預設用 Ollama qwen2.5:3b(成本考量、tool-use 支援穩定)。Stage 3 進到 tool calling / ReAct loop、gemma4:e4b 不夠、改用 qwen2.5:3b(1.9 GB、ollama pull qwen2.5:3b 即裝)。每個練習都有 Path A(Ollama、預設)+ Path B(Anthropic、選擇性、想看 cloud 高品質 tool-use 時用)。

💰 Stage 3 預算估算(全 6 練習、tool use 較重):全本機 = $0全 haiku ≈ $0.50全 sonnet ≈ $1.50。ReAct loop 練習單次 4-6 tool calls × 5 練習 × 5 reps ≈ $0.80 haiku。完整預算見 examples/README.md#推薦-llm-清單

完整 3 路 trade-off 見 examples/README.md

🆘 卡住了? Tool calling 是整個 curriculum 最陡的學習曲線。裝 examples/stage-5/tool-calling-tutor/ skill——當你 prompt Claude Code「為什麼 LLM 不呼叫我的 tool」、「我這 schema 哪裡寫壞」會自動載入、走 4-symptom 診斷流程。

🪜 本 stage 是 single-agent 起點:一個 LLM + ReAct loop。Multi-agent 概念(多個 agent 協作)入門看 Stage 4 什麼是 multi-agent frameworkClaude 原生 subagent 機制.claude/agents/ + Task tool、不需 framework)看 Stage 5.5

練習 1:Function Calling(一個工具、一次呼叫)

給 Claude 一個工具(假的天氣 API)跟一個問題(「台北現在有下雨嗎?」)。看 Claude 怎麼呼叫工具、拿到結果、再回答你。

📋 起手碼 — Path A(本機 Ollama qwen2.5:3b、預設)(複製到 practice_1.py
# 需要:pip install openai
# 前置:ollama pull qwen2.5:3b && ollama serve
# Note: Stage 3+ 用 qwen2.5:3b(tool-use 穩定)、不是 gemma4:e4b
import sys, json
if hasattr(sys.stdout, "reconfigure"):
    sys.stdout.reconfigure(encoding="utf-8", errors="replace")

from openai import OpenAI

client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")

# Step 1: 定義 tool schema — OpenAI-compatible 格式包一層 {"type":"function", "function":{...}}
weather_tool = {
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "查詢城市目前天氣(晴/雨/陰),回傳一個短字串。",
        "parameters": {
            "type": "object",
            "properties": {
                "city": {"type": "string", "description": "城市名稱(如「台北」)"},
            },
            "required": ["city"],
        },
    },
}

# Step 2: 問問題、讓 LLM 自己決定要不要呼叫 tool
resp = client.chat.completions.create(
    model="qwen2.5:3b",
    max_tokens=512,
    tools=[weather_tool],
    messages=[{"role": "user", "content": "台北現在有下雨嗎?"}],
)

# === 自我驗證 ===
msg = resp.choices[0].message
print("finish_reason:", resp.choices[0].finish_reason)
print("tool_calls:", msg.tool_calls)

assert msg.tool_calls, "預期 LLM 會選擇呼叫 tool(而非直接回答)"
tc = msg.tool_calls[0]
assert tc.function.name == "get_weather", f"預期呼叫 get_weather、實際 {tc.function.name}"
args = json.loads(tc.function.arguments)
assert args.get("city"), "預期 city 參數有值"
print(f"✅ 練習 1 通過 — qwen2.5:3b 正確選了 get_weather、帶 city='{args['city']}' 參數")

預期輸出(樣本):

finish_reason: tool_calls
tool_calls: [ChatCompletionMessageToolCall(id='call_xxx', function=Function(name='get_weather', arguments='{"city": "台北"}'), type='function')]
✅ 練習 1 通過 — qwen2.5:3b 正確選了 get_weather、帶 city='台北' 參數

沒裝 Ollama 也能驗邏輯:用 unittest.mock.MagicMock 取代 client、塞固定 response、assert 一樣 work。完整 mock 範例見 examples/stage-3/03-react-from-scratch/test.py(pattern 跨 backend 通用)。

📋 起手碼 — Path B(Anthropic API、選擇性)(複製到 practice_1_anthropic.py
# 需要:pip install anthropic
# 環境變數:export ANTHROPIC_API_KEY=sk-ant-...
import anthropic

client = anthropic.Anthropic()

# Anthropic native tool schema — 不用包 wrapper
weather_tool = {
    "name": "get_weather",
    "description": "查詢城市目前天氣(晴/雨/陰),回傳一個短字串。",
    "input_schema": {
        "type": "object",
        "properties": {
            "city": {"type": "string", "description": "城市名稱(如「台北」)"},
        },
        "required": ["city"],
    },
}

resp = client.messages.create(
    model="claude-haiku-4-5",
    max_tokens=512,
    tools=[weather_tool],
    messages=[{"role": "user", "content": "台北現在有下雨嗎?"}],
)

# === 自我驗證 ===
assert resp.stop_reason == "tool_use", f"非預期 stop_reason: {resp.stop_reason}"
tool_calls = [b for b in resp.content if b.type == "tool_use"]
assert tool_calls[0].name == "get_weather"
assert tool_calls[0].input.get("city")
print(f"✅ 練習 1 通過(Anthropic)— Claude 選了 get_weather、city='{tool_calls[0].input['city']}'")

3 個關鍵 SDK 差異

  • Schema wrap:Anthropic 直接 tools=[{name, description, input_schema}];OpenAI/Ollama 要包 [{"type":"function", "function":{...}}]
  • Response 路徑:Anthropic 從 resp.content[i].type=="tool_use" 抓;OpenAI/Ollama 從 resp.choices[0].message.tool_calls[i]
  • Args 格式:Anthropic .input 是 dict(自動 parse);OpenAI/Ollama .function.arguments 是 JSON string,要 json.loads(...)

成本:1 次 ≈ $0.001。Claude 的 tool-use 比 qwen2.5:3b 更穩——複雜場景(5+ tools、模糊問題)gap 會明顯。

練習 2:多工具選擇

給 Claude 三個工具(搜尋、計算機、行事曆)跟一個任務。看 Claude 怎麼挑工具,順便注意它什麼時候會挑錯。

📋 簡化版核心觀念 — Path A (Ollama)

NEW vs 練習 1:tools 從 1 個變 3 個。LLM 看 description 邊界決定挑哪個——description 寫得越像「給人讀的 docstring」、越容易挑錯。

from openai import OpenAI
import json

client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")

TOOLS = [
    {"type": "function", "function": {"name": "web_search",
        "description": "Search current or external info not in the prompt.",
        "parameters": {"type": "object", "properties": {"query": {"type": "string"}}, "required": ["query"]}}},
    {"type": "function", "function": {"name": "calculator",
        "description": "Evaluate basic arithmetic with +, -, *, /, parentheses.",
        "parameters": {"type": "object", "properties": {"expression": {"type": "string"}}, "required": ["expression"]}}},
    {"type": "function", "function": {"name": "calendar_lookup",
        "description": "Look up events for a specific date.",
        "parameters": {"type": "object", "properties": {"date": {"type": "string"}}, "required": ["date"]}}},
]

resp = client.chat.completions.create(model="qwen2.5:3b", tools=TOOLS,
    messages=[{"role": "user", "content": "What is (19 * 42) - 8?"}])

tc = resp.choices[0].message.tool_calls[0]
print(f"LLM 挑了: {tc.function.name}, args: {json.loads(tc.function.arguments)}")
# 預期:calculator, {"expression": "(19 * 42) - 8"}

punchline:3 個 tool 的 description 邊界要互斥——calendar 寫「行事曆」太籠統、會跟 web_search 撞;寫「特定日期事件」就清楚。小 model 對 description 質量比 Claude 更敏感。

Path B (Anthropic) 改 3 行:schema 拿掉 {"type": "function", "function": {...}} 外包、tool_calls[b for b in resp.content if b.type == "tool_use"]tc.input 已經是 dict 不用 json.loads。完整版見 folder。

基礎 starter 範本examples/stage-3/02-multi-tool-selection/(starter.py 含 stub + 簡單 test,illustrative,不是 chapter-length 完整教學;深度章節見 stage 開頭 📚 hello-agents callout)

練習 3:從零實作 ReAct(不用 framework)

用 50-80 行 Python 把 Thought → Action → Observation 迴圈寫出來。不要 LangChain、不要 LangGraph,就是純 while not done: thought; action; observation; ...

📋 簡化版核心觀念 — Path A (Ollama)、ReAct loop 的全部就在這 13 行

NEW vs 練習 2:把單次 call 包進迴圈、messages 一直長、看 tool_calls 在不在來決定收尾。

# 假設 TOOLS + TOOL_IMPL(dict: name → callable)已經像練習 2 一樣定義好
messages = [{"role": "user", "content": "台北人口除以紐約人口?"}]

for step in range(5): # max_iter safety net
    r = client.chat.completions.create(model="qwen2.5:3b", tools=TOOLS, messages=messages)
    msg = r.choices[0].message
    # 把 assistant response 接回 messages(重要!下輪 LLM 才看得到自己上輪講什麼)
    messages.append({"role": "assistant", "content": msg.content, "tool_calls": msg.tool_calls})
    if not msg.tool_calls:
        print(f"✅ 收尾:{msg.content}"); break
    for tc in msg.tool_calls:
        args = json.loads(tc.function.arguments)
        obs = TOOL_IMPL[tc.function.name](args) # 本地執行
        # observation 接回 messages(用 role="tool"、配 tool_call_id)
        messages.append({"role": "tool", "tool_call_id": tc.id, "content": obs})

3 個容易踩坑

  1. 忘記把 assistant response 加回 messages——下輪 LLM 看不到自己上輪講什麼、會 loop forever
  2. tool message 沒帶 tool_call_id——LLM 無法配對哪個 result 對應哪個 call
  3. max_iter——tool 結果寫不好時、LLM 會無限呼叫,safety net 必須設

Path B (Anthropic) 差幾行:迴圈架構一模一樣、msg.tool_calls[b for b in resp.content if b.type == "tool_use"]、用 stop_reason == "end_turn" 判停、tool result 包成 {"type": "tool_result", "tool_use_id": ..., "content": obs} 放進 user message。完整版見 folder。

基礎 starter 範本examples/stage-3/03-react-from-scratch/(含 mock-based test.py、不花 API 錢也能驗;illustrative,不是 chapter-length 完整教學——深度章節見 stage 開頭 📚 hello-agents callout)

練習 4:多步驟推理任務

一個需要連續呼叫 3-5 次 tool 的任務。例如:「找出台北人口,除以紐約人口,再把比例換成百分比。」每一步用不同的工具。

📋 簡化版核心觀念 — 跟練習 3 同一個 loop、跑久一點而已

NEW vs 練習 3完全同一個 loop——只是 TOOLS 換成 4 個(lookup_population / divide / to_percentage / round_int)、題目自然走完 4 輪 tool call 才收尾。

# 沒有新 code、純粹是 TOOLS / TOOL_IMPL 換內容
TOOL_IMPL = {
    "lookup_population": lambda i: lookup_population(i["city"]),
    "divide": lambda i: divide(i["a"], i["b"]),
    "to_percentage": lambda i: to_percentage(i["ratio"]),
    "round_int": lambda i: round_int(i["x"]),
}
# loop 完全照 練習 3,只是 max_iter 拉大到 8

punchline:多步推理不是新 pattern、是讓 ReAct loop 跑久一點真正的挑戰是「LLM 會不會中間漏一步」——qwen2.5:3b 可能漏「轉百分比」、Claude haiku 較穩。這恰好是觀察「model 規模 vs 多步穩定度」的好實驗。試試 MODEL=qwen2.5:7b python starter.py 對照。

基礎 starter 範本examples/stage-3/04-multi-step-reasoning/(starter.py 含 stub + 簡單 test,illustrative,不是 chapter-length 完整教學;深度章節見 stage 開頭 📚 hello-agents callout)

練習 5:錯誤處理

讓某個工具失敗(網路錯誤、輸入無效)。看看 agent 會怎麼處理錯誤、能不能恢復,再加上 retry 機制。

📋 簡化版核心觀念 — tool error 是 data、不是 exception

NEW vs 練習 4:tool error 回傳結構化 dict、不要 raise。loop 把 dict 接回 LLM、模型自己決定 retry / 改 query / 放棄。

def fetch_weather(city: str) -> dict:
    if network_failed():
        return {"error": "network timeout", "retry_hint": "try again in 1s"}
    return {"city": city, "forecast": "rain", "temperature_c": 24}

# loop 裡:
obs = fetch_weather(args["city"])
messages.append({"role": "tool", "tool_call_id": tc.id,
                 "content": json.dumps(obs, ensure_ascii=False)}) # error dict 也是 string 化接回去
# 下一輪 LLM 看到 retry_hint、可能會 retry、可能會放棄、可能會改 query

為什麼不 raiseraise 直接中斷 loop、LLM 沒機會 recover。Production 的 retry 不在 Python 層、而在 LLM 層——這個 mental flip 是 Stage 3 練習 5 的核心。

Bad vs Good error 回傳

BadGood
raise Exception("failed")return {"error": "network timeout", "retry_hint": "try again in 1s"}
return "failed"return {"error": "...", "category": "transient", "retry_hint": "..."}
無限 retrymax_iter safety + 業務層 retry quota

小 model 觀察:qwen2.5:3b 對 retry_hint follow-up 較弱、可能直接放棄;Claude haiku 較穩。完整版(含連續失敗 graceful end 範例)見 folder。

基礎 starter 範本examples/stage-3/05-error-handling/(starter.py 含 stub + 簡單 test,illustrative,不是 chapter-length 完整教學;深度章節見 stage 開頭 📚 hello-agents callout)

練習 6:Function schema 設計(壞 schema 修到好)

先給 LLM 一份故意寫爛的 schema——description 模糊(「處理資料」)、參數全用 type: string、沒分 required / optional、enum 該用沒用。觀察 LLM 怎麼選錯 tool、傳錯參數。然後逐項修:

  • description 寫到 LLM 一眼就懂這個 tool 適用情境(不是寫給人讀的 docstring)
  • parameters 用對 type(number / boolean / enum / array),required 列清楚
  • 模糊邊界用 enum 強制收斂(例如 unit: "celsius" | "fahrenheit" 而不是 unit: string
  • error 回傳要包 {"error": "...", "retry_hint": "..."} 讓 LLM 能恢復

💡 詳細 cheatsheet 看 resources/schema-design-cheatsheet.md——5 條黃金規則 + 5 個常見 anti-pattern。

📋 簡化版核心觀念 — bad vs good schema 對照

NEW vs 練習 5:同一個工具(溫度轉換)、兩種 schema 寫法。看 4 個差別。

# ❌ BAD — qwen2.5:3b 幾乎必錯(Claude haiku 還能猜對、但機率明顯下降)
{"name": "convert", "description": "Convert a value.",
 "parameters": {"type": "object", "properties": {
     "value": {"type": "string"}, "unit": {"type": "string"}}}}

# ✅ GOOD — qwen 也能穩定挑對
{"name": "convert_temperature",
 "description": "Use when user asks to convert temperatures between Fahrenheit and Celsius.",
 "parameters": {"type": "object", "properties": {
     "value": {"type": "number", "description": "Temperature value"},
     "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}},
     "required": ["value", "unit"]}}

4 個改進:(1) name 改具體、(2) description 寫「何時用」而非「做什麼」、(3) typenumber、(4) 加 required + enum

punchline寫 schema 的功夫能省下換大 model 的成本——小 model 對 schema 質量比大 model 敏感,相同 bad schema 在 Claude 上可能還能猜對、在 qwen 上幾乎必錯。Production 想用便宜 model?schema 必須寫到 production-grade。

搞不定 schema 怎麼辦:裝 examples/stage-5/tool-calling-tutor/ skill,遇到「LLM 不呼叫我的 tool」、「我這 schema 哪裡寫壞」會自動跳出來幫你 debug。

基礎 starter 範本examples/stage-3/06-schema-design/(含 bad schema vs good schema 兩個版本對照;illustrative,不是 chapter-length 完整教學——深度章節見 stage 開頭 📚 hello-agents callout)

🪞 反思(Reflexion / Self-Refine)— 概念 + 路由

本節是 concept + routing、不是練習。沒有 verified working solution、不掛「練習 N」label、不給 success criteria——遵守本 repo「沒驗證答案不寫練習、頂多 routing」原則。想動手做?直接讀下方 paper / project。

反思是什麼:練習 5 的 error handling 是「LLM 出錯 → 你(外部)catch + retry」;反思是「LLM 觀察自己出錯 → 自己改」。差別是 agency 在哪一邊——這是 production agent(Cursor / Cline / Claude Code)每天都在跑的迴圈。

為什麼這節在 Stage 3 而不是 Stage 6:反思在學術(Reflexion paper Shinn 2023、Self-Refine Madaan 2023)跟 production(Cursor / Claude Code)上都被歸類在 planning / reasoning loop 機制——是 ReAct(練習 3)的 sibling pattern,不是 memory pattern。同樣是 LLM 自我引導的多輪迴圈,只是「下一輪要做什麼」從「呼叫 tool」換成「批改自己」。

進階版(帶 persistent memory 的 Reflexion 完整版)→ Stage 6 進階:Reflexion with Memory——當反思要跨 session、把過去失敗存起來當下一輪 context,這個版本才真的需要 memory 層。

一張對照圖

Pattern形式需要 memory?在哪學
Error handling(練習 5)外部 catch + retry不需本 stage 練習 5
ReAct loop(練習 3)LLM → tool → 結果 → LLM不需本 stage 練習 3
基本反思 / Self-RefineActor → Critic → Actor,single session不需本節 routing(下方)
完整 Reflexion(含 episodic memory)上面 + 把失敗反思存起來、跨 session 累積需要Stage 6 進階:Reflexion with Memory

📚 想動手 / 想深入?直接讀這些

Paper

Reference 實作

💡 想看反思怎麼長進 production agentStage 5 5.6 Harness Internals 解剖 Claude Code source 時可以看到——agent 跑完 tool call 後自我評估 patch、有問題回頭改、修正後再 commit。這是現代 production agent 的核心 building block 之一

🎯 精選 Projects

按用途分 4 類、12 個項目一張表搞定。挑入口看「適合誰」、想深入點連結看 repo README

分類Project適合誰為什麼推薦 / 備註
官方 cookbook
(先看這個)
Anthropic — Tool Use Cookbook⭐⭐⭐⭐⭐練習 1 / 練習 2 入手單工具 → 多工具 → parallel → structured output 全部 notebook(重點看 tool_use/customer_service_agent.ipynb
Anthropic — Quickstarts⭐⭐⭐⭐⭐練習 1/2 跑完想看「真的應用長什麼樣」3 個 deploy-ready 範本(financial / customer-support / computer-use)、★ 16k+。比社群實作更 canonical
Anthropic — Building Effective Agents⭐⭐⭐⭐⭐練習 3 寫完、進 Stage 4 之前必讀部落格文章:何時用 agent vs workflow / 常見 pattern / 容易踩的坑——Anthropic 官方觀念框架
從零實作 ReAct
(理解原理)
pguso/ai-agents-from-scratch⭐⭐⭐⭐⭐練習 3(從零寫 ReAct)用本機 Ollama 從零打造、zero framework、章節結構好。最乾淨的「不靠 framework」參考實作
arunpshankar/react-from-scratch⭐⭐⭐⭐練習 3 替代(偏好 Gemini)+ 想看反思變體ReAct + Reflection + Self-consistency、Gemini 最佳化(⚠️ 2025-05 後更新放緩、Apache-2.0)
mattambrogi/agent-implementation⭐⭐⭐練習 3 卡住時逐行對照~150 行最精簡 ReAct(⚠️ 已停滯 2024-01、留作教學玩具參考)
lsdefine/GenericAgent⭐⭐⭐⭐練習 3/4,想看「精簡但完整」framework自我演化 framework、~3K 行、★ 11k+、支援 Claude / Gemini / Kimi / MiniMax。介於玩具版與 LangGraph 之間
CodeAct 路線
(agent 寫程式碼當 action)
HuggingFace Smolagents⭐⭐⭐⭐練習 5 替代方案、本地 LLM 實驗≤1000 LOC、CodeAct pattern 代表、★ 27k+。HF 立場:agent 應該要小
QuantaLogic/quantalogic⭐⭐⭐練習 3 後想比較 CodeAct vs JSON-tool另一條 CodeAct 路線、agent 直接寫 Python 程式碼當 action、Apache-2.0
中文章節式深度教材
(chapter-length)
datawhalechina/hello-agents本 stage 推薦⭐⭐⭐⭐⭐中文讀者想要結構化教學 + 完整覆蓋16 種能力含 tool use / ReAct / context engineering / sub-agents / circuit breaker / observability。中文圈最完整章節式(CC BY-NC-SA、非商用)
HelloAgents (jjyaoao)⭐⭐⭐⭐⭐中文讀者、想跑上面教材的 code上面教材 code repo、請切 learn_version 分支對齊章節(pip install hello-agents、CC BY-NC-SA)
Framework 對照
(看 framework 怎麼藏掉 ReAct loop)
LangChain — ReAct Agent Template⭐⭐⭐練習 3 自己寫完後再來LangGraph Studio 範本、framework 怎麼把 ReAct 抽象化

💡 建議閱讀路徑:練習 1-2 跑 Anthropic Cookbook → 練習 3 跑 pguso/ai-agents-from-scratch → 練習 3 後讀 Building Effective Agents → 中文章節式教材就 hello-agents + jjyaoao 配對 → 進 Stage 4 前看 LangChain ReAct template 對照 framework 抽象。

✅ 進 Stage 4 前的自我檢查

你能不能:

  • 定義一個 tool schema(name + description + JSON schema 輸入/輸出)
  • 用不到 100 行 Python、不靠任何 framework,把 ReAct 迴圈寫出來
  • 解釋為什麼 agent 需要一個「我做完了」的退出條件
  • 比較 CodeAct(程式碼即 action)跟 JSON-tool 兩種路線
  • 看出哪些問題其實不需要 agent

如果可以 → 進 Stage 4 — Agent Frameworks

如果不行 → 把 練習 3 再跑一次,不要跳過。如果你不懂 framework 在幫你抽象什麼,Stage 4 的那些東西看起來會像黑魔法。

Stage 4 — Agent 框架(Agent Frameworks)

繁體中文 | 简体中文 | English

時間估算:2-3 週(約 10-15 小時)

💡 用語不熟(framework / supervisor / worker / handoff⋯)→ 翻 resources/glossary.md

📋 本章組成:學習目標 → 進入條件 → 必修閱讀 →〔可選 · 概念地圖:multi-agent intro + 進階 tool patterns〕→ 動手練習 → 精選 Projects → 自我檢查 🔑 關鍵名詞:見 resources/glossary.md(framework / agent loop / handoff / supervisor 等收在 2、4)

你已經從零打造過一個 ReAct agent(Stage 3)。現在來看 framework 到底幫你做了什麼。挑一個深入學,其他的瀏覽過去就好,知道什麼時候該換。

📌 學習目標

完成這個 stage 後你會:

  • 比較 5 個主流 agent framework(LangGraph、AutoGen、CrewAI、Smolagents、OpenAI Agents SDK)
  • 替任務挑出對的 framework
  • 用兩個 framework 各做一次同樣的 agent,親身感受差異
  • 看出什麼時候該丟掉 framework、自己寫

🚪 進入條件

你應該已經:

  • 跑完 Stage 3 的全部 5 個 hello-X projects
  • 從零寫過 ReAct(練習 3)
  • 對 async Python 上手(framework 大量依賴 async)

📚 必修閱讀

  1. Anthropic — Building Effective Agents — 什麼時候用 framework、什麼時候直接用 raw API
  2. LangChain — Conceptual Guide: Agents — agent 的抽象概念
  3. Best Multi-Agent Frameworks 2026 comparison — 當前市場定位
  4. 挑一個 framework 的 Quickstart — 選 LangGraph 或 CrewAI,把官方教學從頭跑到尾

🤔 什麼是 multi-agent framework?

兩個維度先分清楚(workflow vs agent / single vs multi)

要看懂 multi-agent framework 之前、有一個有用的釐清方式——把 workflow vs agentsingle vs multi LLM 當成兩個正交維度。Anthropic「Building Effective Agents」原文的核心區分是 workflow(固定 code path)vs agent(LLM 自主決定 next step);我們把它跟 single/multi 疊起來看 4 個象限:

Workflow
(你寫好的 code path)
Agent
(LLM 動態決定下一步)
Single LLM線性 pipeline、無分支判斷一個 LLM + ReAct loop、自己 plan + adapt
Stage 3 寫的就是這個
Multi LLM預設 routing(譬如「銷售問題 → agent A、技術問題 → agent B」)2+ agent 互相 handoff、orchestrator 動態分配
本 stage 主題

為什麼這個區分有用:production 場景大多落在「single agent workflow」+「single agent」象限——多數任務根本不需要 multi-agent。真正需要 multi-agent framework 的是右下角象限——LLM 自主性高 + 多角色協作。但實作上四個象限的邊界有時模糊(LangGraph 的 conditional edge 可以同時看成 workflow routing 跟 agent 動態決策)、不要把這個 matrix 當互斥分類。

→ 本 stage 後續討論都假設你已經知道:Multi-agent framework 主要幫你處理多個 agent 之間的協調、交接、狀態管理與重複性程式碼,讓你不用從零寫整套協作流程(右下角象限的 orchestration boilerplate)。

Single-agent vs multi-agent — 一張對照表先看清楚差異

維度Single-agent(你 Stage 3 寫過了)Multi-agent system
架構一個 LLM + ReAct loop + 若干 tools2+ LLM、各有角色(researcher / writer / critic ...)、orchestrator 協調
怎麼決策同一個 LLM 從頭想到尾角色拆分 + handoff、不同 LLM instance 看不同視角
State 管理線性 message historyshared state / message passing / checkpoint
適合場景邏輯線性、tool < 20-30 個、單一目標任務可分解、需要 perspective diversity、長 workflow、平行化
Debug 成本低(單一 loop 可以一路 trace)高(cross-agent 互動、error propagation 難定位)
Token 成本1x通常 3-10x(每個 sub-agent 都有自己的 prompt + thinking + tool call)
Latency高(除非 sub-agent 平行跑)

什麼時候真的需要 multi-agent(不要硬上)

Multi-agent 不是 default、是 last resortAnthropic 跟 Cognition 兩家 frontier lab 在 2024-2025 都明白寫過:90% 用例其實不該用 multi-agent——硬上會付 3-10× token、debug 痛苦、context fragmentation(context 被切散在多個 agent、彼此看不到全貌)嚴重

立場來源核心論點
AnthropicBuilding Effective Agents (2024)How we built our multi-agent research system (2025)多數場景 simple workflow + single agent 就夠;multi-agent 只在「研究型 / 並行探索」任務真的有幫助
CognitionDon't Build Multi-Agents (2025)multi-agent 的 context fragmentation 嚴重、shared state 維護痛苦;先窮盡 single-agent + long-context 才考慮

需要 multi-agent 通常是這 4 個信號之一:

信號描述對應 pattern
1. 任務天然分解大任務有清楚的子步驟、step-by-step 完成Sequential / Planner-Executor
2. Token explosionsingle agent prompt 塞不下所有 tool description / contextSupervisor-Worker(分流給 sub-agent)
3. 角色衝突同一個 LLM 既當 writer 又當 critic 會 self-justifyDebate / Peer review
4. 平行加速3 個 research 子任務同時跑、wall-clock 1/3Parallel / Map-Reduce 變種

4 個信號都不在? → single agent + 好 prompt + tool use 就夠。硬上 multi-agent 會付 3-10x token、debug 痛苦、其實不會比較準

💡 後續閱讀:到 Stage 7 但你真的需要 multi-agent 嗎? 會再帶 production 視角的決策——本節是設計階段的決策、那邊是 deploy 前的最後一次回頭檢查。

Multi-agent 經典 pattern(按複雜度排序)

📝 跟 Stage 3 經典範式怎麼分Stage 3 的 4 個 paradigm(CoT / ReAct / Reflection / Planning)是單一 agent 內部怎麼想;本節這 5 個 pattern 是多個 agent 之間怎麼協作——正交的兩個層。

Pattern複雜度什麼樣經典場景代表 framework / paper
1. Routing / Handoffagent 之間 1:1 handoff、無中央 orchestratorcustomer support routing、context switchOpenAI SwarmOpenAI Agents SDK
2. Sequential
(Planner → Executor)
⭐⭐planner 規劃多步驟 + executor 執行多步驟自動化、code generationLangGraph、ChatDev paper
3. Parallel
(平行加速)
⭐⭐⭐N 個 agent 同時跑、結果 aggregateresearch / map-reduce 任務、wall-clock 1/NLangGraph parallel branches、CrewAI parallel tasks。坑點:async coordination + partial failure + state merge 一致性
4. Supervisor-Worker
(hub-spoke)
⭐⭐⭐1 主 + N worker、主分配 + 整合任務拆解、報告整合LangGraph、AutoGen GroupChat
5. Debate / Society
(多視角收斂)
⭐⭐⭐⭐2+ agent 互相 critique 或角色扮演research、judgment task、social simulationAutoGen GroupChat、CAMEL paperGenerative Agents paper

Claude Code subagent — 另一條 orchestration 路線

這節跟上面的 5 個 pattern 不同層:上面 5 個 pattern 是 framework / 自己 code 都能實作的設計選擇;本節介紹的 Claude Code subagent 是另一個 execution model(runtime 內建的 orchestration、不寫 framework code)。讀完 5 個 pattern 後、本節讓你知道「multi-agent 還有第二條路」。

Multi-agent 不只有 framework 這條路。Anthropic 自家的 Claude Code 提供另一個 abstraction 層:subagent — 寫一個 .claude/agents/<name>.md 檔就是一個 subagent,不需要 framework

跟 framework 路線的根本差異(一句話):framework 路線跨 LLM provider、寫 Python orchestration code、checkpointing / audit trail 完整;Claude Code subagent 只在 Claude Code runtime 內、寫 markdown 不寫 code、天生 context 隔離。

📌 完整逐維度對照表(啟動方式 / runtime / context 隔離 / provider lock-in / 學習曲線)的 canonical 在 Stage 5.5 開頭——本 stage 只需知道「multi-agent 還有 Claude Code 原生這第二條路」、逐項實作差異到 5.5 再看。

何時選 subagent 而非 framework

  • 你已經在用 Claude Code 跑日常工作
  • 任務 context 大、會吃光主 session window(讀整個 codebase 之類)
  • 多 subagent 平行(research / write / critic)省 wall-clock 時間
  • 不需要跨 provider migration

詳細寫法 + 動手練習見 Stage 5.5建議先完成 Stage 5.1 Claude Code 基礎再回來看 5.5——subagent 是 Claude Code 生態的進階功能、需要先熟悉基礎用法)。

Framework 的工作

Framework 把上面這 5 個 pattern 的 orchestration boilerplate(roles、handoff、state、retry、checkpoint、HITL pause)抽出來、讓你只寫角色定義跟任務描述。一句話:framework 是 multi-agent 的腳手架,不是必需品——簡單情境你自己寫個 dict 跟 for loop 也行(Stage 7 練習 1 就是這樣)。

📚 想系統化深入?

🇺🇸 學術 paper(影響後續所有 framework 設計)

  1. Anthropic — "Building Effective Agents" ⭐⭐⭐ — 何時用 workflow 何時用 agent、5 個經典 orchestration pattern。英文圈 multi-agent 設計入門必讀
  2. AutoGen paper (Wu et al. 2023) — Microsoft 多 agent 對話框架原 paper
  3. CAMEL paper (Li et al. 2023) — multi-agent role-play 開山之作
  4. ChatDev paper (Qian et al. 2023) — multi-agent software dev、planner-executor canonical
  5. Generative Agents paper (Park et al. 2023) — 25 個 agent 在 The Sims 互動、社會 simulation

🀄 中文系統教材

  1. hello-agents Ch6「框架開發實踐」+ Ch7「構建你的 Agent 框架」 ⭐ — 中文圈完整講 framework 開發 + 從零構建。注意:Ch4「智能體經典範式構建」是 single-agent paradigm(ReAct / Plan-and-Solve / Reflection),不是 multi-agent
  2. 李宏毅 — 生成式 AI 導論 — 中後段有 AI agent / multi-agent 相關集數

Framework 官方 multi-agent docs

💡 建議框架學習流程(5 步):

  1. 建立 mental model(30 min)— 讀 Anthropic Building Effective Agents、把 workflow vs agent 跟 single vs multi 兩維度搞清楚
  2. 跑 1 個 framework quickstart(2-3 hr)— LangGraph 或 CrewAI 二選一、跑官方多 agent 教學
  3. 對照 Anthropic Cookbook customer_service_agent(1 hr)— production-style routing + handoff 範例
  4. (可選) 深入學術側:挑 paper 1-2 篇看(AutoGen / CAMEL / ChatDev / Generative Agents)
  5. (Claude 使用者可選) 寫一個 subagent 對照:見 Stage 5.5、跟 framework 路線比較

不必把 5 個 paper 全讀完、挑跟你場景最近的 1-2 個。

🛠 進階 tool patterns(framework 替你處理掉的東西)⭐ Track B 必看

Stage 3 教你寫 single tool / multi-tool selection(手寫 if/elif/else 路由)。Framework 把這層抽掉,並加了三種更進階的 tool pattern——這三個 pattern 都需要 framework 抽象層才寫得乾淨,Stage 3 自己手寫會炸開

Pattern解決什麼問題代表實作
Dynamic tool selection工具 > 30 個時、tools=[...] 塞不下 prompt(context 太大、selection 也變差)LlamaIndex tool router — embedding-based 路由:先 semantic search 找 top-K tool、只把這 K 個塞進 prompt
Tool composition / chainingtool A output → tool B input、不要 LLM 中間 narrative(省 token + 省 latency)LangGraph state graph 直接連接 node、CrewAI sequential tasks、Pydantic AI 的 type-safe pipeline
Tool-augmented retrievaltool 本身是 RAG search → 回結果再 reasonStage 6 練習 4 RAG pipeline + Stage 3 練習 2 multi-tool 結合(LangGraph 直接把 retriever 包成 tool node)

📚 深度資源

💡 Track B 學完本節:你應該講得出「同一個任務」在 (a) Stage 3 手寫 (b) 本 stage framework 寫 (c) Stage 5.5 Claude subagent 寫 三種路線的差別。這是 Track B 路線「會設計 agent」核心問題。

🛠 動手練習

練習 1:同一個 agent、兩個 framework

用以下兩個 framework 各做一次同樣的簡單 agent(搜尋 + 摘要):

  • LangGraph
  • CrewAI 比較程式碼行數、debug 體驗、以及它們各自把哪些複雜度藏在哪裡。

練習 2:多 agent 角色分配

用 CrewAI 做一個 2-3 個 agent、各自有不同角色一起完成同一個任務的 demo。(這種情境 CrewAI 最拿手。)

練習 3:圖式 workflow

用 LangGraph 做一個有分支邏輯跟 human-in-the-loop checkpoint 的 workflow。(這種情境 LangGraph 最拿手。)

練習 4:CodeAct vs JSON tool

用 Smolagents 做一個會寫 Python 程式碼當作 action 的 agent(CodeAct pattern),跟 練習 1 用的 JSON tool call 路線比較。問同一個問題,看兩種路線怎麼解。

練習 5:型別安全 agent

用 Pydantic AI 做一個會回傳結構化輸出的 agent(例如:問問題回 { "answer": str, "confidence": float, "sources": [str] })。看 Pydantic 的 schema validation 怎麼防止 agent 偷懶或 hallucinate 結構。

🎯 精選 Projects

按用途分 5 類、15 個項目一張表搞定。挑入口看「適合誰」、想深入點連結看 repo / quickstart

分類Project適合誰為什麼推薦 / 備註
Production 級
(複雜 multi-agent / 需要 audit)
LangGraph本 stage 推薦 #1⭐⭐⭐⭐⭐Production multi-agent + 稽核軌跡 / rollback / replay圖式 orchestration + checkpointing + time-travel debug、企業採用率最高,★ 31k+、MIT、Python+TS。搭 LangSmith 做 observability
microsoft/semantic-kernel⭐⭐⭐⭐在 .NET / Java 環境做 agent、Microsoft 技術棧C# / Python / Java 三語官方 SDK、kernel + plugin + planner pattern,★ 27k+、MIT。抽象厚、不適合初學者
agno-agi/agno⭐⭐⭐⭐要「build + serve + monitor」一條龍但不想全套 LangGraph + LangSmithmulti-modal agent runtime + control plane,★ 39k+、Apache-2.0。Stage 4 學 API、Stage 7 用 runtime
快速雛形 / 多 agent
(role-based / handoff)
CrewAI本 stage 推薦 #2⭐⭐⭐⭐快速雛形「researcher → writer → critic」pipeline~20 行寫完 crew、學習曲線最低,★ 50k+、MIT。⚠️ 長 workflow 沒 checkpointing;雛形用 CrewAI、production 用 LangGraph
Microsoft AutoGen / AG2⭐⭐⭐⭐多 agent 辯論 / 腦力激盪 / peer review pattern對話式多 agent、group-chat 強,★ 57k+、CC-BY-4.0(文件 license)。⚠️ AG2 v0.4 重寫成 async-first、多數教學還在 v0.2、留意版本分支
OpenAI Agents SDK⭐⭐⭐⭐⭐已 commit OpenAI 生態OpenAI 官方、agent hand-off + 結構化輸出、API 乾淨、MIT。2026-04 重大升級:內建 sandbox(7 個 provider)+ harness 抽象層、production coding agent 首次 architecturally sound(詳見 Stage 8
OpenAI Swarm⭐⭐⭐⭐ 教育用
⭐⭐⭐ production
想理解 multi-agent 核心 mental model 但不想學整套 framework~200 LOC、只有 Agent + handoff 兩個觀念、MIT。⚠️ OpenAI 自己標 experimental / educational、不是 production tool。讀 source 當 chapter-length 教材
Strands Agents (AWS)⭐⭐⭐⭐已 commit AWS 雲、Bedrock-nativemodel-driven 設計(LLM 自己 plan、無 explicit graph)、Apache 2.0。2025 後段推出、AWS Lambda / Step Functions / Bedrock Agents 整合
特殊路線
(CodeAct / typed / memory-first)
Hugging Face Smolagents⭐⭐⭐⭐本地 LLM 生態、HF 整合場景CodeAct pattern 代表(agent 寫 Python 程式碼當 action、非 JSON tool call),★ 27k+、Apache 2.0、≤1000 LOC
Pydantic AI⭐⭐⭐production 預設要 runtime 型別安全 + structured outputtype-safe agent、Pydantic 團隊出品、MIT。較新
Letta (formerly MemGPT)⭐⭐⭐⭐長 session / 跨 day / persona-stable agent(long-term assistant、therapist、tutor)memory-first multi-agent、OS-paging 概念(working memory + archival store),★ 22k+、Apache 2.0。Stage 6 練習 5 也會提
特化LlamaIndex Agents⭐⭐⭐文件密集型 agent(研究助理、知識工作者類)跟 RAG 緊整合,★ 49k+、MIT。retrieval 強、orchestration 弱——純 orchestration 別選
agentscope-ai/agentscope⭐⭐⭐想要視覺化 debug 多 agent 流程的研究者多 agent 平台、視覺化 debug 工具強,★ 24k+、Apache 2.0。西方社群採用低、技術紮實
LangChain⭐⭐⭐需要黏合很多零件(retrieval + chain)的快速雛形萬用工具袋 framework,★ 135k+、MIT。agent orchestration 改用 LangGraph、LangChain 適合 retrieval + chaining 黏合
基礎設施
(不是 framework、跨 stage 用)
BerriAI/litellm⭐⭐⭐⭐要切換 Claude / GPT / Gemini / 開源模型但不想改 codeprovider-agnostic SDK + AI gateway、用 OpenAI 形狀 call 100+ LLM、附 cost tracking / fallback / guardrail,★ 45k+、MIT(enterprise/ 子目錄另授權)

💡 建議閱讀路徑:挑 1 個 production 等級(LangGraph)+ 1 個快速雛形(CrewAI)深入學 → 跑練習 1-3 → 其他 framework README 瀏覽過去、知道存在即可。特殊路線那 3 個(CodeAct / typed / memory-first)在特定場景才有對手、平常不必碰。

✅ 進 Stage 5 前的自我檢查

你能不能:

  • 用 LangGraph 跟 CrewAI 各做一次同一個 agent
  • 替任務挑出對的 framework(production vs 雛形)
  • 解釋 LangGraph 的 checkpoint 跟 CrewAI 的 task delegation 差在哪
  • 看出什麼時候 CodeAct(Smolagents)比 JSON-tool 更好
  • 判斷什麼時候該丟掉 framework、直接用 raw API

如果可以 → 進 Stage 5 — Claude Code Ecosystem

💡 策略提示 + 過程中可能踩到的坑

不要想把這些全部學完。挑**一個 production 等級的(LangGraph)一個快速雛形用的(CrewAI)**深入學。其他的 README 瀏覽過去就好,知道有這些選項存在即可。

Memory 預備(學的時候可能碰到、不用先讀):有些 framework 功能會用到 memory 概念 — LangGraph 的 checkpointing(狀態持久化)、CrewAI agent 之間傳遞任務結果(輕量 memory)。這些在 Stage 6 — Memory & RAG 完整講;本 stage 看不懂某個 framework 功能時、再去那邊查就好,不用先讀完才能繼續本 stage

Stage 5 — Claude Code 生態系(Claude Code Ecosystem)⭐⭐

繁體中文 | 简体中文 | English

時間估算:3-4 週(約 15-25 小時)

🚪 進入條件(共用 hub、依 track 不同):Track A(CLI Power User) 從 A1-A2 過來、會用 Python + 跑過基本 CLI 即可、從 5.1/5.2 起步;Track B(Agent Builder) 建議先完成 Stage 3(tool use)+ Stage 4(agent frameworks)再進、把整個 stage 當「Claude Code 內部怎麼運作」深讀。不確定走哪條 → 看下面 📌 的兩軌說明。

💡 整個 stage 圍繞 4 個關鍵詞(MCP / Skills / Plugins / Marketplace)展開 → 不熟先翻 resources/glossary.md 5

👥 共用 hub:本 stage 是 Track A(CLI Power User)+ Track B(Agent Builder)兩條路徑的共用中心。Stage 5 跟 Stage 8 — Agent Interfaces 是 curriculum 的兩個 hub。

📌 這個 stage 兩條軌都用

  • Track A(CLI Power User):A2 用 5.1(Claude Code 基礎);A3 用 5.2(MCP) + 選擇性用到 5.3(Skills)5.4(Plugins)(A3 的 動手練習 CLI-12 會教把 CLAUDE.md 跟 commands 打包成 plugin)。讀的角度是「怎麼用 Claude Code 把工作做好
  • Track B(Agent Builder):把整個 stage 當「Claude Code 內部怎麼運作」的深度學習,從 5.1 完整走到 5.4

🗺️ Claude Code 屬於哪種 agent 型態?→ resources/agent-paradigms.md Type 1(IDE-coupled)+ Type 2(Terminal pair-programmer);想看完整 5 種 paradigm 對照也從這份開始。

⚠️ 想用本機 LLM?這個 stage 不是那條路線。 Claude Code 需要 Anthropic API / OAuth,不能直接改接 Ollama 或本機 endpoint。離線、隱私資料或不想用 API 額度時,請看 resources/cookbook.md Recipe 6,用 OpenCode / goose / Aider / Hermes 這類支援 BYO LLM 的 CLI agent。

📋 本章組成:6 個子章(5.1 基礎 / 5.2 MCP / 5.3 Skills / 5.4 Plugins / 5.5 Subagents / 5.6 Claude Code Source 解剖),每個子章都有「學習目標 → 必修閱讀 → 動手練習 → 精選 Projects」 → 章末 自我檢查。注意:Harness Engineering(Agent 執行系統設計)的學科級概念Stage 7 系統整理;本章 5.6 則把 Claude Code 當成案例,觀察一個成熟 agent 工具如何處理工具、記憶、設定、權限與執行流程 🔑 關鍵名詞:見 resources/glossary.md 5

Stack 一覽

由上往下,每一層都建立在底下那一層上:

Claude Code Ecosystem Stack

每一層各自加上一種能力:

  • API + SDK:用程式存取 LLM
  • Tool Use:讓 LLM 呼叫你定義的 function
  • MCP:標準化協定,讓任何 LLM host 都能使用任何 tool server
  • Skills:Claude Code 的行為包,可以封裝 MCP tool
  • Plugins:把 Skills、hooks、commands、MCP 設定打包成一個單位發佈

這個階段有 4 個子章節,請按順序做——每一節都建立在前一節之上。

5.1 Claude Code 基礎 3-5 天 (安裝、slash commands、CLAUDE.md)
5.2 MCP — 協定層 5-7 天 (寫你的第一個 MCP server)
5.3 Skills — 行為層 5-7 天 (寫你的第一個 SKILL.md)
5.4 Plugins 與 Marketplaces 5-7 天 (打包並發佈)

跑完這個階段,你會能擴充 Claude Code、寫自己的 MCP server、發佈一個 plugin marketplace。


🗺️ 7-Layer Architecture Map(先看這張圖、再讀 5.1-5.6)

📋 這節是什麼:把 Claude Code 的 7 個 primitive(MCP / Skills / Plugins / Subagents / Hooks / Slash commands / CLI)對應到 7 個架構層 + 3 個工程學 discipline——進 5.1-5.6 之前看一次知道接下來在學什麼層、學完回頭看是 synthesis。分層是教學選擇、不是 absolute 真理

Claude Code 7-Layer Architecture Map

📊 上圖:Claude Code 7 個架構層 + 3 個工程學 discipline 整合視圖。

每層 1 句白話 + Claude 的版本

Layer是什麼Claude 的版本誰管學在
L7 Interface使用者跟 agent 交談入口claude-code CLI / DesktopHarness EngStage 5.1
L6 Workflow固定可重用流程模板Skills(SKILL.md)+ Slash commands + Plugins(打包 Skills / hooks / commands、屬 packaging)Prompt EngStage 5.3 / 5.4
L5 Coordination多 agent 分工合作Subagents + Agent team + BackgroundHarness EngStage 5.5
L4 Memory / Context跨對話 / 跨 session 記事情History / /compact / Memory hooksContext EngStage 6
L3 Control Planetool 執行前 / 後攔截 / validation / 阻擋Hooks(PreToolUse / PostToolUse 等)Harness EngStage 5.1 hooks 段
L2 Tool UseLLM 呼叫外部 function 的 protocolAnthropic Tool Use(input_schemaTool designStage 3
L2.5 Tool Provider把外部 API 包成 tool 給 Layer 2 用MCP servers(Notion / Gmail / Slack)Context Eng + ToolStage 5.2
L1 FoundationLLM 本體(system prompt 直接送達這層)Anthropic APIPrompt EngStage 1 + Stage 2

3 工程學 Discipline overlay(核心 insight)

「Prompt / Context / Harness」是不同層的 discipline——學會其中一個不會自動會另一個:

Discipline負責哪些 layer1 句話學在
Prompt EngineeringL1 + L6「送進 LLM 的字串怎麼設計」Stage 2
Context EngineeringL4 + L2.5「context window 裝什麼資訊」Stage 6
Harness EngineeringL3 + L5 + L7「LLM 外面的 runtime scaffolding」Stage 7 §Harness Engineering

💡 MCP 的特殊位置:MCP 嚴格說是 Context Engineering(feed context source)+ Tool design(協議規範)跨層東西、不純歸任一 discipline——所以圖裡用 Layer 2.5 標明。

跨 CLI vendor mini-comparison(2026-05 snapshot)

只有 Claude Code 有完整 7-layer stack;其他 CLI 大多停在 single-agent + 簡化版:

LayerClaude CodeOpenAI CodexGemini CLI
L5 Coordination(multi-agent)✅ Subagents❌ single-agent
L3 Control Plane(hooks)✅ Hooks
L2.5 Tool Provider(MCP)✅(已支援 MCP)✅(需手動裝 MCP server)
L6 Workflow(Skills)✅ SKILL.mdAGENTS.md(context only)GEMINI.md(context only)

→ 細看 resources/cli-agents-guide.md


5.1 — Claude Code 基礎

Claude Code 是什麼(先定位)

Claude Code = 跑在你 terminal 內的 Claude agent——有完整 file system / shell / git / subprocess access、可以自主完成多步驟工作(讀檔 → 改檔 → 跑 test → commit → 發 PR)。

跟其他 Claude 介面差別:

介面跑哪能做什麼用法
claude.ai(web)瀏覽器純對話 + 上傳檔案、無 file system 操作偶爾聊一下、ask 一個問題
Claude API(programmatic)你的 server / scriptLLM call、自己包 agent loop寫 production system
Claude Agent SDK你的 Python / TS 環境完整 agent runtime + tool use + 多 session寫 production agent system
Claude Code本節你的 terminal完整 OS-level agent(file / shell / git / subprocess)+ skill / plugin / subagent 生態日常工作主力工具

進 5.2-5.6 之前你會在這節學到 4 個 Claude Code 核心結構:CLAUDE.md(記憶層)/ slash commands(控制層)/ ~/.claude/ 目錄(設定層)/ settings.json(行為層)。

學習目標

完成本節後你會:

  • 講得出 Claude Code 跟 claude.ai / API / SDK 各自的角色(「為什麼用 CLI 不用 web」
  • 安裝 Claude Code、配置認證、跑第一個有 file access 的 session
  • 用 8-10 個常用 slash command 控制 Claude Code 行為
  • 寫一份 project-level CLAUDE.md 設定 baseline 行為
  • 認得 ~/.claude/ 目錄結構(skills / agents / plugins / settings.json 各放哪)

必修閱讀

  1. Anthropic — Claude Code Quickstart — 官方安裝指南
  2. Anthropic — CLAUDE.md best practices — 怎麼寫專案 memory
  3. Anthropic — Slash Commands — 官方完整 slash command 列表
  4. Anthropic — Settingssettings.json 完整 schema + env var
  5. KimYx0207/Claude-Code-x-OpenClaw-Guide-Zh — 簡中入門指南

🛠️ 要寫好 CLAUDE.md? 先看 Stage 7.5 核心 Harness Engineering 原則(多 source) 建概念、再用下面 2 個 prompt 動手。

📋 CLAUDE.md 設計 prompts(依 5 原則)

寫 / 改 CLAUDE.md 時直接複製貼上:

Prompt 1 — Audit 你現有的 CLAUDE.md

我有一個 CLAUDE.md(在 [貼路徑]),請依下面 5 個 harness engineering 原則 audit:

1. Legibility — 用 markdown header 分區嗎?conventions 寫具體("2-space indent")還是模糊("format properly")?
2. Progressive Disclosure — < 200 行嗎?有用 `@-import` 或 `.claude/rules/<topic>.md` 拆分嗎?
3. System of Record — CLAUDE.md 是否當 entry map、實際內容指向 `docs/` + `.coord/`?還是把所有規則塞同一檔?
4. Taste Invariants — 規則可驗證嗎("run `make lint` before commit")?還是「follow best practices」這種空話?
5. Transparency — 有要求 agent show planning step 嗎?還是預期它默默做完?

每條給 PASS / FAIL / PARTIAL + 原因 + 改進建議。總分 X/5、最該先修哪條。

Prompt 2 — 生成新的 CLAUDE.md(依 5 原則)

我要為一個 [描述專案,例如:Python data analysis monorepo / 學術論文 repo / Next.js app] 寫 CLAUDE.md。請依下面 5 個 harness engineering 原則生成:

- **< 200 行**
- 當 **entry map**,把實際 conventions 用 `@-import` 引外部 docs 或 `.claude/rules/<topic>.md`
- 每條規則**可驗證**(不要「follow best practices」這種空話)
- 加 **1-2 個 transparency rule**(例如「edit > 50 lines 前先 show plan」)
- 標明哪些內容該放 CLAUDE.md、哪些該分到 `.claude/rules/<topic>.md`

輸出:
1. 完整 CLAUDE.md 內容
2. 建議的 `.claude/rules/` 目錄切法(topic 列表)
3. 1 個示範 `.claude/rules/<topic>.md`(任選一個 topic)

建議流程:寫 CLAUDE.md 前用 Prompt 2 生成、寫完用 Prompt 1 audit。

常用 slash commands(10 個必學)

Command用途何時用
/help列出所有可用 command不知道有什麼指令時
/clear清空對話歷史(保留 system context)session 太長、想重啟邏輯
/compact自動摘要對話、釋放 context windowcontext 接近用滿
/plan進入 plan mode(read-only、先規劃才動手)大改動前先讓 Claude 列計畫
/model切換 model(Sonnet / Haiku / Opus)改成更便宜 model 省 token
/agents列 / 管理 subagent(5.5)看哪些 subagent 可用、debug
/plugin install <name>@<marketplace>安裝 plugin(5.4)加新功能
/permissions看 / 改當前 session 權限太多 permission prompt 想精簡
/resume恢復前次 session接續昨天工作
/bg把當前 session 背景化(移到 agent view)想同時跑多任務、見 5.5

完整列表見上方 Slash Commands 官方文件

~/.claude/ 目錄結構(先有 mental map)

~/.claude/ ← 全域 user-level
├── settings.json ← 全域行為(env / hooks / permissions / model 預設)
├── settings.local.json ← 機器特定(不入 git)
├── CLAUDE.md ← 全域 baseline(每個 session 都載入)
├── skills/<name>/SKILL.md ← user-level skills(5.3)
├── agents/<name>.md ← user-level subagents(5.5)
├── plugins/ ← 已安裝的 plugin(5.4)
├── hooks/ ← user-level hook scripts
└── jobs/<id>/ ← background sessions 狀態(5.5 background agent)

<project-root>/.claude/ ← project-level(隨 repo)
├── settings.local.json ← project 行為(含 permissions)
├── skills/<name>/SKILL.md ← project-level skills(優先級高於 user-level)
├── agents/<name>.md ← project-level subagents
├── commands/<name>.md ← project-level slash command
└── hooks/ ← project-level hook

<project-root>/CLAUDE.md ← project baseline(每個 session 都載入)

優先順序(衝突時誰贏):project > user > built-in default。

動手練習

  • 練習 1:第一個 session — 安裝、認證、cd 到 repo、跑 claude → 問「summarize this codebase」→ 觀察怎麼讀檔
  • 練習 2:CLAUDE.md — 寫 repo 根目錄 CLAUDE.md(role / context / 不能做的事 / 怎麼做事 / 常用指令),對照「沒 CLAUDE.md」跟「有 CLAUDE.md」的行為差別
  • 練習 3:5 個 slash commands — 在一個 session 內依序用 /help /plan /compact /model /agents,觀察各自做什麼
  • 練習 4:目錄探索ls ~/.claude/ + cat ~/.claude/settings.json、看自己 user-level 設定長什麼樣

精選 Projects

Project適合誰為什麼推薦 / 備註
anthropics/claude-code ⭐ 官方⭐⭐⭐⭐⭐追蹤新版本 / 看 release notes / 回報 bugClaude Code 官方 repo、issues + releases + inline 範例
Anthropic — Claude Code 官方文件⭐⭐⭐⭐⭐任何 reference 查詢真正的 canonical reference——上面 5 條必修閱讀都從這裡來
hesreallyhim/awesome-claude-code⭐⭐⭐⭐想看社群有什麼(slash commands / skills / hooks 範例)較廣泛的資源清單(目前正在重整)
KimYx0207/Claude-Code-x-OpenClaw-Guide-Zh⭐⭐⭐⭐中文讀者要逐步教學簡中入門導讀

5.2 — MCP(Model Context Protocol)⭐ 基礎

MCP 是什麼(先定位)

MCP = 「讓 LLM 用任何外部工具 / 資料」的開放協定。在 MCP 之前每個 LLM 廠商都得自己定義 tool 規格、每個工具供應商都得為每個 LLM 寫一份接法。MCP 把這層標準化——寫一次 MCP server、Claude / Codex / Cursor / 任何支援 MCP 的 host 都能用。

MCP 三個抽象

抽象是什麼範例
ToolsLLM 可以呼叫的 functionread_file(path) / query_db(sql) / send_slack(channel, msg)
ResourcesLLM 可以讀的資料源file:///path/file.md / postgres://db/users
Promptsserver 預定義的 prompt 樣板一份「review code」的 prompt template

多數 MCP server 主要用 Tools 抽象——Resources 跟 Prompts 用得少。

MCP vs Tool Use vs Skill vs Plugin

  • Tool Use(Stage 3):你 in-process 寫的 function 給 LLM 呼叫
  • MCP本節):把 tool 標準化成 server / client 協定、跨 host / 跨 LLM 可用
  • Skill(5.3):行為層 — 教 Claude「遇到 X 用哪個 MCP tool
  • Plugin(5.4):把 MCP + Skill + 其他打包散佈

核心區分:MCP 是「能力」(讓 LLM 能做什麼)、Skill 是「行為」(什麼時候用什麼能力)。

學習目標

  • 解釋 MCP 的三個抽象(Tools、Resources、Prompts)
  • 把現成的 MCP server 接上 Claude Desktop 或 Claude Code
  • 用 Python 寫一個最小的 MCP server,提供 1-2 個 tool
  • 區分 MCP server vs Tool Use vs Skills vs Plugins

必修閱讀

  1. Anthropic — Introducing MCP — 最初發表,概念總覽
  2. MCP Specification — 實際的協定規格
  3. Complete Guide to MCP in 2026 — 實作導讀

動手練習

  • 練習:MCP client — 安裝 modelcontextprotocol/servers/filesystem,從 Claude Desktop 連上去。看著 Claude 讀你的檔案。
  • 練習:MCP server — 寫一個 Python MCP server,提供一個 tool(例如「換算溫度」)。從 Claude Code 連過去。step-by-step 怎麼做resources/cookbook.md 2
  • 練習:MCP in production — 在同一個 Claude session 裡同時連 2-3 個 MCP server,看它們互相搭配。

精選 Projects(spec / SDK / 範本參考)

💡 找日常工具的 MCP(Notion / Obsidian / Excel / Postgres / Playwright / Figma 等)?resources/mcp-skills-catalog.md——按 14 個分類整理 62 個常用 MCP server / Skill,每個都附 stars / license / 適合誰。下表保留的是「寫自己 MCP server 時的 reference」性質的官方 server / SDK。

Project適合誰為什麼推薦 / 備註
modelcontextprotocol/servers ⭐ 官方⭐⭐⭐⭐⭐練習 1 接 server、之後當參考20+ 官方 MCP server(filesystem / git / github / sqlite / time / fetch / memory / sequential-thinking),★ 85k+、MIT、TS+Python。everythingfilesystem source 理解協定運作。安裝:npx -y @modelcontextprotocol/server-filesystem /pathpip install mcp-server-fetch
modelcontextprotocol/python-sdk⭐⭐⭐⭐⭐練習 2 寫自己 MCP server官方 Python SDK、pip install mcp 即裝、MIT。跟著官方 quickstart 跑
modelcontextprotocol/typescript-sdk⭐⭐⭐⭐喜歡 TS 的人Python SDK 的 TypeScript 版、MIT
wong2/awesome-mcp-servers ⭐ 目錄⭐⭐⭐⭐⭐自己寫前先找有沒有現成的150+ 社群 MCP server 目錄,按 search / code / cloud / communication / finance 分類。投稿走 mcpservers.org
punkpeye/awesome-mcp-servers⭐⭐⭐⭐跟 wong2 交叉比對另一份 MCP server 目錄、組織方式不同、通常更新更即時
github/github-mcp-server⭐⭐⭐⭐想看 production-grade MCP server sourceGitHub 官方維護、真正 production 在跑的範例
21st-dev/magic-mcp⭐⭐⭐做完練習 2 找靈感會生成 UI 元件的非平凡 MCP server、★ 4.8k+、NOASSERTION。看 MCP 不只能做資料抓取
yamadashy/repomix⭐⭐⭐⭐⭐把整個 codebase 餵給 LLM★ 24k+ MIT、把 repo packed 成 AI-friendly 單一檔案、含 MCP server mode + tree-sitter 壓縮(省 70% token)+ secretlint 過濾密鑰。daily-driver 工具,搭 Claude Code / Codex 用

5.3 — Skills(Claude Code 的行為層)⭐ Claude Code 生態最關鍵的一層

Skill 是什麼(先定位)

Skill = 一個 markdown 檔.claude/skills/<name>/SKILL.md),告訴 Claude「遇到某情境 → 走某流程」。Claude 每次 inference 前掃所有可用 skill 的 description frontmatter(檔案開頭那段 YAML metadata)、看是否匹配當前情境、匹配就把 SKILL.md 自動載入 context

🛠️ 要寫好 SKILL.md? 兩條路:

  • 路 A:用 Anthropic 官方 skill-creator skill 自動產生(5.3.x 之後安裝段落會教),它會自動產 frontmatter + 子目錄結構、是 Anthropic 維護的 canonical 工具。
  • 路 B:用下面 SKILL.md 設計 prompts 自己寫——先看 Stage 7.5 核心 Harness Engineering 原則 建概念、再用 prompt 動手。

兩條不衝突:skill-creator 給結構、5 原則 prompt 給內容品質檢查。

📋 SKILL.md 設計 prompts(含 skill-creator 替代)

寫 / 改 SKILL.md 時直接複製貼上:

Prompt 1 — Audit 你現有的 SKILL.md

我有一個 SKILL.md(在 [貼路徑]),請依下面 5 個 harness engineering 原則做 audit。每條給「PASS / FAIL / PARTIAL」+ 1 行原因 + 1 行改進建議:

1. Legibility — description 寫清楚「何時觸發」嗎?tool param 命名一致嗎?
2. Progressive Disclosure — SKILL.md < 200 行嗎?細節是否放 `references/` 而不是塞主檔?
3. System of Record — `references/` 是 single source、主檔不重複嗎?
4. Taste Invariants — success criteria 是否寫死可驗證、不是「盡量好」這種主觀詞?
5. Throughput / Merge — 有附 acceptance check(lint / test / preset YAML)嗎?

最後給:總分 X/5、最該先修哪一條、為什麼。

Prompt 2 — 生成新的 SKILL.md(依 5 原則)

我要寫一個 skill 處理 [描述任務,例如:把 PDF 轉成 markdown / 跑學術論文 banned-word audit]。請依下面 5 個 harness engineering 原則生成 SKILL.md:

- **description** 寫清楚「何時觸發」(讓 Claude 能 match 對情境)
- **主檔 < 200 行**,所有 examples / edge cases / detailed rules 放 `references/<topic>.md`
- 列出建議的 `references/` 結構(1-3 個 topic 檔案)
- 加一個 **success criteria 表**(可驗證、不主觀)
- 加一段 **acceptance check**:要跑哪些 lint / unit test / preset YAML

輸出:
1. 完整 SKILL.md 內容
2. references/ 目錄結構建議
3. 用哪個 acceptance gate preset 驗證它(如 multi-locale-mirror-sync / catalog-entry-add 之一)

建議流程:先 /skill skill-creator 拿乾淨骨架 → 用 Prompt 2 填內容 → 寫完用 Prompt 1 audit。

核心 mental model:你發現自己「每次都要打同樣的 prompt 教 Claude 怎麼做某件事」→ 把它寫成 skill、下次就不用了。Claude Code 生態裡 skill 是 power user 跟一般使用者的分水嶺——熟練 skill 寫作的人能把 1 個小時的工作壓到 5 分鐘。

Skill vs CLAUDE.md vs MCP vs Plugin vs Subagent — 一張表分清楚

各層常被搞混。一行對照

元件是什麼何時用觸發方式範例
CLAUDE.md(5.1)repo / project 的 baseline 行為repo-wide convention(「用 type hint」、「commit 訊息規範」)每個 session 都載入、不分情境你 repo 根目錄的 CLAUDE.md
MCP server(5.2)提供 tool / data 的 protocol server想讓 Claude 能存取外部資源(API / DB / 檔案系統)server 啟動後、任何時候都能呼叫github MCP / postgres MCP
Skill本節特定情境的行為包想設定「遇到 X 情境 → 走 Y 流程description 匹配自動載入skill-vetter(裝 skill 前檢查)/ pdf(處理 PDF)
Plugin(5.4)把 skills + commands + MCP + hooks 打包散佈想 share / install 一整套 設定/plugin install <name>@<marketplace>engineering bundle / finance bundle
Subagent(5.5)獨立 context 的 sub-Claude session想 delegate 大 context 任務、結果回主 sessiondescription 匹配自動 delegatecode-reviewer subagent / 研究員 subagent

怎麼選

  • 一句話設定 → 寫進 CLAUDE.md
  • 多步驟流程、某情境才用 → 寫 Skill(本節主題)
  • 需要存取外部資源(API / DB) → 寫 MCP server
  • Skill 跑起來太大、會吃光主 session window → 改成 Subagent
  • Skill / command / MCP / hook 想打包送人 → 包成 Plugin

核心區分:MCP 是「能力」、Skill 是「行為」、Plugin 是「散佈」、Subagent 是「獨立 worker」。

學習目標

  • SKILL.md 的結構(YAML frontmatter + 本文)
  • skill 何時會自動載入(description 比對)
  • 怎麼寫一份能解決你日常工作的 SKILL.md
  • references/scripts/evals/ 子目錄的用途

必修閱讀

  1. Anthropic — Claude Skills 文件
  2. 幾份範例 SKILL.md——從 anthropics/claude-code 或社群 marketplace 拿
  3. Hello-Agents — Extra08 如何寫出好的 Skill — 中文最完整的 Skill 最佳實踐
  4. Hello-Agents — Extra05 Agent Skills 與 MCP 對比解讀 — Skills vs MCP 概念對比

動手練習

  • 練習:SKILL.md — 寫一份 200 字的 skill,解決你日常工作中的某一件事。step-by-step 怎麼做resources/cookbook.md 1
  • 練習:SKILL with references — 加一份 references/ markdown 讓 skill 可以引用
  • 練習:SKILL eval — 加 evals/evals.json,放 3-5 個自我測試

📦 本 repo 自帶 meta-exampleexamples/stage-5/tool-calling-tutor/ 是這個 stage 的對應 skill 範本——完整 frontmatter(含 trigger phrases + Do NOT use for)、3 份 references/evals/evals.json 5 個 test case,直接 fork 改成你自己的 skill。雙重用途:(a) 學習者自用、卡在 tool calling 時讓它 auto-load 幫你 debug;(b) Stage 5 5.3 SKILL.md 寫法的對照樣板。

常用 Skills 推薦(按用途分類)

不知道從哪裡開始?下面是 2025 後段官方 + 社群常用 skill。安裝方式:(a) 多數來自 plugin、安裝對應 plugin 即得;(b) 或從 anthropics/skills clone 後放進 ~/.claude/skills/.claude/skills/

用途Skill來源為什麼推薦
🛡 裝 skill 前安全檢查(必裝)skill-vetteranthropics/skills裝任何外部 skill 前必跑——檢查紅旗、permission scope、suspicious pattern。等於 marketplace skill 的 SAST
🔍 找 / 安裝 skillfind-skillsanthropics/skills自然語言查詢、自動安裝。「我想要做 X」就回對應 skill
skill-lookupclaude-plugins-official跟 find-skills 互補,探索 / 搜尋 helper
✍ 寫自己的 skillskill-creatoranthropics/skills + claude-plugins-official自動產生 frontmatter + 子目錄結構、寫 skill 必裝
📄 Office docs 處理pdf / docx / xlsx / pptxanthropics/skills讀寫 PDF / Word / Excel / PowerPoint。必裝 set——任何 office workflow 必備
🔧 Code reviewcode-reviewer / code-review-excellenceclaude-plugins-officialstaged diff 安全 / 風格 / 測試 review
🐛 Debugdebugger / systematic-debuggingclaude-plugins-official系統化 root cause 分析、避免 quick fix
🎓 學術寫作academic-writing-skillscommunityfindings-first / mechanism / banned word audit
🔌 MCP 整合 / 寫 servermcp-builder / mcp-integrationclaude-plugins-official寫 MCP server 跟整合既有 server 的腳手架
💻 frontend / fullstackfrontend-developer / fullstack-developerclaude-plugins-officialReact 元件 / 全棧架構輔助
📊 資料分析data-analyst / visualization-expertcommunitySQL / pandas / chart 選型
⚙ 權限 / 設定整理update-config / fewer-permission-promptsclaude-plugins-officialhooks / permissions / env var 管理
🔁 自我改進self-improving-agentcommunity捕捉 learning / error / correction、agent 持續改進
🌐 通用 / fallbackgeneral-purposeClaude Code 內建複雜開放任務、未涵蓋情境的 default 入口

建議入手順序

  1. 第一個必裝skill-vetter(裝其他 skill 前先用它檢查)
  2. 第二批必裝skill-creator + find-skills(寫 / 找 skill 用)
  3. 依工作領域:Office workflow 加 pdf/docx/xlsx、開發加 code-reviewer/debugger、學術寫作加 academic-writing-skills
  4. 想看更多:逛 obra/superpowerswshobson/agents 看 production 範本

精選 Projects(spec / 範本參考)

💡 找日常用 Skill(NotebookLM、Excalidraw、Office docs 等)?resources/mcp-skills-catalog.md——按使用情境分類,含 Anthropic 官方 + 社群 Skill。下表保留的是「寫自己 Skill 時的 spec / showcase reference」性質。

Project適合誰為什麼推薦 / 備註
anthropics/skills ⭐ 官方 spec⭐⭐⭐⭐⭐寫自己 SKILL.md 前先讀Anthropic 官方 Skills repo:spec/(frontmatter 標準)+ template/ 起手範本 + skills/ 含 pdf / docx / xlsx / pptx / skill-creator / skill-vetter 等 reference 實作。★ 128k+。SKILL.md 結構參考首選。Agent Skills 更廣義標準另見 agentskills.io
anthropics/claude-code⭐⭐⭐⭐追蹤新功能、看 release notesClaude Code 主 repo、含 issues / releases / inline skill 範例。本 stage 學 Skill 重點看上一個 repo、這個排第二
mattpocock/skills⭐⭐⭐⭐想看「真實工程師日常 SKILL.md」Matt Pocock(TypeScript 社群知名教學者)公開自己工作真實在用的 .claude/ 目錄。每個 SKILL.md 10-50 行極短、不過度工程化。對照 over-engineered 200 行 skill 特別有參考價值(★ 85k+、MIT)
obra/superpowers⭐⭐⭐⭐power user setup、學進階寫法20+ 實戰 skill(TDD、debugging、合作模式)+ /brainstorm / /write-plan / /execute-plan 命令 + skills-search tool
wshobson/agents⭐⭐⭐⭐中階:學 skill + subagent 組合把 skills + subagents 組合做 multi-agent 編排。從單一 SKILL.md 進化到 agent-as-skill 組合 pattern 的範例(★ 35k+、MIT)
travisvn/awesome-claude-skills⭐⭐⭐⭐自己寫前先找有沒有現成的社群 Claude Skills 精選目錄
VoltAgent/awesome-agent-skills⭐⭐⭐跨工具視角1000+ agent skill、相容 Claude Code / Codex / Gemini CLI / Cursor(★ 22k+、MIT)
alirezarezvani/claude-skills⭐⭐⭐找特定領域 skill 範例232+ Claude Code skill、跨 engineering / marketing / product / compliance

5.4 — Plugins 與 Marketplaces

Plugin 是什麼(先定位)

Plugin = MCP + Skills + slash commands + hooks 的組合包——把前面 5.2 / 5.3 學到的零件 打包成一個單位、可以 /plugin install 一次裝進去

Plugin
├── .mcp.json ← 5.2 學的 MCP server config(提供 tool / data)
├── skills/<name>/SKILL.md ← 5.3 學的 skill(行為包)
├── commands/<name>.md ← slash command(5.1 學的、自訂 prompt 入口)
├── hooks/ ← 觸發點 hook(譬如 PreToolUse、SessionStart)
├── agents/<name>.md ← 5.5 學的 subagent(如果有)
└── .claude-plugin/plugin.json ← 打包元資料

為什麼要 plugin:你寫了好用的 skill 想 share → 一行 git clone 太麻煩、設定也容易裝錯。包成 plugin、push 到 marketplace、team 其他人 /plugin install foo@your-marketplace 一次到位。

Plugin 跟 marketplace 差在哪:plugin 是單一打包單位、marketplace 是多個 plugin 的目錄(譬如 anthropics/claude-plugins-official 是 marketplace、裡面 35 個 plugin)。

學習目標

  • plugin.json schema(name、version、skills array、configuration)
  • marketplace.json schema(plugins array、source、metadata)
  • claude plugin marketplace add 的流程
  • 區分 single-plugin bundle vs multi-plugin marketplace
  • 發佈自己的 marketplace

必修閱讀

  1. Anthropic — Plugins 文件
  2. 讀下面 2-3 個 marketplace 的 plugin.jsonmarketplace.json

動手練習

  • 練習:plugin install — 安裝下面的某一個 marketplace,看它載入
  • 練習:plugin.json — 把 5.3 寫的 SKILL.md 打包成一個 plugin
  • 練習:marketplace publish — push 到 GitHub,用 claude plugin marketplace add 安裝

常用 plugin 推薦(按用途分類)

不知道從哪裡開始裝 plugin?下面是 2025 後段 Anthropic 官方 + 社群高評價選擇。安裝指令統一格式/plugin install <plugin-name>@<marketplace-name>(譬如 /plugin install code-review@claude-plugins-official)。

用途分類Plugin(含直接連結)Marketplace為什麼推薦
開發 workflow
(多數開發者必裝)
code-reviewclaude-plugins-official官方 code review skill 集合、staged diff review + security check
pr-review-toolkitclaude-plugins-officialPR review 完整流程(comment、suggest、approve)
commit-commandsclaude-plugins-officialgit commit message 規範 + branching workflow
feature-devclaude-plugins-official完整 feature 開發 cycle(spec → plan → implement → test)
frontend-designclaude-plugins-officialUI 設計 + responsive layout 輔助
語言工具
(依用的語言挑)
typescript-lsp / pyright-lsp / rust-analyzer-lsp / gopls-lspclaude-plugins-official各語言 LSP 整合、35 個語言 plugin 都在這
plugin / skill 自建skill-creatorclaude-plugins-official寫自己的 skill 時自動產生 frontmatter + 結構
plugin-devclaude-plugins-official寫自己的 plugin 時自動產生 .claude-plugin/ 結構
mcp-server-devclaude-plugins-official寫自己的 MCP server 時的腳手架
hookifyclaude-plugins-official寫 hooks 規則的工具
領域特化 — 工程團隊engineering bundleknowledge-work-plugins10 個 skill:architecture / code-review / debug / deploy-checklist / documentation / incident-response / standup / system-design / tech-debt / testing-strategy
領域特化 — 財務團隊finance bundleknowledge-work-plugins8 個 skill:audit-support / close-management / financial-statements / journal-entry-prep / reconciliation / sox-testing / variance-analysis
領域特化 — 其他
(同 marketplace)
sales / marketing / legal / human-resources / customer-support / data / design / operations / product-management / productivity / bio-researchknowledge-work-pluginsknowledge-work-plugins 18 個 vertical bundle——挑跟你工作領域對應的那個
外部整合
(第三方服務)
asana / github / gitlab / linear / firebase / playwright / terraform / discord / imessage / telegramclaude-plugins-official (external)整合常用 SaaS / 開發工具
community 廣度(挑感興趣的 skill)rohitg00/awesome-claude-code-toolkit社群最大 agents / skills / hooks / templates 目錄

建議入手順序

  1. 開發者必裝(5 個):code-review + pr-review-toolkit + commit-commands + feature-dev + 一個你語言的 *-lsp
  2. 按工作領域加 bundle:工程團隊裝 engineering、財務裝 finance、其他類似
  3. 想寫自己的 skill / plugin → 裝 skill-creator + plugin-dev
  4. 想看更多 → 逛 awesome-claude-code-toolkitresources/mcp-skills-catalog.md

精選 Projects(marketplace 範本參考)

💡 上面列的是「裝哪些 plugin」;下表列的是「marketplace 怎麼寫」——想自建 marketplace 的人才需要看。

Marketplace適合誰為什麼推薦 / 備註
anthropics/claude-plugins-official⭐⭐⭐⭐⭐寫自己的 marketplace 前的官方範本35 internal plugins + 15 external、.claude-plugin/marketplace.json 標準 schema、plugins/ 含 plugin 本體 + external_plugins/ 引用外部 repo。marketplace.json 該長什麼樣直接看這個(★ 18k+)
anthropics/knowledge-work-plugins⭐⭐⭐⭐⭐想看「多 vertical bundle」型 marketplace18 個領域 plugin bundle(finance / engineering / sales / legal / marketing / HR / customer-support / data / design / operations / product / productivity / bio-research / enterprise-search / pdf-viewer / small-business / cowork-plugin-management / partner-built)。Anthropic 自家 knowledge worker 場景範本
obra/superpowers-marketplace⭐⭐⭐⭐想做「我策展、別人寫」型 marketplace最簡 marketplace template——repo 只有 marketplace.json + README、plugin 本體放外部 repo。curator-only pattern 最小範本(★ 900+、MIT)
trailofbits/skills-curated⭐⭐⭐在意供應鏈安全的 reviewer / 團隊Trail of Bits 維護的 security-vetted marketplace、每個 skill 都經審查、README 寫清楚標準。示範 marketplace 不只是清單、也是信任機制(★ 388、CC-BY-SA-4.0)
rohitg00/awesome-claude-code-toolkit⭐⭐⭐想逛社群有什麼社群最大 Claude Code agents / skills / hooks / templates 目錄。涵蓋 use case 廣
anthropics/life-sciences⭐⭐⭐要做特定領域 marketplace(醫療、金融、法律、教育等)Anthropic 自家領域特化 marketplace 範例(生物 / 健康科學)、展示 marketplace.json 為單一 vertical 量身設計。payload 偏生科 MCP server、marketplace.json 結構才是學習重點(★ 375)
anthropics/claude-for-legal⭐⭐⭐⭐想看完整 vertical plugin suite(含 skills + agents + MCP + scheduled agents)Anthropic 官方法律 vertical 範例(★ 7k+ Apache-2.0)—— 10 個法律 plugin(commercial / corporate / litigation / privacy / employment / IP / law-student)+ 100+ skills + 20+ MCP connectors + scheduled agents + subagent delegation。不必懂法律——是學「vertical plugin suite 怎麼設計」的最佳教材:系統 prompt 怎麼寫、accountability surface 怎麼擺、orchestrate.py event loop 怎麼跑

💡 「如何發佈自己的 marketplace」walkthrough:目前最可靠的是 Anthropic 官方 plugin 文件。社群有好的部落格 / repo?歡迎開 PR 補上。


5.5 — Subagents(Claude Code 原生 multi-agent 機制)⭐ 2025 新功能

到這裡為止你學了 MCP(工具層)/ Skills(行為層)/ Plugins(散佈層)。Subagents 是 orchestration 層——讓主 Claude session spawn 出有獨立 context 的子 agent、跑特定任務、回報結果。

Subagent 的 4 個生命週期:從 .md 檔到執行結果

📊 上圖:subagent 從定義 → 發現 → 派遣 → 執行 4 個階段、看完這張再讀下面細節最快。

跟 Stage 4 的 framework-based multi-agent(LangGraph / CrewAI / AutoGen)對照:

維度Framework path (Stage 4)Claude Subagent path(本節)
啟動方式pip install crewai + Python code寫一個 .claude/agents/<name>.md 即可
Runtime你自己的 Python processClaude Code 內建 Task tool
Context isolationframework 自己管天生 各 subagent 獨立 window
Provider lock-in中等(多 framework 支援 multi-LLM)(綁 Claude Code)
適合跨 LLM provider 的 production system已 commit Claude Code 的工程團隊
學習曲線高(框架抽象 + async)低(寫 markdown)

各家 CLI / SDK 的 multi-agent 機制現況(2025 後段)

很多人以為 multi-agent CLI 是 Anthropic / OpenAI / Google 三家標配——但實際上目前只有 Claude Code 有完整 native multi-agent stack。Codex CLI / Gemini CLI / Cursor 都還是 single-agent,要 multi-agent 得自己用 SDK 或 framework 寫。

平台SubagentAgent teamBackground agent機制
Claude Code(CLI).claude/agents/<name>.md + Task tool(subagent)+ agent teams + agent view / background
OpenAI Codex CLIAGENTS.md 只是 single-agent context file(類似 CLAUDE.md),不是 subagent 系統
Google Gemini CLIGEMINI.md 只是 context;無 subagent / multi-agent feature
Cursor(IDE-coupled)單一 Cursor Agent;queued messages 是 sequential、非 parallel
OpenAI Agents SDK
(programmatic、非 CLI)
⚠️ Handoffs + agents-as-tools純 Python SDK、不是 CLI;handoff pattern 接近 Claude subagent 但要寫 code
Framework path
(Stage 4)
LangGraph / CrewAI / AutoGen✅ 自己 wire部分跨 LLM provider、Python orchestration、見 Stage 4

現況解讀

  • 想用 CLI 玩 multi-agent → 目前只有 Claude Code 有 native 支援(本節主題
  • 跨 provider / 跨 LLM → 走 Stage 4 framework path
  • OpenAI 生態 + 多 agent → 用 OpenAI Agents SDK 寫 handoff pattern(programmatic、非 CLI)
  • 完全自己控 → 走 Stage 5.6 Harness Internals(讀 SDK source、自己 wire 多 agent)

→ 本節剩下內容都聚焦在 Claude Code subagent。其他平台的進展請追蹤各家 changelog(Codex / Gemini / Cursor 都還在 single-agent + MCP 階段、可能 2026 後段才會跟進)。

怎麼派遣 Claude Code 的 3 種 multi-agent 機制(具體 syntax)

機制何時用派遣方式
Subagent
(穩定版)
delegate 大 context 任務(讀整個 codebase / 整理 logs)給 isolated context worker、結果回主 session(1) 寫 .claude/agents/<name>.md(frontmatter name + description + tools + 可選 model
(2) Claude 看 description 自動 delegate;或 /agents 手動列表
Agent team
(已有正式 docs、仍需 opt-in flag)
多 worker 之間要互相溝通、challenge 彼此(debate / peer review / 多角度探索)(1) 啟用(仍需 opt-in):settings.json"env": {"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"}、需 Claude Code v2.1.32+
(2) 自然語言派遣:Create an agent team to explore X from different angles: one on UX, one on architecture, one playing devil's advocate
(3) 跟 teammate 對話:Shift+Down 切換、直接輸入訊息
(4) 收尾:Clean up the team
Background agent
(research preview)
多個獨立任務各自背景跑、單一介面監控(同時 3 個 PR review)(1) shell 派遣:claude --bg "investigate the flaky test"(需 v2.1.139+)
(2) 從現有 session 背景化:/bg
(3) 監控:claude agents(agent view 介面)
(4) 操作:claude attach <id> / claude logs <id> / claude stop <id>

3 個機制怎麼選

  • 任務獨立、worker 不互動、結果回主 session 即可 → Subagent(最簡單、token 最省)
  • Worker 需要互相溝通 / debate / 共享 task list → Agent team(已正式有 docs、但仍需 opt-in env var;token 3-5x、適合 research / debug 競爭假設)
  • 多個獨立任務各自跑、想用 1 個介面監控全部 → Background agent(research preview、適合長時間任務並行)

可派遣的 subagent 有哪些?

💡 先解釋一下名詞subagent = 主 Claude session spawn 出來的「子 Claude」——有自己的 context window(一次能記住的對話量、有上限)、跑完回報結果。**派遣(dispatch)**就是叫 subagent 去做事、像派任務給同事。

很多人以為要用 subagent 都得自己寫一個——其實 Claude Code 內建一批 subagent、開箱即用。下表列三種來源:

來源範例 subagent何時用需要做什麼
Claude Code 內建general-purpose / code-reviewer / Explore / Plan / frontend-developer / claude-code-guide / statusline-setup一般任務都先看內建有沒有合的什麼都不用做、直接呼叫
plugin / marketplaceobra/superpowers 內含的 skill agent、wshobson/agents 的多 subagent 組合內建不夠用時裝 plugin / marketplace(Stage 5.4
自己寫的你公司流程 specific 的 reviewer / domain expert上面都不符合時.claude/agents/<name>.md(範例見下面 details 區塊)

🔍 想知道你的 Claude Code 現在有哪些 subagent 可用? 終端機跑 /agents 一指令列表(內建 + plugin + 自訂全部)。

怎麼選哪一個 subagent?(decision table)

對應上面 7 個 Claude Code 內建 subagent、下表是「遇到 X 任務、用 Y subagent」對照(這叫 decision table——「要 X 用 Y」的快速對照、不用想自己會選):

你要做的事用哪個內建 subagent為什麼
找 code / 探索陌生 codebase 結構Explore專門做 read-only 搜尋、不會亂改
設計實作 plan(不直接寫 code)Plan輸出 step-by-step 計畫、適合大任務拆解前
Review staged diff / 安全審查 / 發 commit 前檢查code-reviewer結構化輸出 PASS/FAIL + 具體 fix
寫 / 改 UI component / 處理 accessibility(無障礙設計)frontend-developerReact / 響應式 / a11y(accessibility 縮寫、視障 / 鍵盤使用者也能用的設計)領域知識
多步驟研究、不確定任務該歸哪類general-purpose通用、可 web search、適合 fallback
問 Claude Code 自己的 feature 怎麼用claude-code-guidehooks(工具執行前 / 後的攔截腳本、見下方 Gotcha #5)/ slash command(/ 開頭的指令)/ MCP 等問題
上面都不符合自己寫 .claude/agents/<name>.md客製或公司 specific 流程

5 個常見情境的 mini cookbook(完整 15 個 recipe 見下面):

情境用哪個
寫了 ≥ 50 行新 code、要 commit 前code-reviewer
Clone 完新 repo、不知該從哪個 file 開始Explore
4 個 stage / branch 都要做同樣審查general-purpose(spawn 多個並行)
想重構 module、先 review architecturePlan
多 source 比對哪 paper 講的對general-purpose 跑 deep research

📋 完整 15 個 recipe(每個含情境 + subagent + 直接複製貼上的 prompt 範本 + 何時不用)→ resources/subagent-cookbook.md

易混淆觀念釐清(學完表格還是有點霧、看這節)

學生最常搞混的 3 組概念 + 5 條老手才知道的 gotcha——挑你需要的看:

Subagent vs Skill — 5 個關鍵差別

很多人把 Subagent 跟 Skill 當同一件事——其實完全不同層的東西

Subagent vs Skill — 5 個關鍵差別

維度Subagent(子 agent)Skill(技能)
執行環境新的獨立 context window(底層是新 subprocess)主 session 內、同 context
工具權限自己的 tools: 清單(可限制只能 Read / Grep)主 session 的工具(預設全開、skill 可用 allowed-tools: 縮減)
回傳結果一個 final message 摘要回主 session沒回傳、是行為改變(規則 / persona)
適合做長任務 / 平行跑 / 要 context 隔離知識注入 / 規則 / 改 Claude 行為
範例code-reviewer / Explore / Plancodex-delegate / pdf(anthropics/skills)

判斷快速辦法:你要新 context window 嗎?要 → subagent;不要 → skill。

Subagent vs Slash Command — 一個是任務、一個是指令

東西怎麼觸發例子
Subagent直接打對話文字、Claude 看 description 自動派遣你打「Review my staged changes」→ 自動派 code-reviewer
Slash command/ 開頭的指令/agents(列 subagent)/ /compact(壓縮 context)/ /help

⚠️ 常見誤會/agents 不是用來呼叫 subagent——它是「查當前可用 subagent 清單」的指令。派遣是直接打對話 prompt 文字、Claude 自己挑 subagent。

Description = 路由 key(寫法決定能不能被選

主 session 怎麼知道該派哪個 subagent?看 .claude/agents/<name>.mddescription 欄位寫法影響觸發行為

Description 寫法觸發模式
...use **PROACTIVELY** when X...主動觸發——X 出現 Claude 自己派"use PROACTIVELY when reviewing diffs ≥ 50 lines"
...use when user asks Y...被動觸發——要使用者明白要求"use when user asks for code review"
空 description隱形——不會被自主選(只能在程式碼裡用 Agent(subagent_type=...) 強制呼叫)

💡 寫 description 像寫廣告詞——把「我能解決什麼問題」寫具體、Claude 越會在對的時機選你。PROACTIVELY 是個強訊號詞——出現時 Claude 推斷「適合主動派遣」的機率大幅提升;沒寫就更常只在使用者明白要求時才會派。(它影響 Claude 的判斷、不是程式碼層的 if-then 開關。)

5 條老手才知道的 Gotcha

#Gotcha為什麼重要
1Description 寫精準即可無官方字元上限、但過長 description 佔 context budget;建議「觸發條件 + 適用情境」寫具體、避免重複
2tools: 寫空 = 繼承主 session 全部工具想限制 subagent 就要明寫工具清單;空字段 ≠ 沒工具
3不寫 model: = 跟主 session 用同 model主 session 是 Opus、subagent 沒指定也 Opus(燒大錢)。省成本就寫 model: sonnetmodel: haiku
4Subagent 沒「我之前說過 X」記憶每次派遣都是全新 context、看不到主 session 對話。Prompt 要 self-contained、不能 reference「我們剛討論的 Y」
5Subagent 也吃 hookPreToolUse / PostToolUse(工具執行前 / 後的攔截腳本)在 subagent 內也會 fire。設 hook 時要想到這層

Subagent 整體優缺點(讀完前面、回頭看這個 summary)

5 個優點(為什麼存在):

優點怎麼幫到你
Context 隔離主 session window 不被污染——subagent 跑大檔案 / 長 log 不會擠掉主 session 的工作記憶
Tool allowlist限制 subagent 只能用 Read / Grep(不能寫檔 / 不能跑 Bash)= 安全 sandbox
Model override跑簡單任務用 Haiku、跑難的用 Opus、混搭省成本——主 session 是 Opus 也可以叫 subagent 用 Haiku
Parallel spawn一個 prompt spawn N 個 subagent 平行跑、wall clock 時間 ÷ N(適合 4 個 file 同時 audit)
專業化 promptcode-reviewer 永遠只 review、description 寫死「Use PROACTIVELY when commit」、不會被閒聊干擾

5 個缺點(什麼時候不值得):

缺點影響
Spawn 有 overhead任務 < 5 分鐘、自己跑更快——subagent startup 也吃時間跟 token
無 cross-call memory每次 spawn 都新 context、看不到「我們剛討論的 X」——prompt 必須 self-contained
只回一個 messagesubagent 是「派出去、跑完回報一次」、不能跟你來回對話、不適合需要逐步 feedback 的任務
Token cost N ×spawn 4 個 = 用 4 倍 token——parallel 的 ROI 要算(時間省、錢花更多)
Debug 多一層出錯不知該怪主 session description / subagent system prompt / 還是 prompt 本身——見 advanced §3 debug 5 切點

📌 1 句話判斷:任務 ≥ 5 分鐘 + 可以用一個 brief 寫死(不需來回對話)+ 結果一次回來夠用(不需逐步 feedback)→ 用 subagent;否則自己跑。

📋 準備自己寫 subagent / 組合多個 / debug 跑壞的?resources/subagent-advanced.md(description 寫法 4 個 bug 對照、composition 3 種 pattern、debug 5 切點)

👉 具體 subagent 檔案範例(最簡單入門)

.claude/agents/code-reviewer.md

---
name: code-reviewer
description: Review staged git changes for security issues, style violations, and missing tests. Use when user asks "review my changes" or runs /review.
tools:
  - Read
  - Grep
  - Bash
model: claude-haiku-4-5 # 可選、想 route 到便宜 model 省成本
---

You are a senior code reviewer. When invoked:
1. Run `git diff --cached` to get staged changes
2. Check for: hard-coded secrets, SQL injection patterns, missing error handling, missing tests
3. Output: PASS / list of specific issues with file:line references

主 session 之後輸入「review my changes」,Claude 看到 description 匹配、自動透過 Task tool(Claude Code 內部派遣機制、你不用直接呼叫)spawn 這個 subagent 跑、回主 session 一段摘要。

📚 官方完整文件

學習目標

  • 講得出 subagent 跟 skill / MCP server 的差別(subagent ≠ skill:skill 是行為 prompt,subagent 是另一個 Claude instance with isolated context
  • 寫一個 .claude/agents/<name>.md 自訂 subagent(frontmatter + system prompt + tools: 白名單——明寫允許的工具清單)
  • 從主 session 用 Task tool invoke subagent,觀察 context 隔離(parent 看不到 subagent 的中間 step、只看到最終 result)
  • 知道何時用 subagent(parallel research / large-context isolated task / specialized review),何時不用(小 query 用 skill 即可)

必修閱讀

  1. Anthropic — Claude Code Subagents 官方文件 ⭐ — .claude/agents/ 結構、Task tool 介面、最佳實踐
  2. Anthropic — Building Effective Agents orchestrator-workers — Anthropic 自己對 orchestrator pattern 的看法(理論 + 實例)
  3. Anthropic Cookbook — customer_service_agent — canonical multi-agent orchestration 範例(chapter-length 深度教材;notebook 在 tool_use/customer_service_agent.ipynb

動手練習

  • 練習:第一個 subagent — 寫 .claude/agents/code-reviewer.md(前置 frontmatter 含 description 寫清楚何時 trigger、tools 限定 Read+Grep)+ system prompt 跑 staged diff review。從主 Claude session 跑 /agents list 確認載入、然後用 prompt「review staged changes」觀察 Task tool 怎麼 spawn subagent
  • 練習:parallel subagent crew — 寫 3 個 subagent(researcher.md / writer.md / critic.md)做「研究某主題 → 寫 blog 草稿 → 審稿」pipeline、主 session 用 Task tool 串起來。對照 examples/stage-4/02-multi-agent-roles/(CrewAI 框架版同一個任務)、看「framework 路線 vs Claude 原生路線」程式碼差別
  • 練習:subagent 跟 skill 的決策練習 — 拿你自己日常工作流的 5 個常用任務、每個判斷該用 skill(行為層)還是 subagent(獨立 context 層)。寫成 1 頁 decision table

📚 想要 chapter-length 深入版:subagent 進階 pattern(agent-as-skill composition、parallel-spawn、handoff between subagents)→ 看 wshobson/agents repo 整個結構 + obra/superpowers 的 subagent 用法。

精選 Projects

4 個項目一張表搞定。挑入口看「適合誰」、想深入點連結看 repo

Project適合誰為什麼推薦 / 備註
anthropics/claude-cookbooks ⭐ 官方⭐⭐⭐⭐⭐5.5 完成後想看「production-grade 怎麼長」Anthropic 官方 chapter-length 範例。tool_use/customer_service_agent.ipynb = orchestrator-workers canonical(multi-agent routing + handoff)。Python / Jupyter notebook、MIT。computer_use_demo 完整版在另一個 repo claude-quickstarts/computer-use-demo
wshobson/agents ⭐ subagent canonical⭐⭐⭐⭐⭐寫過 1-2 個 subagent 想看真實 team 範本50+ subagent definition 的 production workflow pattern collection。.claude/agents/ 目錄結構 + 命名 convention + 跨 agent handoff 寫法
obra/superpowers⭐⭐⭐⭐想看 skill + subagent 混搭實作在 Stage 5.3 已介紹。重點看「什麼任務歸 skill、什麼歸 subagent」決策——production 範本
anthropics/claude-plugins-official 官方⭐⭐⭐⭐看 plugin 怎麼打包 subagent在 Stage 5.4 已介紹。每個 plugin 內 agents/ 子目錄是 subagent definition、看打包方式

💡 Subagent 雖然強、不要無腦用:每個 subagent invoke 都是一個新的 Claude inference call、有 token cost + latency。簡單 query 用 skill(行為 prompt)即可、不必 spawn subagent。Subagent 的甜蜜點是:(1) 任務 context 大、會吃光主 session 的 window(譬如 read 整個 codebase),(2) 任務跟主 session 邏輯獨立、隔離 context 有助 main flow,(3) 多 subagent 平行(research / write / critic)能省 wall-clock 時間。

🔗 相關進階機制(Claude Code 官方、本 stage 不深入講):

  • Agent teams — 多 sessions 之間互相溝通(reviewer agent ↔ implementer agent 來回交流)
  • Background agents / agent view — 多 session 背景跑、單一介面監控(一次 spawn N 個 PR review 同時跑)

Subagent 是這兩個的進入點——本節學完之後想擴展再看官方文件。


5.6 — Claude Code Source 解剖(reference harness implementation)⭐ Track B 必看

本節定位:本節不是 harness engineering 的學科級概念教學——學科級的定義 / 8 個核心元件 / prompt→context→harness 三層工程分工 是 Stage 7 Harness Engineering 在講。本節是 case study——拿 Claude Code(一個 production-grade 參考實作)的 source code 來解剖、把 Stage 7 列的 8 個元件中前 6 個 runtime-internal 元件(Eval / Cost-Latency 兩個是跨層議題、不在 source 主 loop)在實作裡找到對應位置

學習目標

完成本節後你會:

  • 看得懂 claude-agent-sdk-python source 的 main loop(不是逐行、是抓得到主幹)
  • 在 source 裡標出 Stage 7 列的 8 個 harness 元件前 6 個 runtime-internal 元件(agent loop / tool registry(agent 可呼叫工具的清單 + 介面定義) / context manager / safety layer / retry / telemetry)各自的 file:line。Stage 7 列的第 7 個 Eval 是外掛、第 8 個 Cost / Latency 是 cross-cutting、不在 source 主 loop 內、不在本練習範圍
  • 講得出 Claude Code 的 agent loop 跟 Stage 3 練習 3 from-scratch ReAct 差在哪——production-grade 多了哪些東西

學科級概念在哪:harness engineering 是什麼 / framework vs harness 差別 / prompt→context→harness 三層工程分工 → 全部見 Stage 7 Harness Engineering。本節只負責 Claude Code source 的 case study。

📚 必修閱讀

  1. Anthropic — Building Effective Agents ⭐ — orchestrator / worker / handoff / reflection 等 pattern 的 canonical reference
  2. anthropics/claude-agent-sdk-python — Claude Code 官方 Python SDK 的 source;重點 file:src/claude_agent_sdk/_internal/client.py(main loop 在這)+ query.py(單回合 API)
  3. ai-boost/awesome-harness-engineering ⭐(★ 940) — community curation:harness pattern / eval / memory / observability 整合
  4. ZhangHanDong/harness-engineering-from-cc-to-ai-coding — 中文圈最完整的 Claude Code 內部解讀

🛠 動手練習 — 解剖 agent loop(閱讀題,非寫 code)

這節不是寫 code 練習,是閱讀練習——production harness 不是抄 200 行範例能學的,是抄完還看不懂為什麼這樣寫,所以本練習要求你開 source、自己 trace。

步驟

  1. clonegit clone https://github.com/anthropics/claude-agent-sdk-python
  2. 定位 agent loop:找出 _internal/client.py 裡實際發出 LLM call、收 tool_use response、dispatch 給 tool runner 的核心 loop。提示:找 async deftool_use_id 關鍵字
  3. 標出前 6 個 runtime-internal harness 元件在 source 裡的位置(檔名 + 行號)——對應 Stage 7 列的 8 元件的前 6 個(第 7 個 Eval 外掛 / 第 8 個 Cost-Latency cross-cutting 不在 source 主 loop):
    • (a) Agent loop:實際發出 LLM call + 收 response 的迴圈在哪
    • (b) Tool registry / dispatch:LLM 回 tool_use → 怎麼 route 到對應 tool 實作
    • (c) Context manager:tool result 怎麼寫回 message history、context window 控制 / auto-compact
    • (d) Safety layer:tool 執行前有沒有 permission gate / sandboxing
    • (e) Retry / recovery:tool fail 時怎麼處理(exception vs LLM 自己看 error 反思)
    • (f) Telemetry:metrics / logging / token counting 接在哪
  4. 寫一段 80-150 字摘要:「Claude Code 的 agent loop 跟你 Stage 3 練習 3 from-scratch ReAct 差在哪」。重點不是「Claude Code 比較複雜」這種廢話,是講得出多了哪些東西、為什麼那些是 production-grade 必須

交付物:一段筆記(寫在自己的 obsidian / notion / .md 都行),不必交。但講不出來你就還沒懂——這是進 Stage 7 production deploy 之前的必要 mental model。

基礎 starter 範本:本練習無 examples folder——是 source-reading exercise,非 code-writing exercise。illustrative,深度教學見上方 📚。

🎯 精選 Projects

4 個項目一張表搞定。挑入口看「適合誰」、想深入點連結看 repo

Project適合誰為什麼推薦 / 備註
anthropics/claude-agent-sdk-python⭐⭐⭐⭐⭐所有 Track B 學習者、想搞清楚「Claude Code 內部怎麼跑」canonical Python harness、本節練習就是讀這個 repo。後面 Stage 7 deploy 也會 import
ZhangHanDong/harness-engineering-from-cc-to-ai-coding⭐⭐⭐⭐中文 reader 想看「為什麼 Claude Code 這樣設計」中文圈最完整 CC 內部解讀(harness 概念 → CC 實作 → 跟其他 AI coding tool 對比)。配合 SDK source 互補看——一個告訴你「怎麼做」、一個告訴你「為什麼這麼做」
ai-boost/awesome-harness-engineering⭐⭐⭐⭐5.6 讀完想擴大視野community curation:30+ harness / eval / memory / observability / MCP project(★ 940)。廣度資源庫、非教學——挑感興趣的 sub-topic 鑽進去
wshobson/agents⭐⭐⭐⭐寫完 5.5 自己的 subagent 後想看 production-grade 範本50+ subagent definition 的 ergonomic 設計(description / tool list / system prompt 分層)。讀 source 比讀文件學得多。在 5.5 已介紹、本節 cross-ref

💡 本節跟 Stage 7 的差別:本節學「Claude Code 這個 harness 怎麼跑」(具體 reference);Stage 7 學「production harness 一般要有什麼」(抽象 pattern)。先具體後抽象、看完本節再進 Stage 7 會輕鬆很多。


✅ 進入 Stage 6 前的自我檢查

你能不能:

  • 安裝 Claude Code 並使用 5 個不同的 slash command
  • 在同一個 Claude session 裡接 2 個 MCP server
  • 用 Python 寫自己的 MCP server,提供 1 個能用的 tool
  • 寫一份能在特定觸發詞自動載入的 SKILL.md
  • 把 skill 打包成 plugin,再用 marketplace.json 發佈
  • 寫過 .claude/agents/ 自訂 subagent 並從 Task tool invoke 過
  • 讀過 claude-agent-sdk-python 的 main loop、能在 source 裡標出 Stage 7 列的 8 個 harness 元件 的前 6 個 runtime-internal 元件位置(5.6 練習)
  • 從角色分工說出 MCP / Skills / Plugins / Subagents / SDK 各自的位置

如果都可以 → 前往 Stage 6 — Memory & RAG

💡 Stage 5 是兩 track 第一個 hub——Track A 跟 Track B 都會用到。第二個 hub 是 Stage 8 — Agent Interfaces(Computer Use / Browser Use / Sandbox),可以走完主幹後再進、或對 Computer Use / Browser MCP 有興趣可以提前 preview。

💡 Bonus:完成這個階段之後

  • anthropics/claude-cookbooks 發一個 PR(小修正、文件更新)
  • 把自己的 plugin 投稿到社群 marketplace
  • 寫一篇文章,比較自己的 hello-MCP server 跟官方 modelcontextprotocol/servers 收的某一個

Stage 6 — 上下文管理(Context Engineering):RAG 與 Memory

繁體中文 | 简体中文 | English

時間估算:2 週(約 10 小時)

💡 這 stage 用語密度高(RAG / 向量資料庫 / embedding / chunking / hybrid search / reranking⋯)→ 不熟先翻 resources/glossary.md 3

📋 本章組成:定位 → 入口 → RAG 主軸(基礎 + 進階 + DSPy + Eval)→ BridgeMemory 主軸(3 pattern + Trio + 進階)→ Chunking → Reflexion / Reasoning → 練習 → Projects

🔑 關鍵名詞:見 resources/glossary.md 3(memory / RAG / embedding / chunking / reranking)

本 stage 的核心不是「多背一點名詞」,而是理解 agent 如何管理 context。

  • RAG 解決的是:現在要從外部知識庫查哪些資料?
  • Memory 解決的是:agent 應該跨對話、跨 session、跨任務記住什麼?
  • Context Engineering 是更上層的問題:每次 LLM call 前,該把哪些資訊組進 prompt,讓模型在有限 context window 內做出正確決策?

→ 接著 Stage 7 三層工程分工:Prompt = 單次怎麼問 / Context = 這次該給哪些資訊 / Harness = 整個 agent system 怎麼跑起來。本 stage 是中間那層。

Agent 需要的兩種 context 能力

  1. Retrieval:從外部知識庫找出和當前任務相關的資料。
  2. Memory:保留跨對話、跨 session、跨任務的狀態、偏好與經驗。

RAG(Retrieval-Augmented Generation) 是目前最常見的 retrieval 架構;Memory 則負責讓 agent 記得使用者、任務歷史與自己的過去經驗。這一章會把兩者分開講,避免把「查資料」和「記事情」混在一起。

先把名詞切開:Retrieval / RAG / Vector Store / Memory 不是同一件事

名詞不要混淆成白話解釋
RetrievalRAG 全部找資料的動作
RAGVector DBretrieve + generate 的整體流程
EmbeddingMemory把文字轉成向量、方便相似度搜尋
Vector storeRAG儲存與搜尋 embedding 的地方
ChunkingRetrieval 本身把文件切成適合被搜尋的片段
MemoryRAGagent 對使用者、任務與過去經驗的持久管理

🎯 Context Engineering 是什麼(先定位)

一句話:Context Engineering = 決定每次呼叫 LLM 時、要把哪些資訊塞進它看得到的視窗(context window)

重點不是「開了幾次對話」、是「每次對話裡塞了什麼」。Karpathy 2025-06 原 tweet 講得最精準:「把對下一步有用的資訊剛好填進視窗的精細藝術」。

📺 視覺學習李宏毅 2025 第 2 講 — Context Engineering:AI Agent 背後的關鍵技術(NTU 生成式人工智慧與機器學習導論 2025)

三層 stack 中的位置

Prompt → Context → Harness 三層工程 stack

詳細對照表見 Stage 2 進階

本 stage 處理 4 個 sub-problem 中的 2 個(Lance Martin 2025 framework)

Sub-problem解決什麼具體例子本 stage cover?
Select要把哪些外部資訊撈進視窗user 問「我家附近哪間 cafe 好吃」→ 從 yelp DB 撈 3 家評分高的 → 塞進 prompt✅ 主軸(RAG / vector search / GraphRAG)
Write要把哪些互動 / 教訓寫進長期記憶user 上週說「我吃純素」→ 寫進 memory;這週又問餐廳推薦時、retrieve 出來避免推肉食✅ 主軸(memory layers)
Compress對話太長怎麼壓50 輪對話超過 200k token → 自動摘要前 40 輪、保留最後 10 輪原文⚠️ 部分(這裡 + Stage 7 Harness context manager
Isolate多 agent 各自視窗怎麼分supervisor 看全局、worker 只看自己那段、彼此不串擾❌ Stage 7 multi-agent 處理

4 個常被搞混的概念 — 一張表分清楚

是什麼(抽象 / 具體)範例工具
Memoryagent 跨對話 / 跨 session 記事情的能力(抽象概念)LangChain ConversationBufferMemory / mem0 / Letta
Embedding把文字轉成 N 維向量、讓相似度可計算(資料轉換)sentence-transformers 跑出 768 維向量 / OpenAI ada-002
Vector DB存 + 查 embedding 的儲存層(基礎設施)Chroma / Qdrant / Weaviate / pgvector
RAG「retrieve 相關片段 → 塞進 prompt → 生成」這個 pattern(架構模式)LlamaIndex / LangChain RAG chain

核心區分:Memory 是能力、Embedding 是資料轉換、Vector DB 是儲存、RAG 是架構 pattern——這 4 個常被混用、實際上是 4 個不同層的概念。

RAG vs Long Context vs Fine-tuning — 何時用什麼

LLM 知道你的私有 / 領域資料、有 3 種主要做法。本 stage 教 RAG,但你要知道何時不該用:

選擇適合不適合成本
RAG
(外部 retrieve)
大型 / 變動 / 私有知識庫、需要 citation 引用來源推理需要全文一起看的任務、需要跨文件 multi-hop reasoning每 query 多 1 次 vector search 的 latency
Long Context
(直接塞 prompt)
< 200k token 的中型文件、一次性查詢、需要 cross-doc reasoning知識庫大 / 經常變動 / 想要 citation每 query 燒大量 input token(即使有 prompt caching)
Fine-tuning
(改 model 權重)
風格 / 格式統一、特定領域語言(醫療、法律、code)知識會變、要 citation、不想練 model訓練成本 + 維護成本 + 模型 lock-in

怎麼選:先試 RAG(成本最低、變動最容易)→ RAG 撈不到才考慮 Long Context → 兩個都不行才考慮 Fine-tuning。進 Stage 7 學 fine-tune deploy

📌 學習目標

  • 建一條基本 RAG 流水線(chunk → embed → store → retrieve → generate)
  • 看出 RAG 不該用在哪些地方(以及該用在哪些地方)
  • 區分 short-term、long-term、episodic、semantic memory
  • 理解 vector embedding 與相似度搜尋
  • 知道進階 RAG(GraphRAG / Contextual Retrieval / Hybrid Search)何時加、何時不加

🚪 進入條件

你應該已經:

  • 完成 Stage 3(會寫 tool use、會呼叫 LLM API、看得懂 ReAct loop)—— 硬性技術前置
  • 走過 Stage 4(agent frameworks)+ Stage 5(Claude Code 生態)—— curriculum 主線是 3 → 4 → 5 → 6(見 README 學習地圖);非硬性技術前置,但 RAG / memory 常跟 framework + Claude Code memory 機制搭配、照順序走過理解更完整,且 Stage 7 預期你已完成 4 + 5 + 6
  • 能跑 Python pip install 安裝 SDK(後面練習會用到 chromadbsentence-transformers 等)
  • 對 list / dict / generator 等基礎 Python 結構上手

沒到的話 → 回 Stage 3Stage 0 環境設定

📚 必修閱讀

  1. LlamaIndex — RAG concepts — 最清楚的入門
  2. LangChain — RAG tutorial — 動手做
  3. Pinecone — Learning Center — vector DB 基礎
  4. Anthropic — Contextual Retrieval — Anthropic 搭配 prompt caching 的 RAG 寫法
  5. LangChain — Text splitters — chunking 策略入門

🙏 Memory 章節特別推薦 datawhalechina/hello-agents:本 stage 探討 memory 的概念跟初級實作、要 chapter-length 深入版請看 hello-agents 對應章節——short-term / long-term memory 的差異、context engineering 怎麼動態組裝、session 持久化、forgetting strategy 都講得最完整。本 stage 是路線圖、那邊是深度教材。

🧭 單元指引(漸進式 flow)

本章按 RAG 先學、Memory 後學 的順序走——RAG 是 context engineering 最基礎、最常用的工具,Memory 是 agent 跨對話/跨 session 的能力;先把 RAG pipeline 跑通、再帶到 Memory 設計,最後回頭看 Chunking 細節。

閱讀順序建議

  1. 🌐 RAG 基礎流水線(下一節)— 建立 mental model
  2. 🚀 進階 RAG 技巧 — GraphRAG / Contextual Retrieval / Hybrid Search 等 production 升級
  3. 🌉 從 RAG 到 Memory — 為什麼 RAG 還不夠、需要 Memory 補哪段
  4. 🧠 Memory 設計 — 短期 vs 長期、3 種 pattern、CoALA framework
  5. 🧩 Chunking 細節 — RAG / Memory 都會用到的技術深入

讀這章時可以順便思考:RAG 不適合哪些應用場景?哪些場景適合 RAG,但基本 RAG 還不夠好?這會帶到後面的 GraphRAG / Self-RAG / RAPTOR 等進階技術。

🌐 RAG 基礎流水線

RAG(Retrieval-Augmented Generation)= 「retrieve 相關片段 → 塞進 prompt → 生成」這個 pattern。可以想成在幫 agent 蓋圖書館——你要先把書放好、分類好,後續要查資料時,才會又快又精準。

最基礎的 RAG 拆成兩條流水線

  • 資料預處理(ingest 一次):ingest → chunk → embed → store(index)。這一步是在建立可檢索的知識庫。
  • 檢索生成(每次 query):retrieve → generate。這一步是在使用者提問時,找出相關內容,再交給 LLM 生成回答。

RAG 流水線總覽

圖中的 RAG Fusion、query rewrite 等屬於進階檢索技巧。第一次學 RAG 時,先理解主線流程即可

5 個 step 解讀

Step做什麼在哪一條 pipeline技術細節在
1. ingest把資料載入(PDF / web / DB / 對話 log)預處理LlamaIndex / LangChain 各自 loader
2. chunk把文件切成小塊(500-2000 token / chunk)預處理見後段 🧩 Chunking 細節(先讀 RAG / Memory 主軸、技術深入留到那邊)
3. embed每個 chunk 轉成 N 維 vector預處理sentence-transformers / OpenAI ada-002
4. storevector + metadata 存進 vector DB預處理Chroma / Qdrant / pgvector
5. retrieve + generatequery 也 embed → top-k semantic search → 拼進 prompt → LLM 生成每次 query通用 LLM API

上面只是最小骨架。最常踩的坑 3 個

  • chunk 太大 / 太小:太大、retrieve 撈到的 chunk 裡只有一句相關、其他都是雜訊;太小、失去前後文(見 Chunking 細節)
  • embedding model 選錯:中文文件用英文 model、retrieval 精度直接掉一半
  • top-k 設太大 / 太小:太小、漏 relevant chunk;太大、雜訊高 / token 燒

📚 想看更多 RAG 踩坑指南 + 解法NirDiamant/RAG_Techniques ★ 大型 production RAG cookbook、含 30+ 技巧 + Jupyter notebook 範例。

跑完基本骨架後,跑 動手練習 1-4(embeddings / vector DB / chunking / 完整 pipeline)建立手感、再進下一節 進階 RAG 技巧。

🚀 進階 RAG 技巧(跑完基本 RAG 之後再看)

下面六個 subsection 是 2024-2026 production RAG 最常加上的槓桿,按「加進 pipeline 哪一層」分組:

  • Retrieve 後 —— GraphRAG / Contextual Retrieval / Hybrid Search & Reranking
  • Retrieve 前(query 改寫)—— Query Transformations
  • Retrieve 期間(control flow)—— Adaptive / Agentic RAG
  • Index 結構 —— RAPTOR
  • 2024-2026 縱覽 —— 其他 17 個值得知道的技巧

先跑完上面 RAG 基礎拿到基準版本、再回來看這裡——不然你會在沒有基準的情況下調參數,永遠不知道是哪個改動帶來提升。

技巧解決什麼問題加在 pipeline 哪一層成本
GraphRAGvanilla RAG 不會做 multi-hop / 跨文件 entity-relation 推理retrieve 前(建 graph)+ retrieve 時(graph traversal)高(要先建 KG、需 LLM 抽 entity)
Contextual Retrievalchunk 失去原文件 context、retrieval 撈錯片段chunk 後 / embed 前(加 contextual header)中(一次性、搭 prompt caching 後便宜 90%)
Hybrid Search & Reranking純 vector 漏字面命中、top-k 雜訊高retrieve 中(並查 BM25)+ retrieve 後(cross-encoder rerank)低(成熟工具直接接)

🔗 GraphRAG — 知識圖譜 + RAG

Mental model:vanilla RAG 把文件切成 chunk、靠 embedding 相似度撈片段——但它不知道哪些 entity 是同一個東西、entity 之間有什麼關係。GraphRAG 在 ingest 階段先用 LLM 把文件抽成 (entity, relation, entity) 三元組建知識圖譜,retrieve 時除了向量比對、還做 graph traversal 撈到「相關 entity 的相關 entity」。

何時用

  • 任務需要 multi-hop reasoning(A → B → C 才能回答)
  • 跨多份文件、entity 互相引用(公司財報、論文引用、調查報告、法律案例)
  • 問題形如「X 影響了什麼 Y、Y 又連到哪些 Z」——vanilla RAG 通常只撈到 X 那塊文件

何時不用

  • 文件之間沒有 entity-relation 連結(純 FAQ、產品手冊各自獨立)
  • 知識庫小(< 1k chunk)——vanilla RAG 已經夠
  • 預算緊——建 KG 的 token 成本可能是普通 RAG 的 10-50 倍

代表 framework

  • HKUDS/LightRAG35.1k MIT EMNLP 2025 — 目前社群最熱的選擇、輕量、KG + vector hybrid、cost 比 Microsoft 版低
  • Microsoft GraphRAG — 原版 reference 實作、Apache-2.0、含 community detection
  • gusye1234/nano-graphrag — < 1000 行的最小實作、適合先讀懂原理

PaperFrom Local to Global: A Graph RAG Approach to Query-Focused Summarization (Edge et al. 2024) — Microsoft GraphRAG 的原始 paper、解釋 community summarization 為什麼能解 global query

🪶 Contextual Retrieval — Anthropic 的 prompt-caching 解法

Mental model:vanilla chunk 失去原文件 context——「Q3 revenue grew 15%」這個 chunk 抽出來、你不知道是哪家公司哪一年的 Q3。Anthropic 2024 提出:ingest 時用 LLM 為每個 chunk 寫一段 50-100 token 的 contextual header(「This chunk is from ACME Corp 2024 Q3 earnings, discussing the cloud segment...」)拼到 chunk 前面再 embed。搭配 prompt caching 讓「整份文件 + 每個 chunk」這個 prompt 只計費一次、後面所有 chunk 共用 cache。

何時用

  • chunk 字面意思跟原文件主題距離遠(財報、研究報告、長 narrative 文件)
  • 你願意一次性付 ingest 成本、換 retrieve 精度
  • 已經在用 Claude / 想用 prompt caching(其他 model 也能跑、就是沒 cache 折扣)

何時不用

  • chunk 本身就是 self-contained(FAQ、產品介紹頁、定義條目)
  • 知識庫經常變動(每改一次就要重 ingest)
  • 預算極緊——即便 cache 折扣後、ingest 成本仍比 vanilla 高

為什麼省 90% cost:Anthropic 報告 prompt caching 把「整份文件當 cached prefix」、每個 chunk 只送差異——比起每 chunk 都餵整份文件、成本降到約 1/10。但這只省 ingest、不省 retrieve 階段

代表實作

搭配技巧:Anthropic 同篇 blog 還建議疊上 Contextual BM25(contextual chunk 同時餵 vector + BM25)+ reranking——剛好接到下面 Hybrid Search & Reranking。

🎯 Hybrid Search & Reranking — production RAG 的兩個常見強化元件

Mental model

  • Hybrid Search = vector similarity(語意像)+ BM25 / keyword(字面像)並查、用 RRF (Reciprocal Rank Fusion) 之類融合分數。解決純 vector search「query 跟 chunk 同義但用詞不同沒撈到」+「人名 / 編號 / 罕用詞語意 embedding 太弱」的雙重盲點。
  • Reranking = 第一階段 retrieve top-50(recall 優先、寬鬆撈)→ 用 cross-encoder reranker 重新打分排成 top-5(precision 優先、精準篩)。cross-encoder(query + chunk 一起進 model)比 bi-encoder(query / chunk 分開 embed)精準很多、但太慢、所以只用在第二階段。

為什麼是「必加的強化元件」:production RAG 評測幾乎一面倒——加 hybrid + reranker 後 recall@5 通常從 70% 上下提到 85-90%、邊際成本低、實作成熟。這是 cost / benefit 最好的兩個改動

何時用

  • production RAG(不是 demo / 練習)
  • query 包含人名、產品編號、技術術語、罕見字(純 vector 容易漏)
  • 預算允許每 query 多 100-300ms latency

何時可以暫緩

  • 練習階段 / MVP(先把 vanilla RAG 跑通)
  • 預算極緊 / latency 極敏感(reranker 是額外一次 model call)

代表工具

  • Hybrid searchWeaviate(內建 BM25 + vector + RRF)/ Qdrant(支援 sparse + dense vector)/ pgvector + Postgres FTS
  • RerankerCohere Rerank API(商業、最常用)/ BGE Reranker(開源、HuggingFace、中文表現好) / Jina Reranker
  • Framework 內建:LlamaIndex 的 SentenceTransformerRerank / LangChain 的 ContextualCompressionRetriever

Paper / 入門

Query Transformations — HyDE / Multi-Query / RAG Fusion

Mental model:vanilla RAG 把 user query 直接 embed 去查——但 query 跟文件用詞 / 風格 / 抽象層級經常差太多(user 問「我胃痛怎麼辦」、文件寫「上腹部疼痛之鑑別診斷」)。Query transformations 在 retrieve 先改寫 query、讓改寫版本更接近文件形式。

3 個代表技巧

技巧怎麼改寫何時用
HyDE(Hypothetical Document Embeddings)先讓 LLM 對 query 生成「假想答案」、用答案 embedding 查query 跟 chunk 用詞風格差距大
Multi-QueryLLM 把 query 改寫成 N 個變體分別 retrieve、union 去重query 太短 / 模糊 / 多義
RAG FusionMulti-Query + RRF 融合 N 個 retrieval 結果同上、想要更穩定的排名

何時不用:query 已經是長 + 結構化(RAG over code、user 直接 paste error stack trace)——改寫反而引入雜訊。

Paper / 實作

🔁 Adaptive / Agentic RAG — Self-RAG / CRAG / Adaptive RAG(讓 retrieval 變成可判斷的流程)

Mental model:上面所有 RAG 技巧都假設「query 來 → retrieve → generate」是固定 pipeline。Self-improving RAG 把這個 pipeline 變成有判斷能力的 agent loop——LLM 自己決定要不要 retrieve、判斷 retrieve 品質、不夠就再查或改 query。這是 2024 RAG 研究的主軸

技巧怎麼自我修正Paper
Self-RAG訓練 LLM 輸出 [Retrieve] token 決定要不要查、retrieve 後輸出 [IsRel]/[IsSup]/[IsUse] 評分每個片段Asai et al. ICLR 2024
CRAG(Corrective RAG)retrieval evaluator 打分;高信心直接用、低信心 fallback 到 web search、中信心做 query 改寫Yan et al. 2024
Adaptive RAGclassifier 先判 query 複雜度、routing 到「不 retrieve / single-step / multi-step」三種策略Jeong et al. NAACL 2024

為什麼這是 2024 主軸:固定 pipeline 在簡單 query(「Tokyo 首都?」不用 retrieve)+ 複雜 query(multi-hop、cross-doc)兩個極端都吃虧。讓 LLM 自己 routing → 兩個極端都解。

何時用:production RAG、query 類型分布廣(從事實題到推理題都有)、願意付 1.5-3 倍 latency 換準確度。 何時不用:query 類型單一 / 預算 / latency 極緊。

實作:LangGraph 有官方 Self-RAG cookbook + CRAG cookbook + Adaptive RAG cookbook、可直接套。

🌳 RAPTOR — 階層式遞迴 retrieval(ICLR 2024)

Mental model:vanilla chunking 把文件切扁平 chunk——但整本書的主旨不在任何單一 chunk 裡。RAPTOR 把 chunk 遞迴聚類 + 摘要、建一棵多層樹:底層 = 原 chunk、中層 = 一群相關 chunk 的摘要、頂層 = 全文摘要。retrieve 時可選整棵樹搜尋、或選特定抽象層。

為什麼有用

  • 抽象 query 撈得到(「這篇 paper 主要結論?」原 chunk 都沒這句、但頂層摘要有)
  • 細節 query 也撈得到(底層 chunk 保留)
  • 跟 GraphRAG 不同——RAPTOR 是(hierarchical summarization)、GraphRAG 是(entity-relation)

何時用:長文件(書、論文、報告)需要不同抽象層 query、知識庫 narrative 連貫。 何時不用:chunk 之間獨立(FAQ)、知識庫經常變動(重建樹貴)。

Paper / 實作

🧬 DSPy — 不寫 prompt、用 program 自動 optimize(Path 3 paradigm)

Mental model:傳統 RAG / Agent = 手寫 prompt + 手刻 chain。DSPy = 不寫 prompt——你只定義「signature」(input → output 的型別)、再寫 program(chain 結構);DSPy 自己用 LLM compile 出最佳 prompt + few-shot examples + retriever 設定。Stanford NLP group 2024 提出、Karpathy 推、目前 production 越用越多。

何時用

  • 你的 RAG 用了 6 個月、prompt 累積到難維護、想自動 optimize
  • 同一 program 要切換不同 LLM provider(DSPy 自動 recompile)
  • agent system 有多個 step、想跟蹤 trace / metrics

何時不用

  • 你只有一個 prompt、不需要 optimization
  • 第一次學 LLM、還沒摸過 prompting

代表 repostanfordnlp/dspy34.4k MIT、Stanford NLP group 官方、active 維護中。

怎麼放進 RAG:DSPy 跟本 stage 講的 RAG 技巧不衝突——你可以把 GraphRAG / Hybrid Search / Reranking 都當成 DSPy 的 module 來組、然後 compile。是 RAG 構築方式的「上層」typing 系統。

跟 Path 1 / Path 2 reasoning 並列:Path 1 是「人手寫 prompt」、Path 2 是「訓練進 model 權重」、DSPy 是 Path 3「program 自動 search 出 prompt」。Stage 7 multi-agent 進階場景特別好用。

📊 RAG 進階技巧縱覽 — 2025-2026 三條主軸

進階 RAG 的 2025-2026 演化集中在 3 條主軸

  1. 🧠 KG + Memory 融合 — 從 flat vector store 走向「結構化、可演化、可聯想」的知識表示。代表:HippoRAG 2(海馬迴啟發、KG + PageRank、跨文件 multi-hop)、A-MEM、KAG。
  2. 🎬 Multimodal RAG — 從文字 retrieval 走向圖像 / 影片 / 表格 native。代表:ColPali(PDF 頁面圖像直接 embed、繞過 OCR)、TV-RAG、MegaRAG。
  3. 🤖 Agentic RAG — retrieval 從固定 pipeline 變 agent loop 內的 tool(agent 自己決定查幾次 / 怎麼查)。代表:A-RAG、Self-RAG(已上面 Self-improving)、SoK: Agentic RAG survey 2026。

另外 2 個值得追的方向

  • 🛡 RAG 安全 — corpus poisoning / prompt injection 進入 production 考量。代表:RAGPart / RAGMask
  • 🔧 不再手寫 prompt — 系統自動 search 出最佳 prompt + retriever 組合。代表:DSPy(Stanford「programming not prompting」典範、見上方 DSPy 段落)。

5 個值得深挖的代表作(速查):

技巧一句話連結
HippoRAG 2KG + Personalized PageRank、跨文件 multi-hop、海馬迴啟發Gutiérrez et al. ICML 2025OSU-NLP-Group/HippoRAG
ColPaliPDF 圖像直接 embed、繞過 OCR、multimodal RAG 入門Faysse et al. 2024
A-RAG / SoK Agentic RAGretrieval 當 tool、agent 自己決策查幾次Ayanami0730/aragSoK survey
DSPy不寫 prompt、用 program + signature、auto-optimizestanfordnlp/dspy ★ 34.4k
LightRAGMS GraphRAG 的 lightweight 替代、EMNLP 2025HKUDS/LightRAG ★ 35.1k(已在 GraphRAG 段落)
📚 完整縱覽 — 其他 12 個值得知道的進階 RAG 技巧(展開看)
技巧一句話年份 / Paper
Sentence-Window Retrievalembed 句子、retrieve 後回傳 ± N 句 windowLlamaIndex 內建
Parent-Child / Small-to-Bigembed 小 chunk、回傳 parent chunkLangChain ParentDocumentRetriever
Multi-Vector Retrieval一個 chunk 多個 embedding(摘要 / 原文 / 假想問題)LangChain MultiVectorRetriever
ColBERT / 後互動 retrievaltoken-level 比對而非 pooled embeddingKhattab & Zaharia 2020RAGatouille
LongRAG大 chunk(4k)+ long-context reader、減少 retrieval 次數Jiang et al. 2024
MemoRAGmemory model 把 KB 壓成 latent memory、retrieve 用線索觸發Qian et al. 2024
KAG(Knowledge-Augmented Generation)嚴格 schema KG + 邏輯推理、金融 / 醫療 / 法律場景Liang et al. 2024 (Ant Group)
MiA-RAG(Mindscape-Aware)先建文件高層摘要 mindscape、用它引導 retrieval 跟回答arXiv:2512.17220 ⭐ 2025-12
QuCo-RAG(Quality-Controlled)用 pretraining 統計判斷該不該 retrieve、罕見 entity 觸發查、減 hallucinationarXiv:2512.19134 ⭐ 2025-12
MegaRAG多模態 KG、長文件抽 entity + relation + 視覺、建層級圖arXiv:2512.20626 ⭐ 2025-12
TV-RAGtraining-free 時間感知 RAG、長影片 + 字幕 + 視覺對齊arXiv:2512.23483 ⭐ 2025-12
RAGPart / RAGMask對 RAG corpus poisoning 攻擊的輕量防禦arXiv:2512.24268 ⭐ 2025-12

🌉 從 RAG 到 Memory — 為什麼 RAG 還不夠

讀到這你已會跑基本 RAG + 知道幾個 production 槓桿。但回頭看 Context Engineering 列的 3 個 problem domain——你只解決了 RetrievalMemory 管理還沒碰。為什麼這兩件事要分開?

RAG 解決「從外部知識庫 retrieve 相關片段」——但 agent 還需要「自己 跨對話 / 跨 session 記事情」。這兩件事不是同一個問題:

維度RAGMemory
內容來源外部(PDF / 文件 / web / DB)agent 自己的對話 / 經驗
寫入時機ingest 一次性、後續每次 retrieve每輪對話、每次 task 都可能寫
內容性質偏靜態事實、文件知識偏動態:user preference、過去互動、累積教訓
取代得了 RAG 嗎?取代不了——你不會把每份 PDF 當「memory」
被 RAG 取代嗎?不會——RAG 不會「記住上次 user 說了什麼」

3 個 RAG 不夠用的場景(剛好對應到 Memory):

  1. 跨 session 記 user preference / persona——user 上禮拜跟 agent 說「我是純素」、這禮拜回來、agent 還記得不能推薦肉食。RAG 知識庫不會這樣自動更新。
  2. agent 過去成敗教訓累積(Reflexion 主場)——agent 第一次跑 task 失敗、反思「為什麼失敗」存起來、下次遇類似 task retrieve 進 prompt 避免重蹈覆轍。RAG 知識庫不會「記住自己的失敗」。
  3. Long-horizon task 中間狀態——agent 跑 100 step task、中間需要保留 working memory 不丟失。RAG 不適合做這種「短期 + 結構化 + 高頻寫入」的 state。

結論:RAG 跟 Memory 是互補而非取代。Production agent 通常兩個都要:RAG 接外部知識、Memory 記自己跟 user 的互動。下節 Memory 設計 教你怎麼挑 memory pattern。

🧠 Memory 是什麼 + 怎麼設計

📺 視覺學習李宏毅 2025 第二講 — 一堂課搞懂 AI Agent 的原理(含 read / write / reflection memory module)(NTU 生成式AI時代下的機器學習 2025)

Working memory vs Long-term memory — 兩種時間尺度

比較面向Working memory / 短期上下文Long-term memory / 持久記憶
中文可稱工作記憶 / 短期上下文長期記憶 / 持久記憶
核心意思這次任務或這段對話中,模型當下看得到的資訊存在外部,之後可跨 session 取回的資訊
持續時間短,通常限於目前 session長,可跨 session
技術基礎上下文視窗(context window)/ prompt記憶儲存層(memory store)/ 使用者檔案 / 向量資料庫
適合記什麼任務細節、剛剛說過的內容穩定偏好、長期目標、背景資料
是否受 context 長度限制會,因為模型一次能看的內容有限較不會,因為可以先存在外部,需要時再取一小段放回來
生活例子剛剛收到的手機驗證碼、正在進行對話的上一句話你深化學會的知識、圖書館、知識庫、讀過的書

→ 在 agent 裡,「短期記憶」嚴格說更接近 working memory——它不是外部儲存、是目前 prompt / context window 裡看得到的內容。

Episodic / Semantic / Procedural memory — 三種內容類型

注意:上面 working / long-term 是時間軸,下面三種是內容軸——兩組分類正交、不互斥。Long-term memory 裡可以同時有 episodic + semantic + procedural 三種。

類型中文核心意思
Episodic memory情節記憶 / 經驗記憶過去某次任務、某次互動、某次失敗的具體經驗
Semantic memory語意記憶 / 事實記憶穩定知識、使用者偏好、背景事實
Procedural memory技能型記憶(procedural memory)agent 知道「怎麼做事」的規則、工具、workflow、skills

→ 這 3 種對應 CoALA framework、production agent 通常 3 種都用得到。Reflexion 是典型的 episodic memory 應用(累積 trial 的成敗經驗)。

這裡的工作階段(session)可以理解成一次連續互動,例如同一段聊天、同一次任務,或同一次 agent 執行。

3 種設計 pattern(什麼時候用什麼)⭐ Track B 必看

不是所有 agent 都需要外部 memory store。Memory 架構選錯會花十倍 token 達同樣效果。

這是進練習前要建立的 mental model——下面練習 1-5 跑的是「pattern 3 vector store」,但 production 你可能不需要這麼複雜。

Pattern適合場景怎麼跑成本
1. Naive buffer
(全塞 context)
短對話、≤ 10 turn、agent 不需要記跨 session 的東西整段 history 每次都送進 prompt線性增長、token 燒得快
2. Summary + recent
(摘要遠的 + 保留近 N 輪)
中長對話、~ 50 turn、想壓縮但別丟太多每 N 輪叫 LLM 把舊 history 摘成 1 段;prompt = summary + last N turns中等、有 LLM 摘要成本
3. Vector store + retrieval
(外部 store + 每次 semantic search)
跨 session、知識庫場景、agent 要「想起」久遠的事embed 過去 message → 存 vector DB → 每回合 query 相關片段拼進 prompt高(向量計算 + 儲存),但 token 用量穩定

怎麼選

  • 對話 chatbot 沒跨 session → pattern 1
  • agent + 長對話、要記今天聊過什麼 → pattern 2
  • agent + 跨 session + 知識庫(本 stage 練習場景)→ pattern 3
  • production 大型 agent → 通常混用:近期 pattern 1/2、長期 pattern 3

💡 Track B 重點:你 Stage 7 寫 multi-agent 時,每個 agent 都會有「自己的 memory」+「shared memory」雙層——需要的 pattern 通常是 2 + 3 混用。先在本 stage 把 3 種 pattern 跑透,到 Stage 7 才不會被 multi-agent memory 設計卡住。

⭐ 5 個可上線使用的 Memory Layer(按 use case 挑)

Star 數與 benchmark 會變動;這裡重點不是排行,而是理解每個 memory layer 的設計取向。

學完 3 pattern 後、production 不必自己刻 memory store。下面 5 個都是 Apache-2.0 / MIT、active 維護、各擅其場:

FrameworkStarsLicense主場 use case特色
agentmemory7.7k★Apache-2.0Coding agent 跨 session 記憶MCP-universal(Claude Code / Cursor / Gemini CLI / Codex / Hermes / OpenClaw 都接得上)、95.2% R@5、92% token saving、51 MCP tools + 12 auto hooks、benchmarks-driven
mem055.6k★Apache-2.0Chatbot / 個人助理 user-level memoryAuto fact extraction + forgetting + namespace、production-tested、最大社群
Letta(前身 MemGPT)22.7k★Apache-2.0長 session agent(月為單位)OS-style paging memory(working + archival 雙層)、persona stability、MemGPT paper origin
Zep4.6k★Apache-2.0Temporal KG-based memory把對話歷史建成 temporal KG、entity 之間有時間軸、適合需要 audit trail / time-aware reasoning 的 agent
LangMem1.4k★MITLangChain-native memoryLangChain 官方 memory lib、與 LangGraph 直接整合、適合已 commit LangChain stack

怎麼挑

  • 寫 coding agent → agentmemory(MCP-native、跟 Stage 5 ecosystem 完美 align)
  • 做 chatbot / 個人助理 → mem0(最成熟、最大社群)
  • 做 long-running 跨月 agent → Letta(OS-paging 強項)
  • 需要時間軸 + audit → Zep(temporal KG)
  • 已在 LangChain stack → LangMem(不必跳 framework)

另加官方 docsAnthropic Memory Tool(Claude 官方 tool-based memory、file-based、API 直接 call)、LangChain Memory concepts(framework 內各 memory class 對比)。

進階:CoALA framework — agent memory 的 4 層 taxonomy

Sumers et al. 2023 — Cognitive Architectures for Language Agents 把 agent memory 拆成 4 種、是現在最常用的 mental model:

類型存什麼對應例子
Working memory當前 task 上下文LLM context window 本身
Episodic memory過去 task 的具體經驗Reflexion 反思記錄、past trajectories
Semantic memory抽象事實 / 知識RAG 知識庫、user profile、preference
Procedural memory怎麼做事的程式 / skilltool definitions、Skills(Stage 5.3)

為什麼有用:上面 3 種 pattern(buffer / summary / vector)都只在處理 working + episodic。Production agent 4 層都要設計——CoALA 是檢查表,看看你的 agent 哪一層缺了。

進階:Generative Agents — 三分數打分(經典案例)

Park et al. 2023 — Generative Agents: Smallville 的小鎮模擬有 25 個 NPC agent、每個都有自己的 memory stream。retrieve 時用三個分數加權:

  • Importance:LLM 自己幫每個 memory 打 1-10 重要性分(吃飯 = 2 分、分手 = 9 分)
  • Recency:時間衰減(exponential decay)
  • Relevance:跟當前 query 的 embedding 相似度

最終分 = α·importance + β·recency + γ·relevance、排前 k retrieve。這是 2024-2025 可上線使用的 memory layer(mem0 / Letta)的概念骨架

💻 官方 codejoonspk-research/generative_agents ★ paper 配套的小鎮模擬 code repo、想跟著實作 memory stream + 三分數 retrieval 看這裡。

2024-2026 最新 Memory 作品 — 三條主軸

Memory research 2024-2026 集中在 3 條主軸

  1. 🧠 結構化、可演化、可聯想 — 從 flat vector store 走向人腦 / Zettelkasten 啟發的記憶結構。代表:A-MEM(memory 之間自動建 link)、HippoRAG 2(KG + PageRank、海馬迴啟發)。
  2. 📚 2026 survey 大爆發 — 一年內 5 個重磅 survey + 跨領域整理。代表:Memory in the Age of AI Agents(3 維 taxonomy + benchmark)、Memory for Autonomous LLM Agents(write-manage-read loop 形式化)。
  3. 🛡 Memory security 變獨立子領域 — agent 跑久了、memory 會被 cross-session poisoning / 未授權存取攻擊。代表:Memory Security survey(Stage 7 安全 會接到)。

4 個值得深挖的代表作

作品一句話連結
Anthropic Memory ToolClaude 官方 tool-based memory、API 直接 call、file-basedAnthropic Docs
A-MEM(Agentic Memory)Zettelkasten-inspired、memory 之間自動建 link、會演化Xu et al. 2025
HippoRAG 2KG + Personalized PageRank、跨文件 multi-hop、ICML 2025Gutiérrez et al. 2025OSU-NLP-Group/HippoRAG
Memory in the Age of AI Agents(survey)3 維 taxonomy(temporal / substrate / control)+ benchmark 彙整Hu et al. 2025-12

→ 跑很久的 agent(週 / 月為單位)、上面 survey 必讀。

📚 完整縱覽 — 其他 8 個值得知道的 memory 作品(展開看)
技巧一句話年份 / Paper
MemGPT → Letta GAOS-paging memory、working / archival 雙層、long session 強項Packer et al. 2023 → Letta GA
MemoryBankEbbinghaus 遺忘曲線、被存取的 memory 強化、沒用的衰減Zhong et al. 2023
MemoryLLMself-updatable memory parameters 內建在 model(在權重而非 context)Wang et al. 2024
mem0(見 Production Memory Trio)可上線使用的 memory layer、auto fact extraction + forgettingmem0ai/mem0
Memory for Autonomous LLM Agents(survey)write-manage-read loop 形式化、跨 2022-2026 整理arXiv:2603.07670 ⭐ 2026
From Storage to Experience(survey)演化框架:Storage → Reflection → Experience 三階段arXiv:2605.06716 ⭐ 2026
ScrapMembio-inspired on-device memory、"Optical Forgetting" 把老 memory 解析度漸降arXiv:2605.03804 ⭐ 2026-05
Memory Security surveylong-term memory 被 cross-session poisoning / 未授權存取 / 組織內傳播風險arXiv:2604.16548 ⭐ 2026

🧩 Chunking 細節(技術深入)

好的 chunking 可以讓 LLM 在有限 context 內,用更精確、完整的資訊生成回答。它不是把文字平均切開。

切法取決於應用場景與文件內容。它會決定 retriever 看見的最小語意單位。

一個好 chunk 要同時做到兩件事:夠完整,讓模型看得懂上下文;夠聚焦,讓檢索不帶太多雜訊。chunk 太小會失去前後文,chunk 太大會讓相似度搜尋變鈍。

常見策略

  • 固定長度(Fixed-Length):照字元數或 token 數切。優點是簡單穩定;缺點是一板一眼,容易切斷段落、句子或表格。
  • 滑動視窗(Sliding Window):每個 chunk 之間保留重疊區塊(overlap)。優點是比較不會在邊界掉資訊;缺點是索引量會變大。
  • 遞迴切割(Recursive):先嘗試保留段落,如果長度還是不適合,再退到句子、字詞等更小單位。通常是入門 RAG 的好基準。
  • 語意切割(Semantic Chunking):依 embedding 或語意變化切,也就是當前區塊與前一個區塊的語意相似度出現差異。適合長文件,但成本與複雜度較高。
  • 混合策略(Hybrid):依照應用場景,思考不同文件結構該怎麼混搭切法。例如,一篇論文可能要保留章節、表格、公式與引用脈絡。

Chunking 策略流程

📚 經典教學Greg Kamradt — 5 Levels of Text Splitting ★ chunking 入門必看、從 character-based 一路講到 agentic chunking 五個層次、含 Jupyter notebook。

第一次做 RAG 時,不要一開始就追求複雜切法。LangChain 文件建議多數情境先從 RecursiveCharacterTextSplitter 開始。

先跑出基準版本,再用後續 retrieval 結果決定要不要換策略。

from langchain_text_splitters import RecursiveCharacterTextSplitter

text = "這是一個很長的文件內容...(此處省略一千字)..."

splitter = RecursiveCharacterTextSplitter(
    chunk_size=100,
    chunk_overlap=20,
    length_function=len,
)

chunks = splitter.split_text(text)
print(f"共切成 {len(chunks)} 個 chunk")
print(chunks[0])

直覺判斷 chunking 好不好,可以先看兩件事:

  • 回答缺漏資訊,或有頭無尾:通常是 chunk 太小,或 overlap 不夠。
  • 回答包含正確資訊,但混入無關內容:通常是 chunk 太大,或 top-k 撈太多。

進階思考

  • chunking 不是一次設定好就結束,要配合真實 query 與失敗案例反覆調整。
  • chunk size、overlap、top-k、reranker 會互相影響,不要只單看其中一個參數。
  • 想想看,如果今天要 RAG 的資料有含圖片的 PDF、會議字幕檔,要如何切割比較好?
  • chunking 的進階變形(Sentence-Window / Parent-Child / Multi-Vector)見 進階 RAG 技巧縱覽表。

🪞 進階:帶持久記憶的 Reflexion 完整版 ⭐ Track B 選讀

本節是 concept + routing、不是練習。延續 Stage 3 反思 的基本版(single-session Actor / Critic loop),講為什麼有些反思需要持久記憶——這版本才真正屬於 Stage 6 主題。

Reflexion 完整版跟 Self-Refine 差在哪

版本跨輪保留什麼跨 session 保留什麼需要 memory pattern
Self-Refine(Madaan 2023)上一輪的 answer + critic feedback❌ 不保留不需(pattern 1 buffer 即可)
完整 Reflexion(Shinn 2023)同上✅ 把過去 trial 的「反思摘要」存進 episodic memory,下次遇到類似 task 時 retrieve 進 prompt 當教訓需要(pattern 3 vector store 或 pattern 2 summary)

為什麼這個版本要 memory:Reflexion paper 的 verbal reinforcement learning 是「agent 跨 trial 累積教訓」——agent 嘗試 task → 失敗 → 反思「為什麼失敗」存起來 → 下次遇到類似 task 時把過去反思 retrieve 進 prompt,避免重蹈覆轍。這就需要 persistent episodic memory,跟本 stage 上面講的 3 種 memory pattern 直接接上。

典型架構(持久記憶完整版):

Reflexion 持久 episodic memory loop

跟 Stage 3 反思的差別:Stage 3 是 single-session in-context loop(沒外部 store)、本節是 persistent episodic memory store + retrieve(跨 trial 累積)。

📚 想動手 / 想深入

Paper

Reference 實作

  • noahshinn/reflexion — paper 第一作者的 reference 實作(含 episodic memory 完整流程)
  • LangChain — Reflexion — LangGraph 版本,跟本 stage 練習 4 RAG pipeline 直接接得起來
  • mem0(已在上面列)+ Letta(已在上面列)— 可上線使用的 memory layer,可以直接當 Reflexion 的 episodic store

💡 跟 Stage 3 反思的分工

  • 想理解「反思 loop 怎麼運作、單次怎麼跑」→ Stage 3 反思
  • 想理解「反思怎麼跨 session 累積、agent 怎麼從過去學教訓」→ 本節
  • 想看 production agent 內怎麼用反思(Cursor / Claude Code)→ Stage 5 5.6 Harness Internals

🤔 進階 Reasoning / Reflection — 2024-2026 思潮 ⭐ 兩個 track 都看

Reflexion 是 prompt-based reflection——LLM 在 inference 時自己改自己。2024-2025 出現了第二條路訓練時就把 reflection 練進 model(OpenAI o1 / DeepSeek R1)。兩條路你都該知道。

Path 1:Prompt-based reflection / reasoning(傳統做法)

技巧核心想法Paper
Self-Consistencysample N 條推理、多數決 — 最簡單 + 最常用Wang et al. 2022
Tree of Thoughts (ToT)reasoning 變樹、可分叉可回溯、適合 puzzle / planningYao et al. 2023
Graph of Thoughts (GoT)不只樹、可任意合併分支Besta et al. 2023
Chain-of-Verification (CoVe)生答案 → 對自己提驗證題 → 改答案Dhuliawala et al. 2023
CRITICtool-augmented self-critique(用 search / calculator 驗)Gou et al. 2023
Self-Discoveragent 先「發現」該用什麼 reasoning structure 再執行Zhou et al. ICML 2024 ⭐ 2024
Self-Refine / Reflexion已在上面 / Stage 3 講Stage 3 反思、本 stage Reflexion

Path 2:Trained-in reasoning / reflection(2024-2026 大轉折)

📺 視覺學習李宏毅 2025 第七講 — DeepSeek-R1 這類大型語言模型是如何進行「深度思考」(Reasoning) 的?(NTU 生成式AI時代下的機器學習 2025)

OpenAI o1(2024-09)開啟、DeepSeek R1(2025-01)開源化、DeepSeek-V4-Pro(2026-04 preview、agent-focused 開源 reasoning)+ Claude Opus 4.7(2026-04)+ GPT-5.5(2026-04)+ Gemini 3.1 Pro(2026-02)為當前 frontier——把「step-by-step thinking + 自我糾錯」訓練進 model 權重、inference 時自動展開長 reasoning chain(thinking tokens)。這是 2024-2026 LLM 最大典範轉移、目前所有 frontier model 都走這路。下表只列當前(2026-05)frontier——歷史前身(o1 / R1 / Sonnet 4.5 / Gemini 2.5)省略、想看 lineage 看每家發布日列。

Model來源 / 發布特色連結
GPT-5.5OpenAI 2026-04(前身:o1 2024-09 → o3 → GPT-5 2025-08 → 5.4 2026-03)閉源、reasoning + chat 合併、Thinking budget API、agent 能力強化OpenAI
Claude Opus 4.7Anthropic 2026(前身:Sonnet 4.5 / Opus 4.5)閉源、可控 thinking budget(API 參數)、SWE-bench / Terminal-bench 領先Anthropic extended thinking
Gemini 3.1 ProGoogle 2026-02(前身:Gemini 2.5 Thinking 2025、Gemini 3 2025-11)閉源、可看 thinking trace、GPQA Diamond 94.3%、價格 / 速度 / multimodal 領先Gemini API
DeepSeek-V4 / V4-Pro / V4-FlashDeepSeek 2026-04 preview(前身:R1 2025-01 → V3.1)開源 MIT license、agent-focused 訓練、推理 + 工具使用 + 知識處理整合、R 系列 reasoning 已併入主線HF DeepSeek-V4-ProR1 paper(方法 baseline)CNBC report
QwQ-32B / QvQ-72BAlibaba Qwen 2024-11 ~ 2026開源 Apache 2.0、32B 在小尺寸 reasoning 仍是首選、QvQ 是視覺版本QwQ blog

兩條路怎麼選

你的情況建議
用一般 chat model base、想加 reasoningPath 1(prompt-based)—— ToT / Self-Consistency / CoVe
預算 / latency 允許、要最強 reasoningPath 2 —— GPT-5.5 / Opus 4.7 / Gemini 3.1 Pro / V4-Pro 任挑一個
想自己 fine-tune reasoning modelPath 2 —— 讀 R1 paper(方法 baseline)、從 R1-Distill / V4 開源權重起步
想 on-device / 預算極緊QwQ-32B(Apache 2.0)或 R 系列 distill
Multi-agent debate / critic 場景Path 1(CRITIC / debate)+ Stage 7 multi-agent

💡 2025-2026 觀察

  • reasoning model 把 Reflexion 那套吞進權重——但 prompt-based reflection 沒被取代:agent loop(控制反思時機 / 內容)+ multi-agent debate 還是必須的
  • 2026 開源逼近閉源——DeepSeek-V4-Pro(2026-04 preview、MIT license)把 R1 reasoning 併入主線、agent-focused 訓練、跟 GPT-5.5 / Gemini 3.1 Pro 差距持續縮小
  • agent capability 變主訴求——V4 / Opus 4.7 都把 agent-as-product(SWE-bench / Terminal-bench / tool use)當 headline benchmark、單純 reasoning 已經不夠賣
  • 兩條路會長期共存、production agent 兩個都用

📏 RAG / Memory Eval — 跑得起來 ≠ 跑得準

為什麼這節重要:RAG / Memory 系統最大的坑是「看起來能跑、實際 retrieval 精度爛」。沒 eval、你不會知道改 chunk size / 換 embedding / 加 reranker 是不是真的有幫助——只會看到「答案好像比較順」這種主觀印象。Production agent 沒 eval 等於沒測試。

3 個核心 metric

Metric量什麼工具
Retrieval Recall@Ktop-K 撈到的 chunk 裡有沒有 ground truth 答案的 chunkragas / TruLens / LangSmith
Answer Faithfulness生成答案是不是 grounded 在 retrieved chunk(vs 模型 hallucinate)ragas / TruLens
Answer Relevance答案跟 query 相關度(避免答非所問)ragas / LLM-as-judge

代表 framework

  • explodinggradients/ragas13.9k Apache-2.0 ⭐ — RAG evaluation 標準工具、含 8+ metric(faithfulness / answer relevance / context precision / context recall 等)、支援 reference-free + reference-based eval
  • TruLens — observability + eval 一起、LangChain / LlamaIndex 整合好
  • LangSmith — LangChain 官方 eval + tracing、closed-source SaaS

怎麼開始:跑完 動手練習 4(完整 RAG pipeline)後、加上 ragas eval、measure 一次 baseline——再回頭調 chunk / embedding / top-k、看數字怎麼動。沒這一步、調參全是猜。

→ Stage 7 Eval 接續本節、把 eval 擴到 multi-agent / full harness。

🛠 動手練習(基礎 illustrative 練習)

練習 1:Embeddings

把 100 個句子做 embedding,找出某個 query 的最近鄰。理解 vector 之間的距離意義。

練習 2:Vector DB

把 embedding 存進 Chroma,做語意 query。比對「跟 keyword search 差在哪」。

練習 3:Chunking 對照

拿同一份文件做三種切法:固定長度、段落切法、heading-aware 切法。用 5 個真實問題比較 top-k 結果,記錄哪種切法比較容易撈到正確上下文。

練習 4:完整 RAG 流水線

把一份 PDF 切塊 → embed → 取 top-k → 生成回答。這是大多數 RAG 應用的基本骨架。

練習 5:Long-term Memory

讓 agent 在多輪對話之間記得事情。可以用 mem0 或自己用 vector store 接。

🎯 常用 Memory / RAG 工具推薦(按用途分類)

不知道從哪裡開始挑工具?下面是 2025 後段業界常用搭配——挑入口看「場景」、想深入點連結看 repo

場景推薦工具為什麼
第一次跑 RAG(最快上手)Chroma + LlamaIndexlocal-first、零 ops、quickstart 友善。Stage 6 練習預設
企業級 RAG framework(LangChain / LlamaIndex 之外第 3 選擇)Haystack (deepset) ★ 25.2k Apache-2.0deepset 開源、production-oriented orchestration、enterprise NLP 場景成熟
agent 長期記憶(見 3 主流 memory layer)agentmemory / mem0 / Letta / Zep / LangMem詳見上方 5 個主流 可上線使用的 memory layer 區塊
RAG / Memory eval(必裝、見 RAG Eval)ragas ★ 13.9kRAG 評估標準工具、faithfulness / context recall / answer relevance 8+ metric
production scale RAG(百萬 doc)Qdrant + LlamaIndexRust 寫的 vector DB、scale 大時比 Chroma 快
已有 Postgres 的環境pgvectorPostgres 擴充、SQL + vector 一起、運維最簡
企業級 RAG + Web UIRAGFlowdocument parsing 強(含 OCR / 表格 / layout)、企業場景、含 Web UI
中文 RAG 範本Langchain-Chatchat中文圈最完整、本機 LLM 整合好(ChatGLM / Qwen / Llama)
進階:Contextual RetrievalAnthropic cookbookClaude 搭配 prompt caching 的 contextual chunking(詳見上方 進階 RAG 技巧
進階:knowledge graph 推理LightRAG / Microsoft GraphRAGknowledge graph + RAG、entity-relation 推理(詳見上方 進階 RAG 技巧
跨主題 tutorial 集ai-engineering-hubRAG + agent 教學 collection、Jupyter notebook 形式

建議入手順序

  1. 第一個必裝:Chroma + LlamaIndex(跑 Stage 6 練習)
  2. agent 要記事:加 mem0(最簡單的 memory layer)
  3. 開始 production-scale:換成 Qdrantpgvector
  4. 想升級到進階 RAG:看上方 進階 RAG 技巧 三個 subsection

🎯 精選 Projects(範本 / spec / 範例 collection)

按用途分類、17 個項目一張表搞定。挑入口看「適合誰」、想深入點連結看 repo

分類Project適合誰為什麼推薦 / 備註
RAG framework
(完整流水線)
LlamaIndex⭐⭐⭐⭐⭐以文件為主的應用以 RAG 為核心、document loader / chunking / retrieval / query engine 一條龍。★ 49k+
infiniflow/ragflow⭐⭐⭐⭐⭐要把 RAG 真的 ship 給非開發者用production 等級 RAG engine、深度文件理解(layout / 表格 / OCR)+ hybrid retrieval + agent loop + Web UI。★ 79k+、Apache-2.0
HKUDS/LightRAG⭐⭐⭐⭐想看研究級 graph + long-context memory 方法graph + vector hybrid retrieval + summarization-based memory、EMNLP 2025 paper-backed。★ 34k+、MIT。研究風格 codebase
Vector DB
(local-first)
Chroma⭐⭐⭐⭐⭐練習 2 / 4、最容易上手的 vector DB開源 embedding 資料庫、本機跑、in-memory / SQLite 後端、零 ops。★ 27k+、Apache-2.0。安裝pip install chromadb
Vector DB
(production scale)
Qdrant⭐⭐⭐⭐⭐Chroma 跟不上時、需要 production scaleRust 寫的 vector DB、有雲端版跟自架版。★ 31k+
Vector DB
(hybrid)
Weaviate⭐⭐⭐⭐production 部署 + schema 約束內建模組(text2vec / generative / classification)、schema 驅動、內建 BM25 + vector hybrid。★ 16k+
Vector DB
(已有 Postgres)
pgvector⭐⭐⭐⭐原本就在用 Postgres 的團隊Postgres 擴充、SQL + vector 同一個 DB、運維最簡。★ 21k+
Memory framework
(auto fact extraction)
mem0ai/mem0⭐⭐⭐⭐⭐個人助理 / chatbot 需要 user-level memory自我精煉 memory 層、跨 session 儲存事實。★ 54k+
Memory framework
(OS-paging)
Letta(前身 MemGPT)⭐⭐⭐⭐context 要跑很久的 agent(以月為單位)階層式 memory(working / archival)、OS-paging 概念。★ 22k+
Memory(in-framework)LangChain — Memory⭐⭐⭐已用 LangChain4 種 memory 抽象(buffer / summary / vectorstore-backed / entity)
進階 RAG 技巧Anthropic — Contextual Retrieval cookbook⭐⭐⭐⭐⭐跑完基本 RAG 想升級Claude 搭配 prompt caching 的 contextual chunking、含完整端到端範例
中文 RAG 樣板chatchat-space/Langchain-Chatchat⭐⭐⭐⭐中文知識庫 / RAG 應用中文社群最廣泛使用、可離線部署、中文預設好、支援 ChatGLM / Qwen / Llama / Ollama。★ 38k+、Apache-2.0。⚠️ 最後更新 2025-11(邊緣)
教材合集patchy631/ai-engineering-hub⭐⭐⭐⭐想看「同概念在不同情境怎麼實作」主題式 LLM / RAG / agent tutorial 集、Jupyter notebook、跨多個 stage 都用得上。★ 34k+、MIT
Production AI assistant
(學 ship RAG 的 reference)
onyx(前身 Danswer)⭐⭐⭐⭐⭐想看「RAG-driven AI assistant 怎麼 production 化」開源企業級 AI assistant、跨 LLM 支援、含完整 ingest / retrieval / chat / admin。★ 29.4k、active 維護
RAG cookbook
(30+ 技巧範例)
NirDiamant/RAG_Techniques⭐⭐⭐⭐⭐跑完基本 RAG、想看各種變體大型 RAG 技巧 cookbook、含 Self-RAG / HyDE / Multi-Query / Adaptive 等 30+ Jupyter notebook 範例
DSPy
(programming not prompting)
stanfordnlp/dspy⭐⭐⭐⭐⭐用 LLM 一段時間、想自動 optimize prompt + chainStanford NLP group、★ 34.4k MIT、Path 3 paradigm(詳見 進階 RAG DSPy)
RAG / Memory Eval
(必裝)
explodinggradients/ragas⭐⭐⭐⭐⭐跑完 Stage 6 練習 4、想 measure retrieval 精度RAG eval 標準工具、8+ metric、reference-free + reference-based。★ 13.9k Apache-2.0

✅ 進入 Stage 7 前的自我檢查

你能不能:

  • 寫一條 50 行的 RAG 流水線(load → chunk → embed → store → query → answer)
  • 解釋為什麼天真的切塊在長文件上會失敗
  • 針對 API 文件、PDF、表格設計不同的 chunking 策略
  • 在某個規模下,能在 Chroma、Qdrant、pgvector 之間做出選擇
  • 區分「給 agent memory」跟「用 RAG」這兩件事
  • 解釋 RAG 跟 Memory 各補哪段(從上面 從 RAG 到 Memory 表)

如果都可以 → 前往 Stage 7 — Multi-Agent · 進階應用

Stage 7 — 多 Agent 系統與穩定運作(Multi-Agent & Production)

繁體中文 | 简体中文 | English

時間估算:2-4 週(約 15-30 小時)

💡 用語密度高(multi-agent / handoff / eval / observability / guardrails⋯)→ 翻 resources/glossary.md 4 + 6

📋 本章組成:〔Multi-Agent · Production 化 是什麼(先定位)+ 三層工程分工 + 何時用 multi-agent〕→ 學習目標 → 進入條件 → 必修閱讀 → Harness Engineering(8 個核心元件含 Cost/Latency)→ 動手練習(含練習 6 Cost Optimization)→ Agent Benchmark Landscape:怎麼看,不要只看排行榜 → 常用工具推薦 → 精選 Projects → 自我檢查 🔑 關鍵名詞:見 resources/glossary.md 4 + 6(multi-agent / orchestration / handoff / eval / observability / harness(模型外圍的執行與控制層))

最後一個階段。你正從「我會做 agent」走向「我能讓 agent 真的給人穩定用——多個 agent 協作、有 eval、有 observability、能部署到可用環境」。「Production 化」 ≠ enterprise scale——只要 agent 能穩定產出 + 能讓別人使用、就算進入這 stage 範圍。

🎯 Multi-Agent · Production 化 是什麼(先定位)

本 stage = 多 agent 怎麼協作 + 把 agent 從 prototype 推到能穩定給人用的程度。三句話釐清範圍:

  • 不是只學 framework——Stage 4 已教 framework 怎麼挑
  • 不一定要 enterprise scale——只要 agent 能讓別人用、就算 production 化
  • 核心是 harness engineering——8 個核心元件 + eval + observability + cost / latency 控制

跟前後 stage 的分工

  • Stage 4 = 單 agent framework 怎麼挑、ReAct / Plan-Execute 等 pattern
  • 本 stage = 多 agent 協作 + harness engineering(執行系統工程)+ 部署到可用環境 / observability / eval

三層工程分工:Prompt → Context → Harness

工程分工可以分成三層、對應 stack 不同位置(不是 call 一次 vs 多次的差別):

層級概念核心問題關注單位對應 stage
1Prompt Engineering這一次要怎麼問?單次 LLM callStage 2
2Context Engineering這次該給模型哪些資訊?多次互動中的上下文Stage 6
3Harness Engineering
本 stage
整個流程怎麼跑起來?可執行的 LLM workflow / system本 stage

白話差異

  • Prompt = 設計一個好的問法,讓模型這次回答準
  • Context = 動態決定要放入哪些背景、記憶、文件、工具結果,讓模型知道現在情境
  • Harness = 把 prompt、context、工具、狀態、流程控制、錯誤處理串成一套可以運作的系統

本 stage 三個核心問題

  1. Multi-agent 協作 — debate / planner-executor / peer review / handoff / supervisor-worker pattern
  2. Harness Engineering — agent loop / tool registry(agent 可呼叫工具的清單 + 介面定義)/ context manager / safety / retry / telemetry / eval / cost(8 個核心元件、下面詳述)
  3. Production 化 — eval harness / observability / cost & latency 優化 / 部署到可用環境

跟 Stage 5 的分工(避免混淆):

跟誰比那邊講什麼本 stage 講什麼
Stage 5.5 SubagentsClaude Code 原生 subagent 機制(markdown-based、不寫程式)通用 multi-agent framework(autogen / crewAI / langgraph、跨 vendor)
Stage 5.6 Claude Code sourceClaude Code source 解剖(參考實作 case study)Harness engineering 通則(不綁特定 vendor)

⚠ 但你真的需要 multi-agent 嗎?

Multi-agent 不是 default、是任務真的需要時才上的設計。多數場景應先嘗試 simple workflow 或 single agent;只有在任務天然可分解、需要平行探索、單一 context 不夠、或需要明確角色分工時,multi-agent 才值得引入。硬上會付 3-10× token、debug 困難、context fragmentation(context 被切散在多個 agent、彼此看不到全貌)嚴重

📌 決策框架的 canonical 在 Stage 4:完整的 Anthropic / Cognition 立場對照 + 4 個「該上 multi-agent」訊號 + 每個訊號對應的 pattern,見 Stage 4 §什麼時候真的需要 multi-agent(設計階段決策)。本節只做 production 前的最後回頭檢查——4 個訊號一個都不在? → single agent + 好 prompt + tool use 就夠、別硬上 multi-agent。本 stage 的 harness engineering 部分(8 個元件 / eval / observability)即使你最後用 single agent 也都會用到——所以即使你決定不走 multi-agent、本 stage 仍是必修。

📌 學習目標

  • 設計 multi-agent orchestration 模式(debate、planner-executor、peer review)
  • 為 agent 架一套 evaluation harness
  • 加上 observability(tracing、logging、cost tracking)
  • 用 Anthropic SDK / OpenAI SDK 部署到可用環境(進階功能:streaming、prompt caching、batching)
  • 把 agent deploy 到 production(Docker、serverless、monitoring)

🚪 進入條件

你應該已經:

  • 完成 Stage 4(用過至少一個 agent framework 跑 multi-agent demo)
  • 完成 Stage 5(懂 MCP / Skills / Plugins / Subagents 各自角色,並用 5.6 解剖過 harness 內部)
  • 完成 Stage 6(會基本 RAG,能講出 memory pattern 差異)
  • 對 Docker / git / CI 基礎熟悉(部署成可用服務會用到)

沒到的話 → 補完前面幾個 stage。本 stage 是「組合所有前面學到的東西 → 跑 production」,缺一塊都會卡。

📚 必修閱讀

  1. Anthropic — Building Effective Agents — 用 production 的角度再讀一次
  2. Anthropic — Prompt Caching — 90% 成本下降的技巧
  3. Anthropic — Message Batches API — 非同步 batch job
  4. anthropics/courses — Prompt Evaluations ⭐⭐⭐⭐⭐ ★ 21k+ — Anthropic 官方 5 course umbrella、module 4「Prompt Evaluations」對應本 stage eval / observability 部分。Jupyter notebook、教怎麼系統化評估 prompt 跟 agent 行為
  5. 任一 eval framework 的文件 — promptfoo 或 LangSmith 或 weave
  6. ai-boost/awesome-harness-engineering(★ 940)— agent harness 的工具 / pattern / eval / memory / MCP / observability 全集合
  7. ZhangHanDong/harness-engineering-from-cc-to-ai-coding(★ 1.3k+)— 從 Claude Code 原始碼學 harness 設計(中文)

🏗 Harness Engineering — production agent runtime 的工程設計 ⭐ 本 stage 核心概念

定位:模型外圍的執行與控制層

要把 LLM 變成可用的 agent,通常會碰到三層工程問題。這三層對應的是不同工程位置,不是單純用「一次 call」或「多次 call」來區分。

💡 Simon Willison 2025:「coding agent = LLM + harness」、harness = 所有不是 model 本身的程式碼。

💡 OpenAI 2026 也使用 "Harness Engineering" 這個說法(見 OpenAI Harness Engineering article、2026-02 發布)。

層級工程的對象在哪學
1. Prompt Engineering送進 LLM 的字串(system prompt / few-shot / 格式)Stage 2
2. Context Engineering視窗裡裝的資訊(RAG / memory / tool defs / history 組裝)Stage 6
3. Harness Engineering
本節
模型外圍的執行與控制層(loop / retry / sandbox / observability / 部署)本 stage

怎麼分辨自己在做哪一層?問

  1. 我改的是字串本身嗎?→ Prompt engineering
  2. 我改的是塞進視窗的資訊嗎?→ Context engineering
  3. 我改的是呼叫模型的外圍程式嗎?→ Harness engineering

→ 三層正交:1 次 call 的 RAG app 也在做 context engineering(重點是組視窗);50 次 call 但沒做 retrieval 的 chatbot 仍只在做 prompt engineering。

Harness 的 8 個核心元件

Harness Engineering(Agent 執行系統設計)= 把 LLM、tools、memory、state、workflow control、retry、safety、eval、observability 與 deployment 串成一套可執行、可觀測、可維護的 agent 系統

→ 所有不屬於 model weights、也不只是 prompt string 本身的工程元件都算 harness 範圍。一個 production-grade agent runtime 包含這 8 個核心元件(前 6 個是 runtime 內建、第 7 個 eval 是外掛工具、第 8 個 cost / latency 是跨層議題):

元件做什麼對應本 stage 練習
Agent loop「LLM → tool → result → LLM」迴圈、穩定處理多輪練習 1 multi-agent 辯論
Tool registry動態 tool dispatch、permission gate、sandboxing(在每個 framework / SDK 都有)
Context managermessage history 管理、context window 控制、auto-compactStage 6 + 本 stage 練習 4 SDK
Safety layerpermission prompts、sandboxed exec、destructive op 攔截(Claude Code 內建、SDK 可自訂)
Retry / recoverytool fail 怎麼處理(exception vs LLM 自己看 error 反思)練習 4 SDK 進階
Telemetry / Observabilitymetrics、logging、token counting、trace export練習 3 Observability
Eval harnessregression test、quality gate、A/B test練習 2 Eval
Cost / Latency optimization ⭐ 2024-2026 必修prompt caching、model routing、thinking budget、batching、semantic cache練習 6 Cost optimization(新加)

Framework vs Harness 關鍵差別

  • FrameworkStage 4)規範 API — 你呼叫的介面長什麼樣
  • Harness(本節)規範 runtime — 怎麼跑、怎麼 recovery、怎麼觀測

參考實作

想看 production-grade harness 長什麼樣?兩個 reference:

  • Claude Code 整個 runtime — 是 reference harness 實作。讀 source 練習見 Stage 5.6(clone claude-agent-sdk-python 解剖 main loop + 上表前 6 個 runtime 元件位置;第 7 個 Eval harness 是外掛、第 8 個 Cost / Latency 是 cross-cutting、見下方深入段)
  • anthropics/claude-agent-sdk-python source — 上面練習用的具體 repo

→ 本 stage 剩下的 6 個練習(multi-agent / eval / observability / SDK / deploy / cost)每個都是 harness 的一個面向。學完整 stage = 拼出完整的 harness engineering mental model。

第 8 個核心元件深入 — Cost / Latency Optimization(2024-2026 Production 化必修)

Production agent 跑久了、cost / latency 兩條線會吃掉你大半預算與使用者體驗。2024-2026 前沿模型都把這當 first-class API feature——會用 = 省 50-90% cost / latency

技巧怎麼省2026 狀態
Prompt caching重複 prefix(system prompt、long context)一次計費、後續 cache hit 折扣 ~90%Anthropic / OpenAI / Gemini 全支援、自動或手動標記
Model routing / cascade簡單 query → 小 model、難 query → 前沿模型RouteLLM / OpenRouter production 內建
Thinking budgetreasoning model 可控 thinking token 上限、trade latency / qualityClaude / Gemini API 參數、o-series 預設高
Speculative decoding小 model 預測 N token、大 model 一次驗證、單 model 速度 ×2-3vLLM / TGI 內建、推論層自動
Batching多 query 並行處理、GPU 利用率高vLLM、production inference layer
Semantic caching相似 query 共用回答(不只 exact match)GPTCache / Helicone 內建

Track A 怎麼用(用 CLI agent 的人):

  • 在 Claude Code / Cursor 設定 prompt caching、daily session 省 50-90% cost
  • RouteLLM / OpenRouter 動態切換 model(簡單問用 Haiku / Flash、難問用 Opus / Pro)
  • Claude API 用 thinking_budget 參數控 reasoning model 的 token 上限

Track B 怎麼 build(自己寫 agent 的人):

  • 自架 cascade router、把 query embedding → classifier → model 對應
  • 在 agent loop 內監控 token cost、超 budget 自動降級
  • 部署到可用環境時整合 semantic cache 層
  • Helicone / langfuse 等 observability 平台都已內建這幾招、不用自己寫

🛠 動手練習(基礎 illustrative 練習)

練習 1:Multi-Agent 辯論

兩個 agent 辯論一個題目(例如「該用 Python 還是 Rust 寫 backend」),第三個 agent 當裁判。觀察辯論收斂或分歧的 pattern。

練習 2:Eval

替你前面的 agent 寫一份 eval,跑 N 次量成功率。把「我用眼睛看一下」的習慣換掉。

練習 3:Observability

把 LangSmith、Helicone、或 weave 接上一個 agent,看完整 trace。理解「沒 observability 的 agent debug = 黑盒」。

練習 4:SDK 進階

在同一次呼叫裡用 streaming + prompt caching + tool use。看成本怎麼降下來。

練習 5:Deploy

把一個 agent 包進 Docker,deploy 到雲端(任何 provider 都行)。學會把 prototype 變成可以給別人跑的東西。

練習 6:Cost Optimization(新加)⭐

量你前面任一個練習 agent 的 token cost、加上 prompt caching、再量一次。觀察 cache hit rate 跟 cost 下降的對應關係。Bonus:接 RouteLLMOpenRouter、做 cascade routing(簡單 query → Haiku / 難 query → Opus),量平均 cost。

📊 Agent Benchmark Landscape:怎麼看,不要只看排行榜 + ⚠ Reward-Hacking 警告

挑 model / 打造 agent 之前、你會想看 benchmark 數字——但 2026-04 UC Berkeley 發現 8 個主流 agent benchmark 全部可被 reward-hack 到 ~100%。下面是 2026 leaderboard 現況 + 怎麼看不被騙。

主流 Agent Benchmark 2026-05 SOTA

Benchmark領域2026-05 SOTA領先 Model
SWE-bench Verified軟工 / code agent87.6%Claude Opus 4.7
Terminal-Benchterminal 任務領先Claude Opus 4.5 / 4.7
GAIAgeneral assistant74.6%Claude Sonnet 4.5(Princeton HAL)
WebArenaweb 導航68.7%Claude Mythos Preview
OSWorldOS-level 桌面控制76.26%(SOTA、superhuman vs human 72.36%)OpenAI CUA 38%、多數 frontier 仍卡 50% 以下
τ-benchtool use 多輪對話(較難 hack)Anthropic / OpenAI 領先
RE-benchresearch engineering(較難 hack、接近人類 baseline)Frontier model

→ 詳細排行 + 即時更新:Agent Benchmark Leaderboard 2026Rapid Claw AI Agent Framework Scorecard 2026

⚠ Berkeley 2026-04 Reward-Hacking 警告

UC Berkeley RDI 2026-04-12 報告:用 automated scanning agent 系統性 audit 8 個主流 benchmark(SWE-bench / WebArena / OSWorld / GAIA / Terminal-Bench / FieldWorkArena / CAR-bench 等)、每個都能 reward-hack 到接近 100%、agent 一個 task 都不用真正解

意思:leaderboard 上「Claude 87.6% / GPT 85.0%」這種數字、可能其中 X% 是 hack 出來的、不是真的解 task。

怎麼看 benchmark 不被騙

看數字方式推薦
只看 leaderboard top❌ 上面 8 個都被證實可 hack
看 task-level success rate breakdown✅ 多數 hack 集中少數 task
跑你自己的 hold-out test set✅✅ 最可靠、production agent 必做
看 trajectory / log 是否真的解 task✅ 區分 reward hacking vs genuine solve
看多個 benchmark + 自己 use case✅ 不依賴單一指標

哪些 benchmark 較難 hack(2026-05)

  • τ-bench — 多輪對話 + tool use、reward function 較密集
  • RE-bench — research engineering 真實任務
  • 你自己的 production eval set ⭐ 永遠是最可靠的

💡 production agent 的 eval 紀律

  • 不要把外部 benchmark 數字當 ground truth、它告訴你「上限」不是「真實表現」
  • 你自己的 eval set(內部 hold-out test)才是上線決策的依據
  • 每次 model upgrade → 跑內部 eval set 驗證、不只看廠商公布的 benchmark 提升
  • langfuse / promptfoo 把 eval 自動化、每次 deploy 都跑

🎯 常用 Multi-Agent / Production 工具推薦(按用途分類)

不知道從哪挑工具?下面是 2025-2026 業界常用搭配——挑入口看「場景」、想深入點連結看 repo

場景推薦工具為什麼
第一次寫 multi-agent(最快上手)crewAIrole-based、幾行 code 跑起來、production pattern 直接
想要 group debate / brainstorm patternAutoGenGroupChat 自由辯論、Microsoft 出品
production 要 audit trail / checkpoint / human-in-loopLangGraphstate machine、控制最完整
eval 標準化(CI / regression 必裝)promptfooYAML config、跨模型比較、★ 20k+
eval + observability 同平台langfuseOSS、tracing + eval + prompt mgmt、★ 26k+
不改程式、快速 instrumentationHeliconeproxy 中介、不綁 framework
全 stack 在 LangChainLangSmith(商業)LangChain 官方 observability
打造 Claude agent(programmatic)claude-agent-sdk-pythonAnthropic 官方 agent SDK、跟 Claude Code 同 runtime
Deploy agent 成 API serviceBentoML最完整、Docker + serving
自架開源 LLM(取代付費 API)vLLM高吞吐量、★ 79k+
Fine-tune 開源 LLMLLaMA-Factory100+ 模型統一 SFT/DPO/PPO/GRPO、Web UI 零程式碼、中文社群最廣、★ 70k+

建議入手順序

  1. 第一個 multi-agent:crewAI(role-based、最簡單)
  2. 加 eval:promptfoo(YAML、CI 整合)
  3. 加 observability:langfuse(OSS、完整)
  4. Production 升級:換 LangGraph(control 強)+ BentoML(deploy)
  5. 進階:自架 LLM 接 vLLM、fine-tune 用 LLaMA-Factory

🎯 精選 Projects(範本 / SDK / 工具 collection)

按用途分類、22 個項目一張表搞定。挑入口看「適合誰」、想深入點連結看 repo

分類Project適合誰為什麼推薦 / 備註
Multi-Agent Orchestrationmicrosoft/autogen⭐⭐⭐⭐⭐想要 GroupChat 自由 debate patternStage 4 介紹過、production 場景再回頭看 multi-agent 辯論 / brainstorming 模式
crewAIInc/crewAI⭐⭐⭐⭐⭐想要 role-based 流水線角色式 multi-agent(research → writer → reviewer),最簡單 production pattern
langchain-ai/langgraph⭐⭐⭐⭐⭐需要 audit trail / checkpoint / human-in-the-loopstate machine 路線、production 控制最強
Eval Frameworkspromptfoo⭐⭐⭐⭐⭐把 eval 流程標準化、CI 整合YAML config、跨模型比較。★ 20k+、MIT
lm-evaluation-harness⭐⭐⭐⭐學術 benchmark 主張(MMLU / HellaSwag / GSM8K)學術等級。★ 12k+、MIT
openai/evals⭐⭐⭐⭐OpenAI 專屬 eval / 想回饋上游★ 18k+
Observabilitylangfuse⭐⭐⭐⭐⭐自架 production observabilityOSS LangSmith 替代、traces + sessions + evals + prompt mgmt。★ 26k+、MIT
LangSmith(商業)⭐⭐⭐⭐全 stack 在 LangChain / LangGraph 上LangChain 官方、只有 hosted 版
Helicone⭐⭐⭐⭐不想改程式、快速上 instrumentationproxy 中介、順便拿到 logging + caching。★ 5.7k+、Apache 2.0
weave (W&B)⭐⭐⭐⭐團隊已在用 W&B 做 ML 實驗追蹤W&B tracing + eval、跟 wandb 整合
Anthropic SDK 進階anthropic-sdk-python⭐⭐⭐⭐⭐直接基於 Claude API 做應用官方 Python SDK:streaming / async / tool use / prompt caching / batches / files
anthropic-sdk-typescript⭐⭐⭐⭐TypeScript / Node / web appPython SDK 的 TS 版
claude-agent-sdk-python⭐⭐⭐⭐⭐打造 Claude-based agent 而非只 API內建 tool use loop / file access / sandbox / subagent 編排;跟 Claude Code 同 runtime、想看內部運作直接讀 source。★ 6.9k+、MIT
claude-agent-sdk-typescript⭐⭐⭐⭐Node / web app 環境 Claude agentClaude Agent SDK TS 版。★ 1.4k+
Anthropic Cookbook(進階)⭐⭐⭐⭐想看官方進階 SDK pattern特別是 prompt_caching.ipynb / tool_use/ / multimodal/ 三個 notebook
DeploymentBentoML⭐⭐⭐⭐把 agent 包成 production API serviceDocker + serving framework。★ 8k+、Apache 2.0
LangServe⭐⭐⭐⭐LangChain agent 快速 deploy底層 FastAPI
vLLM⭐⭐⭐⭐自架開源 LLM 取代付費 API高吞吐量 LLM serving、Llama / Qwen 等。★ 79k+、Apache 2.0
中文 deploy / fine-tunedatawhalechina/self-llm⭐⭐⭐⭐中文團隊要自架開源 LLMtraining-to-deployment 完整中文指南、Qwen / Llama / GLM / 多模態。★ 30k+、Apache 2.0
hiyouga/LLaMA-Factory⭐⭐⭐⭐⭐要 fine-tune 開源 LLM(不只 prompt eng)100+ 模型統一 SFT/DPO/PPO/GRPO、Web UI 零程式碼、中文社群最廣。★ 70k+、Apache 2.0
Multi-Agent 案例研究geekan/MetaGPT⭐⭐⭐⭐⭐想看角色分工 + artifact 交接 patternSOP-based PM / Architect / Engineer multi-agent team、PRD → 設計 → code 一路產出。★ 67k+、MIT
OpenBMB/ChatDev⭐⭐⭐⭐想看 agent debate / peer-review pattern對話式軟體開發、agents 在 design / code / test 互相辯論。★ 33k+、Apache 2.0、有 zh README
princeton-nlp/SWE-agent⭐⭐⭐⭐理解為什麼 tool 設計 > prompt tuningAgent-Computer Interface (ACI) 設計思路、Princeton paper-backed、SWE-Bench 領先方法。★ 19k+、MIT

🌳 Claude 原生 subagent 機制(不用 framework 也能 multi-agent)見 Stage 5.5。本 stage 重 framework / production;Stage 5.5 重 markdown-based subagent 編排。

✅ Stage 7 之後的自我檢查

你能不能:

  • 設計一個 multi-agent 系統,協作協定講得清楚
  • 在 CI 跑自動 eval pipeline
  • 把 observability(tracing)接到 production agent
  • 在真實 workload 上量測 prompt caching 前後的成本差異
  • 把 agent deploy 到雲端(任何 provider)

如果都可以 → 先進 Stage 7.5 — 進階 Agentic 概念地圖(1 週、不寫 code、建立 frontier 概念地圖、定位業界還在討論哪些進階概念),再進 Stage 8 — Agent Interfaces兩 track 共用 hub)學 agent 怎麼跟非 API 世界互動(Computer Use / Browser Use / Sandbox)。或挑一個特化分支、或回過頭來貢獻這份 repo。

💡 接下來

你已經有基礎能力了。接下來 6-12 個月應該專注在:

  1. 挑一個 production 系統 從 prototype 推到 production
  2. 回饋上游(LangGraph、AutoGen、MCP servers、Anthropic cookbook)
  3. 讀論文——agent 研究進展很快
  4. 做出看得到的東西——開源一個真的工具、不要只停留在寫教學

繁體中文 | 简体中文 | English

7 步打造你的第一個 AI Agent

← 回主路線 README

📌 這份是給 Track B(Agent Builder)的——教你從零寫一個 agent。 走 Track A(CLI Power User) 的人不需要跑這份;但讀過之後對「agent 從 LLM API 到 production 怎麼一步步組起來」會有更深的理解,可作為 optional 進階補充。

這是一份跨 7 個 stage 的具體 walkthrough——同一個 agent,從 Stage 1 寫到 Stage 7,每個 stage 都附可執行的程式碼骨架。

怎麼讀這份:每一節都是上一節的延伸。後面 stage 的 snippet 預設你已經有前面 stage 的檔案在同一個資料夾。要實際跑:

  1. 照 Stage 0 設好環境
  2. 每個 stage 開新檔案(step1_*.pystep2_*.py...)
  3. 後面 stage 用 from step1_xxx import ... 引用前面寫的東西

所有依賴一次裝完:pip install anthropic openai requests beautifulsoup4 langgraph langchain-anthropic langchain-core chromadb langfuse fastapi uvicorn pydantic

要做的 agent:Paper Summary Bot — 給定一個 arXiv 論文 URL,輸出 3 段摘要 + 5 個關鍵詞 + 跟相關論文的比較。

每個 stage 都會把同一個 agent 加一層能力。最後它會是一個跨多 LLM、有 memory、能 deploy 的 agent。


📋 全程概覽

Stage你會加的能力程式碼複雜度
0環境準備(Python、API key、git)
1第一次呼叫 LLM API~10 行
2寫一個專業的 prompt~20 行
3Tool use:自動抓取 arXiv 論文~80 行
4用 framework 重寫,加上 reflection~40 行(framework 抽象掉細節)
5包成 Claude Code SkillSKILL.md + 30 行
6加 RAG memory:跟過去看過的論文比較~60 行
7加 eval、observability、deploy~100 行

總計:約 350 行 Python + 結構化設定 = 一個你看著它從零長到 production 的具體例子。


Stage 0 — 環境準備

# 安裝 Python 3.11+
python --version

# 建虛擬環境
python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate

# 安裝所有 stage 會用到的套件(一次裝完,後面 stage 不會再 pip install)
pip install anthropic openai requests beautifulsoup4 \
            langgraph langchain-anthropic langchain-core \
            chromadb langfuse fastapi uvicorn pydantic

# Claude API key(去 console.anthropic.com 申請)
export ANTHROPIC_API_KEY="sk-ant-..."

# 建 repo
mkdir paper-summary-bot && cd paper-summary-bot
git init
echo ".env\n.venv/\n__pycache__/" > .gitignore

檢查點:你應該能跑 python -c "from anthropic import Anthropic; print('OK')" 而不報錯。


Stage 1 — 第一次呼叫 LLM

# step1_hello_llm.py
from anthropic import Anthropic

client = Anthropic()

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=500,
    messages=[{
        "role": "user",
        "content": "請用 3 句話介紹什麼是 ReAct agent。"
    }]
)

print(response.content[0].text)
print(f"\n--- Tokens: input={response.usage.input_tokens}, "
      f"output={response.usage.output_tokens} ---")

跑:python step1_hello_llm.py

學到什麼:API call 的長相、messages 結構、usage 怎麼算 token。


Stage 2 — 寫專業的 prompt

# step2_paper_summary.py
from anthropic import Anthropic

client = Anthropic()

SYSTEM_PROMPT = """你是學術論文摘要助手。你的任務:

1. 用 3 段摘要描述論文:(a) 動機、(b) 方法、(c) 結果。
2. 列出 5 個關鍵詞。
3. 用條列點出 2-3 個跟主流方法的差別。

格式要求:
- 每段摘要 ≤ 60 字
- 關鍵詞用英文(technical term)
- 整體 300 字以內
- 不要瞎掰;不知道就說「論文沒提到」"""

PAPER_TEXT = """[論文 abstract 貼這裡]"""

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=800,
    system=SYSTEM_PROMPT,
    messages=[{"role": "user", "content": PAPER_TEXT}]
)

print(response.content[0].text)

學到什麼:system prompt 跟 user message 分工、明確格式要求、防 hallucinate 的「不知道就說沒提到」。


Stage 3 — Tool use:自動抓論文

# step3_tool_use.py
import requests
from anthropic import Anthropic
from step2_paper_summary import SYSTEM_PROMPT  # 上一個 stage 寫的

client = Anthropic()

# 定義 tool
TOOLS = [{
    "name": "fetch_arxiv",
    "description": "Fetch arXiv paper abstract by URL",
    "input_schema": {
        "type": "object",
        "properties": {
            "arxiv_url": {"type": "string"}
        },
        "required": ["arxiv_url"]
    }
}]

def fetch_arxiv(arxiv_url: str) -> str:
    """Tool 實作。"""
    arxiv_id = arxiv_url.split("/")[-1].replace(".pdf", "")
    api_url = f"http://export.arxiv.org/api/query?id_list={arxiv_id}"
    r = requests.get(api_url)
    # 簡化:實際要 parse XML
    return r.text[:5000]

# ReAct loop
def run_agent(user_query: str):
    messages = [{"role": "user", "content": user_query}]
    
    while True:
        response = client.messages.create(
            model="claude-sonnet-4-6",
            max_tokens=2000,
            tools=TOOLS,
            messages=messages,
            system=SYSTEM_PROMPT,  # 從 Stage 2 來
        )
        
        # 沒有更多 tool 要呼叫 → done
        if response.stop_reason == "end_turn":
            return response.content[-1].text
        
        # 處理 tool call
        tool_use = next(b for b in response.content if b.type == "tool_use")
        if tool_use.name == "fetch_arxiv":
            result = fetch_arxiv(**tool_use.input)
            messages.append({"role": "assistant", "content": response.content})
            messages.append({
                "role": "user",
                "content": [{
                    "type": "tool_result",
                    "tool_use_id": tool_use.id,
                    "content": result,
                }]
            })

# 跑
print(run_agent("摘要這篇論文:https://arxiv.org/abs/2210.03629"))

學到什麼:tool schema 怎麼寫、ReAct loop 怎麼運作、stop_reason 怎麼判定結束、tool_result 怎麼回傳給 LLM。

這是 Stage 3 最大的躍進——你的程式從「呼叫 LLM」變成「LLM 呼叫你的程式」。


Stage 4 — 用 framework + 加 reflection

裝套件pip install langgraph langchain-anthropic langchain-core

用 LangGraph 重寫,加一個「self-review」node:

# step4_langgraph.py
from typing import TypedDict, Annotated
from langgraph.graph import StateGraph, END
from langgraph.prebuilt import create_react_agent
from langgraph.graph.message import add_messages
from langchain_anthropic import ChatAnthropic
from langchain_core.tools import tool
from langchain_core.messages import HumanMessage

@tool
def fetch_arxiv(arxiv_url: str) -> str:
    """Fetch arXiv paper abstract."""
    # 同 Stage 3 的實作
    import requests
    arxiv_id = arxiv_url.split("/")[-1].replace(".pdf", "")
    r = requests.get(f"http://export.arxiv.org/api/query?id_list={arxiv_id}")
    return r.text[:5000]

class State(TypedDict):
    messages: Annotated[list, add_messages]
    revisions: int  # 防止無限 loop

llm = ChatAnthropic(model="claude-sonnet-4-6")
react_agent = create_react_agent(llm, tools=[fetch_arxiv])

MAX_REVISIONS = 2

def reflect(state: State) -> State:
    """讓 LLM 評估前一輪的摘要,並決定是否要再改。"""
    last_summary = state["messages"][-1].content
    
    # 用一個明確的 yes/no 判定,不要靠關鍵字 match
    review_prompt = (
        f"以下摘要是否符合:3 段、各 ≤60 字、5 個英文關鍵詞、不瞎掰?\n\n"
        f"{last_summary}\n\n"
        "請只回答 PASS 或 NEEDS_REVISION,不要解釋。"
    )
    verdict = llm.invoke(review_prompt).content.strip().upper()
    
    return {
        "messages": [HumanMessage(content=f"[Reviewer 判定: {verdict}]")],
        "revisions": state.get("revisions", 0) + 1,
    }

def should_continue(state: State) -> str:
    """判斷下一步去 agent 還是 END。"""
    last_msg = state["messages"][-1].content
    if state["revisions"] >= MAX_REVISIONS:
        return END  # 達到上限,無條件退出
    if "NEEDS_REVISION" in last_msg:
        return "agent"  # 回去重做
    return END  # PASS 就退出

# 組 graph
graph = StateGraph(State)
graph.add_node("agent", react_agent)
graph.add_node("reflect", reflect)
graph.add_edge("agent", "reflect")
graph.add_conditional_edges("reflect", should_continue, {"agent": "agent", END: END})
graph.set_entry_point("agent")
app = graph.compile()

# 跑
result = app.invoke({
    "messages": [HumanMessage(content="摘要 https://arxiv.org/abs/2210.03629")],
    "revisions": 0,
})
print(result["messages"][-1].content)

學到什麼:framework 抽掉的東西(while loop、message 結構、tool 註冊)、graph 怎麼定義條件分支跟正確的終止條件、reflection pattern 怎麼讓 agent 在限定回合內 self-correct(不會無限 loop)。

注意:Stage 4 之後不再示範 LangGraph 內部 state 細節——後面 stage 把 LangGraph agent 當黑盒用即可。


Stage 5 — 包成 Claude Code Project Skill

這一步不是 Python,是把前面 Stage 1-4 的邏輯,重新包成 Claude Code 自己會載入的 project skilldescription 寫得清楚的話,Claude 會在使用者提到相關需求時自動觸發。

在你 repo 內建立:

your-repo/
└── .claude/
    └── skills/
        └── paper-summary/
            └── SKILL.md

SKILL.md 內容:

---
name: paper-summary
description: 摘要 arXiv 論文。當使用者貼 arXiv URL、提到論文 ID(如 2210.03629),或要求「summarize this paper / 摘要論文」時觸發。輸出 3 段摘要 + 5 個關鍵詞 + 與主流方法差別。
---

# Paper Summary Skill

## What this does
摘要 arXiv 論文成結構化的 3 段 + 關鍵詞 + 差異點。

## When Claude should use this
使用者:
- 貼 arXiv URL(`https://arxiv.org/abs/...` 或 `arxiv.org/pdf/...`)
- 提到具體論文(標題或 ID)並要 summary / 摘要 / 重點
- 問「這篇論文跟其他方法差在哪」

## How to do it
1. 從 URL 抓 paper 內容(用 Claude Code 內建的 WebFetch tool;或在使用者貼了 PDF 時用 Read tool)
2. 套用以下 prompt 結構:
   - 動機(≤60 字)
   - 方法(≤60 字)
   - 結果(≤60 字)
   - 5 個英文 keyword
   - 2-3 點跟主流方法的差別
3. 不確定的內容回「論文沒提到」,不要瞎掰

## References
- `references/example-summaries.md` — 3 個範例輸出,照這個風格寫

放好後,在這個 repo 裡開 Claude Code——project-level skill 會自動載入(不需要安裝指令)。Claude 看到 description 跟使用者輸入吻合就會用這個 skill。

驗證它是否生效:在 Claude Code 對話裡貼 https://arxiv.org/abs/2210.03629,看 Claude 是不是按你定義的格式回應。

學到什麼:project skill 跟 plugin marketplace skill 的差別(這個是 project-level、進到 repo 就生效;plugin 是另一個層級的安裝)、description 是觸發機制(不是 magic 的 trigger_phrases 欄位)、references/ 怎麼支援更長的 example。

進階:如果想把這個 skill 包成可分享的 plugin(讓別人也能裝在自己的 Claude Code),參考 Stage 5.4 Plugins & Marketplaces。本 walkthrough 不展開 plugin 打包流程。


Stage 6 — 加 RAG memory

讓 agent 記得它看過的論文,新論文進來時跟過去的比較。

# step6_memory.py
import chromadb
from chromadb.utils import embedding_functions
from langchain_anthropic import ChatAnthropic

llm = ChatAnthropic(model="claude-sonnet-4-6")

# 開一個本地 vector DB
chroma = chromadb.PersistentClient(path="./paper_memory")
embed_fn = embedding_functions.DefaultEmbeddingFunction()
collection = chroma.get_or_create_collection(
    name="papers",
    embedding_function=embed_fn,
)

def store_paper(arxiv_id: str, summary: str):
    """把摘要存進 vector DB."""
    collection.add(
        documents=[summary],
        ids=[arxiv_id],
        metadatas=[{"arxiv_id": arxiv_id}],
    )

def find_similar(query_summary: str, top_k: int = 3) -> list[dict]:
    """找跟新論文最像的 3 篇。"""
    results = collection.query(query_texts=[query_summary], n_results=top_k)
    return [
        {"id": id_, "summary": doc}
        for id_, doc in zip(results["ids"][0], results["documents"][0])
    ]

# 修改 Stage 4 的 agent,加上 compare_with_memory step:
def compare_with_memory(state):
    new_summary = state["messages"][-1].content
    similar = find_similar(new_summary, top_k=3)
    
    if not similar:
        return {"comparison": "(資料庫裡沒有相關論文)"}
    
    compare_prompt = f"""新論文摘要:{new_summary}
    
資料庫中最像的 3 篇:
{chr(10).join(f"- {p['id']}: {p['summary'][:200]}" for p in similar)}

請點出新論文的 2-3 個 unique contribution(跟以上不重疊的部分)。"""
    
    response = llm.invoke(compare_prompt)
    
    # 存新論文進 memory
    store_paper(arxiv_id="...", summary=new_summary)
    
    return {"comparison": response.content}

compare_with_memory 接進 Stage 4 的 graph:

# step6_memory.py 接續上面
from step4_langgraph import State, react_agent, reflect, should_continue, MAX_REVISIONS
from langgraph.graph import StateGraph, END

graph = StateGraph(State)
graph.add_node("agent", react_agent)
graph.add_node("reflect", reflect)
graph.add_node("compare", compare_with_memory)  # 新加的 node
graph.add_edge("agent", "reflect")
graph.add_conditional_edges("reflect", should_continue, {"agent": "agent", END: "compare"})
graph.add_edge("compare", END)
graph.set_entry_point("agent")
app_with_memory = graph.compile()

學到什麼:vector DB 怎麼用、embedding 跟相似度查詢、把 agent 從「stateless」變成「有記憶」、persistent storage 的設計、graph 怎麼擴新 node 而不重寫前面的邏輯。


Stage 7 — Eval + Observability + Deploy

7.1 Eval (promptfoo)

npm install -g promptfoo

Promptfoo 的 Python provider 要的是「可呼叫的 function」,不是 module 變數。所以先包一個薄 wrapper:

# eval_provider.py
"""Promptfoo Python provider — 給 promptfoo 呼叫的 function。"""
from step2_paper_summary import SYSTEM_PROMPT
from step3_tool_use import run_agent  # Stage 3 寫的 ReAct loop


def call_api(prompt: str, options: dict, context: dict) -> dict:
    """Promptfoo 會傳 vars(context['vars'])+ prompt 進來。"""
    paper_url = context["vars"]["paper_url"]
    output = run_agent(f"請摘要這篇論文:{paper_url}")
    return {"output": output}
# promptfooconfig.yaml
prompts:
  - "請摘要:{{paper_url}}"

providers:
  - id: file://eval_provider.py
    label: paper-summary-agent

tests:
  - description: "ReAct paper"
    vars:
      paper_url: "https://arxiv.org/abs/2210.03629"
    assert:
      - type: contains
        value: "Reasoning"
      - type: llm-rubric
        value: "回應包含 5 個英文關鍵詞、每段不超過 60 字"
  - description: "RAG paper"
    vars:
      paper_url: "https://arxiv.org/abs/2104.08663"
    assert:
      - type: contains
        value: "retrieval"

跑:promptfoo eval && promptfoo view

7.2 Observability (langfuse)

pip install langfuse 環境變數(去 cloud.langfuse.com 申請):

export LANGFUSE_PUBLIC_KEY="pk-lf-..."
export LANGFUSE_SECRET_KEY="sk-lf-..."
export LANGFUSE_HOST="https://cloud.langfuse.com"  # 或自架的 URL
# step7_observability.py
from langfuse.decorators import observe
from step3_tool_use import run_agent  # 前面 stage 的 agent

@observe(name="paper-summary-agent")
def run_paper_agent(arxiv_url: str) -> str:
    return run_agent(f"摘要 {arxiv_url}")

if __name__ == "__main__":
    out = run_paper_agent("https://arxiv.org/abs/2210.03629")
    print(out)

跑完之後到 Langfuse dashboard 看每次呼叫的 trace、cost、latency、tool use。

7.3 Deploy(Docker + FastAPI)

pip install fastapi uvicorn pydantic

# main.py
from fastapi import FastAPI
from pydantic import BaseModel
from step7_observability import run_paper_agent  # 用 Langfuse 包過的版本

app = FastAPI()

class PaperRequest(BaseModel):
    arxiv_url: str

@app.post("/summarize")
def summarize(req: PaperRequest):
    return {"summary": run_paper_agent(req.arxiv_url)}
# requirements.txt
anthropic
requests
langgraph
langchain-anthropic
langchain-core
chromadb
langfuse
fastapi
uvicorn
pydantic
# Dockerfile
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
docker build -t paper-summary-bot .
docker run -p 8000:8000 \
  -e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
  -e LANGFUSE_PUBLIC_KEY=$LANGFUSE_PUBLIC_KEY \
  -e LANGFUSE_SECRET_KEY=$LANGFUSE_SECRET_KEY \
  paper-summary-bot
# 或 deploy 到 Cloud Run / Fly.io / Railway / 自家 K8s

學到什麼:eval 怎麼當回歸測試、observability 怎麼讓你 debug production agent、把 agent 從 script 變成 service。


✅ 完整 walkthrough 之後你應該能:

  • 從零打造 ReAct agent(Stage 3)
  • 用 framework 重寫並加進階 pattern(Stage 4)
  • 把 agent 包成 Claude Code skill(Stage 5)
  • 加 RAG memory 讓 agent 變成有狀態(Stage 6)
  • 寫 eval + 接 observability + deploy(Stage 7)

這個範例的程式碼大約 350 行——比一般的 framework example 多,但每一行都是真的會用到的。


🚧 進階延伸

如果你想再玩更深,這個 paper-summary-bot 可以延伸成:

  • Multi-agent paper review:兩個 agent 分別當 supportive reviewer 跟 adversarial reviewer,第三個 agent 當 area chair → for-researcher branch
  • Conference report generator:給定一個 conference proceedings URL,產出每個 track 的高層摘要 → 知識工作者 branch
  • 同主題論文趨勢追蹤:每週掃 arXiv,找新論文跟現有 memory 比較,產 weekly digest → 個人助理 branch

每條都對應一個 specialized branch。


💡 維護這個 walkthrough

這個範例會隨時間更新——SDK 介面變化、framework 演進、最佳實踐改變。如果你發現某段程式碼跑不起來:

  1. 先在 issue 裡回報具體錯誤訊息 + 你的環境(Python 版本、套件版本)
  2. PR 修正請說明「為什麼這樣改」
  3. 不要把這份檔案改成只 demo 你最熟悉的 framework——這份是給多元 framework 學習用的

研究者延伸路線(For Researchers)

繁體中文 | 简体中文 | English

🚀 計算型研究者(會跑 Python script、有 API key、會用 git)可直接進階;非程式背景研究者(人文社科、臨床研究、文獻為主)可先從文獻 Q&A(NotebookLM)、Zotero AI 工具開始、需要時再看 resources/setup-guide.md A-C

← 回主路線 README · 走完 Track A 的 A3Track B 的 Stage 7 後從這裡接續。把 agentic AI 應用到研究流程上。

使用情境(研究階段 × AI 怎麼幫)

研究者一天分成幾個階段、AI 在每個階段的角色不同。下表幫你定位:

階段你常遇到的痛點AI 能幫的部分推薦工具(從輕到重)
文獻探索不知道某個領域有哪些經典 paper推薦 + 摘要 + 比較NotebookLM → paper-qa → gpt-researcher
文獻精讀PDF 翻一半就忘 / 抓不到 claim抓 claim、figure、citation、做筆記Zotero + zotero-gpt → zotero-skills
研究設計RQ 模糊、不知選哪個 method對話釐清、列出 trade-offClaude.ai 對話 → ai-research-skills
實驗 / 寫程式重複 boilerplate、寫 plot 浪費時間寫 / 改 code、batch refactorClaude Code → codex-delegate
論文撰寫草稿卡關、句子不通大綱 → 段落 → 潤色Claude.ai → gemini-delegate(長稿)
改稿 / 投稿期刊規範一堆、容易漏banned-word / figure-text / submission checklistacademic-writing-skills
跨 paper synthesis5 篇 paper 互相對話、context 爆1M token 一次讀完 + 整理gemini-delegate

💡 計算型 vs 非程式背景:表中「推薦工具」由輕到重——非程式背景研究者先停在每行第一個就夠了;計算型研究者要自動化才往後挑。

精選 Projects

💡 想把 Claude Code 接到 NotebookLM、Obsidian、Notion、Excel、PDF、Excalidraw 等研究常用工具? 62 個整合在 resources/mcp-skills-catalog.md(按使用情境分類)。下面這節保留「研究專屬」的工具與 marketplace。

研究流程 Marketplace

flonat/claude-research ⭐⭐⭐

給博士研究者的 Claude Code 基礎建設——學術流程用的 skill、agent、hook、規則。LaTeX / 文獻管理為主。


文獻 RAG / Q&A

Future-House/paper-qa ⭐⭐⭐⭐⭐

欄位內容
Stars★ 8k+
LicenseApache-2.0

教什麼:對 PDF 文件以 citation-grounded Q&A 為設計目標——每個答案附句子層級的引用、減少幻覺風險。實際準確率依文件類型而異、評測結果以官方 benchmark / paper 為準。

適合誰:寫文獻回顧、需要「查文獻時答案要可追溯」的研究者。比一般 RAG 更嚴謹。


assafelovic/gpt-researcher ⭐⭐⭐⭐

欄位內容
Stars★ 27k+
LicenseApache-2.0

教什麼:自主 deep-research agent——planner + multi-source crawl + report 合成。給定一個研究主題,自動產出 markdown / PDF brief。

適合誰:要快速 scope 新題目、產 research brief 的研究者。


大綱與寫作

stanford-oval/storm ⭐⭐⭐⭐

欄位內容
Stars★ 28k+
LicenseMIT

教什麼:multi-perspective outline-then-write pipeline——白話三步:(1) 先模擬不同觀點提出問題、(2) 把問題整理成大綱、(3) 最後生成 Wikipedia-style 草稿。Stanford OVAL 出品。

適合誰:想學「outline-driven 寫作」的人。從零產主題 brief 時的好工具,類似 NotebookLM structured report 流程的開源版。

備註:最後一次推送已超過 6 個月,使用前確認最新 commit 日期。


kaixindelele/ChatPaper ⭐⭐⭐⭐⭐(中文讀者)

欄位內容
語言中文 + Python
Stars★ 19k+
LicenseNOASSERTION(自訂條款,非商用)

教什麼:中文研究者向的 arXiv 全流程工具——論文總結 + 翻譯 + 潤色 + 審稿回覆生成。中國研究團隊維護,預設值對中文場景友善。

適合誰:中文研究生想找對中文友善的 paper 全流程入門工具。

備註:License 是自訂的非商用條款,使用前請先讀原始條款;研究或個人用途常見,但條款還是要自己看過確認。


文獻管理整合

MuiseDestiny/zotero-gpt ⭐⭐⭐⭐

欄位內容
Stars★ 7k+
LicenseAGPL-3.0

教什麼:Zotero 的 LLM plugin——可以跟你的文獻庫對話、總結 selection、生成 inline notes。

適合誰:Zotero 重度使用者,想在閱讀流程裡直接接 AI 而不用切到別的工具。

備註:AGPL-3.0 license(傳染性開源)— 修改後要散布的衍生產品需遵守條款。


Multi-LLM 研究組合(本 repo 維護者的研究 setup)

研究流程裡有些任務 Claude 一個就夠(對話、設計、review),有些 Claude 做會浪費 token(大批 code refactor、長稿 draft)。維護者實際用的搭配是 Claude 當 planner / reviewer、Codex 跑程式、Gemini 跑長稿——下表列何時用哪個:

任務類型例子用哪個 LLM為什麼
研究設計 / 假設討論「這個 RQ 該用 logistic vs survival?」Claude.ai 對話對話協作、context memory
寫 / 改 code「50 個 simulation script 都加 logging」codex-delegate機械式編輯快、不燒 Claude token
寫長稿(中英文)「draft 一個 8 頁 paper section」gemini-delegate1M context、長 prose 強項
Second opinion「請 Gemini 看我的 discussion 段落」gemini-delegateLLM-vs-LLM 對照、容易看出 Claude 自身偏誤
投稿前 audit「跑 banned-word + figure-text checklist」academic-writing-skillsstructured audit、不靠 LLM 即興判斷

維護者自用的 6 個研究 skill

⚠️ 揭露:以下 6 個工具是維護者 @WenyuChiou(Lehigh CEE PhD candidate)日常在用的研究 skills、公開讓有相似需求的人用。未經第三方獨立評測——適合 PhD 學位寫作 / 跨 paper 文獻整理這類流程;不一定適合你的領域。詳細 entry 看 resources/mcp-skills-catalog.md 13 + 14

工具適合階段一句話
ai-research-skills ⭐⭐⭐⭐⭐全流程14 個研究 skill 打包成 5-plugin marketplace、一個指令裝整套
research-hub ⭐⭐⭐⭐文獻整理Zotero + Obsidian + NotebookLM 三工具整合 workspace、CLI / MCP / REST / dashboard 四介面
zotero-skills ⭐⭐⭐⭐文獻管理Zotero CLI skill(搜 / 加 / 分類 / 標記)——跟 zotero-gpt 互補(後者在 Zotero 裡 chat、這份從外部操作)
academic-writing-skills ⭐⭐⭐投稿前banned-word audit、figure-text coupling、submission checklist;per-paper 可自訂 journal_format / style_overrides
codex-delegate ⭐⭐⭐⭐⭐寫程式Claude planner + Codex executor 的標準 skill——batch refactor / boilerplate / migration
gemini-delegate-skill ⭐⭐⭐⭐長稿 / synthesisClaude planner + Gemini 寫 1M context 長文 / CJK / second-opinion

Multi-Agent for Research

langchain-ai/open_deep_research ⭐⭐⭐⭐⭐

欄位內容
Stars★ 11k+
LicenseMIT

教什麼:開源版的 Deep Research——支援單 agent 跟 supervisor + multi-researcher 兩種架構(multi-agent 那條目前在 src/legacy/)、平行搜尋、再合成成有引用的 report。是學「LLM agent 怎麼自動產出有引用 brief」的好參考。

適合誰:要打造「agent 自動產出有引用 brief」工作流程的研究者。是這個分類最 canonical 的開源選擇。

備註:依賴 LangGraph + 搜尋 tool(要 API key)。


SakanaAI/AI-Scientist-v2 ⭐⭐⭐⭐

欄位內容
Stars★ 6k+
LicenseThe AI Scientist Source Code License(source-available,非商用 + 有 manuscript-disclosure 條款)

教什麼:端到端的 multi-agent 科學研究 loop:構想 → 寫程式 → 跑實驗 → 寫 paper → 互審。Sakana AI 的「AI 寫整篇 ML paper」研究實作。

適合誰:想看「多個 agent 跑完整研究 lifecycle 會長什麼樣」的研究者。研究架構參考、不是 production 工具。

備註:產出是 demo 等級(不是直接投稿用),ML / CS 領域偏多。License 是自訂的 source-available 條款(含 manuscript-disclosure 規定),使用前請先讀 LICENSE 檔。


還缺:peer-review 自動化、conference review pipeline 的活躍開源案例。如果你做過或知道有,歡迎開 PR。

必修閱讀

  1. The Effortless Academic — Claude Code beginner guides
  2. Pedro Sant'Anna — Researcher setup guide

必練流程(按使用頻率)

研究者用 AI 的最大誤區是「只在卡關才打開 ChatGPT」。把 AI 變成日常工具的關鍵是設好頻率——下表 7 條都是維護者自己每週都在跑的、不是空想。

頻率流程怎麼做(≤ 3 步)推薦工具適合誰
每天文獻 inbox 分流(1) 把昨天看到的 paper 丟 paper-qa
(2) 抓 claim + 4-5 行 summary
(3) 進 Zotero / Obsidian
paper-qa + zotero-gpt全研究者
每天寫作 sprint(25 min)(1) 寫一段給 Claude.ai
(2) 跑 banned-word + figure-text audit
(3) 改完進 main draft
Claude.ai + academic-writing-skills寫 paper 階段
每週跨 paper synthesis(1) 把 5-10 篇 PDF 餵 Gemini
(2) 問「這幾篇 disagree 在哪」
(3) 寫成 1 頁 brief
gemini-delegate(1M context)計算型
每週Zotero 整理(1) 標未讀 / 已讀
(2) 重 tag
(3) 抓出該歸檔的 PDF
zotero-skills 或 zotero-gpt全研究者
每月研究進度 brief(1) 從 Obsidian + Zotero + NotebookLM 抓近期筆記
(2) 整理出 5 個進度點
(3) 送指導教授
research-hub同時用 3 工具的人
Per paper投稿前 final audit(1) banned-word audit
(2) figure-text coupling check
(3) submission checklist
academic-writing-skills投稿前 1 週
Per paperMulti-agent peer review(1) Claude 看 logic / argument
(2) Codex 看 code / table 數字
(3) Gemini 看 prose / clarity
codex-delegate + gemini-delegate投稿前 second-opinion

💡 新手起手式:先做「每天 inbox 分流」+「寫作 sprint」兩條一個月、習慣後再加進階流程。一次裝太多會養不起來。

層級建議

研究者不需要一開始就裝 Claude Code。下表是建議的進階路徑:

Tier工具適合誰學習成本
Tier 0Claude.ai 網頁版 + NotebookLM非程式背景、人文社科、臨床研究0(會用瀏覽器就行)
Tier 1Claude Desktop + Zotero MCP / Obsidian MCP已有 Zotero / Obsidian 習慣的研究者半天裝好
Tier 2Claude Code + ai-research-skills計算型研究者、寫 / 改程式為主1-2 天上手
Tier 3Claude Code + codex-delegate + gemini-delegate + research-hub想跑 multi-LLM 研究 pipeline、跨多工具整合1 週 setup + 持續調

多數研究者停在 Tier 1-2 就夠了——Tier 3 是有大量重複流程(譬如每週跑同樣的 paper synthesis)才值得。

開發者延伸路線(For Developers)

繁體中文 | 简体中文 | English

🚀 第一次裝 Claude Code / 寫 CLAUDE.md / SKILL.md 快速 setup 指南在 resources/setup-guide.md D-E。已經熟可以跳過。

← 回主路線 README · 走完 Track A 的 A3Track B 的 Stage 7 後從這裡接續。把 agentic AI 應用到開發流程上。

使用情境(開發場景 × AI 怎麼幫)

下表把開發者一天會遇到的 7 個情境拆開——每個情境有不同的痛點,AI 工具也不同:

場景你常遇到的痛點AI 能幫的部分推薦工具(從輕到重)
AI 結對程式設計寫到一半忘 syntax / 想到 method 名自動補完 + 改寫 + 解釋Cursor / Copilot → Claude Code
多檔重構改一個 class 怕漏改、跨檔 rename 易錯batch refactor、改 50 個檔保持風格一致Cursor → Claude Code → codex-delegate
Code review(自己 PR)review 自己的 diff 看不出問題找 bug / smell、檢查 edge caseClaude Code / cline → Continue(CI)
寫 testTDD 一直忘加 case、coverage 不足從 signature / spec 生 pytestClaude Code + Aider
Debuglog 不夠、stack trace 看不懂解 trace、生 hypothesis、跑 minimal reproClaude Code
Docdocstring / README 沒人寫、refactor 後過期從 code 生 doc、PR 對應改 docClaude Code
CI / 團隊自動化重複手動跑 review、跨人風格不一GitHub Action 自動跑 review / lintClaude Code Action + Continue

💡 個人 vs 團隊:表中前 6 個是個人 daily workflow;最後 1 個(CI)是團隊規範。團隊規模 < 5 人時 CI 自動化的 ROI 不高、可先不上。

精選 Projects

CLI agent 比較:7 個主流 CLI agent(Claude Code / Codex / OpenCode / Gemini CLI / goose / Aider / Hermes Agent)的並列比較見 resources/cli-agents-guide.md。第一次接觸 CLI agent 想要 step-by-step 入門 → tracks/cli/A1-cli-intro.md(Track A 第一站)。

MCP catalog:要把 CLI 接到日常工具(GitHub、Linear、Atlassian、Postgres、Playwright、Figma 等)→ resources/mcp-skills-catalog.md(62 個分類整理)。

本頁只列跟開發者 workflow 直接相關的工具入口。

Coding Agents

Cursor ⭐⭐⭐⭐⭐

編輯器整合的 AI 結對程式設計工具。在 AI 編輯器類工具中採用度高、可作為比較其他 IDE agent 的基準。

Aider-AI/aider ⭐⭐⭐⭐⭐

★ 44k+ · Apache-2.0 — git-aware 的 CLI pair-programmer。直接編輯你 repo 中的檔案,commit 都自動寫好。「git-native AI 編輯流程」的開源範本。模型不限。

anthropics/claude-code ⭐⭐⭐⭐⭐

★ 120k+ — Anthropic 官方的 agentic coding 助理。有 Skills + plugin 生態系。

cline/cline ⭐⭐⭐⭐⭐

★ 61k+ · Apache-2.0 — VS Code extension,autonomous in-IDE agent:tool use、browser、step-by-step approval。VS Code 使用者要 IDE-native agentic dev 的好選項

continuedev/continue ⭐⭐⭐⭐

★ 33k+ · Apache-2.0 — source-controlled AI checks,可以在 CI 強制執行。代表「團隊 / governance」這條角度的 coding agent。

OpenHands (前身為 OpenDevin) ⭐⭐⭐⭐

★ 72k+ · MIT — open source 的自主軟體開發 agent。設計上比 Aider / Claude Code 更激進——agent 自己跑 sandbox、自己 commit,適合「整個 issue 丟給它解」場景。

block/goose ⭐⭐⭐⭐

★ 43k+ · Apache-2.0 — 開源、可擴充的 AI agent,超出純 code suggestion——能 install / execute / edit / test,搭配任何 LLM。同時支援多家 LLM provider 跟 MCP,提供 desktop app、CLI、API 三種介面。(repo 現指向 aaif-goose/goose。)

RooCodeInc/Roo-Code ⭐⭐⭐⭐

★ 23k+ · Apache-2.0 — VS Code 的 coding agent,採用「多種專業 mode」的設計,跟 Cline 的單一 agent flow 不同。VS Code 使用者要 multi-mode 替代方案的選擇。

Code Review

obra/superpowers ⭐⭐⭐⭐

20+ 個經過實戰驗證的 skill,包括 TDD 模式、debug、協作模式。設計 code-review skill 時的好參考。

推薦工具

  • yamadashy/repomix ⭐⭐⭐⭐⭐ ★ 24k+ — 典型開發者用途:打包整個 codebase 給 reviewer / refactor agent。輸出單一 AI-friendly 檔案(XML / Markdown / JSON),方便 Claude Code / Codex 做 code review / refactoring。技術細節(MCP server mode、tree-sitter 壓縮、secretlint 過濾)見官方 README。Track A 很值得當 daily driver 的工具。

必練流程(按使用頻率)

頻率流程怎麼做(≤ 3 步)推薦工具適合誰
每天AI 結對寫 code(1) 開 branch
(2) 任務丟給 Claude Code、先 plan(不寫 code)
(3) Review plan → approve → 寫 code → 自己 review diff
Claude Code / Cursor / Cline全開發者
每天Git-native AI 編輯(1) aider
(2) 自然語言請求
(3) review + commit / /undo
Aider想要乾淨 git 流程的人
Per PR自動 code review(1) .github/workflows/claude-review.yml
(2) 抓 git diff → 跑 prompt → post 回 PR
(3) human + AI 雙審
Claude Code Action + Continue團隊
Per feature測試生成(1) 給 function signature + docstring
(2) 請 AI 生 pytest case(含 edge case)
(3) 跑覆蓋率 + 故意改 bug 看 test 抓不抓得到
Claude Code / Aider寫 test 階段
不定期多檔批次修改(1) Claude 寫 plan
(2) codex-delegate 跑機械式 refactor
(3) Claude review diff
Claude + codex-delegaterefactor 30+ 檔的時候

💡 新手起手式:先做「每天 AI 結對」+「測試生成」兩條一個月、習慣後再上 PR 自動 review。

3 個具體 workflow recipe

1. AI 結對程式設計(每日節奏)

  1. 開新 feature → git checkout -b feature/xxx
  2. 把任務丟給 Claude Code / Cursor,先讓它寫 plan(不直接寫 code)
  3. Review plan、修正方向 → 才 approve 寫 code
  4. 寫完跑 tests + lint → 自己 review diff(不要 blind accept
  5. Commit message 自己寫或 prompt 生草稿後改

2. Aider git-native 流程(最像「跟 AI pair」)

# 進入 repo 後
aider --model anthropic/claude-sonnet-4-20250514

# 自然語言請求
> 幫我把 utils.py 的 parse_date 加上時區參數,預設 UTC

# Aider 會自動編輯 + commit。若不滿意:
> /undo # 退掉最後一次 AI commit

3. PR 上的 Claude code review(GitHub Action)

.github/workflows/claude-review.yml

on:
  pull_request:
jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Run Claude review
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          # 用 anthropics/claude-code-action 或自寫 script
          # 抓 git diff、跑 prompt、結果 post 回 PR

參考 anthropics/claude-code-action 官方 GitHub Action。

常見踩坑(Anti-patterns)

❌ 不要✅ 改成
讓 AI 直接 push 到 main永遠 PR → review → merge
Blind accept 大規模 refactor diff拆成 < 50 LOC 改動,逐個 review
把 .env / API key 丟給 AI 看用工具對應的排除機制:Cursor .cursorignore / Aider .aiderignore / Claude Code 用 .claude/settings.jsonpermissions.deny
讓 AI 在 production code 自由跑 shellsandbox 限制、permission whitelist
用 AI 生 test 後不檢查 assertion跑覆蓋率 + 故意改一個 bug 看 test 抓不抓得到
跨多個 commit 才發現方向錯plan-first 模式:先 review plan 再寫 code

Tier 升級路徑

下表是建議的進階路徑:

Tier工具適合誰學習成本
Tier 0Cursor / Copilot / Claude.aiIDE 內 chat、autocomplete、不自己寫 agent0(會用編輯器就行)
Tier 1Claude Code / Cline / OpenCode + CLAUDE.mdCLI 接 file system、human-in-the-loop1-2 天上手
Tier 2自寫 Skills + MCP server把 dev workflow 包成 skill 給團隊共用1 週 setup
Tier 3CI 自動跑 agent + production observability進到 Stage 7 領域數週、需 governance

多數個人開發者可先停在 Tier 0-1升級到 Tier 2+ 要先確認 ROI——團隊夠大、流程夠重複、事故不可逆、才值得 invest。

也適用其他分支

開發者重疊度高的分支:

社群備註

特別歡迎以下貢獻:

  • IDE-specific 設定範本(Cursor .cursorrules、Claude Code CLAUDE.md for Python / Go / Rust 等)
  • 程式語言特化 skill(Python / TypeScript / Rust / Go 各自的 best practice)
  • CI / pre-commit hook 整合 case study
  • 跨多人團隊用 AI dev 的 governance pattern——多 dev 共用 Skills、permission 設計、cost tracking

請見 CONTRIBUTING.md

知識工作者延伸路線(For Knowledge Workers)

繁體中文 | 简体中文 | English

🚀 完全沒開發背景? 多數知識工作者可以直接從 Claude.ai / Claude Desktop 開始、不需要任何 setup。只有當你要接 MCP server(如 Gmail / Notion)或用 CLI 自動化時、才需要看 resources/setup-guide.md A-D(30-45 分鐘從零)。

← 回主路線 README · 走完 Track A 的 A3Track B 的 Stage 7 後從這裡接續。把 agentic AI 應用到辦公室 / 知識工作上。

使用情境(辦公場景 × AI 怎麼幫)

下表把知識工作者一天會遇到的 7 個情境拆開——多數場景在 Claude Desktop + MCP(Tier 1)就能搞定:

場景你常遇到的痛點AI 能幫的部分推薦工具
Email 分流每天 100 封看不完、優先順序錯分類 + 草擬回信讓你 reviewClaude Desktop + Gmail MCP
會議 → 行動項目聽完 30 分鐘忘一半、action item 沒記逐字稿 → 主要決策 + 行動項目Otter / Zoom 逐字稿 + Claude
跨工具報告整合Slack / Gmail / Notion 各一塊、要手動拉自動拉指標 + 整合 + email summaryn8n / Make / Langflow
研究 / 市場情報不知問什麼問題、不知該信誰多源搜尋 + 交叉驗證 + 備忘錄Perplexity + Claude
Slack / 訊息拿捏不準口氣、敏感場景改寫 + 調語氣 + 多版本Claude.ai
Notion / 知識庫整理雜亂、沒架構、找不到舊筆記重 tag + 分類 + 自動摘要Claude Desktop + Notion MCP
文件 / 提案草稿spec / proposal 卡關大綱 → 段落 → 潤色Claude.ai

💡 MCP 是知識工作者的關鍵:第一次接觸 MCP?看 Stage 5.2 — MCP 基礎;想知道有哪些 MCP server → resources/mcp-skills-catalog.md

精選 Projects

💡 想把 AI agent 接到 Notion / Gmail / Outlook / Slack / Excel / 飛書?(例:把 Gmail 來信自動整理成 Notion 待辦)62 個常用辦公整合工具表見 resources/mcp-skills-catalog.md(按使用情境分類)。下面這節保留 workflow / 整合平台級的工具。

工作流工具

n8n ⭐⭐⭐⭐

可自架的工作流自動化平台,內建 AI 整合,採用視覺化節點式編輯器。

適合誰:要把多個 SaaS 工具串起來時(Slack + Gmail + Notion + AI)。


Make.com(前身為 Integromat)

雲端代管的工作流自動化平台,AI 整合節點功能完整。


知識工作者 Skills

obra/superpowers ⭐⭐⭐⭐

腦力激盪、規劃、決策類的 skill。


知識管理 / 個人 AI

khoj-ai/khoj ⭐⭐⭐⭐

欄位內容
Stars★ 34k+
LicenseAGPL-3.0

教什麼:自架的「第二大腦」——可以跟 web + 本地文件對話、排程自動化、自訂 agent。

適合誰:想自架個人知識庫 + AI assistant 的人。

備註:AGPL-3.0 license(傳染性開源)。


lobehub/lobe-chat ⭐⭐⭐⭐⭐

欄位內容
Stars★ 76k+
LicenseLobeHub Community License(基於 Apache-2.0 + 商用附加條款)

教什麼:可部署的多 agent 聊天平台——含 plugin marketplace、知識庫、團隊協作。可自架的 AI workspace 代表選項之一。

適合誰:要找可自架的協作 chat workspace。

備註:商用使用需確認 LobeHub Community License 的附加條款。


langflow-ai/langflow ⭐⭐⭐⭐

欄位內容
Stars★ 147k+
LicenseMIT

教什麼:視覺化 AI agent 設計平台——適合把客服、報告整理、資料查詢這類流程畫成節點。比 n8n 更專注在 agent 設計(n8n 是泛用工作流)。API / MCP server 部署是進階備註、不必一開始就學。

適合誰:寧可拉節點不寫 Python 的知識工作者,或要設計 agent 跟團隊溝通流程的人。


Mintplex-Labs/anything-llm ⭐⭐⭐⭐⭐

欄位內容
Stars★ 60k+
LicenseMIT

教什麼:all-in-one 的私有 RAG 工作平台——上傳文件、建 agent、相容 MCP、預設 on-device。NotebookLM 的私有 self-hosted 替代方案

適合誰:知識工作者要私有部署、類 NotebookLM 的工具,避免把資料送到雲端。


對知識工作者有用的 MCP Server

通訊類 MCP server ⭐⭐⭐⭐

Slack / Gmail / Discord 等。Anthropic 原本維護的 reference server 已於 2025 年重整;目前由社群維護的 server 集中在 punkpeye/awesome-mcp-serverswong2/awesome-mcp-servers,要找最新的 Slack / Gmail / Drive / Calendar MCP server 可以從這兩個清單翻找。


可以建的流程(按使用頻率)

頻率流程怎麼做(≤ 3 步)推薦工具適合誰
每天Email 分流(1) 掃 inbox
(2) 分類成「立即 / 今天 / 這週 / 不用回」
(3) 草擬回信讓你 review
Claude Desktop + Gmail MCP全知識工作者
每次會議會議 → 行動項目(1) 逐字稿(Otter / Zoom)
(2) Claude 抓「主要決策 + 行動項目」
(3) 指派 + Slack / email 公告
Claude.ai + 逐字稿工具主管 / PM
每週跨工具報告(1) 從 N 個工具拉指標
(2) Claude / n8n 整理
(3) email summary 寄出
n8n / Make / Langflow要定期 update 老闆的人
不定期研究 / 市場情報(1) 想清楚問題
(2) 多來源搜尋 + 交叉驗證
(3) 寫成 1-2 頁備忘錄
Perplexity + Claude分析 / 策略職
不定期Notion / 知識庫重整(1) 把散落筆記貼進 Claude
(2) 請它重新 tag + 分類
(3) 輸出 Notion 結構化格式
Claude Desktop + Notion MCP有 Notion / Obsidian 習慣的人

💡 新手起手式:先把「每天 Email 分流」做一個月、養成「inbox 開 Claude」的習慣、再加其他流程。一次裝太多會養不起來。

層級建議

下表是建議的進階路徑:

Tier工具適合誰學習成本
Tier 0Claude.ai / ChatGPT / Gemini / Perplexity(網頁版)大多數知識工作者從這裡開始0(會用瀏覽器就行)
Tier 1Claude Desktop + MCP(Gmail / Notion / 行事曆)要對本機 / 雲端檔案重複跑流程半天裝好
Tier 2n8n / Make / Langflow(自動化平台)要把多個 SaaS 工具串起來、不寫 code1 週 setup
Tier 3Claude Code / Codex / 自己寫 Python有 dev 背景或團隊有 dev 支援、要 production-grade數週、跟 Track A 重疊

Tier 3+(CLI / SDK)對多數知識工作者任務來說太重——不要被別人慫恿過去。多數人停在 Tier 1-2 就夠。

閱讀

教師延伸路線(For Teachers / Educators)

繁體中文 | 简体中文 | English

🚀 大多數教師可直接從 Claude.ai(網頁版)+ NotebookLM 開始、不需要任何 setup。只有當你要自動化重複流程(Tier 2+、例如每週生成 50 份家長信)時、才需要看 resources/setup-guide.md A-C(30 分鐘從零裝好需要的東西)。

← 回主路線 README · 走完 Track A 的 A3Track B 的 Stage 7 後從這裡接續。把 agentic AI 應用到教學流程上。

使用情境

教師使用 AI 的情境可以先看成三個分支:備課與上課素材製作教學現場與學習輔助、以及其他應用場景

這樣的分類參考 AI in Education 文獻中常見的行政、教學與學習應用脈絡、也加入生成式 AI 在教材生成、回饋與互動支援上的近期討論(Chen et al., 2020;Mittal et al., 2024)。閱讀時建議先理解教師把關原則與使用邊界、再依自己的教學需求挑一個分支深入。

教師與 AI agent 使用情境總覽

教師使用 AI 輔助時要注意什麼

AI 可以幫忙準備和輔助,但不應該直接取代教師判斷。近期 AI in Education 與生成式 AI 教育研究也提醒,教師設計 AI agent 時要保留清楚的教學目標、安全邊界與人工把關(Chen et al., 2020;Mittal et al., 2024)。

  • 保留教師最後判斷:牽涉學生資料、成績、教學決策等重大判斷時,教師仍要負責最後確認。
  • 避免直接給答案:如果要讓學生與 AI agent 互動,可以設計成蘇格拉底式對話,在多輪互動中引導學生說出理由。
  • 貼合教學目標:用固定提示詞、檢查清單、或學校核准的工具設定、限制 AI 的角色與任務、避免學生互動脫離課程目標。
  • 調整學生提問:如果學生年齡較低,例如國小或國中,可以把學生問題先改寫成更清楚的提問,再交給 agent 回答。

備課與上課素材製作

這類情境偏向「幫老師準備材料」,輸出通常會被老師再改寫、挑選、檢查。

  • 教案生成:依課綱、單元目標與學生程度,整理課程大綱、時間分配、活動設計、討論提示與補充學習指南。
  • Quiz / 評分量表(rubric)建立:依文本、課文或學術文章,產生選擇題、簡答題、申論題、參考答案與評分規準。
  • 投影片準備、課程地圖、多媒體與視覺化素材:把課本章節或教師筆記轉成投影片大綱、講義架構、週次安排、先備知識、評量節點、圖像、3D 物件、影片腳本、GIF 或課堂展示素材。
  • 學生回饋整理分析:彙整學生作答、作業或課堂反應,找出常見迷思、需要補救的概念與下一步練習。
  • 多語系教材翻譯與轉化:把教材改寫或翻譯成不同語言版本,也可以產生語音合成素材。
  • 互動式遊戲與活動、虛擬模擬場景的素材:準備教學遊戲、押韻兒歌、任務卡、角色卡、情境文本或模擬場景背景;若要設計實際互動流程或課堂活動,請參考下一節「教學現場與學習輔助」。

教學現場與學習輔助

教學現場與學習輔助應用場景

這類情境偏向「幫學生理解、練習、互動」,AI 比較像教學助教或活動輔助工具。特別注意:不需要在單一教學活動中加入所有要素,而是挑選適合的環節加入 AI agent 設計。

  • 沉浸式學習體驗與真實情境演練:用真實情境模擬、角色扮演或外語口說模擬,讓學生在接近實作的情境中練習,降低認知負荷與退縮感。
  • 激發好奇心與提問能力:透過蘇格拉底式追問與多輪互動,引導學生提出更清楚的問題、說明理由,進一步訓練批判性思考與後設認知。
  • 即時批改與深度回饋:讓學生從錯誤中學習,AI 可以指出錯誤、說明原因、建議修正方向,而不是只給分數或答案。
  • 智慧家教與虛擬助教:協助回答提問、解釋術語、給提示,讓學生在課堂內外都能獲得適度支援。
  • 適性教學與動態路徑:依學生程度提供對應難度內容,並透過學習表現推測近側發展區,提供合適的鷹架與補救素材。

其他應用場景

這類情境不一定直接發生在課堂中,但會影響教師工作、學生支援與教育系統運作。

  • 特殊教育支援:透過語音轉文字、文字轉語音等方式,協助不同需求的學生參與課程。
  • 親師溝通與家庭教育:整理學生進度報告,並提供家庭可延伸的輔助學習活動建議。
  • 行政管理與學術誠信:整理學習軌跡、產生報告,或協助進行抄襲與作弊風險檢查。
  • 職涯與技能發展輔導:協助職涯探索、培訓清單規劃,並依弱點推薦練習題。
  • 教師專業發展:摘要教學方法、教育科技趨勢與研究重點,協助教師持續更新。
  • 高階研究分析:輔助文獻分析、快速理解論文研究中提出的教學法或教育心理學。
  • 隱私保護與合成資料:在不直接使用真實個資的前提下,產生匿名合成資料。

參考文獻

精選 Projects

教學流程 Skills

(大多數還沒有做成 skill marketplace。這個分支最有社群貢獻空間——見 CONTRIBUTING.md。)

可用的基礎元件

obra/superpowers ⭐⭐⭐⭐

通用的寫作 / 腦力激盪 skill。可改用在備課上。

進階自動化:Claude Code(搭配自訂 CLAUDE.md)⭐⭐⭐⭐⭐

★ 120k+ — 教師的基礎工具是 Claude.ai(網頁版)+ NotebookLM + Google Classroom / LMS 整合、先從這裡開始。只有當你已有會重複跑的批次流程(如每週生成 50 份家長信、每學期跑學生反饋分析)才升級到 Claude Code、需要學一點 CLI。

教學課程素材(給教師備課用)

huggingface/agents-course ⭐⭐⭐⭐

欄位內容
Stars★ 28k+
LicenseApache-2.0

教什麼:Hugging Face 官方的 agent 課程——notebook、練習、結業認證。是一份現成的「AI agent 教學」素材

適合誰:要在學校 / 工作坊開「AI agent 入門」課程的老師,可以直接拿來當教材或改編。

備註:注意這是「教 AI agent 怎麼建」的教材,不是「老師用 AI 教書」的工具。


datawhalechina/llm-universe ⭐⭐⭐⭐(中文)

欄位內容
語言中文(zh-Hans)
Stars★ 13k+
LicenseNOASSERTION

教什麼:Datawhale 出品的中文 LLM 應用開發課程——含 RAG、agent、章節練習。中文教師備課的現成模板。

適合誰:中文教師要找現成可改的 LLM 教材底稿、再針對自己學生程度調整。

備註:跟 hf agents-course 一樣,是「教學生建 LLM 應用」的教材,不是「教師端的 AI 助教」。


Prompt 素材庫

f/awesome-chatgpt-prompts ⭐⭐⭐⭐

欄位內容
Stars★ 161k+
LicenseNOASSERTION(CC0 / public domain 風格,但未提供 SPDX)

教什麼:社群維護的 prompt 大全——「act as X」型樣板涵蓋幾百種角色(老師、面試官、stand-up comedian、辯論者⋯)。教師可以拿來當「prompt 寫法範例」教給學生,或直接借用其中合適的當作課堂示範。

適合誰:要教學生「prompt engineering」的老師,找現成例子比較不同寫法的差異。

備註:品質不一致——當作素材庫挑選用,不是「全部直接拿去教」。


閱讀材料

The Effortless Academic — Beginner Guides

寫給學術工作者導入 Claude Code 的多篇指南,教師也適用。

可以建的流程(按教學階段)

下表 5 條是模板——配合你的學科自行調整:

階段流程怎麼做(≤ 3 步)推薦工具注意
備課前教案生成器(1) 課綱 + 主題提示 → 大綱
(2) 大綱 → 投影片
(3) 投影片 → 評量題目
Claude.ai / NotebookLM教師最後審
備課中Rubric 建立(1) 給學生作業樣本 + 學習目標
(2) 請 AI 草擬 4 級 rubric
(3) 教師調整級距
Claude.ai避免「品質好」這種模糊詞
改作業個別化回饋(1) 學生作業 + rubric → AI 寫回饋初稿
(2) 教師逐份審 + 改
(3) 寄回
Claude.aiAI 輔助 ≠ AI 評分,最終分數一定人工
課堂活動情境模擬(1) 教學目標 + 角色設定 → 對話腳本
(2) 課堂演練
(3) 反思問題
Claude.ai蘇格拉底式追問、不直接給答案;學生輸入不含個資
課後補救個別化補救教材(1) 整理學生常見錯誤
(2) 依學生程度 → 小練習 + 提示
(3) 延伸挑戰題
Claude.ai注意學生個資匿名化

💡 新手起手式:先做「備課前的教案生成器」一個學期、習慣後再加 rubric / 回饋流程。⚠️ 所有跟學生個資 / 評分相關的步驟都要回頭看下面的 §隱私 + 倫理(重要)章節。

3 個可直接複製的 prompt 範本

1. 教案大綱生成(複製到 Claude.ai 即可用):

你是一位 [學科] 老師。我要給 [年級] 學生上一堂 [時長] 分鐘的課,主題是「[主題]」。
學生先備知識:[簡述]。請產出:
1. 學習目標(3-4 條,用 Bloom's taxonomy 動詞)
2. 課程大綱(含時間分配)
3. 1 個課堂活動 / 討論題
4. 1 個課後評量題
不要產生超出我給的主題範圍的內容。

2. Rubric 草稿生成

我有一份 [作業類型] 作業,學生年級 [年級],主題 [主題]。
學習目標:[列 2-3 條]。
請產出一份 4 級 rubric(卓越 / 熟練 / 發展中 / 待改進),
每級在「內容深度」「組織結構」「論證 / 計算」「表達清晰度」4 個面向各給一段描述。
描述要具體可觀察,不用「品質好」這種模糊詞。

3. 學生回饋整理

以下是 [N] 份學生作業片段:
[貼上文本]

請:
1. 摘要這批作業共同的 3 個強項
2. 摘要 3 個共同弱點
3. 針對最常見弱點,建議 1-2 個下次上課該加強的環節
不要做個別化評語——我會自己針對個人寫。

隱私 + 倫理(重要)

教師端用 LLM 跟一般 user 不同,牽涉學生資料——以下是 hard rule:

  • 不要把學生個資丟進公開 LLM(姓名、學號、聯絡方式、成績)。需要的話先匿名化(用「學生 A / B / C」)
  • AI 輔助 ≠ AI 評分:用 LLM 草擬回饋 / rubric 沒問題,但最終評分一定要人工把關——LLM 對複雜思考的評估還不可靠
  • 告知學生:如果課堂材料是 AI 輔助生成,建議向學生揭露(比照論文揭露 AI 工具使用)。教學誠信很重要
  • 檢查事實:LLM 會編造引用、學者名字、研究資料。專業領域內容必須核對才能上課
  • 學生作品的著作權:不要把學生作品用 LLM 大量分析後上傳到第三方 service、可能涉及所在地個資法、學校政策、第三方服務條款——在美國另需留意 FERPA(學生紀錄保護法)、在歐盟需留意 GDPR、在台灣則需注意《個資法》與校方公告。實際適用範圍請以該地法規與學校 IT 政策為準

如果你的學校 / 機構有 AI 使用政策,那份比這份優先

給教師的層級建議

下表是建議的進階路徑——大多數教師應該停在 Tier 0-1:

Tier工具適合誰學習成本
Tier 0Claude.ai 網頁版聊天偶爾備課、單次任務、出題、寫信。複製上面的 prompt 範本填入主題即可0(會用瀏覽器就行)
Tier 1Claude Desktop / NotebookLM批改 / 整理一整學期資料、做課程地圖、整批匯入課本 PDF 後問問題半小時裝好
Tier 2+Claude Code / CLI / SDK有重複自動化需求(例:每週收 30 份作業 → 自動生成回饋初稿)1 週上手;不熟程式可找學校 IT / 學生 RA 幫忙設定

多數教師停在 Tier 0-1 就夠了。升級到 Tier 2+ 就建議走 Track A — CLI Power User

也適用其他分支

很多老師同時是研究員 / 知識工作者,這幾個分支重疊:

社群備註

這個分支目前是精選內容最少的一塊。特別歡迎以下貢獻:

  • 教案生成 skill
  • 學科專屬的 prompt library(國文老師的 prompts、數學老師的 prompts、英文老師的 prompts ⋯)
  • 教師專屬的 MCP server(成績冊整合、LMS 串接如 Canvas / Moodle / Google Classroom)
  • 某學科 + 某年級的完整 case study(例如「我用 AI 帶國中數學一個學期,這是我的 workflow」)

請見 CONTRIBUTING.md

繁體中文 | 简体中文 | English

awesome-agentic-ai-zh 風格指南

這份指南是這份 catalog 的單一真實來源——術語、entry 結構、license 標註、寫作風格、禁用詞,全部以這份文件為準。

PR 之前請先讀完本文。專案維護者也會用這份指南做 review。


📋 目錄


1. 專案 entry schema

每個 project entry 統一格式如下:

### [Repo Name](https://github.com/owner/repo) ⭐⭐⭐⭐

| 欄位 | 內容 |
|---|---|
| 語言 | Python |
| Stars | ★ 12k+ |
| License | MIT |
| 推薦度 | ⭐⭐⭐⭐ |

**教什麼**:1-2 句話,這個 project 在這個 stage 教什麼具體的東西。

**適合誰**:1 句話,誰應該讀這個、為什麼。

**備註**:1-3 句個人評價。哪裡好、哪裡弱、哪裡可以跳。(可省略)

**怎麼跑**:
\`\`\`bash
# 最小安裝指令、第一次跑該執行什麼
\`\`\`

必填欄位(GitHub repo entry)

對「真實 GitHub repo」的 entry:

  • Stars(★ Xk+ 格式,無千位逗號)
  • License(SPDX ID 或標註例外,見 5)
  • 推薦度(⭐ × N,見 2)
  • 教什麼適合誰

必填欄位(非 repo entry:article / course / video / protocol / documentation)

某些 entry 不是 GitHub repo 而是文章、影片、官方文件、catalog hub。對這類:

  • 推薦度(必填)
  • 教什麼適合誰(必填)
  • 形式(必填,標明是 文章 / 影片 / 課程 / 精選清單 / 規格文件 等)
  • Stars / License 可省略(沒有 GitHub repo 對應)

範例:Anthropic — Building Effective Agents 部落格文章用 形式 = 文章 + 推薦度,不需要 Stars / License。

選填欄位

  • 語言 — 主要程式語言(Python / TypeScript / 中文 等)
  • 最後更新 / 狀態 — 已停滯或維護放緩時加註
  • 備註怎麼跑

標題格式

  • Stage 1-4 / 6 用 ### [Repo](url)
  • Stage 5 / 7 / branches 用 #### [Repo](url)(已有上層 H3 分類時)
  • 標題後可接星等:### [Repo](url) ⭐⭐⭐⭐⭐ 或副標:### [Repo](url) ⭐ 官方

2. 推薦星等定義

星等含義何時用
⭐⭐⭐⭐⭐必讀 / 必做該 stage 不讀這個會卡住
⭐⭐⭐⭐強烈建議深入學該主題的好材料
⭐⭐⭐紮實範例值得跑一遍、互相對照
⭐⭐有用參考有興趣再看
利基 / 進階 / 為了完整性多數讀者可跳

準則

  • 同一個 repo 出現在不同 stage / branch 時,星等應一致(除非有明確 audience-specific 理由,且註明在備註)
  • 不要因為「想要看起來推薦」就給高星等。誠實 > 客氣
  • 商業產品(Cursor、LangSmith 等)也照同一套標準

3. 禁用詞與替代

這份文件以繁體中文(zh-TW,台灣慣例) 為準。下表列出常見的 zh-Hans 用詞與替代。

📌 語言代碼慣例(BCP 47 / W3C i18n):repo 用 .zh-Hans.md(不是 .zh-CN.md)標記簡體中文檔。Hans / HantBCP 47 script subtag,跟地區解耦——簡體中文不只用在中國大陸(也用在新加坡、馬來西亞),用 HansCN 更準確。canonical README 的內容是 zh-Hant-TW(繁體中文,台灣慣例),但檔名保持無 suffix 的 README.md 作為 GitHub 預設首頁。未來若要分地區可再擴成 zh-Hans-CN / zh-Hant-HK 等。感謝 @xfq(W3C i18n lead)在 #9 指出這個問題。

繁簡用詞替換

禁用(zh-Hans)改用(zh-TW)
教程教學 / 課程 / 導讀
視頻影片
軟件軟體
文件(指 file 時)檔案
文档 / 文件(指 docs 時)文件 / 文件(這個保留)
代碼程式碼 / 原始碼
用戶使用者
網絡網路
接口介面
默認預設
函数函式
算法演算法
程序(指程式時)程式
質量(指品質時)品質
信息資訊
數據資料
內存記憶體

Overclaim(誇大)用語禁用

禁用改用
全世界最好的 / 業界最強完整的 / 知名的 / 廣泛使用的
production-grade(描述教材時)教學導向 / 用來學 production pattern 的教材
首選 / 唯一選擇不錯的選項 / 入門選擇之一
最緊迫 / 最重要(直接不要修飾)
權威參考(除非真的是官方 spec)重要參考實作 / 官方範本
沒問題(法律或 license 判斷時)使用前先讀條款 / 條款還是要自己看過

中夾英(English-in-Chinese)禁用句型

禁用改用
follow 條款遵守條款
ready-made 教材現成可改的教材
NotebookLM-like 工具類 NotebookLM 的工具 / 類似 NotebookLM 的工具
視覺化 node-based視覺化節點式
Anthropic host 的 serverAnthropic 維護的 server
coding 流程開發流程 / 程式開發流程

4. 可保留的英文名詞

技術寫作中保留英文比硬翻譯讀起來更自然的詞:

  • LLMAPISDKMCP
  • agenttool usefunction callingpromptprompt caching
  • frameworklibraryrepocommitPRbranch
  • RAGembeddingvector DBretrievalchunktoken
  • streamingasyncbatchwebhook
  • marketplacepluginskillhook
  • projectrepo (可保留也可改用「專案」)
  • production(指「正式環境」時)— 但本 catalog 多數場合刻意避免(見 3)
  • 動手練習hello-world — 保留

判準:技術文件圈讀者習慣的英文術語就保留,避免「太政治正確的中文化」。


5. License 標註慣例

常見 license 直寫

  • MIT
  • Apache-2.0
  • BSD-3-Clause
  • GPL-3.0
  • LGPL-3.0

需要加註的特殊情況

情況寫法
上游無 SPDXNOASSERTION(上游未提供 SPDX;使用前請讀 LICENSE)
AGPL(傳染性)AGPL-3.0 + 備註:AGPL-3.0 license(傳染性開源)— 修改後散布的衍生產品需遵守條款。
自訂非商用NOASSERTION(自訂非商用) + 備註:License 是自訂非商用條款,使用前請先讀原始條款。
多元 license(每個 plugin 自己有)NOASSERTION(每個 plugin 獨立 license,請看各自目錄)
Creative Commons直寫 CC-BY-4.0CC-BY-NC-SA-4.0

規則永遠不要把 license 解讀成法律建議。「研究 / 個人使用沒問題」這種句子禁用。改成「使用前先讀原始條款」。


6. Stage 頁面模板

同一個模板適用於兩個位置:

  • stages/0X-*.md — 共用基礎(0-2)+ Track B(Stage 3-7)
  • tracks/cli/AX-*.md — Track A(A1-A3)的 sub-stage,也照同一模板,只是 cross-link 比例較高(多數 entry 引用既有 Stage 5 / 7 / cli-agents-guide)

每個 stage(Stage 0 除外)都應該有:

# Stage N — 主題

> [English](./0N-slug.en.md) | **繁體中文**

⏱ **時間估算**:N-M 週(約 X-Y 小時)

[1-2 句話描述這個 stage 的核心問題]

## 📌 學習目標
- bullet 1
- bullet 2
...

## 🚪 進入條件(Stage 1+ 才需要)
你應該已經:
- ...

## 📚 必修閱讀
1. [連結](url) — 描述
2. ...

## 🛠 動手練習(不是看過就好)

### 練習 N:標題
描述。

[3-5 個動手練習 items]

## 🎯 精選 Projects

### [Project Name](url) ⭐⭐⭐⭐
[entry schema 見 1]

[N 個 entries]

## ✅ 進 Stage N+1 前的自我檢查
你能不能:
- [ ] ...
- [ ] ...

如果可以 → 進 Stage N+1。
如果不行 → ...

## 💡 接下來(選填,多在最後一個 stage 用)

Stage 0 例外:可以省略 精選 Projects進入條件,因為它是 prerequisite gateway。


7. Branch 頁面模板

# 給 [audience] — 專業分支

> [English](./for-X.en.md) | **繁體中文**

> [← 回主路線 README](../README.md) · 從 Stage 7 結尾分支出來

## 使用情境
- bullet 1
- bullet 2

## 精選 Projects

### 子分類 1
#### [Project](url) ⭐⭐⭐⭐
[entry]

### 子分類 2
...

## 必修閱讀
1. ...

## 必練流程
- bullet 1
- bullet 2

Branch 的 entry 格式可以比 stage 簡潔(不一定要完整 schema 表格),但連結 + 星等 + 1-2 句描述是最低門檻。


8. 寫作風格規範

句長

  • 單句不超過 60 字(中文標點計入)
  • 太長就斷成兩句
  • 英文 rhythm 強迫塞進中文 = 翻譯腔,要避免

標點

  • 中文用全形:,。:;「」()
  • 句中夾英文時,英文前後可以留空格也可以不留,但全文要一致
  • 避免 ASCII 逗號 , 在中文句中(會中夾英)

主動 vs 被動

  • 偏好主動句:「Claude 呼叫工具」 ✓
  • 避免被動句:「工具被 Claude 呼叫」 ✗

「你」 vs 「我們」

  • 「你」優先——這是給讀者的學習材料
  • 「我」用於作者發表意見時:「我建議...」
  • 避免「我們」(除了合著者實際存在的場合)

連接詞

  • 偏好簡單:「但、所以、因為、不過」
  • 避免:「然而、因此、由於、之所以」

9. 連結與引用

內部連結

  • Stage 之間:相對路徑 [Stage 4](04-agent-frameworks.md)
  • Branch ↔ README:[← 回主路線](../README.md)
  • 跨 stage 引用同一 repo:用全名 + 連結,不要只寫「之前提過」

外部連結

  • GitHub repo:https://github.com/owner/repo ✓ 不加 trailing slash
  • 文章 / 部落格:完整 URL,標題用粗體
  • 商業產品(Cursor、Make.com 等):用官方網址,不是 affiliate

連結文字慣例

  • Repo entry 標題:[owner/repo](url)[Project Name](url)
  • 句中引用:[Repo Name](url)\owner/repo``(短引用用 inline code)
  • 連結文字避免「點這裡」、「按這個」

相關內部設計文件

這份 style-guide 講「entry 怎麼寫」。為什麼分這 5 個 branch、為什麼是 7 個 stage 這類設計理由,見:

修改本指南

這份指南本身也歡迎 PR。修改前請先開 Issue 討論——術語決策影響 100+ 個 entry。

當前 maintainer:@WenyuChiou

貢獻指南

繁體中文 | 简体中文 | English

謝謝你考慮貢獻。這是一份精選的學習路線圖,不是百科目錄。品質 > 數量。

這個 repo 本來就是設計給社群一起改良的——一個人 curate 永遠跟不上 AI agent 生態的變化速度。Maintainer 一個季度跑 1 次 review 不夠,需要更多眼睛看。

這份 catalog 分兩條軌道Track A(CLI Power User,tracks/cli/A1-A3)跟 Track B(Agent Builder,stages/03-07)。貢獻時請註明你動的是哪條軌道——兩條的 audience 不一樣。

🚪 第一次貢獻:好上手的 5 個切入點

不確定從哪開始?挑一個你 30 分鐘內能做完的:

  1. 🐛 回報過時 entry:跑 python scripts/refresh-stars.py 找星數差距大的 repo,開 issue 說「這個應該移除 / 更新」
  2. 🔗 修一個失效連結:你看 stage X 時連結 404 了,直接 PR 改
  3. ✍️ 補一個 entry 的 怎麼跑 section:很多 entry 沒寫安裝指令,你跑過就補上
  4. 🌏 補英文 companion 沒翻好的句子:找一個 .en.md 跟 zh 對照,你覺得翻得不順的地方改一行
  5. 💬 對某個 entry 加個人筆記:你跑過 練習 3 卡某個地方,補一句「注意:xxx」

這 5 種都不用先讀完整份 style-guide,merge 速度也快——適合第一次貢獻、累積信心。

🧪 想跑 walkthrough / build script / CI workflow 第一次?.github/TESTING-STATUS.md——這份誠實揭露哪些 code maintainer 真的跑過、哪些只 syntax check、哪些完全沒測。第一個踩到坑的人開 issue + PR 是 highest-value contribution。

我們接受什麼

高價值 PR

  • 新增 project 到某個 stage,並說明為什麼這個 project 對應該階段的學習
  • 翻譯 某個 stage 頁面成繁中(只要繁中——我們不收 zh-Hans)
  • 標記停滯 / 失維護的 project(請先開 issue)
  • 改善現有 project 的策展備註(讓「教什麼」說明更清楚)
  • 重新整理 某個 stage 內部順序,如果現在的順序不符合學習進程

較低優先(仍然歡迎)

  • 錯字修正
  • 連結修正(請先用 curl -I 驗證)
  • Stage 介紹文字優化

不接受

  • 沒有策展理由的批量加 repo
  • 沒有教學價值的自我推銷
  • 沒文件的 project
  • 沒明確 license 的 project

怎麼新增一個 project

每一個 project 在 stage 頁面內應該照這個格式:

### [Project Name](url)

| 欄位 | 內容 |
|---|---|
| 語言 | Python / TS / etc. |
| Stars | ★ k |
| License | MIT / Apache 2 / ... |
| 推薦度 | ⭐⭐⭐⭐ |

**教什麼**:核心學習一句話總結。

**適合誰**:誰應該讀這個、為什麼。

**備註**:1-3 句的個人評價。哪裡好、哪裡弱、哪裡可以跳。

**怎麼跑**:
\`\`\`bash
# 最小安裝 / 第一次跑的指令
\`\`\`

策展標準

值得列入的 project 必須:

  1. 有維護:最近 6 個月內有 commit,或明確標示「stable, no longer maintained」
  2. 有 hello-world 文件:讀者應該能在 30 分鐘內把東西跑起來
  3. 明確 license:MIT、Apache 2、BSD 或類似。避免沒 license 的 repo。
  4. 可信賴的維護者:知名組織、公司,或有口碑的個人

雙語風格

  • 繁中(Traditional Chinese, zh-TW)為正本,英文版(*.en.md)是 companion。
  • 不接受 zh-Hans PR。如果你交 zh-Hans 的 PR,我們會請你轉成繁中。
  • 自然翻譯,不要逐字對譯。技術詞如果直接用英文比較自然,就保留英文(「使用 LangGraph 建 multi-agent 系統」)。
  • 完整風格規範請看 resources/style-guide.md——禁用詞、entry schema、license 標註慣例、寫作風格、推薦星等定義都在裡面。PR 之前請先讀。

流程

  1. 新 project 或大幅重組請先開 issue
  2. 一次一個 stage,PR 範圍要聚焦
  3. 等審查(通常 7 天)
  4. Reviewer 可能會問你「為什麼這個 project 教這個 stage」

要避免的反模式

  • ❌ 「leverage」、「delve」、「comprehensive」、「robust」(LLM tell)
  • ❌ 過度行銷(「revolutionary」、「game-changing」)
  • ❌ 只因為熱門就列上來
  • ❌ 大段引用 project 自己的行銷文案

擔任 Stage / Branch 維護者

除了交一次性 PR,也歡迎擔任特定 stage 或 branch 的長期維護者——負責定期 review、處理該領域的 issue、把關該領域的 PR。

自薦流程:

  1. 開一個 issue,標題 [maintainer] Stage N — your-handle[maintainer] for-X branch — your-handle
  2. 講清楚你願意 commit 多久(建議至少一季 = 3 個月)
  3. 簡述你在這個領域的背景

詳見 CONTRIBUTORS.md。每個 stage / branch 的 maintainer 名單都在那邊。

License

貢獻即代表你同意你的內容以 MIT 授權。