TypeBox là thư viện schema ưu tiên TypeScript. Chúng tôi dùng thư viện này để định nghĩa giao thức WebSocket Gateway (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 lúc 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 sinh. Nếu bạn muốn xem ngữ cảnh giao thức ở mức cao hơn, hãy bắt đầu với kiến trúc Gateway.Documentation Index
Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Mô hình tư duy (30 giây)
Mọi thông điệp WS của Gateway 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 đó, máy khách có thể gọi
các phương thức (ví dụ health, send, chat.send) và đăng ký theo dõi 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 |
| Trò chuyện | chat.history, chat.send, chat.abort | WebChat dùng các phương thứ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.* | WS Gateway + hành động node |
| Sự kiện | tick, presence, agent, chat, health, shutdown | máy chủ đẩy |
src/gateway/server-methods-list.ts (listGatewayMethods, GATEWAY_EVENTS).
Vị trí của các schema
- Nguồn:
src/gateway/protocol/schema.ts - Bộ xác thực lúc chạy (AJV):
src/gateway/protocol/index.ts - Registry tính năng/khám phá được quảng bá:
src/gateway/server-methods-list.ts - Bắt tay máy chủ + điều phối phương thức:
src/gateway/server.impl.ts - Máy khách Node:
src/gateway/client.ts - JSON Schema được tạo sinh:
dist/protocol.schema.json - Mô hình Swift được tạo sinh:
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 tạo và xác minh đầu ra đã được commit
Cách schema được dùng lúc chạy
- Phía máy chủ: mọi frame đến đề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 máy khách: máy khách JS xác thực các frame sự kiện và phản hồi trước khi sử dụng chúng.
- Khám phá tính năng: Gateway gửi danh sách
features.methodsvàfeatures.eventsthận trọng tronghello-oktừlistGatewayMethods()vàGATEWAY_EVENTS. - Danh sách khám phá đó không phải là bản kết xuất được tạo sinh 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):Máy khách tối thiểu (Node.js)
Luồng hữu ích nhỏ nhất: kết nối + kiểm tra sức khỏe.Ví dụ hoàn chỉnh: thêm một phương thức từ đầu đến cuối
Ví dụ: thêm một 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 phương thức có thể được gọi bởi máy khách operator hoặc node, cũng hãy 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 khớp nhau.
- Tạo sinh lại
- Kiểm thử + tài liệu
src/gateway/server.*.test.ts và ghi chú phương thức trong tài liệu.
Hành vi sinh mã Swift
Trình tạo Swift phát ra:- enum
GatewayFramevới các trường hợpreq,res,eventvàunknown - struct/enum payload được định kiểu mạnh
- các giá trị
ErrorCode,GATEWAY_PROTOCOL_VERSIONvàGATEWAY_MIN_PROTOCOL_VERSION
Phiên bản hóa + tương thích
PROTOCOL_VERSIONnằm trongsrc/gateway/protocol/version.ts.- Máy khách gửi
minProtocol+maxProtocol; máy chủ từ chối các khoảng không bao gồm giao thức hiện tại của nó. - Các mô hình Swift giữ lại kiểu frame không xác định để tránh làm hỏng máy khách cũ hơn.
Mẫu và quy ước schema
- Hầu hết object dùng
additionalProperties: falsecho payload nghiêm ngặt. NonEmptyStringlà mặc định cho ID và tên phương thức/sự kiện.GatewayFramecấp cao nhất dùng một bộ phân biệt trêntype.- Các phương thức 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 được tạo lúc chạy (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 sinh 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ý phương thức/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 được tạo sinh lại + mô hình Swift.