Một giao diện chat thống nhất cho Claude Code, Copilot, Gemini, Codex và bất kỳ agent nào theo chuẩn Agent Client Protocol.
Vấn đề khi mỗi Agent một Extension
Nếu bạn nhảy qua nhảy lại giữa Claude Code, GitHub Copilot, Gemini CLI và phần còn lại, sidebar editor của bạn bắt đầu trông giống thanh bookmark trình duyệt. Mỗi agent ship một VS Code extension riêng, với quy ước UI riêng, mô hình session riêng, keybinding riêng. Bạn phải học năm cái nút “stop” khác nhau. Tool call render theo năm kiểu khác nhau.
Bạn muốn một panel duy nhất. Một thanh tab. Một cách đọc tool call. Agent nên là một dropdown, không phải một extension riêng.
Đó là ACP Pro.

ACP Pro là một VS Code extension giao tiếp chuẩn Agent Client Protocol (ACP) — một schema JSON-RPC 2.0 nhỏ gọn mà bất kỳ agent nào cũng có thể implement. ACP định nghĩa cách client (editor) và agent (Claude, Copilot, Gemini, …) thương lượng session, stream message, yêu cầu sửa file và chạy tool.
Vì mọi agent được hỗ trợ đều giao tiếp cùng một protocol, UI không cần biết bạn chọn cái nào. Bạn mở một tab, chọn agent, và cùng một chat shell render cùng một dạng sự kiện streaming — text chunk, thought chunk, tool call, plan, diff.
Mặc định có chín agent đã được wired sẵn:
| Agent | Lệnh |
|---|---|
| Claude Code | npx @agentclientprotocol/claude-agent-acp@latest |
| GitHub Copilot | npx @github/copilot-language-server@latest --acp |
| Gemini CLI | npx @google/gemini-cli@latest --experimental-acp |
| Qwen Code | npx @qwen-code/qwen-code@latest --acp --experimental-skills |
| Auggie CLI | npx @augmentcode/auggie@latest --acp |
| Qoder CLI | npx @qoder-ai/qodercli@latest --acp |
| Codex CLI | npx @zed-industries/codex-acp@latest |
| OpenCode | npx opencode-ai@latest acp |
| OpenClaw | npx openclaw acp |
Bạn có thể tự thêm — bất cứ thứ gì giao tiếp ACP qua stdio hoặc HTTP đều cắm vào được qua một entry trong settings.json.
Cảm giác thực tế khi dùng
Multi-tab session
Đây là điểm cải thiện trải nghiệm lớn nhất. Mỗi tab là một session agent độc lập với history, model và permission mode riêng. Bạn có thể để Claude refactor một file trong khi Gemini trả lời một câu hỏi nghiên cứu và Copilot viết test — tất cả chạy song song, tất cả trong cùng một panel.

Empty-state liệt kê mọi agent đã cấu hình thành các nút bấm, nên mở một tab mới chỉ là một cú click.
Tool call streaming với inline diff
Khi agent gọi read, edit, bash hay web_search, tool invocation stream theo thời gian thực dưới dạng một card có thể thu gọn. Sửa file render thành inline diff ngay tại chỗ tool call xuất hiện — không phải nhảy sang panel khác.
Plan có panel task có thể thu gọn riêng bên cạnh chat, nên bạn có thể theo dõi một agent đa bước tick qua từng việc.
Permission mode theo session
default, acceptEdits, plan, bypassPermissions — chọn theo từng tab, override theo từng tool call. Nếu bạn muốn một tab full auto và một tab khác review thủ công cẩn thận, không cần context-switch.
Chia sẻ session từ xa
Đây là phần tôi thích nhất. ACP Pro nhúng một bridge HTTP + WebSocket nhỏ. Bật lên là có một share code 6 ký tự:
http://<host>:<port>?code=<shareCode>
Mở URL đó trong bất kỳ trình duyệt nào và bạn thấy các tab đang chạy ở chế độ chỉ đọc. Ghép nó với port forwarding sẵn có của VS Code (Tunnels / Codespaces / SSH) là session agent của bạn chia sẻ được qua internet.
Tôi dùng nó để liếc nhìn task chạy lâu từ điện thoại. Nó cũng tốt cho pair session — người kia xem agent làm việc mà không cần cài extension.

Dùng thử
Cài từ VS Code Marketplace, click icon sparkle ACP Pro trên activity bar và bắt đầu gõ. Agent mặc định là Claude Code — lần chạy đầu mất một lúc để npx cache package agent, sau đó là instant.
Nếu có agent tôi chưa ship sẵn, thả một config vào settings.json:
{
"acpPro.agents": {
"My Local Agent": {
"command": "node",
"args": ["/path/to/my-agent.js", "--acp"],
"env": { "MY_AGENT_API_KEY": "sk-..." }
}
}
}
Build với Lit, Agent Client Protocol và rất nhiều pnpm build.
Bình luận