Bỏ qua để đến nội dung

Điều khiển từ xa và di động

Control Center là một ứng dụng máy tính để bàn, nhưng công việc mà nó theo dõi không dừng lại khi bạn rời khỏi bàn. Điều khiển từ xa ghép nối điện thoại của bạn với cc_server của bạn, dùng Remote, ứng dụng đồng hành tại remote.usectrl.dev, để bạn theo dõi đội máy từ đó: đọc tin nhắn và phiếu, trả lời một agent, phân loại bảng tin của bạn, mà âm thanh, phiên âm, mã nguồn hay thông tin xác thực nằm trên máy chủ không bao giờ rời khỏi đó.

Hãy coi nó như một bạn đồng hành thiên về đọc của bàn làm việc. Nó không nhằm thay thế máy khách máy tính để bàn đầy đủ.

Điện thoại tiếp cận cc_server qua một WebSocket: hoặc một kết nối trực tiếp (loopback, LAN, tailnet, hoặc wss://) hoặc một phòng được gác bằng lời mời trên một bộ môi giới tín hiệu chuyển tiếp các khung niêm phong. Không có kênh dữ liệu ngang hàng nào.

Chiếc điện thoại đã ghép nối chỉ với tới một lát cắt nhỏ, có chủ đích của bề mặt máy chủ:

  • Đọc phiếu, agent, space cùng tin nhắn của chúng và bảng tin của bạn
  • Trả lời: gửi tin nhắn trong một space, cập nhật hoặc giao một phiếu, đánh dấu một bài viết đã đọc hoặc đã lưu
  • Chạy một playbook: khởi tạo một mẫu kế hoạch đã lưu cùng các tham số của nó. Việc này chỉ đề xuất một kế hoạch; không có gì thực thi hay tiêu tốn cho tới khi một người vận hành phê duyệt nó trong Plan Studio trên một máy khách đầy đủ
  • Chuyển không gian làm việc, từ chính bộ chọn trên điện thoại

Đó gần như là toàn bộ. Một chiếc điện thoại là chủ thể có đặc quyền thấp hơn so với một máy khách đầy đủ. Nó không thể sinh tiến trình, tiêu ngân sách LLM, đẩy lên GitHub hay tạo không gian làm việc. Xem mô hình truy cập để biết điều đó được thi hành chứ không chỉ là ý định như thế nào.

Kết nối đi trên một relay được môi giới: máy chủ tham gia một phòng được gác bằng lời mời trên một bộ môi giới wss:// với tư cách chủ sở hữu, và mọi máy khách đã ghép nối — máy tính để bàn, web, điện thoại — cùng tham gia phòng đó bằng một token gia nhập có giới hạn thời gian. Ba thành phần kết hợp lại:

Thành phần Vai trò
Remote (ứng dụng điện thoại) Ứng dụng web đồng hành, mặc định được lưu trữ tại remote.usectrl.dev, hoặc tự lưu trữ. Tải trong trình duyệt, giữ bản ghi ghép nối trong IndexedDB.
Bộ môi giới relay Một relay wss:// phi trạng thái (cc_signaling_server) chứa các phòng N chiều. Nó chỉ chở các khung mờ đục: mọi payload đều được niêm phong đầu-cuối giữa điện thoại và máy chủ, nên bộ môi giới không bao giờ thấy dữ liệu ứng dụng hay bí mật ghép nối và không bao giờ diễn giải những gì nó chuyển tiếp.
cc_server Chủ sở hữu phòng. Nó trả lời các lời gọi của điện thoại qua chính bộ điều phối mà mọi máy khách khác dùng.

Một lời đề nghị ghép nối mang theo một bản mô tả kết nối liệt kê mọi đường tới máy chủ (LAN, tailnet, wss:// công khai, relay) cùng dấu vân tay danh tính của nó. Bộ phân giải của điện thoại chọn đường với tới được tốt nhất và ghim dấu vân tay ở lần kết nối đầu tiên (TOFU); relay bảo đảm khả năng kết nối ngay cả khi không có đường trực tiếp nào, mà không bao giờ đọc được lưu lượng.

Ghép nối được cấp từ ứng dụng và chuyển tới dưới dạng một liên kết sâu; xem Ghép nối thiết bị để biết quy trình. Điều đáng quan tâm ở đây là cấu trúc của nó.

https://<pwa-host>/#<payload>

Payload đi trong URL fragment, phần sau dấu # mà trình duyệt không bao giờ gửi tới máy chủ, nên host HTTPS của PWA không bao giờ thấy nó. Nó mang mọi thứ điện thoại cần để với tới máy chủ và chứng minh mình là ai: bản mô tả kết nối (mọi đường cộng dấu vân tay danh tính), một id thiết bị vừa được cấp, một khóa chia sẻ trước 32 byte và một dấu hết hạn. Điện thoại giải mã nó, lưu một bản ghi ghép nối cục bộ rồi gỡ bỏ fragment để bí mật rời khỏi URL.

Có hai dạng payload và chúng không thể thay thế cho nhau. Mã QR điện thoại được cấp từ bảng ghép nối trong ứng dụng chính là PairingPayload v2 ở trên, trỏ tới host PWA của Remote. cc_server pair --client-url phát ra một liên kết v1 cũ hơn, khác biệt ({s, i, k} — URL máy chủ, id thiết bị, khóa) chỉ dành cho máy khách web.

Chúng cũng khác nhau về thời hạn, điều dễ bị hiểu nhầm:

Cấp bởi Hạn của thông tin xác thực
Bảng ghép nối trong ứng dụng (pairing.mint) 30 ngày, luôn luôn
cc_server pair trên dòng lệnh Không — thông tin xác thực không hết hạn

Một thiết bị đã ghép nối thì đã xác thực nhưng không được tin cậy. Nhiều cổng độc lập ngăn một lần ghép nối đã được duyệt (hoặc bị lộ) trở thành toàn quyền điều khiển máy chủ.

1. Tư cách thành viên, chứ không phải ghép nối, mới là ranh giới

Phần tiêu đề “1. Tư cách thành viên, chứ không phải ghép nối, mới là ranh giới”

Một khóa ghép nối hợp lệ chứng minh bạn là thiết bị nào. Việc bạn được đọc hay thay đổi gì do vai trò không gian làm việc của bạn quyết định, được phân giải lại trong từng lời gọi, và do quyền cấp theo từng kho mã đối với bất cứ thứ gì để lộ nội dung kho mã. Một thiết bị giữ khóa hoàn toàn hợp lệ nhưng thuộc về người dùng không phải thành viên của không gian làm việc được nêu tên sẽ bị từ chối với “Not a member of this workspace”.

Ngưỡng vai trò được suy ra từ loại thao tác, trừ khi thao tác tự khai báo: thao tác đọc cần guest, thao tác thay đổi cần member, thao tác phá hủy cần admin.

2. Điện thoại là một bậc phiên thấp hơn

Phần tiêu đề “2. Điện thoại là một bậc phiên thấp hơn”

Ngoài kiểm tra vai trò, một phiên điện thoại mang năng lực thấp hơn phiên máy tính để bàn hay phiên web. Các thao tác được khai báo chỉ dành cho máy khách đầy đủ sẽ bị từ chối với điện thoại trước khi trình xử lý chạy, bất kể người dùng đứng sau có đặc quyền cao đến đâu: cấp, liệt kê, đổi tên và thu hồi ghép nối thiết bị; đọc và đặt kết nối tunnel; sao lưu máy chủ và xuất/nhập không gian làm việc; phát hiện và kết thúc tiến trình; thăm dò adapter; cài đặt máy chủ; quản trị SSO; điều khiển đội máy; và tiếp quản hoặc trả lại một agent đang chạy.

3. Danh sách cho phép công cụ theo kiểu từ chối mặc định

Phần tiêu đề “3. Danh sách cho phép công cụ theo kiểu từ chối mặc định”

Riêng với bề mặt công cụ MCP (tools/call), một danh sách cho phép theo kiểu từ chối mặc định chi phối những công cụ mà điện thoại được phép gọi. Bất cứ thứ gì không có trong danh sách đều bị từ chối trước khi chạy. Danh sách này nặng về đọc và quan sát, cộng thêm một vài thao tác ghi chỉ cục bộ — một tin nhắn, một cập nhật phiếu, một đánh dấu bài viết — không tiêu ngân sách LLM, không sinh tiến trình và không chạm tới hệ thống bên ngoài.

Ví dụ những thứ bị từ chối: hỏi ý một agent, bắt đầu một lượt đánh giá AI, kết thúc một agent, xuất bản một lượt đánh giá lên GitHub, thuê hoặc sa thải agent, tạo một không gian làm việc.

4. Phạm vi không gian làm việc theo từng lời gọi

Phần tiêu đề “4. Phạm vi không gian làm việc theo từng lời gọi”

Máy chủ không giữ “không gian làm việc hiện tại” nào. Nó phi trạng thái theo thiết kế: mọi lời gọi thuộc phạm vi không gian làm việc đều phải nêu workspace_id mục tiêu trong tham số, và bộ điều phối từ chối thẳng lời gọi khi trường đó thiếu hoặc nêu một không gian làm việc mà máy chủ chưa đăng ký — trước khi bất cứ thứ gì mở cơ sở dữ liệu. Vì vậy điện thoại không bao giờ thừa hưởng hay trôi dạt sang phạm vi của máy khách khác, và nêu tên một không gian làm việc lạ cũng không ích gì, bởi kiểm tra tư cách thành viên ở cổng 1 vẫn được áp dụng. Đây chính là bất biến cô lập không gian làm việc mà phần còn lại của sản phẩm cũng thi hành.

5. Khung niêm phong đầu-cuối, khóa bằng khóa chia sẻ trước

Phần tiêu đề “5. Khung niêm phong đầu-cuối, khóa bằng khóa chia sẻ trước”

Mọi khung giữa điện thoại và máy chủ đều được niêm phong bằng khóa ghép nối; token gia nhập chỉ giúp máy khách vào được phòng, nó không giải mã gì cả. Bộ môi giới chỉ chuyển tiếp bản mã và không bao giờ thấy khóa. Một thiết bị đã bị thu hồi sẽ thấy thông tin xác thực của nó đã biến mất, nên nó hỏng theo hướng đóng khi kết nối lại.

Thông tin xác thực do ứng dụng cấp có thời hạn 30 ngày; quá hạn đó, cổng kết nối sẽ đánh trượt nó và điện thoại phải ghép nối lại. Việc thu hồi diễn ra trực tiếp: máy chủ theo dõi bảng thiết bị và cắt các phiên đang mở của thiết bị bị thu hồi trong vòng vài giây thay vì chờ lần kết nối tiếp theo.

6. Giới hạn tần suất theo từng chủ thể

Phần tiêu đề “6. Giới hạn tần suất theo từng chủ thể”

Một bộ giới hạn cửa sổ trượt khống chế lưu lượng công cụ từ xa ở 120 lời gọi mỗi phút, với mức trần phụ chặt hơn là 30 mỗi phút cho các thao tác thay đổi dữ liệu. Hạn mức thuộc về chủ thể, chứ không phải phiên: ba thiết bị của bạn cùng rút từ một hạn mức, nên một máy khách bị chiếm quyền không thể mua thêm dư địa bằng cách mở thêm phiên, và một thành viên ồn ào không thể bỏ đói những người khác.

Bộ môi giới relay cố tình đơn giản: nó chứa các phòng, chuyển tiếp khung niêm phong, và không giữ tài khoản, dữ liệu ứng dụng hay khóa nào. Các phòng được gác bằng lời mời và chỉ tồn tại tạm thời. Dữ liệu ứng dụng, âm thanh, phiên âm, mã nguồn và thông tin xác thực đều nằm lại trên máy chủ.

Sau khi đã ghép nối, điện thoại nhận cập nhật trực tiếp dưới dạng khung thông báo — tin nhắn agent mới, phiếu được giao cho bạn, thay đổi trạng thái — phản chiếu chính thông báo của máy tính để bàn. Máy chủ phát những khung đó tới mọi phiên đang kết nối và bộ lọc không gian làm việc được áp dụng ở phía máy khách, nên những gì bạn thấy thuộc phạm vi không gian làm việc bạn đang xem.

Bề mặt Hiển thị gì
Cài đặt → Bạn → Thiết bị của bạn (/workspaces/:workspaceId/settings/you/devices) Các máy khách đã ghép nối kèm trạng thái trực tiếp, cộng nút Ghép nối máy khách mới (trình duyệt web, ứng dụng máy tính để bàn hoặc điện thoại) và thu hồi

Bảng điều khiển này cũng cấp ghép nối cho trình duyệt hoặc ứng dụng máy tính để bàn thứ hai, không chỉ điện thoại — quy trình hoàn toàn giống nhau, chỉ khác liên kết sâu.