
awesome-agentic-ai-zh
🤖 AI Agent 學習地圖 — 從基本 LLM 概念到自己打造多 agent 系統
學習路線圖 + 145+ 資源 curation + 簡單 illustrative 案例
結構化 8 階段、從「LLM 是什麼、token 怎麼算」走到 multi-agent 編排、Computer Use / Browser Use / Sandbox
🎯 專案介紹
本 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 完整 catalog | 145+ 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。
線上閱讀
- 學習地圖(兩條學習路徑) — 看完這節決定走 Track A 還 Track B
- Stage 0 基礎準備 — 已經會 Python / git / API 的人可以直接跳 Stage 1
本地下載
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)
🗺️ 學習地圖(兩條學習路徑)

走完 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 · JSON | 1-2 週 |
| 1 | LLM 基礎(LLM Basics) | token · API · 各家 LLM 比較 · 本地 LLM | 1 週 |
| 2 | Prompt 設計(Prompt Engineering) | 系統 prompt · few-shot · CoT | 1-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 / observability | 1-2 週 |
| +5 | Stage 5 — Claude Code 生態(共用 hub) | MCP · Skills · Plugins · Subagents、Track A 必看 5.1-5.4 / 選讀 5.5-5.6 | 1-2 週(Track A 視角) |
| +8 | Stage 8 — Agent Interfaces(共用 hub) | Computer 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 週 |
| 4 | Agent 框架(Agent Frameworks) | LangGraph · AutoGen · CrewAI · Smolagents | 2-3 週 |
| 5 ⭐⭐ | Claude Code 生態系(Claude Code Ecosystem)(共用 hub、Track A 也學) | MCP · Skills · Plugins · Subagents | 3-4 週(Track B 視角) |
| 6 | 上下文管理(Context Engineering):RAG 與 Memory | vector DB · long-term memory · contextual retrieval | 2 週 |
| 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 list | 1 週(不寫 code) |
| 8 ⭐⭐ | Agent 操作介面(Agent Interfaces)(共用 hub、Track A 也學) | Computer Use · Browser Use · Code Sandbox、2024-2026 frontier | 2-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 適用)
走完主幹後,依你的身分挑一條延伸路線繼續走。不確定挑哪條?

💡 「日常使用者」這條路線不必走完主幹就能直接讀——是給「想用 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.pypass、會誤以為「我學會了」、其實沒寫一行 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 agent | resources/setup-guide.md | 30-45 分鐘從零裝好(API key、Python、第一個 hello-world) |
| 不知道挑哪個 LLM provider | resources/setup-guide.md A | Anthropic / OpenAI / DeepSeek / Kimi / NVIDIA NIM 對照 |
| 同主題 awesome list / 中文社群 | RESOURCES.md 同主題清單 | 5-10 分鐘逛一輪 |
📖 概念 / 用語
| 你的狀況 | 去哪 | 內容 |
|---|---|---|
| 不懂某個詞(LLM / agent / RAG / token / MCP / Skill / 向量資料庫…) | resources/glossary.md | 30+ 詞、每個 30-80 字 + 哪 stage 講細的 |
| 想搞懂 agent 為什麼有的在 terminal、有的在 Telegram、有的在 Jetson | resources/agent-paradigms.md | 5 種 agent 型態 mental model + Hermes / OpenClaw 例子 |
| MCP / Skills / Plugins 用語對照 | RESOURCES.md 三個核心用語 | 1 頁速查表 |
🛠 動手實作
| 你的狀況 | 去哪 | 內容 |
|---|---|---|
| 想動手寫 Skill / MCP server / 接 Word / Zotero / 本機 LLM | resources/cookbook.md | 6 個 step-by-step recipe、每個 30-50 分鐘 |
| 想用 subagent 但不知該派誰、怎麼派、派什麼工作 | resources/subagent-cookbook.md | 15 個複製貼上即用的 dispatch recipe |
| 自己寫 subagent / 組合多個 / debug 跑壞的(進階) | resources/subagent-advanced.md | description 寫法 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.md | 5-10 分鐘讀完、配合每個 stage 用 |
🔌 接日常工具 / 找 MCP server
| 你的狀況 | 去哪 | 規模 |
|---|---|---|
| 接 Notion / Obsidian / Excel / GitHub 等工具 | RESOURCES.md 接日常工具 | 7-8 個 highlight |
| 完整 MCP server / Skill 目錄(含星等、分類) | resources/mcp-skills-catalog.md | 62 條、6 大分類 |
🔬 研究 / production 級
| 你的狀況 | 去哪 | 內容 |
|---|---|---|
| 研究 workflow + multi-LLM delegation skill | RESOURCES.md 研究工作流 | 本 repo 維護者出品的 Claude Code 研究 skill 對 |
| CLI agent 7 家對照 + production 搭配 | resources/cli-agents-guide.md | Track A 的核心參考、148 行 |
| Schema 設計規則(tool calling 必看) | resources/schema-design-cheatsheet.md | 5 條黃金規則 + 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.md 跟 resources/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 是「廣度資源庫」,互為補充
其他相關專案
同主題、不同切入角度的清單,搜資源時可以一起用:
wong2/awesome-mcp-servers— MCP server 清單,按分類整理punkpeye/awesome-mcp-servers— 另一份 MCP server 清單hesreallyhim/awesome-claude-code— Claude Code 相關工具與 plugin 清單
這些是純清單形式(看到再挑),本 repo 的不同點是有「從 Stage 0 一路走到 production 的學習順序」。
貢獻者
新貢獻者會自動出現在上方。完整列表 → GitHub Contributors。
個人
- @WenyuChiou — Maintainer
🎓 引用
如果這個學習地圖對你的學習或工作有幫助,歡迎引用:
@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
License
MIT。Maintained by @WenyuChiou。
⭐ 如果這個 repo 對你有幫助,歡迎給個 Star — 這對作者繼續更新是很大的鼓勵
Stage 0 — 基礎準備(Foundations)
⏱ 時間估算: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 / 網站。
| 主題 | 資源 | 適合誰 | 為什麼推薦 / 備註 |
|---|---|---|---|
| Python | Python Crash Course | 從零學 Python | 書 + 練習;書付費、練習免費 |
| Real Python | 已會基礎、想深入單一主題 | 高品質免費文章、Google 搜尋常出現 | |
| Corey Schafer YouTube | 喜歡英文影片學習者 | 從基礎到進階、講解清楚 | |
| Boot.dev | 想要互動式練習 | 部分免費、付費含完整 backend 路線 | |
| runoob.com Python 教學 | 中文讀者快速查語法 | 中文 Python 入門參考 | |
| Git | Pro Git book | 想徹底搞懂 Git | 免費完整參考書、官方推薦 |
| Atlassian Git Tutorials | 想學 workflow(branch / merge / rebase) | 以 workflow 為主、視覺化好 | |
| Oh Shit, Git!?! | 出包時急救 | 「我搞砸了 X、怎麼救」cheat sheet | |
| git-flight-rules | 想要更深的急救手冊 | 高人氣 cheat sheet、覆蓋場景更廣 | |
| CLI / Shell | The Art of Command Line | 想系統性學命令列 | ★ 160k+、多語言版、新手到進階都涵蓋 |
| Learn Shell | 喜歡互動式練習 | 互動式 Bash 教學、瀏覽器內跑 | |
| explainshell.com | debug shell 指令 | 把任何 shell 指令拆解講解(debug 救星) | |
| REST API | MDN — HTTP | 想搞懂 HTTP 協定 | 最 canonical 的 web reference |
| Postman Learning Center | 用 GUI 探索 API | API 探索工具、視覺化好 | |
| HTTPie | 偏好 CLI、curl 太醜 | 比 curl 友善的命令列 HTTP client | |
| YAML / JSON | YAML 官網 | 需要查語法規格 | YAML 規格文件 |
| JSON crash course | 第一次接觸 JSON | 官方快速指南 | |
| jq | 命令列處理 JSON | agent 工作中常用、處理 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)
⏱ 時間估算: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.5 | 1M(Haiku 4.5 為 200k) | long-form / coding / agent / safety alignment | 寫 paper / code review / agent runtime | platform.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 / Flash | 2M(Pro 系列、Flash 為 1M) | 長 context / 原生 multimodal / Google 整合 | PDF / 影音 / 大量文件 / Google Workspace | ai.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 生成 / math | API proprietary、部分 weights OSS 在 HF | api-docs.deepseek.com |
| Qwen(阿里) | Qwen3(cloud DashScope + Apache 2.0 OSS) | 128k+ | 中文最強 OSS / 多模態 / agent | 中文長文 / agent / self-host | Apache 2.0(OSS)+ proprietary(cloud) | qwen.ai · DashScope |
| Kimi(Moonshot) | K2.6 multimodal + Agent | 超長 context(1M+) | 長 context / 中文長文 | 整本書讀 / 文獻分流 | Proprietary | platform.moonshot.cn |
| GLM(智譜 Zhipu) | GLM-5 proprietary / GLM-5.1 Apache 2.0 | 128k | 中文 / tool use / agent | 中文 agent / 多輪對話 | proprietary + Apache 2.0(5.1) | open.bigmodel.cn · chatglm.cn |
| Hunyuan(騰訊) | T1(deep-thinking、Transformer-Mamba MoE)+ TurboS | 128k | 可比 DeepSeek R1 推理、中文 | 中文推理 / 騰訊生態 | Proprietary | hunyuan.tencent.com |
| MiniMax | abab6.5 + M2.7 | 200k | 多模態 / 中文長 prose | 中文寫作 / 影音 multimodal | Proprietary | platform.minimax.io |
| Yi(01.AI / 李開復) | Yi-Lightning(API 新旗艦)/ Yi-34B-Chat(OSS、200k context) | 200k | 中文 OSS 替代 Llama | 中文 self-host / 中文 API | Apache 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 base | llama.com · HF Meta |
| Gemma(Google) | Gemma 4 26B MoE + 31B dense(2026-04 釋出、Arena #3) | Apache 2.0 | 小巧高效 / Apple MLX 整合好 / multimodal | Edge / mobile / 4-8GB RAM 機器 | ai.google.dev/gemma |
| Mistral(Mistral AI) | 7B / Mixtral 8x7B / Codestral | Apache 2.0(OSS 部分) | 開源 7B 級最強 | 商用 self-host / EU 主權 | mistral.ai · HF Mistral |
| Phi(Microsoft) | Phi-4 14B reasoning + Phi-4-multimodal-instruct(multimodal 版) | MIT | 小但強 / reasoning / 適 edge | 4GB+ RAM / mobile / reasoning 入門 | HF microsoft |
🎯 我該選哪家?(按場景反查)
| 你的場景 | 推薦 + 為什麼 |
|---|---|
| 第一次學 LLM API、教材完整度優先 | Claude — Anthropic Cookbook + Courses 是社群公認最完整 |
| 寫長文 / paper / code review | Claude Sonnet — long-form prose 強項 |
| 多模態(PDF / 影音 / 圖) | Gemini 或 Kimi — 原生 multimodal |
| 廣度查詢 + function calling 框架 | GPT — ecosystem 最廣、SDK 整合最深 |
| 中文場景 + 商業 API | Kimi(長 context 強、能塞整本書)或 DeepSeek(cost 最低)或 GLM(agent 友善) |
| 中文場景 + 開源 self-host | Qwen 3(Apache 2.0、目前中文最強 OSS) |
| 推理 / math(reasoning model) | DeepSeek R1 / Hunyuan T1 / OpenAI o-series |
| 隱私 / offline / 不付 API | Llama 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)
| 資源 | 用途 | URL | 2026-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。
📚 必修閱讀
- Anthropic — Claude 模型總覽 — 官方模型 family、含 2026 最新 Opus 4.7 / Sonnet 4.6 / Haiku 4.5
- anthropics/courses — Anthropic API Fundamentals ⭐⭐⭐⭐⭐ ★ 21k+ — Anthropic 官方 5 course umbrella、module 1「Anthropic API Fundamentals」對應本 stage。Jupyter notebook、用 Claude 3 Haiku(最便宜)跑、跟著做就能拿到 API 基本功
- OpenAI Quickstart — 第一次 API call 的步驟
- A Visual Guide to LLM Tokenizers — Hugging Face 的入門
- Anthropic API Pricing — 把計價表看完,算一下 1k input + 1k output 的成本
🎥 中文影片補充(強烈推薦):
- 李宏毅 — 生成式 AI 導論(2024 春台大課程) ⭐⭐⭐ — 第 1-5 集講 LLM 是什麼、怎麼運作、token / context window / temperature 怎麼影響輸出。中文圈最高品質的 LLM 學術級導論、台大授課、官方頁含投影片 + YouTube。最新整合版見 GenAI-ML 2025 秋
- 3Blue1Brown — Transformer 視覺化(中文配音版:3Blue1Brown 中文)— LLM 內部運作 visual intro
- Andrej Karpathy — Intro to LLMs — 英文影片、1hr、英文圈最被推薦的 LLM 入門影片
🛠 動手練習(基礎 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.py、python 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_tokens → usage.completion_tokens;usage.input_tokens → usage.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:3b 或 qwen2.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 | ⭐⭐⭐⭐⭐ | 系統性從零學一遍 Claude | Anthropic 自家完整 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 RAM | Ollama 底層 inference engine,★ 108k+、MIT | |
| mudler/LocalAI | ⭐⭐⭐⭐ | 團隊合規、要 self-host 全套 OpenAI 替代 | drop-in OpenAI API 替代品(chat / embedding / image / TTS / STT),★ 46k+ | |
| ml-explore/mlx | ⭐⭐⭐⭐ | Mac 開發、想榨乾 Apple Silicon | Apple 為 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)
⏱ 時間估算: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 回應
📚 必修閱讀
- 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
- anthropics/courses — Real World Prompting ⭐⭐⭐⭐ ★ 21k+ — 同 umbrella 的 module 3,「真實情境下怎麼用 prompting」:chatbot / legal / financial / coding 案例 walk-through。看完 #1 再來看 #2
- Anthropic Prompt Engineering Guide — 官方 docs、配合上面 #1 一起讀
- OpenAI Prompt Engineering — OpenAI 觀點
- dair-ai Prompt Engineering Guide — 學術風,深入
- Anthropic — Prompting Best Practices — 直接清楚
🎥 中文影片補充(強烈推薦):
- 李宏毅 — 生成式 AI 導論(2024 春台大課程) ⭐⭐⭐ — 中後段集數講 prompt engineering(few-shot、CoT、in-context learning)+ 對應 lab。中文圈最完整的 prompting 學術級教學。最新整合版見 GenAI-ML 2025 秋
- 李宏毅 — 機器學習 2025 春(含 prompt + LLM 章節) — 適合想看 ML 完整背景的人
🛠 動手練習
🦙 本 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 自訂條款、研究/非商用為主) | |
| 官方 cookbook | Anthropic Cookbook — Prompt patterns | ⭐⭐⭐⭐⭐ | Claude 進階 prompting(含 prompt caching / multimodal) | Stage 1 已介紹、本 stage 重點看 misc/prompt_caching.ipynb 跟 multimodal/ |
| 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/dspy ⭐ Stage 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 Engineering | context window 裡裝什麼資訊(RAG / memory / tool defs / history) | Stage 6 — Memory · RAG · Context Engineering |
| 3. Harness Engineering | LLM 外面的 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。
延伸閱讀(不必修、未來想深挖時看):
Meirtz/Awesome-Context-Engineering(★ 3k+)——從 prompt engineering 一路推到 production agent 的 surveyWindy3f3f3f3f/how-claude-code-works(★ 2.4k+)——Claude Code 內部解析,含 context engineering 章節
✅ 進 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)⭐
⏱ 時間估算:2-3 週(約 10-20 小時)
💡 用語密集(agent / tool use / function calling / ReAct / structured output⋯)→ 翻
resources/glossary.md2。 🗺️ 進 Track A(CLI Power User)還是 Track B(Agent Builder)前,先看resources/agent-paradigms.md— 5 種 agent 型態的全景圖,幫你選軌。
📋 本章組成:〔開場框景:AI/LLM/Agent 三者關係〕→ 學習目標 → 進入條件 → 必修閱讀 →〔可選 · 概念地圖〕→ 動手練習 → 反思(概念 + 路由)→ 精選 Projects → 自我檢查 🔑 關鍵名詞:見
resources/glossary.md2
🤖 開始前:AI / LLM / Agent — 三者怎麼分?
本節是「開場框景」(由大到小 pedagogy):先把學習者腦中的 mental hierarchy 建好,再進 學習目標、練習。這節只做簡短說明 + 對照,深度入門讀物已經是中英文圈各自的 canonical reference(見下方資源)。不是重寫 hello-agents Ch1。
一張階層圖先建立認知

→ 「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 |
| Agent | LLM + 工具 + 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 教怎麼變強。
📚 深度入門資源(中英文 / 影片優先)
🀄 中文:
- 李宏毅 — 生成式 AI 導論(2024 春台大課程) ⭐⭐⭐ — 中文圈最高品質的 AI / LLM / agent 學術級導論。每集 30-60 分鐘、台大授課、官方頁含投影片 + YouTube 連結。LLM / agent 概念都涵蓋。最新整合版見 GenAI-ML 2025 秋、YouTube 主頻道 @HungyiLeeNTU
- datawhalechina/hello-agents Ch1「初識智能體」 ⭐ — 文字版最完整中文 agent 導論
- datawhalechina/hello-agents Ch2「智能體發展史」 — BabyAGI → AutoGPT → Claude Code 演化脈絡
- 3Blue1Brown 中文配音版 — LLM / Transformer 視覺化解說(中文配音)
🇺🇸 English:
- Andrej Karpathy — "Intro to Large Language Models" ⭐⭐⭐(1hr)— LLM 從零開始 visual intro(ex-OpenAI / ex-Tesla AI Director、英文圈最重視的 LLM 入門影片)
- Andrej Karpathy — "Let's build GPT from scratch" ⭐⭐(2hr)— 想看 LLM 內部到程式碼級的人
- 3Blue1Brown — "But what is a Transformer?" ⭐⭐⭐ — visual 解釋 LLM,英文圈最被推薦的視覺化教材
- Lilian Weng — "LLM Powered Autonomous Agents" ⭐⭐⭐ — canonical 1-page agent anatomy(Planning / Memory / Tool use / Action)、英文圈被引用最多的 agent 解剖文
- Anthropic — "Building Effective Agents" ⭐ — Anthropic 觀點:何時該用 agent、何時 workflow 就夠
- Chip Huyen — "Agents" — practitioner 視角,full chapter 級深度
選讀 / 進階補充:
- Simon Willison — "I think 'agent' may finally have a widely enough agreed upon definition" — working definition:「agent runs tools in a loop to achieve a goal」、含對照 OpenAI 等不同定義的爭議(給已有基礎的人)
- DeepLearning.AI Short Courses:「AI Agents in LangGraph」/「Multi AI Agent Systems with crewAI」/「Functions, Tools and Agents with LangChain」(API 多數是 2023-2024 舊版、看概念為主、寫 code 對照官方最新 docs)
- microsoft/ai-agents-for-beginners — 微軟官方 12 課 build-agent 入門(MIT、★ 64k+)。結構化、英文、含 code;適合想要一條平行入門課對照的人,不是本 stage 動手練習的替代
- liyupi/ai-guide — 中文圈最大 AI 資源聚合型 repo(不是原創教材、適合廣度延伸)
📌 資源清單上限規則:本 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 函式
📚 必修閱讀
- Anthropic — Tool Use — 官方指南
- anthropics/courses — Tool Use ⭐⭐⭐⭐⭐ ★ 21k+ — Anthropic 官方 5 course umbrella、module 5「Tool Use」對應本 stage。Jupyter notebook 互動式練習、含 multimodal prompts / streaming / tool 實作 walk-through
- ReAct: Synergizing Reasoning and Acting in Language Models — Yao et al. 2022,奠基論文。至少讀 abstract 跟 Section 3。
- OpenAI — Function Calling — function calling 格式參考
- 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 framework、Claude 原生 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 個容易踩坑:
- 忘記把 assistant response 加回 messages——下輪 LLM 看不到自己上輪講什麼、會 loop forever
toolmessage 沒帶tool_call_id——LLM 無法配對哪個 result 對應哪個 call- 沒
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
為什麼不 raise:raise 直接中斷 loop、LLM 沒機會 recover。Production 的 retry 不在 Python 層、而在 LLM 層——這個 mental flip 是 Stage 3 練習 5 的核心。
Bad vs Good error 回傳:
| Bad | Good |
|---|---|
raise Exception("failed") | return {"error": "network timeout", "retry_hint": "try again in 1s"} |
return "failed" | return {"error": "...", "category": "transient", "retry_hint": "..."} |
| 無限 retry | max_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) type 改 number、(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-Refine | Actor → Critic → Actor,single session | 不需 | 本節 routing(下方) |
| 完整 Reflexion(含 episodic memory) | 上面 + 把失敗反思存起來、跨 session 累積 | 需要 | Stage 6 進階:Reflexion with Memory |
📚 想動手 / 想深入?直接讀這些
Paper:
- Reflexion (Shinn et al. 2023) ⭐ — 原 paper,定義「verbal reinforcement learning」
- Self-Refine (Madaan et al. 2023) — single-agent self-critique,是「基本反思」的學術定義
Reference 實作:
- arunpshankar/react-from-scratch — 已在本 stage 精選 Projects 列出,含 Reflection 實作可直接讀
- LangChain — Reflection Agents(blog) — framework 實作參考 + 完整 working notebook
- datawhalechina/hello-agents — 對應章節(自我反思 / Self-Refine 段落、中文完整教學)
💡 想看反思怎麼長進 production agent:Stage 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)
⏱ 時間估算: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)
📚 必修閱讀
- Anthropic — Building Effective Agents — 什麼時候用 framework、什麼時候直接用 raw API
- LangChain — Conceptual Guide: Agents — agent 的抽象概念
- Best Multi-Agent Frameworks 2026 comparison — 當前市場定位
- 挑一個 framework 的 Quickstart — 選 LangGraph 或 CrewAI,把官方教學從頭跑到尾
🤔 什麼是 multi-agent framework?
兩個維度先分清楚(workflow vs agent / single vs multi)
要看懂 multi-agent framework 之前、有一個有用的釐清方式——把 workflow vs agent 跟 single 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 + 若干 tools | 2+ LLM、各有角色(researcher / writer / critic ...)、orchestrator 協調 |
| 怎麼決策 | 同一個 LLM 從頭想到尾 | 角色拆分 + handoff、不同 LLM instance 看不同視角 |
| State 管理 | 線性 message history | shared 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 resort。Anthropic 跟 Cognition 兩家 frontier lab 在 2024-2025 都明白寫過:90% 用例其實不該用 multi-agent——硬上會付 3-10× token、debug 痛苦、context fragmentation(context 被切散在多個 agent、彼此看不到全貌)嚴重。
| 立場 | 來源 | 核心論點 |
|---|---|---|
| Anthropic | Building Effective Agents (2024)、How we built our multi-agent research system (2025) | 多數場景 simple workflow + single agent 就夠;multi-agent 只在「研究型 / 並行探索」任務真的有幫助 |
| Cognition | Don'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 explosion | single agent prompt 塞不下所有 tool description / context | Supervisor-Worker(分流給 sub-agent) |
| 3. 角色衝突 | 同一個 LLM 既當 writer 又當 critic 會 self-justify | Debate / Peer review |
| 4. 平行加速 | 3 個 research 子任務同時跑、wall-clock 1/3 | Parallel / 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 / Handoff | ⭐ | agent 之間 1:1 handoff、無中央 orchestrator | customer support routing、context switch | OpenAI Swarm、OpenAI Agents SDK |
| 2. Sequential (Planner → Executor) | ⭐⭐ | planner 規劃多步驟 + executor 執行 | 多步驟自動化、code generation | LangGraph、ChatDev paper |
| 3. Parallel (平行加速) | ⭐⭐⭐ | N 個 agent 同時跑、結果 aggregate | research / map-reduce 任務、wall-clock 1/N | LangGraph 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 simulation | AutoGen GroupChat、CAMEL paper、Generative 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 設計):
- Anthropic — "Building Effective Agents" ⭐⭐⭐ — 何時用 workflow 何時用 agent、5 個經典 orchestration pattern。英文圈 multi-agent 設計入門必讀
- AutoGen paper (Wu et al. 2023) — Microsoft 多 agent 對話框架原 paper
- CAMEL paper (Li et al. 2023) — multi-agent role-play 開山之作
- ChatDev paper (Qian et al. 2023) — multi-agent software dev、planner-executor canonical
- Generative Agents paper (Park et al. 2023) — 25 個 agent 在 The Sims 互動、社會 simulation
🀄 中文系統教材:
- hello-agents Ch6「框架開發實踐」+ Ch7「構建你的 Agent 框架」 ⭐ — 中文圈完整講 framework 開發 + 從零構建。注意:Ch4「智能體經典範式構建」是 single-agent paradigm(ReAct / Plan-and-Solve / Reflection),不是 multi-agent
- 李宏毅 — 生成式 AI 導論 — 中後段有 AI agent / multi-agent 相關集數
Framework 官方 multi-agent docs:
- LangGraph — Multi-Agent Systems — supervisor / swarm / hierarchical 三種架構官方教學
- Anthropic Cookbook —
customer_service_agent.ipynb— multi-agent orchestration canonical 範例(routing + handoff) - Microsoft AutoGen — Examples — group-chat / debate / peer review pattern 完整範例
💡 建議框架學習流程(5 步):
- 建立 mental model(30 min)— 讀 Anthropic Building Effective Agents、把 workflow vs agent 跟 single vs multi 兩維度搞清楚
- 跑 1 個 framework quickstart(2-3 hr)— LangGraph 或 CrewAI 二選一、跑官方多 agent 教學
- 對照 Anthropic Cookbook
customer_service_agent(1 hr)— production-style routing + handoff 範例- (可選) 深入學術側:挑 paper 1-2 篇看(AutoGen / CAMEL / ChatDev / Generative Agents)
- (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 / chaining | tool A output → tool B input、不要 LLM 中間 narrative(省 token + 省 latency) | LangGraph state graph 直接連接 node、CrewAI sequential tasks、Pydantic AI 的 type-safe pipeline |
| Tool-augmented retrieval | tool 本身是 RAG search → 回結果再 reason | Stage 6 練習 4 RAG pipeline + Stage 3 練習 2 multi-tool 結合(LangGraph 直接把 retriever 包成 tool node) |
📚 深度資源:
- Anthropic — Tool Use best practices — 官方 tool design guide
- LlamaIndex — Tool Router pattern — Dynamic selection canonical reference
- LangGraph — Tool Node — composition graph 寫法
💡 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 + LangSmith | multi-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-native | model-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 output | type-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 / 開源模型但不想改 code | provider-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)⭐⭐
⏱ 時間估算: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.md5。
👥 共用 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.mdType 1(IDE-coupled)+ Type 2(Terminal pair-programmer);想看完整 5 種 paradigm 對照也從這份開始。
⚠️ 想用本機 LLM?這個 stage 不是那條路線。 Claude Code 需要 Anthropic API / OAuth,不能直接改接 Ollama 或本機 endpoint。離線、隱私資料或不想用 API 額度時,請看
resources/cookbook.mdRecipe 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.md5
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 個架構層 + 3 個工程學 discipline 整合視圖。
每層 1 句白話 + Claude 的版本
| Layer | 是什麼 | Claude 的版本 | 誰管 | 學在 |
|---|---|---|---|---|
| L7 Interface | 使用者跟 agent 交談入口 | claude-code CLI / Desktop | Harness Eng | Stage 5.1 |
| L6 Workflow | 固定可重用流程模板 | Skills(SKILL.md)+ Slash commands + Plugins(打包 Skills / hooks / commands、屬 packaging) | Prompt Eng | Stage 5.3 / 5.4 |
| L5 Coordination | 多 agent 分工合作 | Subagents + Agent team + Background | Harness Eng | Stage 5.5 |
| L4 Memory / Context | 跨對話 / 跨 session 記事情 | History / /compact / Memory hooks | Context Eng | Stage 6 |
| L3 Control Plane | tool 執行前 / 後攔截 / validation / 阻擋 | Hooks(PreToolUse / PostToolUse 等) | Harness Eng | Stage 5.1 hooks 段 |
| L2 Tool Use | LLM 呼叫外部 function 的 protocol | Anthropic Tool Use(input_schema) | Tool design | Stage 3 |
| L2.5 Tool Provider | 把外部 API 包成 tool 給 Layer 2 用 | MCP servers(Notion / Gmail / Slack) | Context Eng + Tool | Stage 5.2 |
| L1 Foundation | LLM 本體(system prompt 直接送達這層) | Anthropic API | Prompt Eng | Stage 1 + Stage 2 |
3 工程學 Discipline overlay(核心 insight)
「Prompt / Context / Harness」是不同層的 discipline——學會其中一個不會自動會另一個:
| Discipline | 負責哪些 layer | 1 句話 | 學在 |
|---|---|---|---|
| Prompt Engineering | L1 + L6 | 「送進 LLM 的字串怎麼設計」 | Stage 2 |
| Context Engineering | L4 + L2.5 | 「context window 裝什麼資訊」 | Stage 6 |
| Harness Engineering | L3 + 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 + 簡化版:
| Layer | Claude Code | OpenAI Codex | Gemini 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.md | AGENTS.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 / script | LLM 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 各放哪)
必修閱讀
- Anthropic — Claude Code Quickstart — 官方安裝指南
- Anthropic — CLAUDE.md best practices — 怎麼寫專案 memory
- Anthropic — Slash Commands — 官方完整 slash command 列表
- Anthropic — Settings —
settings.json完整 schema + env var - 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 window | context 接近用滿 |
/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 / 回報 bug | Claude 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 三個抽象:
| 抽象 | 是什麼 | 範例 |
|---|---|---|
| Tools | LLM 可以呼叫的 function | read_file(path) / query_db(sql) / send_slack(channel, msg) |
| Resources | LLM 可以讀的資料源 | file:///path/file.md / postgres://db/users |
| Prompts | server 預定義的 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
必修閱讀
- Anthropic — Introducing MCP — 最初發表,概念總覽
- MCP Specification — 實際的協定規格
- 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.md2 - 練習: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。讀 everything 跟 filesystem source 理解協定運作。安裝:npx -y @modelcontextprotocol/server-filesystem /path 或 pip 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 source | GitHub 官方維護、真正 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-creatorskill 自動產生(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 任務、結果回主 session | description 匹配自動 delegate | code-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/子目錄的用途
必修閱讀
- Anthropic — Claude Skills 文件
- 幾份範例 SKILL.md——從
anthropics/claude-code或社群 marketplace 拿 - Hello-Agents — Extra08 如何寫出好的 Skill — 中文最完整的 Skill 最佳實踐
- Hello-Agents — Extra05 Agent Skills 與 MCP 對比解讀 — Skills vs MCP 概念對比
動手練習
- 練習:SKILL.md — 寫一份 200 字的 skill,解決你日常工作中的某一件事。step-by-step 怎麼做 →
resources/cookbook.md1 - 練習:SKILL with references — 加一份
references/markdown 讓 skill 可以引用 - 練習:SKILL eval — 加
evals/evals.json,放 3-5 個自我測試
📦 本 repo 自帶 meta-example:
examples/stage-5/tool-calling-tutor/是這個 stage 的對應 skill 範本——完整 frontmatter(含 trigger phrases + Do NOT use for)、3 份references/、evals/evals.json5 個 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-vetter | anthropics/skills | 裝任何外部 skill 前必跑——檢查紅旗、permission scope、suspicious pattern。等於 marketplace skill 的 SAST |
| 🔍 找 / 安裝 skill | find-skills | anthropics/skills | 自然語言查詢、自動安裝。「我想要做 X」就回對應 skill |
skill-lookup | claude-plugins-official | 跟 find-skills 互補,探索 / 搜尋 helper | |
| ✍ 寫自己的 skill | skill-creator | anthropics/skills + claude-plugins-official | 自動產生 frontmatter + 子目錄結構、寫 skill 必裝 |
| 📄 Office docs 處理 | pdf / docx / xlsx / pptx | anthropics/skills | 讀寫 PDF / Word / Excel / PowerPoint。必裝 set——任何 office workflow 必備 |
| 🔧 Code review | code-reviewer / code-review-excellence | claude-plugins-official | staged diff 安全 / 風格 / 測試 review |
| 🐛 Debug | debugger / systematic-debugging | claude-plugins-official | 系統化 root cause 分析、避免 quick fix |
| 🎓 學術寫作 | academic-writing-skills | community | findings-first / mechanism / banned word audit |
| 🔌 MCP 整合 / 寫 server | mcp-builder / mcp-integration | claude-plugins-official | 寫 MCP server 跟整合既有 server 的腳手架 |
| 💻 frontend / fullstack | frontend-developer / fullstack-developer | claude-plugins-official | React 元件 / 全棧架構輔助 |
| 📊 資料分析 | data-analyst / visualization-expert | community | SQL / pandas / chart 選型 |
| ⚙ 權限 / 設定整理 | update-config / fewer-permission-prompts | claude-plugins-official | hooks / permissions / env var 管理 |
| 🔁 自我改進 | self-improving-agent | community | 捕捉 learning / error / correction、agent 持續改進 |
| 🌐 通用 / fallback | general-purpose | Claude Code 內建 | 複雜開放任務、未涵蓋情境的 default 入口 |
建議入手順序:
- 第一個必裝:
skill-vetter(裝其他 skill 前先用它檢查) - 第二批必裝:
skill-creator+find-skills(寫 / 找 skill 用) - 依工作領域:Office workflow 加
pdf/docx/xlsx、開發加code-reviewer/debugger、學術寫作加academic-writing-skills - 想看更多:逛
obra/superpowers或wshobson/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 notes | Claude 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.jsonschema(name、version、skills array、configuration)marketplace.jsonschema(plugins array、source、metadata)claude plugin marketplace add的流程- 區分 single-plugin bundle vs multi-plugin marketplace
- 發佈自己的 marketplace
必修閱讀
- Anthropic — Plugins 文件
- 讀下面 2-3 個 marketplace 的
plugin.json與marketplace.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-review | claude-plugins-official | 官方 code review skill 集合、staged diff review + security check |
pr-review-toolkit | claude-plugins-official | PR review 完整流程(comment、suggest、approve) | |
commit-commands | claude-plugins-official | git commit message 規範 + branching workflow | |
feature-dev | claude-plugins-official | 完整 feature 開發 cycle(spec → plan → implement → test) | |
frontend-design | claude-plugins-official | UI 設計 + responsive layout 輔助 | |
| 語言工具 (依用的語言挑) | typescript-lsp / pyright-lsp / rust-analyzer-lsp / gopls-lsp 等 | claude-plugins-official | 各語言 LSP 整合、35 個語言 plugin 都在這 |
| plugin / skill 自建 | skill-creator | claude-plugins-official | 寫自己的 skill 時自動產生 frontmatter + 結構 |
plugin-dev | claude-plugins-official | 寫自己的 plugin 時自動產生 .claude-plugin/ 結構 | |
mcp-server-dev | claude-plugins-official | 寫自己的 MCP server 時的腳手架 | |
hookify | claude-plugins-official | 寫 hooks 規則的工具 | |
| 領域特化 — 工程團隊 | engineering bundle | knowledge-work-plugins | 10 個 skill:architecture / code-review / debug / deploy-checklist / documentation / incident-response / standup / system-design / tech-debt / testing-strategy |
| 領域特化 — 財務團隊 | finance bundle | knowledge-work-plugins | 8 個 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-research 等 | knowledge-work-plugins | knowledge-work-plugins 18 個 vertical bundle——挑跟你工作領域對應的那個 |
| 外部整合 (第三方服務) | asana / github / gitlab / linear / firebase / playwright / terraform / discord / imessage / telegram 等 | claude-plugins-official (external) | 整合常用 SaaS / 開發工具 |
| community 廣度 | (挑感興趣的 skill) | rohitg00/awesome-claude-code-toolkit | 社群最大 agents / skills / hooks / templates 目錄 |
建議入手順序:
- 開發者必裝(5 個):
code-review+pr-review-toolkit+commit-commands+feature-dev+ 一個你語言的*-lsp - 按工作領域加 bundle:工程團隊裝
engineering、財務裝finance、其他類似 - 想寫自己的 skill / plugin → 裝
skill-creator+plugin-dev - 想看更多 → 逛
awesome-claude-code-toolkit或resources/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」型 marketplace | 18 個領域 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 個階段、看完這張再讀下面細節最快。
跟 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 process | Claude Code 內建 Task tool |
| Context isolation | framework 自己管 | 天生 各 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 寫。
| 平台 | Subagent | Agent team | Background agent | 機制 |
|---|---|---|---|---|
| Claude Code(CLI) | ✅ | ✅ | ✅ | .claude/agents/<name>.md + Task tool(subagent)+ agent teams + agent view / background |
| OpenAI Codex CLI | ❌ | ❌ | ❌ | AGENTS.md 只是 single-agent context file(類似 CLAUDE.md),不是 subagent 系統 |
| Google Gemini CLI | ❌ | ❌ | ❌ | GEMINI.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 / marketplace | obra/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-developer | React / 響應式 / a11y(accessibility 縮寫、視障 / 鍵盤使用者也能用的設計)領域知識 |
| 多步驟研究、不確定任務該歸哪類 | general-purpose | 通用、可 web search、適合 fallback |
| 問 Claude Code 自己的 feature 怎麼用 | claude-code-guide | hooks(工具執行前 / 後的攔截腳本、見下方 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 architecture | Plan |
| 多 source 比對哪 paper 講的對 | general-purpose 跑 deep research |
📋 完整 15 個 recipe(每個含情境 + subagent + 直接複製貼上的 prompt 範本 + 何時不用)→
resources/subagent-cookbook.md
易混淆觀念釐清(學完表格還是有點霧、看這節)
學生最常搞混的 3 組概念 + 5 條老手才知道的 gotcha——挑你需要的看:
Subagent vs Skill — 5 個關鍵差別
很多人把 Subagent 跟 Skill 當同一件事——其實完全不同層的東西:

| 維度 | Subagent(子 agent) | Skill(技能) |
|---|---|---|
| 執行環境 | 新的獨立 context window(底層是新 subprocess) | 主 session 內、同 context |
| 工具權限 | 自己的 tools: 清單(可限制只能 Read / Grep) | 主 session 的工具(預設全開、skill 可用 allowed-tools: 縮減) |
| 回傳結果 | 一個 final message 摘要回主 session | 沒回傳、是行為改變(規則 / persona) |
| 適合做 | 長任務 / 平行跑 / 要 context 隔離 | 知識注入 / 規則 / 改 Claude 行為 |
| 範例 | code-reviewer / Explore / Plan | codex-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>.md 的 description 欄位。寫法影響觸發行為:
| 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 | 為什麼重要 |
|---|---|---|
| 1 | Description 寫精準即可 | 無官方字元上限、但過長 description 佔 context budget;建議「觸發條件 + 適用情境」寫具體、避免重複 |
| 2 | tools: 寫空 = 繼承主 session 全部工具 | 想限制 subagent 就要明寫工具清單;空字段 ≠ 沒工具 |
| 3 | 不寫 model: = 跟主 session 用同 model | 主 session 是 Opus、subagent 沒指定也 Opus(燒大錢)。省成本就寫 model: sonnet 或 model: haiku |
| 4 | Subagent 沒「我之前說過 X」記憶 | 每次派遣都是全新 context、看不到主 session 對話。Prompt 要 self-contained、不能 reference「我們剛討論的 Y」 |
| 5 | Subagent 也吃 hook | PreToolUse / 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) |
| 專業化 prompt | code-reviewer 永遠只 review、description 寫死「Use PROACTIVELY when commit」、不會被閒聊干擾 |
5 個缺點(什麼時候不值得):
| 缺點 | 影響 |
|---|---|
| Spawn 有 overhead | 任務 < 5 分鐘、自己跑更快——subagent startup 也吃時間跟 token |
| 無 cross-call memory | 每次 spawn 都新 context、看不到「我們剛討論的 X」——prompt 必須 self-contained |
| 只回一個 message | subagent 是「派出去、跑完回報一次」、不能跟你來回對話、不適合需要逐步 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 spec(frontmatter 欄位、project vs user scope、Task tool 介面)
- Agent team 完整指南(display modes、task list、subagent-as-teammate 進階)
- Agent view / background(v2.1.139+、quick start + dispatch 流程)
學習目標
- 講得出 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 即可)
必修閱讀
- Anthropic — Claude Code Subagents 官方文件 ⭐ —
.claude/agents/結構、Task tool 介面、最佳實踐 - Anthropic — Building Effective Agents orchestrator-workers — Anthropic 自己對 orchestrator pattern 的看法(理論 + 實例)
- 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 跑/agentslist 確認載入、然後用 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/agentsrepo 整個結構 +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-pythonsource 的 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。
📚 必修閱讀
- Anthropic — Building Effective Agents ⭐ — orchestrator / worker / handoff / reflection 等 pattern 的 canonical reference
- anthropics/claude-agent-sdk-python — Claude Code 官方 Python SDK 的 source;重點 file:
src/claude_agent_sdk/_internal/client.py(main loop 在這)+query.py(單回合 API) - ai-boost/awesome-harness-engineering ⭐(★ 940) — community curation:harness pattern / eval / memory / observability 整合
- ZhangHanDong/harness-engineering-from-cc-to-ai-coding — 中文圈最完整的 Claude Code 內部解讀
🛠 動手練習 — 解剖 agent loop(閱讀題,非寫 code)
這節不是寫 code 練習,是閱讀練習——production harness 不是抄 200 行範例能學的,是抄完還看不懂為什麼這樣寫,所以本練習要求你開 source、自己 trace。
步驟:
- clone:
git clone https://github.com/anthropics/claude-agent-sdk-python - 定位 agent loop:找出
_internal/client.py裡實際發出 LLM call、收 tool_use response、dispatch 給 tool runner 的核心 loop。提示:找async def跟tool_use_id關鍵字 - 標出前 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 接在哪
- 寫一段 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
⏱ 時間估算:2 週(約 10 小時)
💡 這 stage 用語密度高(RAG / 向量資料庫 / embedding / chunking / hybrid search / reranking⋯)→ 不熟先翻
resources/glossary.md3。
📋 本章組成:定位 → 入口 → RAG 主軸(基礎 + 進階 + DSPy + Eval)→ Bridge → Memory 主軸(3 pattern + Trio + 進階)→ Chunking → Reflexion / Reasoning → 練習 → Projects
🔑 關鍵名詞:見
resources/glossary.md3(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 能力
- Retrieval:從外部知識庫找出和當前任務相關的資料。
- Memory:保留跨對話、跨 session、跨任務的狀態、偏好與經驗。
RAG(Retrieval-Augmented Generation) 是目前最常見的 retrieval 架構;Memory 則負責讓 agent 記得使用者、任務歷史與自己的過去經驗。這一章會把兩者分開講,避免把「查資料」和「記事情」混在一起。
先把名詞切開:Retrieval / RAG / Vector Store / Memory 不是同一件事
| 名詞 | 不要混淆成 | 白話解釋 |
|---|---|---|
| Retrieval | RAG 全部 | 找資料的動作 |
| RAG | Vector DB | retrieve + generate 的整體流程 |
| Embedding | Memory | 把文字轉成向量、方便相似度搜尋 |
| Vector store | RAG | 儲存與搜尋 embedding 的地方 |
| Chunking | Retrieval 本身 | 把文件切成適合被搜尋的片段 |
| Memory | RAG | agent 對使用者、任務與過去經驗的持久管理 |
🎯 Context Engineering 是什麼(先定位)
一句話:Context Engineering = 決定每次呼叫 LLM 時、要把哪些資訊塞進它看得到的視窗(context window)。
重點不是「開了幾次對話」、是「每次對話裡塞了什麼」。Karpathy 2025-06 原 tweet 講得最精準:「把對下一步有用的資訊剛好填進視窗的精細藝術」。
📺 視覺學習:李宏毅 2025 第 2 講 — Context Engineering:AI Agent 背後的關鍵技術(NTU 生成式人工智慧與機器學習導論 2025)
三層 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 個常被搞混的概念 — 一張表分清楚
| 詞 | 是什麼(抽象 / 具體) | 範例工具 |
|---|---|---|
| Memory | agent 跨對話 / 跨 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(後面練習會用到chromadb、sentence-transformers等) - 對 list / dict / generator 等基礎 Python 結構上手
沒到的話 → 回 Stage 3 或 Stage 0 環境設定。
📚 必修閱讀
- LlamaIndex — RAG concepts — 最清楚的入門
- LangChain — RAG tutorial — 動手做
- Pinecone — Learning Center — vector DB 基礎
- Anthropic — Contextual Retrieval — Anthropic 搭配 prompt caching 的 RAG 寫法
- 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 細節。
閱讀順序建議:
- 🌐 RAG 基礎流水線(下一節)— 建立 mental model
- 🚀 進階 RAG 技巧 — GraphRAG / Contextual Retrieval / Hybrid Search 等 production 升級
- 🌉 從 RAG 到 Memory — 為什麼 RAG 還不夠、需要 Memory 補哪段
- 🧠 Memory 設計 — 短期 vs 長期、3 種 pattern、CoALA framework
- 🧩 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 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. store | vector + metadata 存進 vector DB | 預處理 | Chroma / Qdrant / pgvector |
| 5. retrieve + generate | query 也 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 哪一層 | 成本 |
|---|---|---|---|
| GraphRAG | vanilla RAG 不會做 multi-hop / 跨文件 entity-relation 推理 | retrieve 前(建 graph)+ retrieve 時(graph traversal) | 高(要先建 KG、需 LLM 抽 entity) |
| Contextual Retrieval | chunk 失去原文件 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/LightRAG ★ 35.1k MIT EMNLP 2025 — 目前社群最熱的選擇、輕量、KG + vector hybrid、cost 比 Microsoft 版低
- Microsoft GraphRAG — 原版 reference 實作、Apache-2.0、含 community detection
- gusye1234/nano-graphrag — < 1000 行的最小實作、適合先讀懂原理
Paper:From 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 — Contextual Retrieval blog ⭐ — 官方說明 + benchmark(failed retrieval rate 從 5.7% 降到 1.9%)
- Anthropic cookbook — 端到端 Jupyter notebook、含 prompt 模板
搭配技巧: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 search:Weaviate(內建 BM25 + vector + RRF)/ Qdrant(支援 sparse + dense vector)/ pgvector + Postgres FTS
- Reranker:Cohere Rerank API(商業、最常用)/ BGE Reranker(開源、HuggingFace、中文表現好) / Jina Reranker
- Framework 內建:LlamaIndex 的
SentenceTransformerRerank/ LangChain 的ContextualCompressionRetriever
Paper / 入門:
- Pinecone — Rerankers and Two-Stage Retrieval — reranker mental model 講最清楚
- Anthropic — Contextual Retrieval(上面已列)— 同時示範 hybrid + reranker、有 benchmark
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-Query | LLM 把 query 改寫成 N 個變體分別 retrieve、union 去重 | query 太短 / 模糊 / 多義 |
| RAG Fusion | Multi-Query + RRF 融合 N 個 retrieval 結果 | 同上、想要更穩定的排名 |
何時不用:query 已經是長 + 結構化(RAG over code、user 直接 paste error stack trace)——改寫反而引入雜訊。
Paper / 實作:
- HyDE (Gao et al. 2022) — 原始 paper
- RAG Fusion (Raudaschl 2023) — Multi-Query + RRF 的 reference 實作
- LangChain 內建
MultiQueryRetriever/ LlamaIndexHyDEQueryTransform
🔁 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 RAG | classifier 先判 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 / 實作:
- RAPTOR (Sarthi et al. ICLR 2024) ⭐ — 原始 paper
- parthsarthi03/raptor — 官方 reference 實作
- LlamaIndex 內建
RAPTOR pack
🧬 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
代表 repo:stanfordnlp/dspy ★ 34.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 條主軸:
- 🧠 KG + Memory 融合 — 從 flat vector store 走向「結構化、可演化、可聯想」的知識表示。代表:HippoRAG 2(海馬迴啟發、KG + PageRank、跨文件 multi-hop)、A-MEM、KAG。
- 🎬 Multimodal RAG — 從文字 retrieval 走向圖像 / 影片 / 表格 native。代表:ColPali(PDF 頁面圖像直接 embed、繞過 OCR)、TV-RAG、MegaRAG。
- 🤖 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 2 | KG + Personalized PageRank、跨文件 multi-hop、海馬迴啟發 | Gutiérrez et al. ICML 2025、OSU-NLP-Group/HippoRAG ⭐ |
| ColPali | PDF 圖像直接 embed、繞過 OCR、multimodal RAG 入門 | Faysse et al. 2024 |
| A-RAG / SoK Agentic RAG | retrieval 當 tool、agent 自己決策查幾次 | Ayanami0730/arag、SoK survey ⭐ |
| DSPy | 不寫 prompt、用 program + signature、auto-optimize | stanfordnlp/dspy ★ 34.4k |
| LightRAG | MS GraphRAG 的 lightweight 替代、EMNLP 2025 | HKUDS/LightRAG ★ 35.1k(已在 GraphRAG 段落) |
📚 完整縱覽 — 其他 12 個值得知道的進階 RAG 技巧(展開看)
| 技巧 | 一句話 | 年份 / Paper |
|---|---|---|
| Sentence-Window Retrieval | embed 句子、retrieve 後回傳 ± N 句 window | LlamaIndex 內建 |
| Parent-Child / Small-to-Big | embed 小 chunk、回傳 parent chunk | LangChain ParentDocumentRetriever |
| Multi-Vector Retrieval | 一個 chunk 多個 embedding(摘要 / 原文 / 假想問題) | LangChain MultiVectorRetriever |
| ColBERT / 後互動 retrieval | token-level 比對而非 pooled embedding | Khattab & Zaharia 2020、RAGatouille |
| LongRAG | 大 chunk(4k)+ long-context reader、減少 retrieval 次數 | Jiang et al. 2024 |
| MemoRAG | memory 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 觸發查、減 hallucination | arXiv:2512.19134 ⭐ 2025-12 |
| MegaRAG | 多模態 KG、長文件抽 entity + relation + 視覺、建層級圖 | arXiv:2512.20626 ⭐ 2025-12 |
| TV-RAG | training-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——你只解決了 Retrieval,Memory 管理還沒碰。為什麼這兩件事要分開?
RAG 解決「從外部知識庫 retrieve 相關片段」——但 agent 還需要「自己 跨對話 / 跨 session 記事情」。這兩件事不是同一個問題:
| 維度 | RAG | Memory |
|---|---|---|
| 內容來源 | 外部(PDF / 文件 / web / DB) | agent 自己的對話 / 經驗 |
| 寫入時機 | ingest 一次性、後續每次 retrieve | 每輪對話、每次 task 都可能寫 |
| 內容性質 | 偏靜態事實、文件知識 | 偏動態:user preference、過去互動、累積教訓 |
| 取代得了 RAG 嗎? | — | 取代不了——你不會把每份 PDF 當「memory」 |
| 被 RAG 取代嗎? | — | 不會——RAG 不會「記住上次 user 說了什麼」 |
3 個 RAG 不夠用的場景(剛好對應到 Memory):
- 跨 session 記 user preference / persona——user 上禮拜跟 agent 說「我是純素」、這禮拜回來、agent 還記得不能推薦肉食。RAG 知識庫不會這樣自動更新。
- agent 過去成敗教訓累積(Reflexion 主場)——agent 第一次跑 task 失敗、反思「為什麼失敗」存起來、下次遇類似 task retrieve 進 prompt 避免重蹈覆轍。RAG 知識庫不會「記住自己的失敗」。
- 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 維護、各擅其場:
| Framework | Stars | License | 主場 use case | 特色 |
|---|---|---|---|---|
| agentmemory | 7.7k★ | Apache-2.0 | Coding 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 |
| mem0 | 55.6k★ | Apache-2.0 | Chatbot / 個人助理 user-level memory | Auto 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 |
| Zep | 4.6k★ | Apache-2.0 | Temporal KG-based memory | 把對話歷史建成 temporal KG、entity 之間有時間軸、適合需要 audit trail / time-aware reasoning 的 agent |
| LangMem | 1.4k★ | MIT | LangChain-native memory | LangChain 官方 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)
另加官方 docs:Anthropic 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 | 怎麼做事的程式 / skill | tool 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)的概念骨架。
💻 官方 code:joonspk-research/generative_agents ★ paper 配套的小鎮模擬 code repo、想跟著實作 memory stream + 三分數 retrieval 看這裡。
2024-2026 最新 Memory 作品 — 三條主軸
Memory research 2024-2026 集中在 3 條主軸:
- 🧠 結構化、可演化、可聯想 — 從 flat vector store 走向人腦 / Zettelkasten 啟發的記憶結構。代表:A-MEM(memory 之間自動建 link)、HippoRAG 2(KG + PageRank、海馬迴啟發)。
- 📚 2026 survey 大爆發 — 一年內 5 個重磅 survey + 跨領域整理。代表:Memory in the Age of AI Agents(3 維 taxonomy + benchmark)、Memory for Autonomous LLM Agents(write-manage-read loop 形式化)。
- 🛡 Memory security 變獨立子領域 — agent 跑久了、memory 會被 cross-session poisoning / 未授權存取攻擊。代表:Memory Security survey(Stage 7 安全 會接到)。
4 個值得深挖的代表作:
| 作品 | 一句話 | 連結 |
|---|---|---|
| Anthropic Memory Tool | Claude 官方 tool-based memory、API 直接 call、file-based | Anthropic Docs |
| A-MEM(Agentic Memory) | Zettelkasten-inspired、memory 之間自動建 link、會演化 | Xu et al. 2025 ⭐ |
| HippoRAG 2 | KG + Personalized PageRank、跨文件 multi-hop、ICML 2025 | Gutiérrez et al. 2025、OSU-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 GA | OS-paging memory、working / archival 雙層、long session 強項 | Packer et al. 2023 → Letta GA |
| MemoryBank | Ebbinghaus 遺忘曲線、被存取的 memory 強化、沒用的衰減 | Zhong et al. 2023 |
| MemoryLLM | self-updatable memory parameters 內建在 model(在權重而非 context) | Wang et al. 2024 |
| mem0(見 Production Memory Trio) | 可上線使用的 memory layer、auto fact extraction + forgetting | mem0ai/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 |
| ScrapMem | bio-inspired on-device memory、"Optical Forgetting" 把老 memory 解析度漸降 | arXiv:2605.03804 ⭐ 2026-05 |
| Memory Security survey | long-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):依照應用場景,思考不同文件結構該怎麼混搭切法。例如,一篇論文可能要保留章節、表格、公式與引用脈絡。

📚 經典教學: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 直接接上。
典型架構(持久記憶完整版):

→ 跟 Stage 3 反思的差別:Stage 3 是 single-session in-context loop(沒外部 store)、本節是 persistent episodic memory store + retrieve(跨 trial 累積)。
📚 想動手 / 想深入
Paper:
- Reflexion (Shinn et al. 2023) ⭐ — 完整版 paper,Algorithm 1 寫出 memory buffer 怎麼用
- Self-Refine (Madaan et al. 2023) — 對照 baseline,沒 episodic memory 的版本
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-Consistency | sample N 條推理、多數決 — 最簡單 + 最常用 | Wang et al. 2022 |
| Tree of Thoughts (ToT) | reasoning 變樹、可分叉可回溯、適合 puzzle / planning | Yao et al. 2023 |
| Graph of Thoughts (GoT) | 不只樹、可任意合併分支 | Besta et al. 2023 |
| Chain-of-Verification (CoVe) | 生答案 → 對自己提驗證題 → 改答案 | Dhuliawala et al. 2023 |
| CRITIC | tool-augmented self-critique(用 search / calculator 驗) | Gou et al. 2023 |
| Self-Discover | agent 先「發現」該用什麼 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.5 | OpenAI 2026-04(前身:o1 2024-09 → o3 → GPT-5 2025-08 → 5.4 2026-03) | 閉源、reasoning + chat 合併、Thinking budget API、agent 能力強化 | OpenAI |
| Claude Opus 4.7 | Anthropic 2026(前身:Sonnet 4.5 / Opus 4.5) | 閉源、可控 thinking budget(API 參數)、SWE-bench / Terminal-bench 領先 | Anthropic extended thinking |
| Gemini 3.1 Pro | Google 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-Flash | DeepSeek 2026-04 preview(前身:R1 2025-01 → V3.1) | 開源 MIT license、agent-focused 訓練、推理 + 工具使用 + 知識處理整合、R 系列 reasoning 已併入主線 | HF DeepSeek-V4-Pro、R1 paper(方法 baseline)、CNBC report |
| QwQ-32B / QvQ-72B | Alibaba Qwen 2024-11 ~ 2026 | 開源 Apache 2.0、32B 在小尺寸 reasoning 仍是首選、QvQ 是視覺版本 | QwQ blog |
兩條路怎麼選
| 你的情況 | 建議 |
|---|---|
| 用一般 chat model base、想加 reasoning | Path 1(prompt-based)—— ToT / Self-Consistency / CoVe |
| 預算 / latency 允許、要最強 reasoning | Path 2 —— GPT-5.5 / Opus 4.7 / Gemini 3.1 Pro / V4-Pro 任挑一個 |
| 想自己 fine-tune reasoning model | Path 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@K | top-K 撈到的 chunk 裡有沒有 ground truth 答案的 chunk | ragas / TruLens / LangSmith |
| Answer Faithfulness | 生成答案是不是 grounded 在 retrieved chunk(vs 模型 hallucinate) | ragas / TruLens |
| Answer Relevance | 答案跟 query 相關度(避免答非所問) | ragas / LLM-as-judge |
代表 framework:
- explodinggradients/ragas ★ 13.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 + LlamaIndex | local-first、零 ops、quickstart 友善。Stage 6 練習預設 |
| 企業級 RAG framework(LangChain / LlamaIndex 之外第 3 選擇) | Haystack (deepset) ★ 25.2k Apache-2.0 | deepset 開源、production-oriented orchestration、enterprise NLP 場景成熟 |
| agent 長期記憶(見 3 主流 memory layer) | agentmemory / mem0 / Letta / Zep / LangMem | 詳見上方 5 個主流 可上線使用的 memory layer 區塊 |
| RAG / Memory eval(必裝、見 RAG Eval) | ragas ★ 13.9k | RAG 評估標準工具、faithfulness / context recall / answer relevance 8+ metric |
| production scale RAG(百萬 doc) | Qdrant + LlamaIndex | Rust 寫的 vector DB、scale 大時比 Chroma 快 |
| 已有 Postgres 的環境 | pgvector | Postgres 擴充、SQL + vector 一起、運維最簡 |
| 企業級 RAG + Web UI | RAGFlow | document parsing 強(含 OCR / 表格 / layout)、企業場景、含 Web UI |
| 中文 RAG 範本 | Langchain-Chatchat | 中文圈最完整、本機 LLM 整合好(ChatGLM / Qwen / Llama) |
| 進階:Contextual Retrieval | Anthropic cookbook | Claude 搭配 prompt caching 的 contextual chunking(詳見上方 進階 RAG 技巧) |
| 進階:knowledge graph 推理 | LightRAG / Microsoft GraphRAG | knowledge graph + RAG、entity-relation 推理(詳見上方 進階 RAG 技巧) |
| 跨主題 tutorial 集 | ai-engineering-hub | RAG + agent 教學 collection、Jupyter notebook 形式 |
建議入手順序:
- 第一個必裝:Chroma + LlamaIndex(跑 Stage 6 練習)
- agent 要記事:加 mem0(最簡單的 memory layer)
- 開始 production-scale:換成 Qdrant 或 pgvector
- 想升級到進階 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 scale | Rust 寫的 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 | ⭐⭐⭐ | 已用 LangChain | 4 種 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 + chain | Stanford 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)
⏱ 時間估算:2-4 週(約 15-30 小時)
💡 用語密度高(multi-agent / handoff / eval / observability / guardrails⋯)→ 翻
resources/glossary.md4 + 6。
📋 本章組成:〔Multi-Agent · Production 化 是什麼(先定位)+ 三層工程分工 + 何時用 multi-agent〕→ 學習目標 → 進入條件 → 必修閱讀 → Harness Engineering(8 個核心元件含 Cost/Latency)→ 動手練習(含練習 6 Cost Optimization)→ Agent Benchmark Landscape:怎麼看,不要只看排行榜 → 常用工具推薦 → 精選 Projects → 自我檢查 🔑 關鍵名詞:見
resources/glossary.md4 + 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 |
|---|---|---|---|---|
| 1 | Prompt Engineering | 這一次要怎麼問? | 單次 LLM call | Stage 2 |
| 2 | Context Engineering | 這次該給模型哪些資訊? | 多次互動中的上下文 | Stage 6 |
| 3 | Harness Engineering (本 stage) | 整個流程怎麼跑起來? | 可執行的 LLM workflow / system | 本 stage |
白話差異:
- Prompt = 設計一個好的問法,讓模型這次回答準
- Context = 動態決定要放入哪些背景、記憶、文件、工具結果,讓模型知道現在情境
- Harness = 把 prompt、context、工具、狀態、流程控制、錯誤處理串成一套可以運作的系統
本 stage 三個核心問題:
- Multi-agent 協作 — debate / planner-executor / peer review / handoff / supervisor-worker pattern
- Harness Engineering — agent loop / tool registry(agent 可呼叫工具的清單 + 介面定義)/ context manager / safety / retry / telemetry / eval / cost(8 個核心元件、下面詳述)
- Production 化 — eval harness / observability / cost & latency 優化 / 部署到可用環境
跟 Stage 5 的分工(避免混淆):
| 跟誰比 | 那邊講什麼 | 本 stage 講什麼 |
|---|---|---|
| Stage 5.5 Subagents | Claude Code 原生 subagent 機制(markdown-based、不寫程式) | 通用 multi-agent framework(autogen / crewAI / langgraph、跨 vendor) |
| Stage 5.6 Claude Code source | Claude 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」,缺一塊都會卡。
📚 必修閱讀
- Anthropic — Building Effective Agents — 用 production 的角度再讀一次
- Anthropic — Prompt Caching — 90% 成本下降的技巧
- Anthropic — Message Batches API — 非同步 batch job
- anthropics/courses — Prompt Evaluations ⭐⭐⭐⭐⭐ ★ 21k+ — Anthropic 官方 5 course umbrella、module 4「Prompt Evaluations」對應本 stage eval / observability 部分。Jupyter notebook、教怎麼系統化評估 prompt 跟 agent 行為
- 任一 eval framework 的文件 — promptfoo 或 LangSmith 或 weave
- ai-boost/awesome-harness-engineering(★ 940)— agent harness 的工具 / pattern / eval / memory / MCP / observability 全集合
- 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 |
怎麼分辨自己在做哪一層?問:
- 我改的是字串本身嗎?→ Prompt engineering
- 我改的是塞進視窗的資訊嗎?→ Context engineering
- 我改的是呼叫模型的外圍程式嗎?→ 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 manager | message history 管理、context window 控制、auto-compact | Stage 6 + 本 stage 練習 4 SDK |
| Safety layer | permission prompts、sandboxed exec、destructive op 攔截 | (Claude Code 內建、SDK 可自訂) |
| Retry / recovery | tool fail 怎麼處理(exception vs LLM 自己看 error 反思) | 練習 4 SDK 進階 |
| Telemetry / Observability | metrics、logging、token counting、trace export | 練習 3 Observability |
| Eval harness | regression 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 關鍵差別:
- Framework(Stage 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-pythonsource — 上面練習用的具體 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 budget | reasoning model 可控 thinking token 上限、trade latency / quality | Claude / Gemini API 參數、o-series 預設高 |
| Speculative decoding | 小 model 預測 N token、大 model 一次驗證、單 model 速度 ×2-3 | vLLM / 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:接 RouteLLM 或 OpenRouter、做 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 agent | 87.6% | Claude Opus 4.7 |
| Terminal-Bench | terminal 任務 | 領先 | Claude Opus 4.5 / 4.7 |
| GAIA | general assistant | 74.6% | Claude Sonnet 4.5(Princeton HAL) |
| WebArena | web 導航 | 68.7% | Claude Mythos Preview |
| OSWorld | OS-level 桌面控制 | 76.26%(SOTA、superhuman vs human 72.36%) | OpenAI CUA 38%、多數 frontier 仍卡 50% 以下 |
| τ-bench | tool use 多輪對話 | (較難 hack) | Anthropic / OpenAI 領先 |
| RE-bench | research engineering | (較難 hack、接近人類 baseline) | Frontier model |
→ 詳細排行 + 即時更新:Agent Benchmark Leaderboard 2026、Rapid 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 紀律:
🎯 常用 Multi-Agent / Production 工具推薦(按用途分類)
不知道從哪挑工具?下面是 2025-2026 業界常用搭配——挑入口看「場景」、想深入點連結看 repo:
| 場景 | 推薦工具 | 為什麼 |
|---|---|---|
| 第一次寫 multi-agent(最快上手) | crewAI | role-based、幾行 code 跑起來、production pattern 直接 |
| 想要 group debate / brainstorm pattern | AutoGen | GroupChat 自由辯論、Microsoft 出品 |
| production 要 audit trail / checkpoint / human-in-loop | LangGraph | state machine、控制最完整 |
| eval 標準化(CI / regression 必裝) | promptfoo ⭐ | YAML config、跨模型比較、★ 20k+ |
| eval + observability 同平台 | langfuse ⭐ | OSS、tracing + eval + prompt mgmt、★ 26k+ |
| 不改程式、快速 instrumentation | Helicone | proxy 中介、不綁 framework |
| 全 stack 在 LangChain | LangSmith(商業) | LangChain 官方 observability |
| 打造 Claude agent(programmatic) | claude-agent-sdk-python ⭐ | Anthropic 官方 agent SDK、跟 Claude Code 同 runtime |
| Deploy agent 成 API service | BentoML | 最完整、Docker + serving |
| 自架開源 LLM(取代付費 API) | vLLM | 高吞吐量、★ 79k+ |
| Fine-tune 開源 LLM | LLaMA-Factory | 100+ 模型統一 SFT/DPO/PPO/GRPO、Web UI 零程式碼、中文社群最廣、★ 70k+ |
建議入手順序:
- 第一個 multi-agent:crewAI(role-based、最簡單)
- 加 eval:promptfoo(YAML、CI 整合)
- 加 observability:langfuse(OSS、完整)
- Production 升級:換 LangGraph(control 強)+ BentoML(deploy)
- 進階:自架 LLM 接 vLLM、fine-tune 用 LLaMA-Factory
🎯 精選 Projects(範本 / SDK / 工具 collection)
按用途分類、22 個項目一張表搞定。挑入口看「適合誰」、想深入點連結看 repo。
| 分類 | Project | ⭐ | 適合誰 | 為什麼推薦 / 備註 |
|---|---|---|---|---|
| Multi-Agent Orchestration | microsoft/autogen | ⭐⭐⭐⭐⭐ | 想要 GroupChat 自由 debate pattern | Stage 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-loop | state machine 路線、production 控制最強 | |
| Eval Frameworks | promptfoo ⭐ | ⭐⭐⭐⭐⭐ | 把 eval 流程標準化、CI 整合 | YAML config、跨模型比較。★ 20k+、MIT |
| lm-evaluation-harness | ⭐⭐⭐⭐ | 學術 benchmark 主張(MMLU / HellaSwag / GSM8K) | 學術等級。★ 12k+、MIT | |
| openai/evals | ⭐⭐⭐⭐ | OpenAI 專屬 eval / 想回饋上游 | ★ 18k+ | |
| Observability | langfuse ⭐ | ⭐⭐⭐⭐⭐ | 自架 production observability | OSS LangSmith 替代、traces + sessions + evals + prompt mgmt。★ 26k+、MIT |
| LangSmith(商業) | ⭐⭐⭐⭐ | 全 stack 在 LangChain / LangGraph 上 | LangChain 官方、只有 hosted 版 | |
| Helicone | ⭐⭐⭐⭐ | 不想改程式、快速上 instrumentation | proxy 中介、順便拿到 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 app | Python 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 agent | Claude Agent SDK TS 版。★ 1.4k+ | |
| Anthropic Cookbook(進階) | ⭐⭐⭐⭐ | 想看官方進階 SDK pattern | 特別是 prompt_caching.ipynb / tool_use/ / multimodal/ 三個 notebook | |
| Deployment | BentoML | ⭐⭐⭐⭐ | 把 agent 包成 production API service | Docker + serving framework。★ 8k+、Apache 2.0 |
| LangServe | ⭐⭐⭐⭐ | LangChain agent 快速 deploy | 底層 FastAPI | |
| vLLM | ⭐⭐⭐⭐ | 自架開源 LLM 取代付費 API | 高吞吐量 LLM serving、Llama / Qwen 等。★ 79k+、Apache 2.0 | |
| 中文 deploy / fine-tune | datawhalechina/self-llm | ⭐⭐⭐⭐ | 中文團隊要自架開源 LLM | training-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 交接 pattern | SOP-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 tuning | Agent-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 個月應該專注在:
- 挑一個 production 系統 從 prototype 推到 production
- 回饋上游(LangGraph、AutoGen、MCP servers、Anthropic cookbook)
- 讀論文——agent 研究進展很快
- 做出看得到的東西——開源一個真的工具、不要只停留在寫教學
7 步打造你的第一個 AI Agent
📌 這份是給 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 的檔案在同一個資料夾。要實際跑:
- 照 Stage 0 設好環境
- 每個 stage 開新檔案(
step1_*.py、step2_*.py...)- 後面 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 行 |
| 3 | Tool use:自動抓取 arXiv 論文 | ~80 行 |
| 4 | 用 framework 重寫,加上 reflection | ~40 行(framework 抽象掉細節) |
| 5 | 包成 Claude Code Skill | SKILL.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 skill。
description寫得清楚的話,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 演進、最佳實踐改變。如果你發現某段程式碼跑不起來:
- 先在 issue 裡回報具體錯誤訊息 + 你的環境(Python 版本、套件版本)
- PR 修正請說明「為什麼這樣改」
- 不要把這份檔案改成只 demo 你最熟悉的 framework——這份是給多元 framework 學習用的
研究者延伸路線(For Researchers)
🚀 計算型研究者(會跑 Python script、有 API key、會用 git)可直接進階;非程式背景研究者(人文社科、臨床研究、文獻為主)可先從文獻 Q&A(NotebookLM)、Zotero AI 工具開始、需要時再看
resources/setup-guide.mdA-C。
← 回主路線 README · 走完 Track A 的 A3 或 Track 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-off | Claude.ai 對話 → ai-research-skills |
| 實驗 / 寫程式 | 重複 boilerplate、寫 plot 浪費時間 | 寫 / 改 code、batch refactor | Claude Code → codex-delegate |
| 論文撰寫 | 草稿卡關、句子不通 | 大綱 → 段落 → 潤色 | Claude.ai → gemini-delegate(長稿) |
| 改稿 / 投稿 | 期刊規範一堆、容易漏 | banned-word / figure-text / submission checklist | academic-writing-skills |
| 跨 paper synthesis | 5 篇 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+ |
| License | Apache-2.0 |
教什麼:對 PDF 文件以 citation-grounded Q&A 為設計目標——每個答案附句子層級的引用、減少幻覺風險。實際準確率依文件類型而異、評測結果以官方 benchmark / paper 為準。
適合誰:寫文獻回顧、需要「查文獻時答案要可追溯」的研究者。比一般 RAG 更嚴謹。
assafelovic/gpt-researcher ⭐⭐⭐⭐
| 欄位 | 內容 |
|---|---|
| Stars | ★ 27k+ |
| License | Apache-2.0 |
教什麼:自主 deep-research agent——planner + multi-source crawl + report 合成。給定一個研究主題,自動產出 markdown / PDF brief。
適合誰:要快速 scope 新題目、產 research brief 的研究者。
大綱與寫作
stanford-oval/storm ⭐⭐⭐⭐
| 欄位 | 內容 |
|---|---|
| Stars | ★ 28k+ |
| License | MIT |
教什麼: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+ |
| License | NOASSERTION(自訂條款,非商用) |
教什麼:中文研究者向的 arXiv 全流程工具——論文總結 + 翻譯 + 潤色 + 審稿回覆生成。中國研究團隊維護,預設值對中文場景友善。
適合誰:中文研究生想找對中文友善的 paper 全流程入門工具。
備註:License 是自訂的非商用條款,使用前請先讀原始條款;研究或個人用途常見,但條款還是要自己看過確認。
文獻管理整合
MuiseDestiny/zotero-gpt ⭐⭐⭐⭐
| 欄位 | 內容 |
|---|---|
| Stars | ★ 7k+ |
| License | AGPL-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-delegate | 1M context、長 prose 強項 |
| Second opinion | 「請 Gemini 看我的 discussion 段落」 | gemini-delegate | LLM-vs-LLM 對照、容易看出 Claude 自身偏誤 |
| 投稿前 audit | 「跑 banned-word + figure-text checklist」 | academic-writing-skills | structured audit、不靠 LLM 即興判斷 |
維護者自用的 6 個研究 skill
⚠️ 揭露:以下 6 個工具是維護者 @WenyuChiou(Lehigh CEE PhD candidate)日常在用的研究 skills、公開讓有相似需求的人用。未經第三方獨立評測——適合 PhD 學位寫作 / 跨 paper 文獻整理這類流程;不一定適合你的領域。詳細 entry 看
resources/mcp-skills-catalog.md13 + 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 ⭐⭐⭐⭐ | 長稿 / synthesis | Claude planner + Gemini 寫 1M context 長文 / CJK / second-opinion |
Multi-Agent for Research
langchain-ai/open_deep_research ⭐⭐⭐⭐⭐
| 欄位 | 內容 |
|---|---|
| Stars | ★ 11k+ |
| License | MIT |
教什麼:開源版的 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+ |
| License | The 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。
必修閱讀
必練流程(按使用頻率)
研究者用 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 paper | Multi-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 0 | Claude.ai 網頁版 + NotebookLM | 非程式背景、人文社科、臨床研究 | 0(會用瀏覽器就行) |
| Tier 1 | Claude Desktop + Zotero MCP / Obsidian MCP | 已有 Zotero / Obsidian 習慣的研究者 | 半天裝好 |
| Tier 2 | Claude Code + ai-research-skills | 計算型研究者、寫 / 改程式為主 | 1-2 天上手 |
| Tier 3 | Claude Code + codex-delegate + gemini-delegate + research-hub | 想跑 multi-LLM 研究 pipeline、跨多工具整合 | 1 週 setup + 持續調 |
多數研究者停在 Tier 1-2 就夠了——Tier 3 是有大量重複流程(譬如每週跑同樣的 paper synthesis)才值得。
開發者延伸路線(For Developers)
🚀 第一次裝 Claude Code / 寫
CLAUDE.md/SKILL.md? 快速 setup 指南在resources/setup-guide.mdD-E。已經熟可以跳過。
← 回主路線 README · 走完 Track A 的 A3 或 Track 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 case | Claude Code / cline → Continue(CI) |
| 寫 test | TDD 一直忘加 case、coverage 不足 | 從 signature / spec 生 pytest | Claude Code + Aider |
| Debug | log 不夠、stack trace 看不懂 | 解 trace、生 hypothesis、跑 minimal repro | Claude Code |
| Doc | docstring / README 沒人寫、refactor 後過期 | 從 code 生 doc、PR 對應改 doc | Claude Code |
| CI / 團隊自動化 | 重複手動跑 review、跨人風格不一 | GitHub Action 自動跑 review / lint | Claude 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-delegate | refactor 30+ 檔的時候 |
💡 新手起手式:先做「每天 AI 結對」+「測試生成」兩條一個月、習慣後再上 PR 自動 review。
3 個具體 workflow recipe
1. AI 結對程式設計(每日節奏)
- 開新 feature →
git checkout -b feature/xxx - 把任務丟給 Claude Code / Cursor,先讓它寫 plan(不直接寫 code)
- Review plan、修正方向 → 才 approve 寫 code
- 寫完跑 tests + lint → 自己 review diff(不要 blind accept)
- 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.json 的 permissions.deny |
| 讓 AI 在 production code 自由跑 shell | sandbox 限制、permission whitelist |
| 用 AI 生 test 後不檢查 assertion | 跑覆蓋率 + 故意改一個 bug 看 test 抓不抓得到 |
| 跨多個 commit 才發現方向錯 | plan-first 模式:先 review plan 再寫 code |
Tier 升級路徑
下表是建議的進階路徑:
| Tier | 工具 | 適合誰 | 學習成本 |
|---|---|---|---|
| Tier 0 | Cursor / Copilot / Claude.ai | IDE 內 chat、autocomplete、不自己寫 agent | 0(會用編輯器就行) |
| Tier 1 | Claude Code / Cline / OpenCode + CLAUDE.md | CLI 接 file system、human-in-the-loop | 1-2 天上手 |
| Tier 2 | 自寫 Skills + MCP server | 把 dev workflow 包成 skill 給團隊共用 | 1 週 setup |
| Tier 3 | CI 自動跑 agent + production observability | 進到 Stage 7 領域 | 數週、需 governance |
多數個人開發者可先停在 Tier 0-1。升級到 Tier 2+ 要先確認 ROI——團隊夠大、流程夠重複、事故不可逆、才值得 invest。
也適用其他分支
開發者重疊度高的分支:
- 要做 ML 研究 / 寫 paper → 研究員分支
- 接 Notion / Linear / Atlassian / Postgres / Figma 等 dev tool →
resources/mcp-skills-catalog.md - 要寫自己的 Skill / MCP server → Stage 5 +
resources/cookbook.md - 想看 schema 設計細節 →
resources/schema-design-cheatsheet.md - CLI 從零開始 → Track A(A1 → A2 → A3)
社群備註
特別歡迎以下貢獻:
- IDE-specific 設定範本(Cursor
.cursorrules、Claude CodeCLAUDE.mdfor 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)
🚀 完全沒開發背景? 多數知識工作者可以直接從 Claude.ai / Claude Desktop 開始、不需要任何 setup。只有當你要接 MCP server(如 Gmail / Notion)或用 CLI 自動化時、才需要看
resources/setup-guide.mdA-D(30-45 分鐘從零)。
← 回主路線 README · 走完 Track A 的 A3 或 Track B 的 Stage 7 後從這裡接續。把 agentic AI 應用到辦公室 / 知識工作上。
使用情境(辦公場景 × AI 怎麼幫)
下表把知識工作者一天會遇到的 7 個情境拆開——多數場景在 Claude Desktop + MCP(Tier 1)就能搞定:
| 場景 | 你常遇到的痛點 | AI 能幫的部分 | 推薦工具 |
|---|---|---|---|
| Email 分流 | 每天 100 封看不完、優先順序錯 | 分類 + 草擬回信讓你 review | Claude Desktop + Gmail MCP |
| 會議 → 行動項目 | 聽完 30 分鐘忘一半、action item 沒記 | 逐字稿 → 主要決策 + 行動項目 | Otter / Zoom 逐字稿 + Claude |
| 跨工具報告整合 | Slack / Gmail / Notion 各一塊、要手動拉 | 自動拉指標 + 整合 + email summary | n8n / 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+ |
| License | AGPL-3.0 |
教什麼:自架的「第二大腦」——可以跟 web + 本地文件對話、排程自動化、自訂 agent。
適合誰:想自架個人知識庫 + AI assistant 的人。
備註:AGPL-3.0 license(傳染性開源)。
lobehub/lobe-chat ⭐⭐⭐⭐⭐
| 欄位 | 內容 |
|---|---|
| Stars | ★ 76k+ |
| License | LobeHub Community License(基於 Apache-2.0 + 商用附加條款) |
教什麼:可部署的多 agent 聊天平台——含 plugin marketplace、知識庫、團隊協作。可自架的 AI workspace 代表選項之一。
適合誰:要找可自架的協作 chat workspace。
備註:商用使用需確認 LobeHub Community License 的附加條款。
langflow-ai/langflow ⭐⭐⭐⭐
| 欄位 | 內容 |
|---|---|
| Stars | ★ 147k+ |
| License | MIT |
教什麼:視覺化 AI agent 設計平台——適合把客服、報告整理、資料查詢這類流程畫成節點。比 n8n 更專注在 agent 設計(n8n 是泛用工作流)。API / MCP server 部署是進階備註、不必一開始就學。
適合誰:寧可拉節點不寫 Python 的知識工作者,或要設計 agent 跟團隊溝通流程的人。
Mintplex-Labs/anything-llm ⭐⭐⭐⭐⭐
| 欄位 | 內容 |
|---|---|
| Stars | ★ 60k+ |
| License | MIT |
教什麼: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-servers 跟 wong2/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 0 | Claude.ai / ChatGPT / Gemini / Perplexity(網頁版) | 大多數知識工作者從這裡開始 | 0(會用瀏覽器就行) |
| Tier 1 | Claude Desktop + MCP(Gmail / Notion / 行事曆) | 要對本機 / 雲端檔案重複跑流程 | 半天裝好 |
| Tier 2 | n8n / Make / Langflow(自動化平台) | 要把多個 SaaS 工具串起來、不寫 code | 1 週 setup |
| Tier 3 | Claude Code / Codex / 自己寫 Python | 有 dev 背景或團隊有 dev 支援、要 production-grade | 數週、跟 Track A 重疊 |
Tier 3+(CLI / SDK)對多數知識工作者任務來說太重——不要被別人慫恿過去。多數人停在 Tier 1-2 就夠。
閱讀
教師延伸路線(For Teachers / Educators)
🚀 大多數教師可直接從 Claude.ai(網頁版)+ NotebookLM 開始、不需要任何 setup。只有當你要自動化重複流程(Tier 2+、例如每週生成 50 份家長信)時、才需要看
resources/setup-guide.mdA-C(30 分鐘從零裝好需要的東西)。
← 回主路線 README · 走完 Track A 的 A3 或 Track B 的 Stage 7 後從這裡接續。把 agentic AI 應用到教學流程上。
使用情境
教師使用 AI 的情境可以先看成三個分支:備課與上課素材製作、教學現場與學習輔助、以及其他應用場景。
這樣的分類參考 AI in Education 文獻中常見的行政、教學與學習應用脈絡、也加入生成式 AI 在教材生成、回饋與互動支援上的近期討論(Chen et al., 2020;Mittal et al., 2024)。閱讀時建議先理解教師把關原則與使用邊界、再依自己的教學需求挑一個分支深入。

教師使用 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 可以指出錯誤、說明原因、建議修正方向,而不是只給分數或答案。
- 智慧家教與虛擬助教:協助回答提問、解釋術語、給提示,讓學生在課堂內外都能獲得適度支援。
- 適性教學與動態路徑:依學生程度提供對應難度內容,並透過學習表現推測近側發展區,提供合適的鷹架與補救素材。
其他應用場景
這類情境不一定直接發生在課堂中,但會影響教師工作、學生支援與教育系統運作。
- 特殊教育支援:透過語音轉文字、文字轉語音等方式,協助不同需求的學生參與課程。
- 親師溝通與家庭教育:整理學生進度報告,並提供家庭可延伸的輔助學習活動建議。
- 行政管理與學術誠信:整理學習軌跡、產生報告,或協助進行抄襲與作弊風險檢查。
- 職涯與技能發展輔導:協助職涯探索、培訓清單規劃,並依弱點推薦練習題。
- 教師專業發展:摘要教學方法、教育科技趨勢與研究重點,協助教師持續更新。
- 高階研究分析:輔助文獻分析、快速理解論文研究中提出的教學法或教育心理學。
- 隱私保護與合成資料:在不直接使用真實個資的前提下,產生匿名合成資料。
參考文獻
- Chen, L., Chen, P., & Lin, Z. (2020). Artificial Intelligence in Education: A Review. IEEE Access, 8, 75264-75278.
- Mittal, U., Sai, S., Chamola, V., & Sangwan, D. (2024). A Comprehensive Review on Generative AI for Education. IEEE Access, 12, 142733-142759.
精選 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+ |
| License | Apache-2.0 |
教什麼:Hugging Face 官方的 agent 課程——notebook、練習、結業認證。是一份現成的「AI agent 教學」素材。
適合誰:要在學校 / 工作坊開「AI agent 入門」課程的老師,可以直接拿來當教材或改編。
備註:注意這是「教 AI agent 怎麼建」的教材,不是「老師用 AI 教書」的工具。
datawhalechina/llm-universe ⭐⭐⭐⭐(中文)
| 欄位 | 內容 |
|---|---|
| 語言 | 中文(zh-Hans) |
| Stars | ★ 13k+ |
| License | NOASSERTION |
教什麼:Datawhale 出品的中文 LLM 應用開發課程——含 RAG、agent、章節練習。中文教師備課的現成模板。
適合誰:中文教師要找現成可改的 LLM 教材底稿、再針對自己學生程度調整。
備註:跟 hf agents-course 一樣,是「教學生建 LLM 應用」的教材,不是「教師端的 AI 助教」。
Prompt 素材庫
f/awesome-chatgpt-prompts ⭐⭐⭐⭐
| 欄位 | 內容 |
|---|---|
| Stars | ★ 161k+ |
| License | NOASSERTION(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.ai | AI 輔助 ≠ 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 0 | Claude.ai 網頁版聊天 | 偶爾備課、單次任務、出題、寫信。複製上面的 prompt 範本填入主題即可 | 0(會用瀏覽器就行) |
| Tier 1 | Claude Desktop / NotebookLM | 批改 / 整理一整學期資料、做課程地圖、整批匯入課本 PDF 後問問題 | 半小時裝好 |
| Tier 2+ | Claude Code / CLI / SDK | 有重複自動化需求(例:每週收 30 份作業 → 自動生成回饋初稿) | 1 週上手;不熟程式可找學校 IT / 學生 RA 幫忙設定 |
多數教師停在 Tier 0-1 就夠了。升級到 Tier 2+ 就建議走 Track A — CLI Power User。
也適用其他分支
很多老師同時是研究員 / 知識工作者,這幾個分支重疊:
- 也做研究(找文獻、寫 paper、整理 references)→ 研究員分支
- 要寫報告 / 整理會議記錄 / 跨工具整合(Notion、Excel、Email)→ 知識工作者分支
- 要把 AI 接到 Notion / Obsidian / 飛書 等日常工具 →
resources/mcp-skills-catalog.md
社群備註
這個分支目前是精選內容最少的一塊。特別歡迎以下貢獻:
- 教案生成 skill
- 學科專屬的 prompt library(國文老師的 prompts、數學老師的 prompts、英文老師的 prompts ⋯)
- 教師專屬的 MCP server(成績冊整合、LMS 串接如 Canvas / Moodle / Google Classroom)
- 某學科 + 某年級的完整 case study(例如「我用 AI 帶國中數學一個學期,這是我的 workflow」)
請見 CONTRIBUTING.md。
awesome-agentic-ai-zh 風格指南
這份指南是這份 catalog 的單一真實來源——術語、entry 結構、license 標註、寫作風格、禁用詞,全部以這份文件為準。
PR 之前請先讀完本文。專案維護者也會用這份指南做 review。
📋 目錄
- 1. 專案 entry schema
- 2. 推薦星等定義
- 3. 禁用詞與替代
- 4. 可保留的英文名詞
- 5. License 標註慣例
- 6. Stage 頁面模板
- 7. Branch 頁面模板
- 8. 寫作風格規範
- 9. 連結與引用
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/Hant是 BCP 47 script subtag,跟地區解耦——簡體中文不只用在中國大陸(也用在新加坡、馬來西亞),用Hans比CN更準確。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 的 server | Anthropic 維護的 server |
| coding 流程 | 開發流程 / 程式開發流程 |
4. 可保留的英文名詞
技術寫作中保留英文比硬翻譯讀起來更自然的詞:
LLM、API、SDK、MCPagent、tool use、function calling、prompt、prompt cachingframework、library、repo、commit、PR、branchRAG、embedding、vector DB、retrieval、chunk、tokenstreaming、async、batch、webhookmarketplace、plugin、skill、hookproject、repo(可保留也可改用「專案」)production(指「正式環境」時)— 但本 catalog 多數場合刻意避免(見 3)動手練習、hello-world— 保留
判準:技術文件圈讀者習慣的英文術語就保留,避免「太政治正確的中文化」。
5. License 標註慣例
常見 license 直寫
MITApache-2.0BSD-3-ClauseGPL-3.0LGPL-3.0
需要加註的特殊情況
| 情況 | 寫法 |
|---|---|
| 上游無 SPDX | NOASSERTION(上游未提供 SPDX;使用前請讀 LICENSE) |
| AGPL(傳染性) | AGPL-3.0 + 備註:AGPL-3.0 license(傳染性開源)— 修改後散布的衍生產品需遵守條款。 |
| 自訂非商用 | NOASSERTION(自訂非商用) + 備註:License 是自訂非商用條款,使用前請先讀原始條款。 |
| 多元 license(每個 plugin 自己有) | NOASSERTION(每個 plugin 獨立 license,請看各自目錄) |
| Creative Commons | 直寫 CC-BY-4.0、CC-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 這類設計理由,見:
branches/DESIGN.md——branch 設計筆記(為什麼這樣切、entry 該放哪)stages/DESIGN.md——stage 設計筆記(為什麼這結構、動手練習 怎麼挑)cli-agents-guide.md——cross-cutting CLI agent 比較指南
修改本指南
這份指南本身也歡迎 PR。修改前請先開 Issue 討論——術語決策影響 100+ 個 entry。
當前 maintainer:@WenyuChiou。
貢獻指南
謝謝你考慮貢獻。這是一份精選的學習路線圖,不是百科目錄。品質 > 數量。
這個 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 分鐘內能做完的:
- 🐛 回報過時 entry:跑
python scripts/refresh-stars.py找星數差距大的 repo,開 issue 說「這個應該移除 / 更新」 - 🔗 修一個失效連結:你看 stage X 時連結 404 了,直接 PR 改
- ✍️ 補一個 entry 的
怎麼跑section:很多 entry 沒寫安裝指令,你跑過就補上 - 🌏 補英文 companion 沒翻好的句子:找一個
.en.md跟 zh 對照,你覺得翻得不順的地方改一行 - 💬 對某個 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 必須:
- 有維護:最近 6 個月內有 commit,或明確標示「stable, no longer maintained」
- 有 hello-world 文件:讀者應該能在 30 分鐘內把東西跑起來
- 明確 license:MIT、Apache 2、BSD 或類似。避免沒 license 的 repo。
- 可信賴的維護者:知名組織、公司,或有口碑的個人
雙語風格
- 繁中(Traditional Chinese, zh-TW)為正本,英文版(
*.en.md)是 companion。 - 不接受 zh-Hans PR。如果你交 zh-Hans 的 PR,我們會請你轉成繁中。
- 自然翻譯,不要逐字對譯。技術詞如果直接用英文比較自然,就保留英文(「使用 LangGraph 建 multi-agent 系統」)。
- 完整風格規範請看
resources/style-guide.md——禁用詞、entry schema、license 標註慣例、寫作風格、推薦星等定義都在裡面。PR 之前請先讀。
流程
- 新 project 或大幅重組請先開 issue
- 一次一個 stage,PR 範圍要聚焦
- 等審查(通常 7 天)
- Reviewer 可能會問你「為什麼這個 project 教這個 stage」
要避免的反模式
- ❌ 「leverage」、「delve」、「comprehensive」、「robust」(LLM tell)
- ❌ 過度行銷(「revolutionary」、「game-changing」)
- ❌ 只因為熱門就列上來
- ❌ 大段引用 project 自己的行銷文案
擔任 Stage / Branch 維護者
除了交一次性 PR,也歡迎擔任特定 stage 或 branch 的長期維護者——負責定期 review、處理該領域的 issue、把關該領域的 PR。
自薦流程:
- 開一個 issue,標題
[maintainer] Stage N — your-handle或[maintainer] for-X branch — your-handle - 講清楚你願意 commit 多久(建議至少一季 = 3 個月)
- 簡述你在這個領域的背景
詳見 CONTRIBUTORS.md。每個 stage / branch 的 maintainer 名單都在那邊。
License
貢獻即代表你同意你的內容以 MIT 授權。