Khái niệm cốt lõi
Terminal
Agent chạy trong một terminal nhúng thật. Spec ADE hỗ trợ ba kiểu kết nối: Auggie và Claude qua PTY, cùng các agent theo chuẩn ACP.
Hai chế độ kết nối
| Chế độ | Dành cho | Cơ chế |
|---|---|---|
| pty | Auggie · Claude Code | Trình giả lập terminal qua portable-pty, I/O qua WebSocket |
| acp | Agent theo Agent Client Protocol | Tiến trình riêng, sự kiện có đánh số tuần tự để replay |
Giao thức WebSocket
Với session PTY, frontend và backend trao đổi các thông điệp JSON qua WebSocket:
Client → Server
| type | Payload | Mô tả |
|---|---|---|
| input | data: string | Gõ thô (từng ký tự) |
| submit | data: string | Nội dung dòng + Enter |
| resize | cols, rows | Đổi kích thước terminal |
Server → Client
| type | Payload | Mô tả |
|---|---|---|
| output | data: string | Dữ liệu PTY |
| ready | — | Agent sẵn sàng (bracketed paste) |
| exit | code: number | Tiến trình kết thúc |
Phát hiện “sẵn sàng”
Spec ADE coi agent là “sẵn sàng” khi terminal bật bracketed paste mode. Ô nhập bị khóa cho tới khi nhận được tín hiệu ready — tránh gửi nhầm phím vào lúc agent chưa sẵn sàng.
ACP — Agent Client Protocol
Agent ACP chạy trong tiến trình riêng và giao tiếp qua kênh sự kiện. Mỗi sự kiện mang số thứ tự tăng dần, nên khi kết nối lại client chỉ cần gửi ?after_seq=N để backend phát lại những sự kiện đã bỏ lỡ.
Quyền có kiểm soát
Thao tác filesystem được kiểm tra đường dẫn; yêu cầu nhạy cảm phải xin phép người dùng.
Tự kết nối lại
Khi WS đứt, client thử lại với backoff lũy thừa (1s → 30s).