Claude Code Remote Control: Điều khiển Claude Code từ ứng dụng bên ngoài
Điểm nổi bật
Nhấn để đến mục tương ứng
- 1 Khi triển khai remote control là gì và tại sao cần dùng?, điều cốt lõi là Mặc định, Claude Code chạy như một CLI tool — bạn gõ lệnh vào terminal và nhận kết quả — hiểu đúng nguyên lý này giúp bạn tránh sai lầm phổ biến và đạt kết quả tốt hơn ngay từ đầu.
- 2 Góc nhìn thực tế về cách khởi động claude code ở chế độ remote control: Để bật Remote Control, bạn khởi động Claude Code với flag --remote-control : # Khởi động với port mặc định thường là 3000 claude --remote-control # Chỉ định port cụ thể claude --remote-control - — hiệu quả phụ thuộc nhiều vào cách triển khai và ngữ cảnh sử dụng cụ thể.
- 3 Kết quả đo lường từ các endpoint chính của remote control api: 1. Tạo session mới Session là một phiên làm việc với ngữ cảnh riêng biệt. Mỗi session có conversation history độc lập. POST http://localhost:3000/sessions Response: "session_id": "sess_abc123xyz", "created_at": "2026-03-26T10:00:00Z", "status": "active" 2 — các chỉ số cụ thể này giúp bạn đánh giá chính xác hiệu quả trước khi đầu tư nguồn lực.
- 4 Bước thực hành then chốt trong ví dụ thực tế: python automation script: Script Python review toàn bộ repository trước khi deploy: CLAUDE_REMOTE "http://localhost:3000" resp requests.postf"CLAUDE_REMOTE/sessions" return resp.json"session_id" message: resp requests.post f"CLAUDE_REMOTE/sessions/session_id/messages", json"message": message return resp.json — nắm vững điều này giúp bạn triển khai nhanh hơn và giảm thiểu lỗi thường gặp.
- 5 Góc nhìn thực tế về bảo mật khi dùng remote control: Vì Remote Control mở một HTTP server, cần chú ý một số điểm bảo mật: Chỉ bind localhost: Mặc định server chỉ lắng nghe 127.0.0.1 , không expose ra network. Đừng dùng --host 0.0.0.0 trừ khi thực sự cần — hiệu quả phụ thuộc nhiều vào cách triển khai và ngữ cảnh sử dụng cụ thể.
Video chính thức từ kênh Anthropic — "Using Claude Code Remote Control" (2m40s). Hướng dẫn nhanh cách sử dụng Remote Control API để tích hợp Claude Code vào các công cụ khác.
Remote Control là gì và tại sao cần dùng?
Mặc định, Claude Code chạy như một CLI tool — bạn gõ lệnh vào terminal và nhận kết quả. Cách làm việc này hiệu quả nhưng có giới hạn: bạn không thể nhúng Claude Code vào một ứng dụng desktop tùy chỉnh, không thể kích hoạt nó từ một pipeline tự động, và không thể xây dựng UI riêng cho team của mình.
Remote Control API giải quyết chính xác vấn đề này. Nó biến Claude Code thành một server HTTP cục bộ, để bất kỳ ứng dụng nào có thể giao tiếp với nó qua REST API tiêu chuẩn. Thay vì chỉ dùng Claude Code qua terminal, bạn có thể:
- Tạo VS Code extension gọi thẳng Claude Code để review code đang mở
- Xây web app nội bộ cho team dùng chung một phiên Claude Code
- Tích hợp Claude Code vào CI/CD pipeline để tự động review PR
- Kết nối từ JetBrains IDEs, Vim/Neovim plugins, hay bất kỳ HTTP client nào
- Viết automation scripts bằng Python, Go, hay ngôn ngữ bất kỳ
Cách khởi động Claude Code ở chế độ Remote Control
Để bật Remote Control, bạn khởi động Claude Code với flag --remote-control:
# Khởi động với port mặc định (thường là 3000)
claude --remote-control
# Chỉ định port cụ thể
claude --remote-control --port 4000
# Cho phép kết nối từ network (cẩn thận với bảo mật)
claude --remote-control --host 0.0.0.0 --port 4000
Sau khi khởi động, Claude Code sẽ in ra địa chỉ server, ví dụ http://localhost:3000. Từ đây, bạn có thể gọi API từ bất kỳ ứng dụng nào.
Các endpoint chính của Remote Control API
1. Tạo session mới
Session là một phiên làm việc với ngữ cảnh riêng biệt. Mỗi session có conversation history độc lập.
POST http://localhost:3000/sessions
Response:
{
"session_id": "sess_abc123xyz",
"created_at": "2026-03-26T10:00:00Z",
"status": "active"
}
2. Gửi tin nhắn
Đây là endpoint quan trọng nhất — gửi yêu cầu đến Claude Code và nhận phản hồi.
POST http://localhost:3000/sessions/{session_id}/messages
Body:
{
"message": "Review file auth.js và tìm lỗi bảo mật",
"context": {
"working_directory": "/Users/jimmy/my-project",
"files": ["src/auth.js"]
}
}
Response:
{
"message_id": "msg_xyz789",
"status": "processing",
"response": null // polling hoặc dùng streaming
}
3. Lấy lịch sử conversation
GET http://localhost:3000/sessions/{session_id}/messages
Response:
{
"session_id": "sess_abc123xyz",
"messages": [
{
"role": "user",
"content": "Review file auth.js và tìm lỗi bảo mật",
"timestamp": "2026-03-26T10:01:00Z"
},
{
"role": "assistant",
"content": "Tôi đã phân tích auth.js và tìm thấy 3 vấn đề...",
"timestamp": "2026-03-26T10:01:05Z"
}
]
}
4. Lắng nghe updates theo thời gian thực
Với các tác vụ dài, bạn có thể dùng Server-Sent Events để nhận kết quả stream:
GET http://localhost:3000/sessions/{session_id}/stream
// JavaScript client
const eventSource = new EventSource(
'http://localhost:3000/sessions/sess_abc123xyz/stream'
);
eventSource.onmessage = (event) => {
const data = JSON.parse(event.data);
if (data.type === 'token') {
process.stdout.write(data.content);
} else if (data.type === 'done') {
console.log('\nHoàn thành!');
eventSource.close();
}
};
Ví dụ thực tế: VS Code Extension đơn giản
Đây là ví dụ minh họa cách một VS Code extension có thể gọi Claude Code qua Remote Control:
// extension.ts (simplified)
import * as vscode from 'vscode';
import fetch from 'node-fetch';
const CLAUDE_REMOTE = 'http://localhost:3000';
let sessionId: string | null = null;
async function getOrCreateSession(): Promise<string> {
if (sessionId) return sessionId;
const res = await fetch(`${CLAUDE_REMOTE}/sessions`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' }
});
const data = await res.json();
sessionId = data.session_id;
return sessionId;
}
export async function reviewCurrentFile() {
const editor = vscode.window.activeTextEditor;
if (!editor) return;
const code = editor.document.getText();
const filename = editor.document.fileName;
const sid = await getOrCreateSession();
const res = await fetch(
`${CLAUDE_REMOTE}/sessions/${sid}/messages`,
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
message: `Review đoạn code sau và cho biết có vấn đề gì:
Filename: ${filename}
\`\`\`
${code}
\`\`\``
})
}
);
const result = await res.json();
// Hiển thị kết quả trong panel VS Code
vscode.window.showInformationMessage(result.response);
}
Ví dụ thực tế: Python automation script
Script Python review toàn bộ repository trước khi deploy:
import requests
import os
import glob
CLAUDE_REMOTE = "http://localhost:3000"
def create_session():
resp = requests.post(f"{CLAUDE_REMOTE}/sessions")
return resp.json()["session_id"]
def send_message(session_id, message):
resp = requests.post(
f"{CLAUDE_REMOTE}/sessions/{session_id}/messages",
json={"message": message}
)
return resp.json()
def review_for_deployment(project_dir):
sid = create_session()
# Lấy danh sách files thay đổi từ git
changed_files = os.popen(
f"git -C {project_dir} diff --name-only HEAD~1"
).read().strip().split("\n")
js_files = [f for f in changed_files if f.endswith('.js')]
if not js_files:
print("Không có file JS nào thay đổi.")
return
print(f"Đang review {len(js_files)} files...")
result = send_message(sid, f"""
Tôi cần deploy, hãy review các files sau và báo cáo nếu có:
1. Lỗi bảo mật nghiêm trọng
2. Bug logic có thể gây crash
3. Performance issues
Files cần review: {', '.join(js_files)}
Working directory: {project_dir}
""")
print("\n=== KẾT QUẢ REVIEW ===")
print(result.get("response", "Không có phản hồi"))
if __name__ == "__main__":
review_for_deployment("/Users/jimmy/my-project")
Bảo mật khi dùng Remote Control
Vì Remote Control mở một HTTP server, cần chú ý một số điểm bảo mật:
-
Chỉ bind localhost: Mặc định server chỉ lắng nghe
127.0.0.1, không expose ra network. Đừng dùng--host 0.0.0.0trừ khi thực sự cần. -
API key authentication: Nếu cần expose ra network nội bộ, cấu hình API key trong header
Authorization: Bearer YOUR_KEY. - Không để server chạy nền khi không dùng: Tắt Claude Code khi xong việc để giải phóng port.
- Giới hạn working directory: Remote Control chỉ truy cập được files trong working directory đã cấu hình, không phải toàn bộ filesystem.
Use case phù hợp nhất
Remote Control phù hợp nhất cho:
- Team tools: Xây internal tool để cả team cùng dùng một instance Claude Code có ngữ cảnh project
- IDE plugins: Tích hợp sâu hơn vào workflow coding mà không cần chuyển sang terminal
- CI/CD automation: Tự động review code trong pipeline không cần interaction thủ công
- Custom dashboards: Tạo web UI đẹp hơn terminal cho những người không quen CLI
Nếu bạn chỉ dùng Claude Code cá nhân qua terminal, Remote Control không mang lại nhiều giá trị. Nhưng khi cần tích hợp hoặc chia sẻ Claude Code với người khác hay với hệ thống khác, đây là tính năng không thể thiếu.
Bai viet co huu ich khong?
Bản quyền thuộc về tác giả. Vui lòng dẫn nguồn khi chia sẻ.









