Plugin maintainer reference
سازگاری Plugin
OpenClaw قراردادهای قدیمیتر Plugin را پیش از حذف، از طریق آداپتورهای سازگاریِ نامدار متصل نگه میدارد. این کار از Pluginهای بستهبندیشده و خارجی موجود محافظت میکند، در حالی که قراردادهای SDK، مانیفست، راهاندازی، پیکربندی و زمان اجرای عامل تکامل مییابند.
رجیستری سازگاری
قراردادهای سازگاری Plugin در رجیستری هسته در
src/plugins/compat/registry.ts پیگیری میشوند.
هر رکورد شامل این موارد است:
- یک کد سازگاری پایدار
- وضعیت:
active،deprecated،removal-pendingیاremoved - مالک: SDK، پیکربندی، راهاندازی، کانال، ارائهدهنده، اجرای Plugin، زمان اجرای عامل، یا هسته
- تاریخهای معرفی و منسوخسازی در صورت کاربرد
- راهنمای جایگزینی
- مستندات، عیبیابیها و آزمونهایی که رفتار قدیمی و جدید را پوشش میدهند
این رجیستری منبع برنامهریزی نگهدارندگان و بررسیهای آینده بازرس Plugin است. اگر رفتاری رو به Plugin تغییر کند، رکورد سازگاری را در همان تغییری که آداپتور را اضافه میکند، اضافه یا بهروزرسانی کنید.
سازگاری تعمیر و مهاجرت Doctor بهصورت جداگانه در
src/commands/doctor/shared/deprecation-compat.ts پیگیری میشود. آن رکوردها شکلهای قدیمی پیکربندی، چیدمانهای دفتر نصب، و شیمهای تعمیر را پوشش میدهند که ممکن است پس از حذف مسیر سازگاری زمان اجرا همچنان لازم باشد در دسترس بمانند.
بازبینیهای انتشار باید هر دو رجیستری را بررسی کنند. صرفا به این دلیل که رکورد سازگاری زمان اجرا یا پیکربندی متناظر منقضی شده است، یک مهاجرت Doctor را حذف نکنید؛ ابتدا تأیید کنید مسیر ارتقای پشتیبانیشدهای که هنوز به آن تعمیر نیاز دارد وجود ندارد. همچنین در طول برنامهریزی انتشار، هر یادداشت جایگزینی را دوباره اعتبارسنجی کنید، چون مالکیت Plugin و footprint پیکربندی میتواند با خروج ارائهدهندگان و کانالها از هسته تغییر کند.
بسته بازرس Plugin
بازرس Plugin باید بیرون از مخزن هسته OpenClaw، بهصورت یک بسته/مخزن جداگانه که بر قراردادهای نسخهدار سازگاری و مانیفست تکیه دارد، قرار بگیرد.
CLI روز نخست باید این باشد:
openclaw-plugin-inspector ./my-pluginباید این موارد را منتشر کند:
- اعتبارسنجی مانیفست/اسکیما
- نسخه سازگاری قراردادی که بررسی میشود
- بررسیهای فراداده نصب/منبع
- بررسیهای import مسیر سرد
- هشدارهای منسوخسازی و سازگاری
برای خروجی پایدار و قابلخواندن توسط ماشین در annotationهای CI از --json استفاده کنید. هسته OpenClaw باید قراردادها و fixtureهایی را در معرض استفاده بازرس قرار دهد، اما نباید باینری بازرس را از بسته اصلی openclaw منتشر کند.
مسیر پذیرش نگهدارنده
هنگام اعتبارسنجی بازرس خارجی در برابر بستههای Plugin OpenClaw، برای مسیر پذیرش بسته قابلنصب از Blacksmith Testbox مبتنی بر Crabbox استفاده کنید. پس از ساخت بسته، آن را از یک checkout تمیز OpenClaw اجرا کنید:
pnpm crabbox:run -- --provider blacksmith-testbox --timing-json --shell -- "pnpm install && pnpm build && npm exec --yes @openclaw/plugin-inspector@0.1.0 -- ./extensions/telegram --json"pnpm crabbox:run -- --provider blacksmith-testbox --timing-json --shell -- "npm exec --yes @openclaw/plugin-inspector@0.1.0 -- ./extensions/discord --json"pnpm crabbox:run -- --provider blacksmith-testbox --timing-json --shell -- "npm exec --yes @openclaw/plugin-inspector@0.1.0 -- <clawhub-plugin-dir> --json"این مسیر را برای نگهدارندگان opt-in نگه دارید، چون یک بسته npm خارجی نصب میکند و ممکن است بستههای Plugin را که بیرون از مخزن clone شدهاند بررسی کند. نگهبانهای مخزن محلی نقشه export مربوط به SDK، فراداده رجیستری سازگاری، کاهش importهای SDK منسوخ، و مرزهای import افزونههای بستهبندیشده را پوشش میدهند؛ اثبات بازرس Testbox، بسته را همانگونه که نویسندگان Plugin خارجی مصرف میکنند پوشش میدهد.
سیاست منسوخسازی
OpenClaw نباید یک قرارداد مستند Plugin را در همان انتشاری حذف کند که جایگزین آن را معرفی میکند.
توالی مهاجرت این است:
- قرارداد جدید را اضافه کنید.
- رفتار قدیمی را از طریق یک آداپتور سازگاری نامدار متصل نگه دارید.
- وقتی نویسندگان Plugin میتوانند اقدام کنند، عیبیابی یا هشدار منتشر کنید.
- جایگزین و زمانبندی را مستند کنید.
- هر دو مسیر قدیمی و جدید را آزمایش کنید.
- تا پایان پنجره مهاجرت اعلامشده صبر کنید.
- فقط با تأیید صریح انتشار breaking حذف کنید.
رکوردهای منسوخ باید شامل تاریخ شروع هشدار، جایگزین، پیوند مستندات، و تاریخ حذف نهایی حداکثر سه ماه پس از شروع هشدار باشند. مسیر سازگاری منسوخ با پنجره حذف بیانتها اضافه نکنید، مگر اینکه نگهدارندگان صریحا تصمیم بگیرند این سازگاری دائمی است و بهجای آن وضعیتش را active علامت بزنند.
حوزههای سازگاری فعلی
رکوردهای سازگاری فعلی شامل این موارد هستند:
- importهای گسترده قدیمی SDK مانند
openclaw/plugin-sdk/compat - شکلهای قدیمی Plugin فقط مبتنی بر hook و
before_agent_start - entrypointهای قدیمی Plugin با
activate(api)تا زمانی که Pluginها بهregister(api)مهاجرت کنند - aliasهای قدیمی SDK مانند
openclaw/extension-api،openclaw/plugin-sdk/channel-runtime، سازندههای وضعیتopenclaw/plugin-sdk/command-auth،openclaw/plugin-sdk/test-utils(جایگزینشده با زیربخشهای آزمون متمرکزopenclaw/plugin-sdk/*) و aliasهای نوعClawdbotConfig/OpenClawSchemaType - رفتار allowlist و فعالسازی Pluginهای بستهبندیشده
- فراداده قدیمی مانیفست env-var ارائهدهنده/کانال
- hookها و aliasهای نوع قدیمی Plugin ارائهدهنده، تا زمانی که ارائهدهندگان به hookهای صریح کاتالوگ، احراز هویت، thinking، replay و انتقال مهاجرت کنند
- aliasهای قدیمی زمان اجرا مانند
api.runtime.taskFlow،api.runtime.subagent.getSession،api.runtime.sttوapi.runtime.config.loadConfig()/api.runtime.config.writeConfigFile(...)منسوخ - ثبت split قدیمی Plugin حافظه، تا زمانی که Pluginهای حافظه به
registerMemoryCapabilityمهاجرت کنند - helperهای قدیمی SDK کانال برای اسکیماهای پیام native، کنترل mention، قالببندی envelope ورودی، و تو در تویی قابلیت تأیید
- aliasهای قدیمی کلید مسیر کانال و helper هدف قابلمقایسه، تا زمانی که Pluginها
به
openclaw/plugin-sdk/channel-routeمهاجرت کنند - hintهای فعالسازی که با مالکیت contribution در مانیفست جایگزین میشوند
- fallback زمان اجرای
setup-api، تا زمانی که descriptorهای راهاندازی به فراداده سردsetup.requiresRuntime: falseمنتقل شوند - hookهای
discoveryارائهدهنده، تا زمانی که hookهای کاتالوگ ارائهدهنده بهcatalog.run(...)منتقل شوند - فراداده
showConfigured/showInSetupکانال، تا زمانی که بستههای کانال بهopenclaw.channel.exposureمنتقل شوند - کلیدهای پیکربندی قدیمی runtime-policy، تا زمانی که Doctor اپراتورها را به
agentRuntimeمهاجرت دهد - fallback فراداده تولیدشده پیکربندی کانالهای بستهبندیشده، تا زمانی که فراداده registry-first
channelConfigsاضافه شود - پرچمهای env برای غیرفعالسازی رجیستری Plugin پایدارشده و مهاجرت نصب، تا زمانی که جریانهای تعمیر
اپراتورها را به
openclaw plugins registry --refreshوopenclaw doctor --fixمهاجرت دهند - مسیرهای پیکربندی قدیمی جستوجوی وب، دریافت وب، و x_search متعلق به Plugin، تا زمانی که
Doctor آنها را به
plugins.entries.<plugin>.configمهاجرت دهد - پیکربندی authored قدیمی
plugins.installsو aliasهای مسیر بارگذاری Plugin بستهبندیشده، تا زمانی که فراداده نصب به دفتر Plugin مدیریتشده توسط state منتقل شود
کد جدید Plugin باید جایگزین فهرستشده در رجیستری و در راهنمای مهاجرت مشخص را ترجیح دهد. Pluginهای موجود میتوانند تا زمانی که مستندات، عیبیابیها و یادداشتهای انتشار پنجره حذف را اعلام کنند، به استفاده از مسیر سازگاری ادامه دهند.
یادداشتهای انتشار
یادداشتهای انتشار باید منسوخسازیهای آینده Plugin را همراه با تاریخهای هدف و پیوند به مستندات مهاجرت شامل شوند. این هشدار باید پیش از آن رخ دهد که مسیر سازگاری به removal-pending یا removed منتقل شود.