SSD Nodes Learn
Hướng dẫn Matt ConnorBởi Matt Connor · Cập nhật ngày 2026-07-23

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

Hướng dẫn kết hợp Messages API, tool use và MCP để biến VPS thành môi trường thực thi cho Claude agent. Kiểm soát hoàn toàn dữ liệu và công cụ của bạn.

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

Xây dựng một agent với Claude có nghĩa là sử dụng Claude làm lõi suy luận (reasoning core), trong khi vòng lặp (loop), các công cụ (tools) và dữ liệu sẽ nằm trên server của bạn. Claude quyết định cần làm gì; VPS của bạn thực thi việc đó. Bạn gửi cho Claude nhiệm vụ và trạng thái hiện tại, Claude phản hồi bằng một câu trả lời hoặc một yêu cầu sử dụng một trong các công cụ của bạn, code của bạn chạy công cụ đó và gửi kết quả ngược lại, và vòng lặp tiếp tục cho đến khi hoàn thành công việc. Trí tuệ là một service mà bạn gọi qua internet. Mọi thứ xung quanh nó đều là của bạn.

Sự phân tách này chính là điểm hấp dẫn. Bạn có được khả năng suy luận cấp độ frontier mà không cần vận hành một model, và bạn giữ toàn quyền kiểm soát những gì agent có thể chạm tới, vì các công cụ chạy trên phần cứng mà 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 ứng dụng Claude đầu tiên trên VPS sẽ cung cấp các kiến thức nền tảng mà hướng dẫn này dựa vào.

Claude là bộ não: Messages API

Mọi lệnh gọi đến Claude đều đi qua một endpoint duy nhất, Messages API. Bạn gửi nội dung cuộc hội thoại cho đến thời điểm hiện tại và danh sách các công cụ mà agent có thể sử dụng; Claude gửi lại tin nhắn tiếp theo. Tin nhắn đó có thể là câu trả lời cuối cùng hoặc một yêu cầu gọi một công cụ. Đối với hướng xây dựng thủ công, không có "agent API" riêng biệt: việc sử dụng công cụ là một tính năng của endpoint duy nhất này, và vòng lặp xung quanh nó là do bạn tự vận hành.

Claude không lưu trạng thái (stateless) giữa các lần gọi, nghĩa là nó không tự nhớ bất cứ thứ gì. Mỗi request phải mang theo toàn bộ nội dung cuộc hội thoại. Code của bạn giữ lịch sử và gửi nó trong mỗi lượt, đó là lý do tại sao 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ì trạng thái nằm trên server của bạn, bạn quyết định chính xác những gì Claude thấy, và không có gì về nhiệm vụ được lưu trữ ở bất kỳ nơi nào mà bạn không kiểm soát.

Sử dụng công cụ là vòng lặp agent

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

Bạn có thể tự viết vòng lặp đó chỉ với vài dòng code, và nhiều người làm vậy vì nó dễ quan sát và dễ kiểm soát. Các SDK chính thức cũng cung cấp một tool runner để điều khiển vòng lặp cho bạn: bạn cung cấp các function của công cụ, và SDK sẽ xử lý việc gọi Claude qua lại, chạy các công cụ của bạn và gửi kết quả ngược lại cho đến khi Claude hoàn tất. Dù cách nào thì cấu trúc vẫn như nhau. tool runner chỉ giúp bạn đỡ phải tự viết vòng lặp.

Ba cách xây dựng, và cách nào phù hợp với VPS

Có ba cách để xây dựng một Claude agent, và chúng khác nhau ở mức độ máy móc mà bạn phải vận hành.

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

Cách thứ hai là Claude Agent SDK. Đây là Claude Code, một agent lập trình, được đóng gói dưới dạng một library để bạn xây dựng dựa trên đó. Nó đi kèm một vòng lặp agent đầy đủ và các công cụ tích hợp sẵn để đọc và ghi file, chạy shell command và tìm kiếm, vì vậy bạn không cần phải lắp ráp chúng từ đầu. Nó cũng chạy trên server của chính bạn, điều này khiến nó rất phù hợp cho một VPS khi bạn muốn có một agent file-and-shell mạnh mẽ mà không cần tự xây dựng bộ khung (harness). Một agent đọc file và chạy shell command cần được kiểm soát (containment) trước khi chạy tự động, và chạy Claude Code an toàn trên server sẽ đề cập đến hệ thống phân quyền, sandbox và các tùy chọn isolation.

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

Kết nối các công cụ với MCP

Bất kể bạn chọn con đường nào, bạn sẽ muốn kết nối agent với các hệ thống thực tế, và 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 các công cụ và dữ liệu cho một agent. Thay vì phải viết code tích hợp cho từng service, bạn trỏ Claude tới một MCP server đã cung cấp sẵn các khả năng đó dưới dạng các công cụ. Bạn có thể chạy các MCP server như các service nhỏ trên cùng một VPS, mỗi cái chỉ có quyền truy cập cần thiết, điều mà tôi đề cập trong chạy MCP server trên VPS.

Chọn một model

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

Một mô hình thực tế là kết hợp chúng. Hãy để một model rẻ hơn xử lý các lệnh gọi tool thông thường và một model mạnh hơn xử lý các quyết định khó. Vì model chỉ là một string trong request của bạn, việc chuyển đổi chỉ là một thay đổi một dòng code, vì vậy hãy bắt đầu với một model mặc định mạnh mẽ và điều chỉnh giảm xuống khi tốc độ hoặc chi phí quan trọng hơn một chút về chất lượng.

Chạy nó như một service được bảo mật trên VPS của bạn

Một agent chỉ hữu ích nếu nó duy trì việc chạy, và nó chỉ an toàn nếu nó được kiểm soát. Trên VPS, cả hai điều này đều đến từ việc chạy agent như một system service được bảo mật thay vì một chương trình bạn khởi chạy thủ công trong terminal. Dưới dạng một service, nó sẽ khởi động khi boot, khởi động lại nếu bị crash, và ghi log vào journal. Khi được bảo mật, nó chạy dưới một user không có đặc quyền (unprivileged user) và chỉ có những quyền truy cập cần thiết, để nếu có lỗi hoặc một lệnh sai, thiệt hại cũng bị giới hạn.

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à cấp quyền cho mọi lệnh gọi, vì vậy nó phải nằm trong một file chỉ có user của agent mới đọc được, được load vào service dưới dạng một environment variable, và không bao giờ được đặt trong code, trong một repository, hoặc bất kỳ nơi nào mà trình duyệt có thể tiếp cận. Tạo một service unit hoàn chỉnh và bảo mật cho agent của bạn tại đây:

ToolRun your agent as a hardened service

Sau đó hoàn tất việc thiết lập server. Chỉ sử dụng SSH key và khóa chặt tài khoản mà bạn quản trị, như trong bảo mật SSH trên VPS. Nếu bạn muốn điều khiển agent từ một session tương tác trong khi xây dựng, chạy Claude Code trên VPS với tmux là một công cụ hỗ trợ tốt. Và nếu bạn muốn hiểu các khái niệm đằng sau tất cả những thứ này mà không gắn chặt chúng vào một model cụ thể, hướng dẫn bổ trợ về xây dựng AI agent của riêng bạn trên VPS sẽ trình bày các nền tảng.

Nếu bạn muốn một trợ lý lập trình qua terminal, chạy coding AI agent trên VPS sẽ đề cập đến 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), lựa chọn mặc định mạnh mẽ, và điều chỉnh từ đó. Claude Sonnet 5 (claude-sonnet-5) rẻ hơn và nhanh hơn cho hầu hết các công việc, Claude Haiku 4.5 (claude-haiku-4-5) tốt nhất cho các bước đơn giản số lượng lớn, và Claude Fable 5 (claude-fable-5) là mạnh nhất cho các tác vụ khó nhất. Một mô hình phổ biến là sử dụng model rẻ hơn cho các bước thông thường và một model mạnh hơn cho các quyết định khó, vì việc chuyển đổi chỉ là một thay đổi một dòng code.

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

Tùy thuộc vào cách tiếp cận. Nếu bạn tự viết vòng lặp dựa trên Claude API, hoặc sử dụng Claude Agent SDK, agent sẽ chạy hoàn toàn trên VPS của bạn và chỉ các lệnh gọi model là gửi tới Anthropic. Nếu bạn sử dụng Managed Agents, Anthropic sẽ vận hành vòng lặp và host sandbox nơi các công cụ thực thi, vì vậy ít thứ hơn nằm trên server của bạn. Đối với một agent chạy trên máy của chính bạn, hãy sử dụng một trong hai cách đầu tiên.

Sự khác biệt giữa Claude API và Claude Agent SDK là gì?

Claude API là endpoint Messages thô: bạn gửi một cuộc hội thoại và các công cụ, và bạn tự viết vòng lặp agent xung quanh nó, hoặc sử dụng tool runner của SDK để điều khiển nó. Claude Agent SDK là một library ở mức cao hơn, Claude Code được đóng gói để xây dựng, đi kèm một vòng lặp đầy đủ và các công cụ file, shell và search tích hợp sẵn. Hãy dùng API khi bạn muốn tự định nghĩa mọi thứ, và dùng Agent SDK khi bạn muốn một agent mạnh mẽ mà không cần tự lắp ráp bộ khung.

Làm thế nào để giữ Claude API key an toàn trên server?

Hãy giữ nó ở phía server và tách khỏi code của bạn. Lưu nó trong một file chỉ có tài khoản mà agent chạy mới đọc được, load nó vào service dưới dạng một environment variable, và không bao giờ commit nó vào repository hoặc để lộ nó cho trình duyệt. Vì mọi request tới Claude đều đi từ server của bạn, key không bao giờ cần chạm tới thiết bị của người dùng, điều này giúp một agent chạy trên server dễ bảo mật hơn so với một agent được nhúng trong ứng dụng client.

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

Không. Với Claude, model là một service được host mà bạn gọi qua API, vì vậy không có gì cần chạy trên GPU. VPS của bạn chạy vòng lặp agent, các công cụ và dữ liệu, còn việc suy luận diễn ra ở phía Anthropic. Đó là lý do tại sao một server cấu hình vừa phải có thể chạy một agent mạnh mẽ. Nếu bạn muốn một model chạy hoàn toàn local, đó là con đường tự host được đề cập trong hướng dẫn bổ trợ về xây dựng AI agent của riêng bạn.