從零學會 AI agents:6 階段實作路線
依序掌握概念、親手撰寫第一個迴圈、工具、記憶、迴圈設計與安全性,每個階段都完成一項建置,避免被 framework 隱藏關鍵細節。
分 6 個階段學習
若要從零開始學習 AI agents,請依序完成 6 個階段:概念、第一個迴圈、工具、記憶、迴圈設計,以及安全性。每個階段都要親手完成一項建置工作。跳過前面的階段,是最常見的停滯原因,因為 framework 會隱藏你正需要看見的部分。
AI agent 是一個圍繞 language model 的迴圈,而且允許該模型呼叫工具。這句話就是整個主題。後續內容只是說明迴圈包含哪些部分、工具可以存取哪些項目,以及發生錯誤時如何停止迴圈。如果你能向其他人解釋這個迴圈,就表示你已經學會核心概念。如果你只會說出各種 framework 的名稱,就還沒有學會。
以下計畫假設你透過實作學習。讀完一個階段後,完成其中的小型建置工作,刻意讓它出錯,再繼續下一個階段。只讀過而未實作的階段,就等於尚未完成。
第 1 階段前實際需要具備的條件
實際的先備條件不多,而且比大多數課程頁面所列的更少。
- 你能以撰寫 50 行程式的程度讀寫 Python 或 TypeScript。
- 你熟悉 Linux shell:安裝套件、編輯檔案及讀取日誌。
- 你有代管模型的 API key,或有能執行本機模型的機器。
這就是完整清單。你不需要機器學習理論,也不需要曾經訓練過模型。代理程式相關工作不涉及梯度或訓練資料。只有在你決定自行執行模型時,顯示卡才有作用;這是另一項技能,之後可以再從 在 VPS 上代管 Ollama 以自行執行 LLM 開始學習。
人們低估的是 shell 這一半。代理程式常因權限、路徑、環境變數,以及無聲終止的程序而失敗。如果看到關於 PATH 或檔案模式的 stack trace 就想關閉終端機,請先花一個週末學習 Linux 基礎。這能讓你之後少花一個月排錯。
階段 1:什麼是 agent,以及什麼不是 agent
先執行一次 API 呼叫,不要加入迴圈。傳送提示,列印回覆,查看回應中的 token 數量。現在你已了解成本單位與延遲單位。
接著學習工具使用,這是整個領域中唯一真正的新概念。將函式描述給模型,包括名稱、說明,以及用於輸入值的 JSON (JavaScript object notation) schema。模型不會執行任何操作。它會回覆結構化請求:使用這些引數呼叫 run_command。你的程式執行該函式,將輸出作為訊息傳回,再次詢問模型。模型是讀取文字並寫出文字的規劃器。真正能執行操作的是你這端的程式。開始比較設計後,交換兩端的這段程式會有一個名稱:它就是agent 執行框架,也就是包覆在沒有自身工具與權限的模型外部,由迴圈、工具和權限組成的部分。
Chatbot 在回覆一次後結束。Agent 會重複這段交換,直到模型停止要求使用工具。這種重複就是兩者的全部差異,也因此失敗模式不同。Chatbot 可能只提供一次錯誤答案。Agent 則可能根據錯誤答案執行數次操作,直到有人察覺。
階段 2:自行撰寫迴圈一次
不要一開始就使用 framework。先撰寫約 30 行 Python,讓你自己掌握程式的結構。
sudo apt update && sudo apt install -y python3-venv
python3 -m venv ~/agent
source ~/agent/bin/activate
pip install anthropic
export ANTHROPIC_API_KEY=your-key-hereimport subprocess
import anthropic
client = anthropic.Anthropic()
tools = [{
"name": "run_command",
"description": "Run a read only shell command and return its output.",
"input_schema": {
"type": "object",
"properties": {"command": {"type": "string"}},
"required": ["command"],
},
}]
messages = [{"role": "user", "content": "How much disk space is free here?"}]
while True:
response = client.messages.create(
model="claude-opus-5",
max_tokens=4096,
tools=tools,
messages=messages,
)
if response.stop_reason != "tool_use":
break
messages.append({"role": "assistant", "content": response.content})
results = []
for block in response.content:
if block.type == "tool_use":
done = subprocess.run(
block.input["command"], shell=True,
capture_output=True, text=True, timeout=10,
)
results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": done.stdout or done.stderr,
})
messages.append({"role": "user", "content": results})
print(next(b.text for b in response.content if b.type == "text"))使用 python3 agent.py 執行。正常執行時,會輸出一段列出檔案系統及其可用空間的文字。這是因為模型要求執行 df -h,你的程式執行了該命令,第二次處理則將表格轉換成句子。如果沒有輸出,表示迴圈在收到文字區塊前就結束了。在迴圈內加入 print(response.stop_reason),觀察值如何變化。
接著刻意讓程式失敗。刪除 tool_use_id 行並讀取錯誤訊息。工具結果若沒有相符的 id,API 會拒絕該結果;這是初學者最常遇到的錯誤。提出需要執行兩個命令的問題,觀察迴圈執行兩次。再提出無法完成的問題,觀察它是放棄執行,還是無限迴圈。
請注意這個範例的一項風險。它使用 shell=True,直接將模型輸出傳給 shell。這只適合用於可以重建的測試機器,在其他環境中則是不正確的做法。階段 6 會處理這個問題。迴圈底層的概念,詳見 在 VPS 上建置自己的 AI agent。
階段 3:代理程式尚未具備的工具
您的 run_command 工具可以運作,但實際的代理程式需要存取外部系統的工具,例如工單系統、資料庫或儲存庫。為每項服務、每個代理程式分別撰寫專用包裝程式,無法擴展。
Model Context Protocol (MCP) 是業界採用的解決方案。MCP server 會透過標準傳輸公開一組工具,任何支援 MCP 的代理程式都能直接使用,不需要自訂整合程式。參考用的檔案系統 server 只需一個命令:
npx -y @modelcontextprotocol/server-filesystem /home/you/projects這需要先安裝 Node,而且目錄引數是 server 唯一會存取的路徑。這就是簡化版的安全模型:邊界由 server 決定,而不是由模型決定。將 client 指向該 server 後,您的代理程式就能讀寫檔案,而這些功能不需要由您自行撰寫。如何在 service account 下正確執行這些 server,以及傳輸方式的選擇,請參閱在 VPS 上執行供 AI coding agents 使用的 MCP server。如果您需要另一個指向實際資料而非暫存目錄的 server,自行託管 openGym:運動追蹤器提供唯讀 server。您可以用它練習詢問自己的訓練紀錄,而不必讓代理程式取得任何可能修改的內容。
本階段的重點是,工具設計才是真正的工作。描述含糊時,模型會自行猜測。工具若回傳 40000 個字元,就會污染 context window。能刪除內容的工具,最終一定會刪除內容。
階段 4:記憶,大多只是檔案
初學者通常會在這裡使用向量資料庫。先不要這麼做,至少目前不要。
Agent 在不同呼叫之間沒有記憶。每次都必須重新傳送完整對話,因此長工作階段的每輪成本會高於短工作階段。記憶因此分成兩個問題。第一個問題是目前能放入 context window 的內容。你可以透過摘要、刪減舊的工具輸出,以及快取 prompt 的穩定前綴來管理,這樣只需支付其中一小部分的成本。第二個問題是重新啟動後仍能保留的內容,也就是儲存空間。
針對第二個問題,在幾乎所有第一個專案中,讓 agent 讀寫一個純 Markdown 檔案,通常都比使用向量資料庫更合適。提供一個檔案,說明檔案格式,要求 agent 在開始前讀取該檔案,並在學到新資訊時更新它。這樣就能取得大部分效益,也可以直接開啟檔案,查看 agent 目前的認知。等到筆記無法再放入 context window 時,再使用 embeddings 與 retrieval;不要更早使用。
階段 5:迴圈就是產品
到目前為止,你可以建立一個在你監看時正常運作的 agent。階段 5 要讓它在你不監看時也能正常運作。
有 4 個問題決定 unattended agent 是否能安全地放著執行。什麼會觸發它,才能避免它在沒有工作時執行。它在哪個界線內運作,才能讓錯誤的影響維持在最小範圍。如何驗證結果,因為讓 agent 自行批改作業時,它總會判定自己通過。什麼 budget 能限制它的 token 數量或實際執行時間。刻意設計這 4 項,就是 迴圈工程,以及此定義涵蓋的內容所說的 discipline。
練習:取出你的階段 2 agent,給它一項需要 4 或 5 個步驟的工作,並加入硬性 iteration cap。接著移除 cap,觀察無限制迴圈如何增加你的 token 帳單。先用小額 budget 執行 1 次,避免日後在大型 budget 上意外這樣做。
階段 6:安全性、密鑰與成本
此階段不是選用項目。之所以最後處理,只是因為在建立出可運作的系統前,無法實際感受到風險。
讓 agent 以專用的非特權使用者執行。絕不能使用 root 或你自己的帳戶。如此一來,受影響範圍會是單一目錄,而不是整台機器。不要讓模型接觸認證資料,因為放入 context window 的任何內容,都可能透過工具呼叫被原樣引用出去。解決方式是透過 helper 使用範圍受限且存續時間短的 token,詳見 避免讓 AI agent 接觸密密。設定明確的支出上限,因為無人監看的迴圈會在每次迭代產生成本。控制上限與批次處理的方法,請參閱 在永遠在線的 VPS 上控制 AI agent 成本。
如果 agent 是在 harness 中執行,而不是在你自行撰寫的 script 中執行,那麼此階段的部分內容會屬於設定,而非程式碼。值得安裝的 DeepSeek Harness plugins 涵蓋許多相同功能,包括預算上限、工具權限規則與 injection 掃描。
成本需要一個具體數字。截至 July 2026,Claude Opus 5 的費用為每百萬個 input tokens $5,以及每百萬個 output tokens $25。反覆傳送不斷增長的對話內容時,一個健談的 agent 可能在單一工作中處理數十萬個 token。Prompt caching 與使用較小的模型處理例行步驟,對成本計算的影響遠大於任何 prompt 微調。
Prompt injection 也屬於此階段。如果 agent 會讀取網頁、issue tracker 或 inbox,那麼撰寫這些文字的人,也同時是在向 agent 撰寫指令。Web search 通常是最先開啟這個入口的工具,而 將 agent 指向你自己的 SearXNG instance 會同時展示設定方式與由此產生的 injection 攻擊面。防禦方式不是撰寫更聰明的 system prompt,而是建立邊界。因為無法刪除 repository 的 agent,不會因為受到誘導就刪除 repository。
應該遵循哪一份學習路線?
選定一份課程並完成,不要同時瀏覽六份課程。Microsoft ai-agents-for-beginners repository 是最完整的免費資源,包含 18 堂課程;截至 July 2026,已獲得超過 70,000 顆 stars,也能清楚對應到上述各階段。熱門 agent repository 的整理文章有助於了解現有哪些專案,但不適合作為課程大綱,因為依 stars 排序代表的是人氣,而不是教學順序。
需要實際專案練習時,coding agent 是最適合的第一個目標:回饋立即可見、工具明確,而且錯誤容易復原。在 VPS 上執行 coding AI agent 會完整說明其中一種做法。如果你想研究已能運作的系統,而不是從零開始建置,最佳的 self-hosted AI agents 中的比較會展示數個專案如何以不同方式實作相同的迴圈。
需要多久?
如果你已經會寫程式,第 1 和第 2 階段各需一個晚上。第 3 階段需一個週末,其中大部分時間會花在工具說明,而不是通訊協定。第 4 和第 5 階段需要幾週的實際使用,因為只有觀察代理程式遺忘,才能知道它會遺忘哪些內容。第 6 階段不會真正結束,因為每次授予新的功能,都會重新引發這個問題。
持續利用晚間時間實作 2 個月,多數人就能完成一個可運作、範圍受限且實用的代理程式。花 1 年的人,通常是因為持續閱讀,而不是持續建置。
FAQ
建立 AI agent 需要了解機器學習嗎?
不需要。建立 agent 是透過 API 呼叫模型,並將模型的工具請求連接至實際函式,這屬於一般的應用程式開發。您不需要處理訓練、梯度或資料集。決定 agent 是否能正常運作的技能包括工具的 schema 設計、錯誤處理及 Linux 權限。只有在進一步微調模型時,機器學習理論才會變得重要;那是另一種工作,也需要不同的先備條件。
我應該從 LangChain 或 CrewAI 之類的 framework 開始嗎?
先撰寫一個原始迴圈,再採用 framework。framework 會以設定物件取代 stage 2 的 30 行程式碼;等您了解它取代了什麼之後,這樣做很方便,但在此之前反而容易造成混淆。agent 發生異常時,您必須直接分析訊息清單和工具結果;如果從未看過這些內容,處理起來會困難得多。自行完成一個迴圈後,framework 會節省時間,而不是隱藏運作機制。
學習 AI agent 的成本是多少?
如果設定上限,成本比多數人預期的低。這 6 個階段只需要一組託管 API key 和一台小型 VPS。真正的風險不是每小時費率,而是無限制的迴圈在您睡覺時持續執行,為每次迭代計費。第一天就為 API 帳戶設定嚴格的支出上限,為撰寫的每個迴圈加入迭代上限,並在例行步驟使用較便宜的模型。在本機執行模型可以免除 token 費用,但會改為需要符合條件的硬體。
AI agent 和 chatbot 有什麼差異?
chatbot 只回答一次。agent 會重複執行一個週期:模型要求使用工具,您的程式碼執行工具,結果傳回模型,接著由模型決定下一步。這種重複運作讓 agent 能以多個步驟完成工作,也因此 agent 需要 chatbot 不需要的邊界。chatbot 的錯誤回答是一段不正確的文字。agent 的錯誤回答則是一段不正確的文字,以及它針對該回答所執行的任何操作。