SSD Nodes Learn Hosting plans →
Hướng dẫn Matt ConnorBởi Matt Connor · Cập nhật ngày 2026-08-22

Cách xây dựng AI agent với Claude trên VPS

Dùng Claude làm bộ não, VPS làm phần thực thi. Tìm hiểu Messages API, tool use và MCP phối hợp thế nào để bạn tự chạy agent và kiểm soát dữ liệu.

Xây dựng agent với Claude nghĩa là gì

Xây dựng agent với Claude nghĩa là dùng Claude làm lõi suy luận, còn loop, các tool và dữ liệu chạy trên server của bạn. Claude quyết định phải làm gì; VPS của bạn thực thi việc đó. Bạn gửi task và trạng thái hiện tại cho Claude. Claude trả về câu trả lời hoặc yêu cầu sử dụng một trong các tool của bạn. Code của bạn chạy tool, gửi kết quả lại cho Claude, rồi loop tiếp tục cho đến khi hoàn tất công việc. Phần intelligence là một service mà bạn gọi qua Internet. Mọi thành phần xung quanh đều thuộc quyền kiểm soát của bạn.

Đây là điểm hấp dẫn của mô hình phân tách này. Bạn có được khả năng suy luận ở cấp độ frontier mà không phải vận hành một model. Bạn cũng toàn quyền kiểm soát những gì agent có thể truy cập, vì các tool chạy trên phần cứng do bạn sở hữu. Nếu bạn đã xây dựng chương trình Claude đầu tiên, hướng dẫn chạy app Claude đầu tiên trên VPS sẽ trình bày phần nền tảng mà bài này sử dụng.

Claude là bộ não: Messages API

Mọi lần gọi Claude đều đi qua một endpoint duy nhất là Messages API. Bạn gửi toàn bộ cuộc hội thoại hiện có cùng danh sách các tool mà agent được phép sử dụng; Claude trả về message tiếp theo. Message đó là câu trả lời cuối cùng hoặc yêu cầu gọi một tool. Với cách tự xây dựng, không có “agent API” riêng: tool use là một tính năng của endpoint duy nhất này, còn vòng lặp bao quanh nó do bạn tự chạy.

Claude không có state giữa các lần gọi, nghĩa là bản thân Claude không nhớ gì. Mỗi request phải chứa toàn bộ cuộc hội thoại. Code của bạn lưu history rồi gửi lại ở mỗi lượt. Đây là lý do mỗi lượt trong một session dài tốn nhiều token hơn lượt trước. Đây không hẳn là một hạn chế mà là một lựa chọn thiết kế: vì state nằm trên server của bạn, bạn quyết định chính xác Claude được thấy gì, và không có thông tin nào về task được lưu ở nơi bạn không kiểm soát. Tuy nhiên, prompt sẽ liên tục dài thêm. Claude có thể xử lý việc này trong context window của nó, nhưng local model chạy trong cùng vòng lặp thì không. Vì vậy, Ollama cần tăng num_ctx trước khi ngừng cắt ngắn các prompt dài.

Tool use là vòng lặp của agent

Vòng lặp của agent với Claude dễ mô tả. Bạn gửi một request có kèm các tool. Claude đọc task và, nếu cần thực hiện hành động, sẽ phản hồi bằng một tool-use request, trong đó nêu tên tool và điền các input của tool đó. Code của bạn chạy tool này, sau đó gửi kết quả lại cho Claude trong request tiếp theo. Claude đọc kết quả rồi yêu cầu thêm một tool hoặc viết câu trả lời cuối cùng. Khi Claude không còn yêu cầu tool nữa, task đã hoàn tất.

Bạn có thể tự viết vòng lặp này bằng vài dòng code. Nhiều người làm vậy vì cách này dễ quan sát và dễ kiểm soát. Các SDK chính thức cũng cung cấp tool runner để tự điều khiển vòng lặp: bạn cung cấp các hàm tool, còn SDK xử lý việc gọi Claude, chạy các tool và gửi kết quả trở lại cho đến khi Claude hoàn tất. Dù dùng cách nào, cấu trúc vẫn như nhau. Runner chỉ giúp bạn không phải tự viết vòng lặp. Nếu vòng lặp vẫn khó hình dung, hãy viết một vòng lặp tối giản trước khi dùng runner. Đây là bước nền tảng cho mọi nội dung khác trong lộ trình từng bước học AI agent từ đầu này.

Ba cách xây dựng và cách chọn cho VPS

Có ba cách xây dựng một Claude agent. Điểm khác nhau là lượng thành phần bạn phải tự vận hành.

Cách thứ nhất là viết code riêng gọi Claude API cùng các tool của bạn. Bạn tự viết vòng lặp hoặc dùng tool runner của SDK, rồi host toàn bộ trên VPS. Đây là lựa chọn phổ biến vì bạn kiểm soát hoàn toàn tool, dữ liệu và bảo mật. Agent chạy như một chương trình thông thường trên server. Phần lớn hướng dẫn này giả định bạn chọn cách này.

Cách thứ hai là Claude Agent SDK. Đây là Claude Code, một coding agent, được đóng gói thành library để bạn xây dựng trên đó. SDK cung cấp sẵn agent loop và các tool tích hợp để đọc và ghi file, chạy shell command và tìm kiếm. Vì vậy, bạn không phải tự xây dựng các thành phần này từ đầu. SDK cũng chạy trên server của bạn. Đây là lựa chọn phù hợp cho VPS khi bạn cần một file-and-shell agent có năng lực mà không muốn tự xây dựng harness. Agent đọc file và chạy shell command cần được containment trước khi chạy unattended. Chạy Claude Code an toàn trên server trình bày permission system, sandbox và các tùy chọn isolation.

Cách thứ ba là Managed Agents. Anthropic vận hành loop và host một sandbox để agent thực thi các tool. Đây là lựa chọn ít phải vận hành nhất. Bạn cần quản lý ít thành phần hơn nhiều, nhưng workspace của agent nằm trên hạ tầng Anthropic thay vì VPS của bạn. Hãy chọn cách này khi bạn muốn giảm tối đa công việc vận hành và không cần tool chạy trên máy của mình. Với hai cách còn lại, server của bạn là nơi agent chạy. Đó là nội dung của phần còn lại trong hướng dẫn này.

Kết nối công cụ bằng MCP

Dù chọn cách nào, bạn cũng sẽ muốn kết nối agent với các hệ thống thực tế. Model Context Protocol là cách gọn gàng để thực hiện việc đó. MCP là một tiêu chuẩn mở để cung cấp tool và dữ liệu cho agent. Thay vì tự viết integration cho từng service, bạn trỏ Claude đến một MCP server đã cung cấp sẵn các khả năng đó dưới dạng tool. Bạn có thể chạy các MCP server dưới dạng những service nhỏ trên cùng một VPS, mỗi server chỉ có quyền truy cập cần thiết. Tôi trình bày cách này trong chạy MCP server trên VPS.

Chọn model

Claude có nhiều model, và việc chọn model là sự cân đối giữa năng lực, tốc độ và chi phí. Tại thời điểm viết tài liệu này, các lựa chọn phổ biến gồm Claude Opus 4.8 (claude-opus-4-8), lựa chọn mặc định có năng lực cho các tác vụ suy luận khó và các phiên agent chạy lâu; Claude Sonnet 5 (claude-sonnet-5), lựa chọn cân bằng, rẻ hơn và nhanh hơn nhưng vẫn gần với Opus trong nhiều tác vụ; và Claude Haiku 4.5 (claude-haiku-4-5), nhanh và rẻ nhất, phù hợp với các bước đơn giản có khối lượng lớn. Cao hơn các model này là Claude Fable 5 (claude-fable-5), model có năng lực cao nhất, dành cho những tác vụ đòi hỏi nhiều nhất. Hãy dùng đúng model identifier trong code, không thêm ngày vào identifier đó.

Một cách triển khai thực tế là kết hợp các model. Cho model rẻ hơn xử lý các tool call thường xuyên, còn model mạnh hơn xử lý các quyết định khó. Vì model chỉ là một chuỗi trong request, việc chuyển đổi chỉ cần sửa một dòng. Do đó, hãy bắt đầu với một model mặc định có năng lực, rồi giảm xuống ở những nơi tốc độ hoặc chi phí quan trọng hơn phần chất lượng tăng thêm.

Chạy agent dưới dạng service được harden trên VPS

Agent chỉ hữu ích khi luôn chạy, và chỉ an toàn khi được cô lập. Trên VPS, cả hai điều này đạt được bằng cách chạy agent dưới dạng system service được harden thay vì tự khởi động chương trình trong terminal. Khi chạy dưới dạng service, agent tự khởi động khi boot, tự restart nếu crash và ghi log vào journal. Khi được harden, agent chạy bằng user không có đặc quyền và chỉ được cấp quyền truy cập cần thiết. Vì vậy, một bug hoặc instruction không an toàn sẽ bị giới hạn tác động. Service unit chỉ có thể giới hạn những gì process được phép truy cập. Phần còn lại phải được xử lý bên trong agent harness. Đây là nhiệm vụ của các plugin DeepSeek Harness đáng cài đặt trên một stack khác: giới hạn chi phí, rule cấp quyền cho từng tool và quét prompt injection.

Quy tắc quan trọng nhất là giữ Claude API key ở phía server. Key này dùng để thanh toán và authorise mọi lần gọi API. Vì vậy, key phải nằm trong một file chỉ user chạy agent mới đọc được, được nạp vào service dưới dạng environment variable, và tuyệt đối không đặt trong code, repository hoặc bất kỳ nơi nào browser có thể truy cập. Tạo một service unit đầy đủ và được harden cho agent tại đây:

ToolRun your agent as a hardened service

Sau đó hoàn tất việc harden server. Chỉ cho phép SSH bằng key và khóa chặt account dùng để quản trị, như hướng dẫn trong harden SSH trên VPS. Nếu muốn điều khiển agent từ một interactive session trong lúc xây dựng, chạy Claude Code trên VPS bằng tmux là tài liệu bổ trợ phù hợp. Khi đã mở session thứ hai trên cùng server, hai session có thể chuyển work cho nhau thay vì bạn phải tự chuyển từng instruction từ pane này sang pane kia. Nếu muốn hiểu các khái niệm nền tảng mà không gắn với một model cụ thể, guide liên quan về tự xây dựng AI agent trên VPS trình bày các cơ sở cần thiết.

Nếu bạn cần một coding assistant chạy trong terminal, chạy coding AI agent trên VPS trình bày cách dùng Aider và Goose.

FAQ

Tôi nên dùng model Claude nào để xây dựng agent?

Hãy bắt đầu với Claude Opus 4.8 (claude-opus-4-8), đây là lựa chọn mặc định có năng lực cao, rồi điều chỉnh từ đó. Claude Sonnet 5 (claude-sonnet-5) rẻ hơn và nhanh hơn cho hầu hết công việc, Claude Haiku 4.5 (claude-haiku-4-5) phù hợp nhất với các bước đơn giản có khối lượng lớn, còn Claude Fable 5 (claude-fable-5) có năng lực cao nhất cho những tác vụ khó nhất. Một cách triển khai phổ biến là dùng model rẻ hơn cho các bước định kỳ và model mạnh hơn cho các quyết định khó, vì chuyển đổi chỉ cần thay đổi một dòng.

Tôi chạy toàn bộ agent trên VPS của mình hay Anthropic chạy?

Điều này phụ thuộc vào cách triển khai. Nếu bạn tự viết loop gọi Claude API hoặc dùng Claude Agent SDK, agent chạy hoàn toàn trên VPS của bạn và chỉ các lệnh gọi model mới được gửi đến Anthropic. Nếu dùng Managed Agents, Anthropic chạy loop và host sandbox nơi các tool thực thi, nên ít thành phần hơn nằm trên server của bạn. Nếu muốn agent chạy trên máy của mình, hãy dùng một trong 2 cách đầu tiên.

Claude API khác Claude Agent SDK như thế nào?

Claude API là Messages endpoint ở mức thấp: bạn gửi một cuộc hội thoại và các tool, rồi tự viết agent loop xung quanh nó, hoặc dùng tool runner của SDK để điều khiển loop. Claude Agent SDK là một thư viện cấp cao hơn, được đóng gói từ Claude Code để xây dựng ứng dụng, cung cấp sẵn một loop hoàn chỉnh cùng các tool tích hợp để thao tác file, shell và tìm kiếm. Hãy dùng API khi muốn tự định nghĩa mọi thứ, và dùng Agent SDK khi muốn có một agent đủ năng lực mà không phải tự lắp ráp harness.

Làm cách nào để bảo vệ Claude API key trên server?

Giữ key ở phía server và không đưa vào code. Lưu key trong một file chỉ account mà agent chạy dưới quyền account đó mới đọc được, nạp key vào service dưới dạng biến môi trường, đồng thời không bao giờ commit key vào repository hoặc expose key cho browser. Vì mọi request đến Claude đều đi từ server của bạn, key không cần đến thiết bị của người dùng. Nhờ đó, agent chạy trên server dễ bảo mật hơn agent được nhúng trong client app.

Tôi có cần self-host model để xây dựng agent với Claude không?

Không. Với Claude, model là một hosted service được gọi qua API, nên bạn không cần chạy gì trên GPU. VPS của bạn chạy agent loop, các tool và dữ liệu; phần reasoning diễn ra ở phía Anthropic. Nhờ vậy, một server cấu hình vừa phải vẫn có thể chạy agent đủ năng lực. Nếu muốn dùng model hoàn toàn local, đó là hướng self-hosted được trình bày trong guide đi kèm về cách xây dựng AI agent của riêng bạn.