Quay lại blog

AI cho người mớiHướng dẫn

ACP (Agent Client Protocol) là gì? Mang agent của riêng bạn

ACP là socket giữa trình soạn thảo mã và một coding agent. Đây là cách nó khác MCP và vị trí của mô hình và API key.

Bởi CheapTokens TeamĐã xuất bản 7 phút đọc

Ảnh bìa: luồng Trình soạn thảo → ACP → Agent, giao thức giữa trình soạn thảo mã và một coding agent
Trên trang này
  1. Tại sao lại cần một socket?
  2. Cách ACP hoạt động, nói một cách đơn giản
  3. ACP vs MCP: cái nào kết nối cái gì
  4. Mang agent của riêng bạn vào Android Studio
  5. Mô hình và API key nằm ở đâu
  6. Việc cần làm tiếp theo

Android Studio giờ đây cung cấp một menu gồm hơn 40 coding agent, và các tin tức về nó liên tục nhắc đến ba chữ cái: ACP. Đây là phiên bản ngắn gọn. Agent Client Protocol (ACP) là một socket chung giữa trình soạn thảo mã và một coding agent, hơi giống USB giữa máy tính và bất cứ thứ gì bạn cắm vào. Bất kỳ trình soạn thảo nào nói được ACP đều có thể chạy bất kỳ agent nào nói được nó. MCP là một loại cáp khác: nó kết nối agent với công cụ và dữ liệu, không phải với trình soạn thảo của bạn.

Điểm nóng của tin tức là Android Studio. Blog Android Developers (28 tháng 10 năm 2026) cho biết Android Studio Rabbit 2, nay đã ổn định, đi kèm “Bring Your Own Agent”: bạn chọn từ hơn 40 coding agent, bao gồm Claude Agent, Codex của OpenAI, Junie và Google Antigravity. Bài viết không hề viết rõ “ACP”. Tên gọi và cơ chế đến từ giới thiệu ACP (kiểm tra ngày 1 tháng 11 năm 2026).

Tại sao lại cần một socket?#

Giả sử có 5 trình soạn thảo và 8 coding agent. Nếu mỗi cặp cần một kết nối tự làm riêng, đó là 5 × 8 = 40 tích hợp, và mỗi agent mới đồng nghĩa với năm việc làm thêm cho năm đội ngũ trình soạn thảo. Nếu mọi người thống nhất một socket, mỗi trình soạn thảo xây dựng nó một lần và mỗi agent xây dựng nó một lần: 5 + 8 = 13 phần việc. Đó là toàn bộ ý tưởng.

Trang ACP đưa ra so sánh tương tự với LSP, Language Server Protocol, thứ cho phép một language server hoạt động trong nhiều trình soạn thảo. Cùng một mẹo, áp dụng cho coding agent: bất kỳ agent ACP nào cũng hoạt động với bất kỳ trình soạn thảo ACP nào, không cần tích hợp tùy chỉnh cho từng cặp.

Thẻ ghi nhớ

Những từ bạn sẽ gặp quanh ACP

Cách ACP hoạt động, nói một cách đơn giản#

Hãy hình dung hai đồng nghiệp chuyền ghi chú qua một khe thư. Trình soạn thảo viết một yêu cầu, agent viết lại những gì nó muốn hiển thị. Với một agent cục bộ, khe thư đó là theo nghĩa đen: trình soạn thảo khởi động agent như một tiến trình con trên máy của bạn và chúng trao đổi tin nhắn JSON-RPC qua stdio. Mọi tin nhắn đều có dạng chung như sau:

json
{ "jsonrpc": "2.0", "id": 1, "method": "…", "params": { … } }

Các tên phương thức do chính ACP định nghĩa, nên bạn không bao giờ phải viết chúng bằng tay. Trình soạn thảo và agent làm việc đó.

Agent không nhất thiết phải sống trên laptop của bạn. Agent từ xa dùng HTTP hoặc WebSocket, dù trang ACP nói rằng hỗ trợ từ xa đầy đủ vẫn đang trong quá trình hoàn thiện. Và vì giao thức được xây dựng cho việc lập trình, nó tái sử dụng các biểu diễn JSON của MCP khi có thể và thêm các kiểu cho những thứ trình soạn thảo cần vẽ, chẳng hạn như diff. Đó là lý do một thay đổi được đề xuất có thể hiện ra dưới dạng diff trong trình soạn thảo của bạn thay vì một bức tường văn bản.

Trình soạn thảo, ACP, agent và API mô hình trên một hàng
ACP là mắt nối giữa trình soạn thảo và agent. Mô hình nằm phía sau agent, trên một kết nối riêng.

ACP vs MCP: cái nào kết nối cái gì#

Đặt agent ở giữa. Một bên là trình soạn thảo của bạn, và mắt nối đó là ACP. Bên kia là những thứ agent làm việc cùng: tệp, cơ sở dữ liệu, dịch vụ. Mắt nối đó là MCP. Chúng nằm ở hai phía khác nhau của agent, nên chúng không cạnh tranh. Nếu MCP còn mới với bạn, hãy bắt đầu với hướng dẫn MCP bằng ngôn ngữ đơn giản của chúng tôi.

ACP nối trình soạn thảo và agent, MCP nối agent và công cụ
Hai giao thức cạnh nhau. ACP hướng về trình soạn thảo, MCP hướng về công cụ.

Chúng cũng là họ hàng gần: như đã nêu ở trên, ACP mượn các biểu diễn JSON của MCP khi có thể. Hãy thử tự ghép chúng:

Ghép cặp

Ghép mỗi tên với thứ nó kết nối

  • ACPTrình soạn thảo ⇄ coding agent
  • MCPAgent ⇄ công cụ và dữ liệu
  • JSON-RPC qua stdioCách một agent ACP cục bộ nói chuyện với trình soạn thảo
  • API mô hình (base URL + key)Agent ⇄ mô hình ngôn ngữ

Mang agent của riêng bạn vào Android Studio#

Không có một giao thức chung, việc thêm một agent vào trình soạn thảo là việc của nhà cung cấp trình soạn thảo. Với Android Studio Rabbit 2, bạn tự chọn agent. Theo bài viết của Android Developers, bạn mở cửa sổ agent và chọn một agent, hoặc chọn trong Settings > Tools > AI > Agents. Sau đó bạn xác thực và gửi lời nhắc đầu tiên. Bài viết chỉ nói “xác thực”; việc đó yêu cầu gì phụ thuộc vào agent bạn đã chọn, nên tài liệu của chính agent là nơi cần xem.

Đây là thứ tự, nếu bạn muốn tự kiểm tra:

Sắp xếp thứ tự

Sắp xếp các bước trong Android Studio theo đúng thứ tự

  1. Mở Android Studio Rabbit 2
  2. Chọn một agent (cửa sổ agent hoặc Settings > Tools > AI > Agents)
  3. Xác thực
  4. Gửi lời nhắc đầu tiên

Mô hình và API key nằm ở đâu#

Đây là phần khiến hầu hết người mới bối rối. Mắt nối ACP mang cuộc hội thoại giữa trình soạn thảo và agent. Agent vẫn cần một mô hình ngôn ngữ để suy nghĩ, và đó là một kết nối riêng, thường có đăng nhập hoặc API key riêng. Đổi trình soạn thảo không thay đổi mô hình, và đổi mô hình không thay đổi trình soạn thảo. Bài viết về Android Studio không nói gì về key hay mô hình tùy chỉnh, nên những gì bạn có thể thay đổi phụ thuộc vào agent bạn chọn.

Một số agent cho phép bạn trỏ chúng tới một endpoint tương thích OpenAI: một base URL, một key và một model id. Khi agent của bạn làm được điều đó, đây là toàn bộ kết nối phía mô hình, và bạn có thể kiểm tra nó trong terminal trước khi động đến bất kỳ cài đặt nào (key là một giá trị giữ chỗ trong một biến môi trường):

bash
curl https://api.cheaptokens.dev/v1/chat/completions \
  -H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-ai/DeepSeek-V4-Flash-0731",
    "messages": [{"role": "user", "content": "Explain ACP in one sentence."}]
  }'

Bạn nhận lại một câu trả lời JSON với văn bản trong choices[0].message.content và số lượng token trong usage. Coding agent gửi lại rất nhiều ngữ cảnh ở mỗi bước, nên một mô hình ngữ cảnh dài phù hợp với chúng. Trong CheapTokens đó là DeepSeek-V4-Flash: cửa sổ ngữ cảnh 380K, tối đa 32.768 token đầu ra mỗi câu trả lời, một mức giá vào bất kỳ giờ nào trong ngày và một số dư chung cho mọi mô hình. API tương thích với OpenAI và Anthropic. Lấy model id chính xác từ tài liệu CheapTokens; id khác nhau giữa các nhà cung cấp. Trang mô hình DeepSeek có chi tiết.

Không chắc công cụ nào nhận key tùy chỉnh? Hướng dẫn nơi cắm API key của riêng bạn của chúng tôi đi qua chat, trình soạn thảo, terminal và mã. Và nếu “base URL” là một thuật ngữ mới, hãy đọc base_url là gì và cách chuyển đổi.

Tự mình thử xemThử xem: bạn đã cài một agent ACP. Bạn thay đổi kết nối nào để đổi mô hình mà nó dùng?Hiện đáp án

Không phải kết nối ACP. Socket giữa trình soạn thảo và agent giữ nguyên. Mô hình là cài đặt riêng của agent: base URL, key và model id trong cấu hình của agent, nếu agent có công khai chúng.

Việc cần làm tiếp theo#

Mở tài liệu của agent bạn muốn và tìm nơi nó đặt mô hình. Nếu bạn tò mò về cách agent hoạt động bên trong, cách một AI agent hoạt động: vòng lặp sẽ chỉ ra từng bước. ACP chỉ trả lời một câu hỏi, cách trình soạn thảo và agent nói chuyện với nhau. Mọi thứ khác vẫn nằm giữa agent với công cụ và mô hình của nó.