Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
TypeBox làm nguồn sự thật cho giao thức
Cập nhật lần cuối: 2026-01-10 TypeBox là thư viện schema ưu tiên TypeScript. Chúng tôi dùng nó để định nghĩa giao thức Gateway WebSocket (bắt tay, yêu cầu/phản hồi, sự kiện máy chủ). Các schema đó điều khiển xác thực ở thời gian chạy, xuất JSON Schema, và sinh mã Swift cho ứng dụng macOS. Một nguồn sự thật duy nhất; mọi thứ khác đều được tạo ra. Nếu bạn muốn ngữ cảnh giao thức ở mức cao hơn, hãy bắt đầu với Kiến trúc Gateway.Mô hình tư duy (30 giây)
Mọi thông điệp Gateway WS là một trong ba frame:- Yêu cầu:
{ type: "req", id, method, params } - Phản hồi:
{ type: "res", id, ok, payload | error } - Sự kiện:
{ type: "event", event, payload, seq?, stateVersion? }
connect. Sau đó, client có thể gọi
các method (ví dụ health, send, chat.send) và đăng ký nhận sự kiện (ví dụ
presence, tick, agent).
Luồng kết nối (tối thiểu):
| Danh mục | Ví dụ | Ghi chú |
|---|---|---|
| Lõi | connect, health, status | connect phải là đầu tiên |
| Nhắn tin | send, agent, agent.wait, system-event, logs.tail | tác dụng phụ cần idempotencyKey |
| Chat | chat.history, chat.send, chat.abort | WebChat dùng các mục này |
| Phiên | sessions.list, sessions.patch, sessions.delete | quản trị phiên |
| Tự động hóa | wake, cron.list, cron.run, cron.runs | điều khiển wake + cron |
| Node | node.list, node.invoke, node.pair.* | Gateway WS + hành động node |
| Sự kiện | tick, presence, agent, chat, health, shutdown | đẩy từ máy chủ |
src/gateway/server-methods-list.ts (listGatewayMethods, GATEWAY_EVENTS).
Nơi lưu schema
- Nguồn:
src/gateway/protocol/schema.ts - Bộ xác thực thời gian chạy (AJV):
src/gateway/protocol/index.ts - Registry tính năng/discovery được quảng bá:
src/gateway/server-methods-list.ts - Bắt tay máy chủ + điều phối method:
src/gateway/server.impl.ts - Client Node:
src/gateway/client.ts - JSON Schema được tạo:
dist/protocol.schema.json - Mô hình Swift được tạo:
apps/macos/Sources/OpenClawProtocol/GatewayModels.swift
Pipeline hiện tại
pnpm protocol:gen- ghi JSON Schema (draft‑07) vào
dist/protocol.schema.json
- ghi JSON Schema (draft‑07) vào
pnpm protocol:gen:swift- tạo các mô hình Gateway Swift
pnpm protocol:check- chạy cả hai trình sinh và xác minh đầu ra đã được commit
Cách schema được dùng ở thời gian chạy
- Phía máy chủ: mọi frame đi vào đều được xác thực bằng AJV. Bắt tay chỉ
chấp nhận yêu cầu
connectcó params khớp vớiConnectParams. - Phía client: client JS xác thực các frame sự kiện và phản hồi trước khi sử dụng chúng.
- Discovery tính năng: Gateway gửi danh sách
features.methodsvàfeatures.eventsbảo thủ tronghello-oktừlistGatewayMethods()vàGATEWAY_EVENTS. - Danh sách discovery đó không phải bản dump được tạo của mọi helper có thể gọi trong
coreGatewayHandlers; một số RPC helper được triển khai trongsrc/gateway/server-methods/*.tsmà không được liệt kê trong danh sách tính năng được quảng bá.
Frame ví dụ
Connect (thông điệp đầu tiên):Client tối thiểu (Node.js)
Luồng hữu ích nhỏ nhất: connect + health.Ví dụ hoàn chỉnh: thêm một method từ đầu đến cuối
Ví dụ: thêm yêu cầusystem.echo mới trả về { ok: true, text }.
- Schema (nguồn sự thật)
src/gateway/protocol/schema.ts:
ProtocolSchemas và xuất kiểu:
- Xác thực
src/gateway/protocol/index.ts, xuất một bộ xác thực AJV:
- Hành vi máy chủ
src/gateway/server-methods/system.ts:
src/gateway/server-methods.ts (đã hợp nhất systemHandlers),
sau đó thêm "system.echo" vào đầu vào listGatewayMethods trong
src/gateway/server-methods-list.ts.
Nếu method có thể được gọi bởi client operator hoặc node, cũng phân loại nó trong
src/gateway/method-scopes.ts để việc thực thi phạm vi và quảng bá tính năng
hello-ok luôn đồng bộ.
- Tạo lại
- Kiểm thử + tài liệu
src/gateway/server.*.test.ts và ghi chú method này trong tài liệu.
Hành vi sinh mã Swift
Trình sinh Swift phát ra:- enum
GatewayFramevới các casereq,res,event, vàunknown - Các struct/enum payload được định kiểu mạnh
- Giá trị
ErrorCodevàGATEWAY_PROTOCOL_VERSION
Phiên bản + tương thích
PROTOCOL_VERSIONnằm trongsrc/gateway/protocol/schema.ts.- Client gửi
minProtocol+maxProtocol; máy chủ từ chối trường hợp không khớp. - Các mô hình Swift giữ lại kiểu frame không xác định để tránh làm hỏng client cũ hơn.
Mẫu schema và quy ước
- Hầu hết object dùng
additionalProperties: falsecho payload nghiêm ngặt. NonEmptyStringlà mặc định cho ID và tên method/sự kiện.GatewayFramecấp cao nhất dùng discriminator trêntype.- Method có tác dụng phụ thường yêu cầu
idempotencyKeytrong params (ví dụ:send,poll,agent,chat.send). agentchấp nhậninternalEventstùy chọn cho ngữ cảnh điều phối do thời gian chạy tạo (ví dụ bàn giao hoàn tất tác vụ subagent/cron); hãy xem đây là bề mặt API nội bộ.
JSON schema trực tiếp
JSON Schema được tạo nằm trong repo tạidist/protocol.schema.json. Tệp thô đã xuất bản thường có tại:
Khi bạn thay đổi schema
- Cập nhật các schema TypeBox.
- Đăng ký method/sự kiện trong
src/gateway/server-methods-list.ts. - Cập nhật
src/gateway/method-scopes.tskhi RPC mới cần phân loại phạm vi operator hoặc node. - Chạy
pnpm protocol:check. - Commit schema đã tạo lại + mô hình Swift.