Sổ đăng ký tương thích
Các hợp đồng tương thích Plugin được theo dõi trong sổ đăng ký lõi tạisrc/plugins/compat/registry.ts.
Mỗi bản ghi có:
- mã tương thích ổn định
- trạng thái:
active,deprecated,removal-pending, hoặcremoved - chủ sở hữu: SDK, cấu hình, thiết lập, kênh, nhà cung cấp, thực thi Plugin, runtime tác tử, hoặc lõi
- ngày giới thiệu và ngừng hỗ trợ khi áp dụng
- hướng dẫn thay thế
- tài liệu, chẩn đoán và kiểm thử bao phủ hành vi cũ và mới
src/commands/doctor/shared/deprecation-compat.ts. Các bản ghi đó bao phủ các dạng cấu hình cũ, bố cục sổ cái cài đặt và các shim sửa chữa có thể cần tiếp tục khả dụng sau khi đường dẫn tương thích runtime bị loại bỏ.
Các đợt quét phát hành nên kiểm tra cả hai sổ đăng ký. Đừng xóa một migration doctor chỉ vì bản ghi tương thích runtime hoặc cấu hình tương ứng đã hết hạn; trước tiên hãy xác minh không còn đường dẫn nâng cấp được hỗ trợ nào vẫn cần sửa chữa đó. Đồng thời xác thực lại từng chú thích thay thế trong quá trình lập kế hoạch phát hành vì quyền sở hữu Plugin và phạm vi cấu hình có thể thay đổi khi nhà cung cấp và kênh được chuyển ra khỏi lõi.
Gói trình kiểm tra Plugin
Trình kiểm tra Plugin nên nằm bên ngoài repo OpenClaw lõi dưới dạng một gói/kho riêng được hỗ trợ bởi các hợp đồng tương thích và manifest có phiên bản. CLI ngày đầu nên là:- xác thực manifest/schema
- phiên bản tương thích hợp đồng đang được kiểm tra
- kiểm tra metadata cài đặt/nguồn
- kiểm tra import đường dẫn lạnh
- cảnh báo ngừng hỗ trợ và tương thích
--json để có đầu ra ổn định, máy đọc được trong chú thích CI. Lõi OpenClaw nên phơi bày các hợp đồng và fixture mà trình kiểm tra có thể tiêu thụ, nhưng không nên phát hành binary trình kiểm tra từ gói openclaw chính.
Lane chấp nhận của maintainer
Dùng Blacksmith Testbox được Crabbox hỗ trợ cho lane chấp nhận gói có thể cài đặt khi xác thực trình kiểm tra bên ngoài với các gói Plugin OpenClaw. Chạy từ một checkout OpenClaw sạch sau khi gói được build:Chính sách ngừng hỗ trợ
OpenClaw không nên loại bỏ một hợp đồng Plugin đã được ghi tài liệu trong cùng bản phát hành giới thiệu thay thế của nó. Trình tự migration là:- Thêm hợp đồng mới.
- Giữ hành vi cũ được nối qua một bộ chuyển đổi tương thích có tên.
- Phát chẩn đoán hoặc cảnh báo khi tác giả Plugin có thể hành động.
- Ghi tài liệu thay thế và mốc thời gian.
- Kiểm thử cả đường dẫn cũ và mới.
- Chờ qua khoảng thời gian migration đã công bố.
- Chỉ loại bỏ khi có phê duyệt phát hành phá vỡ rõ ràng.
active thay vào đó.
Các khu vực tương thích hiện tại
Các bản ghi tương thích hiện tại bao gồm:- các import SDK rộng cũ như
openclaw/plugin-sdk/compat - các dạng Plugin cũ chỉ có hook và
before_agent_start - tên hook dọn dẹp
api.on("deactivate", ...)cũ trong khi Plugin di chuyển sanggateway_stop - entrypoint Plugin
activate(api)cũ trong khi Plugin di chuyển sangregister(api) - alias SDK cũ như
openclaw/extension-api,openclaw/plugin-sdk/channel-runtime, builder trạng tháiopenclaw/plugin-sdk/command-auth,openclaw/plugin-sdk/test-utils(được thay bằng các subpath kiểm thửopenclaw/plugin-sdk/*tập trung), và alias kiểuClawdbotConfig/OpenClawSchemaType - allowlist Plugin tích hợp sẵn và hành vi bật
- metadata manifest env-var nhà cung cấp/kênh cũ
- hook Plugin nhà cung cấp và alias kiểu cũ trong khi nhà cung cấp chuyển sang các hook catalog, auth, thinking, replay và transport rõ ràng
- alias runtime cũ như
api.runtime.taskFlow,api.runtime.subagent.getSession,api.runtime.stt, vàapi.runtime.config.loadConfig()/api.runtime.config.writeConfigFile(...)đã ngừng hỗ trợ - các trường callback phẳng của WhatsApp
WebInboundMessagenhưbody,chatId,reply(...), vàmediaPathtrong khi người tiêu thụ callback di chuyển sang các ngữ cảnh lồng nhauWebInboundCallbackMessageevent,payload,quote,group, vàplatform - các trường admission cấp cao nhất của WhatsApp
WebInboundMessagenhưfrom,conversationId,accountId,accessControlPassed, vàchatTypetrong khi người tiêu thụ callback di chuyển sang envelopeadmission - đăng ký tách rời Plugin bộ nhớ cũ trong khi Plugin bộ nhớ chuyển sang
registerMemoryCapability - đăng ký nhà cung cấp embedding riêng cho bộ nhớ cũ trong khi nhà cung cấp embedding
chuyển sang
api.registerEmbeddingProvider(...)vàcontracts.embeddingProviders - helper SDK kênh cũ cho schema tin nhắn native, kiểm soát mention, định dạng envelope inbound và lồng năng lực phê duyệt
- alias khóa route kênh và helper comparable-target cũ trong khi Plugin
chuyển sang
openclaw/plugin-sdk/channel-route - gợi ý kích hoạt đang được thay bằng quyền sở hữu đóng góp manifest
- fallback runtime
setup-apitrong khi descriptor thiết lập chuyển sang metadata lạnhsetup.requiresRuntime: false - hook
discoverycủa nhà cung cấp trong khi hook catalog nhà cung cấp chuyển sangcatalog.run(...) - metadata kênh
showConfigured/showInSetuptrong khi gói kênh chuyển sangopenclaw.channel.exposure - khóa cấu hình runtime-policy cũ trong khi doctor di chuyển operator sang
agentRuntime - fallback metadata cấu hình kênh tích hợp sẵn được tạo trong khi metadata ưu tiên sổ đăng ký
channelConfigsđược đưa vào - cờ env vô hiệu hóa sổ đăng ký Plugin đã lưu và install-migration trong khi
luồng sửa chữa di chuyển operator sang
openclaw plugins registry --refreshvàopenclaw doctor --fix - các đường dẫn cấu hình web search, web fetch và x_search thuộc sở hữu Plugin cũ trong khi
doctor di chuyển chúng sang
plugins.entries.<plugin>.config - cấu hình do
plugins.installscũ tạo và alias đường dẫn tải Plugin tích hợp sẵn trong khi metadata cài đặt chuyển vào sổ cái Plugin do state quản lý
Alias Phẳng Callback Inbound WhatsApp
Callback runtime WhatsApp phân phốiWebInboundMessage: các ngữ cảnh lồng nhau chính tắc
event, payload, quote, group, và platform cùng với các alias phẳng đã ngừng hỗ trợ cho các trường callback đã phát hành. Mã callback mới nên đọc các ngữ cảnh lồng nhau. Mã tạo tin nhắn callback lồng nhau sạch có thể dùng
WebInboundCallbackMessage; listener tương thích vẫn tiêm tin nhắn kiểm thử hoặc Plugin phẳng cũ nên dùng LegacyFlatWebInboundMessage hoặc
WebInboundMessageInput.
Các alias phẳng vẫn khả dụng đến 2026-08-30. Khoảng thời gian loại bỏ đó chỉ áp dụng cho việc truy cập alias phẳng; dạng callback lồng nhau là hợp đồng runtime chính tắc. Chú thích TypeScript @deprecated trên từng alias phẳng nêu chính xác thay thế lồng nhau của nó. Ví dụ thường gặp:
id,timestamp, vàisBatchedchuyển vàoevent.body,mediaPath,mediaType,mediaFileName,mediaUrl,location, vàuntrustedStructuredContextchuyển vàopayload.to,chatId, các trường sender/self,sendComposing,reply(...), vàsendMedia(...)chuyển vàoplatform.- các trường
replyTo*chuyển vàoquote, và các trường subject/participant/mention của nhóm chuyển vàogroup.
payload.untrustedStructuredContext được trích xuất từ payload nhà cung cấp inbound.
Plugin nên kiểm tra label, source, và type trước khi xem
payload của nó là có thẩm quyền.
Trường Admission Inbound WhatsApp
Tin nhắn callback WhatsApp được chấp nhận giờ mangadmission, một envelope an toàn cho public cho quyết định kiểm soát truy cập đã cho phép tin nhắn. Mã callback mới nên đọc các dữ kiện admission từ msg.admission thay vì các trường admission cấp cao nhất cũ hơn.
Các trường cấp cao nhất vẫn khả dụng đến 2026-08-30. Chú thích TypeScript
@deprecated nêu từng thay thế:
fromvàconversationIdchuyển sangadmission.conversation.id.accountIdchuyển sangadmission.accountId.accessControlPassedlà một chế độ xem tương thích được suy ra từadmission.ingress.decision === "allow"; trên tin nhắn đã mangadmission, việc ghi boolean cũ không ghi lại đồ thị ingress.chatTypechuyển sangadmission.conversation.kind.
Ghi chú phát hành
Ghi chú phát hành nên bao gồm các ngừng hỗ trợ Plugin sắp tới cùng ngày mục tiêu và liên kết đến tài liệu migration. Cảnh báo đó cần diễn ra trước khi một đường dẫn tương thích chuyển sangremoval-pending hoặc removed.