TypeBox là thư viện schema ưu tiên TypeScript. Chúng tôi dùng nó để đị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 khi 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 ở cấp cao hơn, hãy bắt đầu với Kiến trúc Gateway.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.
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 đó, ứng dụng khách có thể gọi
các phương thức (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 |
| Trò chuyện | 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 | wake + điều khiển cron |
| Node | node.list, node.invoke, node.pair.* | Gateway WS + 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).
Nơi đặt schema
- Nguồn:
src/gateway/protocol/schema.ts - Bộ xác thực khi 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 - Ứng dụng khách 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 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 khi 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 ứng dụng khách: ứng dụng 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 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):Ứng dụng khách 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 phương thức 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 phương thức có thể được gọi bởi ứng dụng khách operator hoặc node, cũng phân loại nó trong
src/gateway/method-scopes.ts để việc thực thi scope 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ú 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,event, vàunknown - struct/enum payload có kiểu mạnh
- giá trị
ErrorCodevàGATEWAY_PROTOCOL_VERSION
Phiên bản + tương thích
PROTOCOL_VERSIONnằm trongsrc/gateway/protocol/version.ts.- Ứng dụng khách gửi
minProtocol+maxProtocol; máy chủ từ chối các 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 ứng dụng khách cũ.
Mẫu schema và quy ước
- Hầu hết object dùng
additionalProperties: falseđể có 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 discriminator 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 khi 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 nằm trong repo tạidist/protocol.schema.json. Tệp thô đã xuất bản thường có sẵn tại:
Khi bạn thay đổi schema
- Cập nhật 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 scope operator hoặc node. - Chạy
pnpm protocol:check. - Commit schema được tạo lại + mô hình Swift.