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à lựa chọn phù hợp với 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à tự viết code gọi Claude API bằ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ộ hệ thống trên VPS. Đây là lựa chọn phổ biến vì bạn toàn quyền kiểm soát tool, dữ liệu và bảo mật. Hệ thống cũng 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 thư viện để bạn xây dựng dựa trên đó. SDK có sẵn agent loop và các tool tích hợp để đọc, ghi file, chạy shell command và tìm kiếm. Bạn không cần 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. Vì vậy, đây là lựa chọn phù hợp với 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. Một agent có thể đọ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, trong đó Anthropic vận hành loop. Mặc định, tool của agent chạy trong sandbox do Anthropic host. Vì vậy, workspace của agent nằm trên hạ tầng Anthropic thay vì VPS của bạn. Tính đến October 11, 2026, một tùy chọn self-hosted sandbox vẫn đang ở beta cho phép một worker process trên server của bạn chạy các tool call, trong khi loop vẫn chạy cùng Anthropic. Hãy chọn Managed Agents khi bạn muốn giảm tối đa công việc vận hành và không cần loop chạy trực tiếp 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 chạy toàn bộ agent. Đó 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 bằng giữa năng lực, tốc độ và chi phí. Tính đến ngày 11 tháng 10 năm 2026, dòng model hiện tại gồm Claude Opus 5.5 (claude-opus-5-5), được Anthropic khuyến nghị làm điểm bắt đầu cho hầu hết workload và được xây dựng cho các tác vụ coding agentic kéo dài cũng như công việc tri thức; Claude Sonnet 5.5 (claude-sonnet-5-5), lựa chọn cân bằng với chi phí thấp hơn và tốc độ cao hơn; và Claude Haiku 5.5 (claude-haiku-5-5), model nhanh và rẻ nhất, phù hợp với các bước đơn giản có volume lớn. Ở cấp cao hơn là Claude Fable 5.1 (claude-fable-5-1), model có năng lực cao nhất dành cho mọi khách hàng, phù hợp với các tác vụ reasoning khó và công việc agentic có phạm vi dài. Các model cũ hơn như Claude Opus 4.8 và Claude Fable 5 vẫn còn khả dụng nhưng hiện được liệt kê là legacy. Hãy dùng đúng model identifier trong code, không thêm ngày vào identifier.
Một pattern thực tế là kết hợp các model này. Cho model rẻ hơn xử lý các tool call thường lệ, 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. Vì vậy, hãy bắt đầu với một giá trị mặc định có năng lực, rồi giảm xuống model thấp hơn ở những nơi tốc độ hoặc chi phí quan trọng hơn phần chất lượng chênh lệch cuối cùng.
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 yêu cầu này đều đạ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 sẽ tự khởi động cùng hệ thống, tự restart nếu bị crash và ghi log vào journal. Khi được harden, agent chạy dưới một user không có quyền đặc biệt và chỉ được cấp quyền truy cập cần thiết. Vì vậy, lỗi phần mềm hoặc instruction không an toàn sẽ bị giới hạn phạm vi ảnh hưởng. Service unit có thể giới hạn những gì process được phép truy cập, cũng như lượng memory, CPU và số task mà process được phép sử dụng. Tuy nhiên, service unit không thể đánh giá agent sẽ làm gì với các quyền đó. 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 theo 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 dùng để thanh toán và xác thực mọi call, vì vậy phải lưu trong file chỉ user chạy agent mới đọc được, nạp vào service dưới dạng biến môi trường và tuyệt đối không đặt trong code, repository hoặc bất kỳ vị trí nào browser có thể truy cập. Tạo một service unit hoàn chỉnh và được harden cho agent tại đây:
Sau đó, hoàn tất cấu hình chính 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 công việc 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 tìm hiểu các khái niệm nền tảng mà không gắn với một model cụ thể, tài liệu liên quan về tự xây dựng AI agent trên VPS trình bày các phần cơ bản.
Nếu bạn cần một terminal coding assistant, 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 5.5 (claude-opus-5-5), model Anthropic khuyến nghị cho hầu hết workload, rồi điều chỉnh từ đó. Claude Sonnet 5.5 (claude-sonnet-5-5) rẻ và nhanh hơn cho phần lớn công việc, Claude Haiku 5.5 (claude-haiku-5-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.1 (claude-fable-5-1) 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 thường lệ và model mạnh hơn cho các quyết định khó, vì chuyển đổi chỉ cần sửa 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 tùy 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ần gọi model được gửi đến Anthropic. Nếu dùng Managed Agents, Anthropic chạy loop và mặc định host sandbox nơi các tool thực thi, nên ít thành phần chạy trên server của bạn hơn. Tùy chọn sandbox self-hosted, đang ở trạng thái beta vào ngày October 11, 2026, chuyển việc thực thi tool sang máy của bạn trong khi loop vẫn chạy tại Anthropic. Nếu muốn agent chạy hoàn toàn 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 cấp thấp: bạn gửi conversation 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 library cấp cao hơn, tức Claude Code được đóng gói để 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 để làm việc với file, shell và search. Dùng API khi bạn muốn tự định nghĩa mọi thứ, và dùng Agent SDK khi muốn có một agent đủ khả năng 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 chạy agent có quyền đọc, nạp key vào service dưới dạng environment variable, và 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. Đây là lý do 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, còn việc 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 đủ khả năng. 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.