如何在 VPS 上用 Claude 建立 AI 代理程式
了解如何以 Claude Messages API 作為推理核心,搭配 tool use 與 MCP,讓代理程式在自己的 VPS 上執行並由你掌控工具與資料。
使用 Claude 建立代理程式的意義
使用 Claude 建立代理程式,表示將 Claude 作為推理核心,而將迴圈、工具與資料放在自己的伺服器上。由 Claude 決定要執行的工作,再由你的 VPS 執行。你將工作與目前狀態傳送給 Claude,Claude 回傳答案,或要求使用其中一項工具。你的程式執行該工具,再將結果傳回 Claude。這個迴圈會持續進行,直到工作完成。智慧功能是透過網際網路呼叫的服務,其餘部分都由你掌控。
這種分工正是它的吸引力。你不必自行操作模型,就能取得前沿等級的推理能力。同時,由於工具在你擁有的硬體上執行,你可以完全控制代理程式能接觸哪些內容。如果你已經建立第一個 Claude 程式,在 VPS 上建立第一個 Claude 應用程式的指南涵蓋了本篇教學所依據的基礎。
Claude 是核心:Messages API
Claude 的每次呼叫都會經過同一個端點:Messages API。您傳送目前為止的對話內容,以及 agent 可使用的工具清單;Claude 會回傳下一則訊息。該訊息可能是最終答案,也可能是要求呼叫工具。自行建置時,不存在獨立的「agent API」;工具使用是這個單一端點的功能,而端點外圍的迴圈則由您負責執行。
Claude 在不同呼叫之間不會保留狀態,也就是說,它不會自行記住任何內容。每個請求都必須包含完整對話內容。您的程式會保存歷程,並在每一輪傳送歷程,這就是長時間工作階段中,每一輪所需的 token 都比上一輪更多的原因。這與其說是限制,不如說是設計選擇:由於狀態儲存在您的伺服器上,您可以精確決定 Claude 能看到的內容,也不會讓任務資料儲存在您無法控制的位置。但這確實會讓提示持續變長。Claude 的 context window 通常能輕鬆容納這些內容,但同一個迴圈中的本機模型無法如此處理,因此必須先提高 Ollama 的 num_ctx,才能停止截斷過長的提示。
工具使用就是 agent 迴圈
使用 Claude 的 agent 迴圈很容易說明。您傳送包含工具的請求。Claude 讀取任務內容後,如果需要採取行動,就會回傳工具使用請求,指定工具並填入輸入值。您的程式執行該工具,然後在下一個請求中將結果傳回 Claude。Claude 讀取結果後,會再要求使用其他工具,或撰寫最終回覆。當它不再要求使用工具時,任務就完成了。
您可以用幾行程式手動撰寫這個迴圈。許多人會這麼做,因為流程容易查看,也容易控制。官方 SDK 也提供 tool runner,替您驅動這個迴圈:您提供工具函式,SDK 會負責反覆呼叫 Claude、執行工具,並將結果回傳給 Claude,直到 Claude 完成任務。無論採用哪種方式,整體結構都相同。runner 只是免除您自行撰寫迴圈的工作。如果迴圈仍然過於抽象,最好的方法是在使用 runner 前先撰寫一個最小版本。這是後續所有內容的基礎,請參閱這套從零開始學習 AI agent 的分階段路徑。
建置方式有 3 種,以及適合 VPS 的選擇
建立 Claude agent 有 3 種方式,差別在於由你執行多少底層元件。
第 1 種是由你撰寫程式,呼叫 Claude API 並搭配自有工具。你可以自行撰寫迴圈,或使用 SDK 的 tool runner,然後將整套程式部署在 VPS 上。這是最常見的選擇,因為你能完全控制工具、資料與安全性,而且可在伺服器上以一般程式執行。本指南大多以這種方式為前提。
第 2 種是 Claude Agent SDK。這是以 library 形式提供的 Claude Code,也就是 coding agent,你可以在其上建置自己的程式。它內建完整的 agent loop,以及讀寫檔案、執行 shell 命令和搜尋等工具,因此不必從零組裝這些元件。它同樣會在你自己的伺服器上執行;如果你想使用功能完整的檔案與 shell agent,又不想自行建置執行框架,這很適合 VPS。能讀取檔案並執行 shell 命令的 agent,在無人看管地執行前需要先進行隔離;在伺服器上安全執行 Claude Code 會說明權限系統、sandbox 與隔離選項。
第 3 種是 Managed Agents,由 Anthropic 執行 agent loop。依預設,agent 的工具會在 Anthropic 託管的 sandbox 中執行,因此 agent 的工作區位於 Anthropic 的基礎架構,而不是你的 VPS。截至 October 11, 2026,仍處於 beta 的 self-hosted sandbox 選項可讓你自己伺服器上的 worker process 執行工具呼叫,而 agent loop 仍由 Anthropic 執行。如果你希望將維運工作降至最低,且不需要讓 agent loop 在自己的機器上執行,可以選擇 Managed Agents。至於另外 2 種方式,整個 agent 都會以你的伺服器為執行環境,這正是本指南後續要介紹的內容。
連接工具與 MCP
無論選擇哪種方式,都需要將 agent 連接到實際系統,而 Model Context Protocol 是一種簡潔的做法。MCP 是用於向 agent 提供工具與資料的開放標準。與其為每項服務手動撰寫整合程式,不如將 Claude 指向已經把這些能力呈現為工具的 MCP server。您可以將 MCP server 以小型服務的形式執行在同一台 VPS 上,並只授予各服務所需的存取權限。相關內容請參閱 在 VPS 上執行 MCP server。
選擇模型
Claude 提供多種模型,選擇時需要在能力、速度與成本之間取捨。截至 October 11, 2026,目前的產品線包括 Claude Opus 5.5 (claude-opus-5-5),Anthropic 建議將其作為大多數工作負載的起點,適合長時間執行的代理式程式設計與知識工作;Claude Sonnet 5.5 (claude-sonnet-5-5),這是較均衡的選項,成本較低且速度較快;以及 Claude Haiku 5.5 (claude-haiku-5-5),速度最快、成本最低,適合簡單且大量執行的步驟。Claude Fable 5.1 (claude-fable-5-1) 的能力更高,是所有客戶都能使用的最強模型,適合要求嚴苛的推理與長期代理式工作。Claude Opus 4.8 和 Claude Fable 5 等較舊模型仍可使用,但目前已列為 legacy。請在程式碼中使用完全相同的模型識別碼,不要在識別碼後加入日期。
實務上可以混合使用不同模型。讓較便宜的模型處理例行工具呼叫,再由能力較強的模型處理困難的決策。模型在請求中只是一個字串,因此切換模型只需修改一行。建議先使用能力較強的預設模型,再在速度或成本比最後一點品質更重要的情況下,改用較低階的模型。
在 VPS 上以強化服務執行
代理程式只有持續執行才有用,也只有受到隔離才安全。在 VPS 上,應將代理程式作為強化的系統服務執行,而不是手動在終端機中啟動的程式。作為服務執行時,它會在開機時啟動,當程序當機時自動重新啟動,並將日誌寫入 journal。完成強化後,代理程式會以非特權使用者執行,僅具備所需的存取權限,因此即使程式存在錯誤或收到不當指令,影響範圍也會受到限制。服務單元可以限制程序可存取的資源,以及可使用的記憶體、CPU 和工作數量,但無法判斷代理程式會如何運用這些權限。因此,其餘防護必須由代理程式本身的 harness 負責;在另一個技術堆疊中,值得安裝的 DeepSeek Harness 外掛便是處理這項工作的工具,包括使用量上限、各工具的權限規則,以及 prompt injection 掃描。
最重要的規則是將 Claude API key 保留在伺服器端。此 key 會支付並授權每一次呼叫,因此應放在只有代理程式使用者能讀取的檔案中,再以環境變數載入服務。絕對不要將它放入程式碼、repository,或任何瀏覽器可存取的位置。在此產生代理程式的完整強化服務單元:
接著完成伺服器本身的設定。僅使用 SSH key 登入,並依照 VPS 上的 SSH 強化設定,鎖定你用來管理伺服器的帳號。如果你想在建置期間從互動式工作階段操作代理程式,使用 tmux 在 VPS 上執行 Claude Code是很好的搭配工具。在同一台主機上開啟第二個工作階段後,兩者可以互相傳遞工作,你就不必將每項指令從一個窗格逐一轉貼到另一個窗格。如果你想了解這些做法背後的概念,而不將其綁定至特定模型,姊妹指南在 VPS 上建置自己的 AI 代理程式會說明基礎架構。
如果你需要的是終端機程式碼助理,在 VPS 上執行程式碼 AI 代理程式涵蓋 Aider 和 Goose。
FAQ
建立 agent 應該使用哪個 Claude 模型?
先從 Claude Opus 5.5(claude-opus-5-5)開始。Anthropic 建議大多數工作負載使用此模型,再依需求調整。Claude Sonnet 5.5(claude-sonnet-5-5)對大多數工作而言更便宜且速度更快。Claude Haiku 5.5(claude-haiku-5-5)適合簡單且大量執行的步驟。Claude Fable 5.1(claude-fable-5-1)最適合最複雜的工作。常見做法是使用較便宜的模型處理例行步驟,再使用能力較強的模型處理困難決策,因為切換模型只需修改一行設定。
整個 agent 是在我的 VPS 上執行,還是由 Anthropic 執行?
這取決於採用的方式。如果你直接使用 Claude API 撰寫自己的迴圈,或使用 Claude Agent SDK,agent 會完全在你的 VPS 上執行,只有模型呼叫會傳送至 Anthropic。如果使用 Managed Agents,Anthropic 會執行該迴圈,並預設代管工具執行所在的 sandbox,因此較少元件會留在你的伺服器上。截至 October 11, 2026,自行代管 sandbox 的選項仍處於 beta,可將工具執行移至你自己的機器,同時讓迴圈維持在 Anthropic。若要讓 agent 完全在自己的機器上執行,請使用前兩種方式之一。
Claude API 與 Claude Agent SDK 有何差異?
Claude API 是原始的 Messages endpoint:你傳送對話與工具,並自行撰寫 agent 迴圈,或使用 SDK 的 tool runner 驅動迴圈。Claude Agent SDK 是較高階的函式庫,也是針對建置用途封裝的 Claude Code,提供完整迴圈,以及內建的檔案、shell 和搜尋工具。若要自行定義所有部分,請使用 API;若要取得功能完整的 agent,而不必自行組裝執行框架,請使用 Agent SDK。
如何在伺服器上保護 Claude API key?
將它留在伺服器端,並避免放入程式碼。將 key 儲存在只有 agent 執行時所用帳號可讀取的檔案中,再以環境變數載入服務。絕不要將它提交至 repository,或暴露給瀏覽器。由於每個 Claude 請求都從你的伺服器送出,key 不必傳送至使用者裝置。因此,與嵌入 client app 的 agent 相比,伺服器執行的 agent 更容易保護。
使用 Claude 建立 agent 需要自行代管模型嗎?
不需要。Claude 是透過 API 呼叫的代管服務,因此不需要在 GPU 上執行任何元件。你的 VPS 負責執行 agent 迴圈、工具與資料,推理則在 Anthropic 端進行。這使資源有限的伺服器也能執行能力完整的 agent。如果你需要完全在本機執行的模型,則應採用 self-hosted 路徑;相關內容請參閱 companion guide 中的建立自有 AI agent 說明。