Plugin SDK reference
راهاندازی و پیکربندی Plugin
مرجع بستهبندی Plugin (فرادادهٔ package.json)، مانیفستها (openclaw.plugin.json)، ورودیهای راهاندازی و طرحوارههای پیکربندی.
فرادادهٔ بسته
فایل package.json شما به یک فیلد openclaw نیاز دارد که به سامانهٔ Plugin اعلام کند Plugin شما چه امکاناتی ارائه میدهد:
Plugin کانال
{ "name": "@myorg/openclaw-my-channel", "version": "1.0.0", "type": "module", "openclaw": { "extensions": ["./index.ts"], "setupEntry": "./setup-entry.ts", "channel": { "id": "my-channel", "label": "My Channel", "blurb": "Short description of the channel." } }}Plugin ارائهدهنده / خط مبنای ClawHub
{ "name": "@myorg/openclaw-my-plugin", "version": "1.0.0", "type": "module", "dependencies": { "typebox": "1.1.39" }, "peerDependencies": { "openclaw": ">=2026.3.24-beta.2" }, "openclaw": { "extensions": ["./index.ts"], "compat": { "pluginApi": ">=2026.3.24-beta.2", "minGatewayVersion": "2026.3.24-beta.2" }, "build": { "openclawVersion": "2026.3.24-beta.2", "pluginSdkVersion": "2026.3.24-beta.2" } }}فیلدهای openclaw
extensionsstring[]فایلهای نقطهٔ ورود (نسبت به ریشهٔ بسته). ورودیهای منبع معتبر برای توسعه در فضای کاری و وارسی git.
runtimeExtensionsstring[]همتاهای JavaScript ساختهشده برای extensions که هنگام بارگذاری یک بستهٔ npm نصبشده توسط OpenClaw ترجیح داده میشوند. برای ترتیب تفکیک منبع/نسخهٔ ساختهشده، به نقاط ورود SDK مراجعه کنید.
setupEntrystringورودی سبکوزنِ مخصوص راهاندازی (اختیاری).
runtimeSetupEntrystringهمتای JavaScript ساختهشده برای setupEntry. لازم است setupEntry نیز تنظیم شده باشد.
pluginobjectهویت جایگزین Plugin بهشکل { id, label } که وقتی Plugin فاقد فرادادهٔ کانال/ارائهدهنده برای استخراج شناسه یا برچسب است، استفاده میشود.
channelobjectفرادادهٔ کاتالوگ کانال برای سطوح راهاندازی، انتخابگر، شروع سریع و وضعیت.
installobjectراهنمای نصب: npmSpec، localPath، defaultChoice، minHostVersion، expectedIntegrity، allowInvalidConfigRecovery، requiredPlatformPackages.
startupobjectپرچمهای رفتار هنگام راهاندازی.
compatobjectبازهٔ نسخهٔ pluginApi که این Plugin پشتیبانی میکند. برای انتشار خارجی در ClawHub الزامی است.
openclaw.channel
openclaw.channel فرادادهٔ سبک بسته برای کشف کانال و سطوح راهاندازی، پیش از بارگذاری زمان اجرا است.
| فیلد | نوع | مفهوم |
|---|---|---|
id |
string |
شناسهٔ معیار کانال. |
label |
string |
برچسب اصلی کانال. |
selectionLabel |
string |
برچسب انتخابگر/راهاندازی، وقتی باید با label متفاوت باشد. |
detailLabel |
string |
برچسب جزئیات ثانویه برای کاتالوگهای غنیتر کانال و سطوح وضعیت. |
docsPath |
string |
مسیر مستندات برای پیوندهای راهاندازی و انتخاب. |
docsLabel |
string |
برچسب جایگزین پیوندهای مستندات، وقتی باید با شناسهٔ کانال متفاوت باشد. |
blurb |
string |
توضیح کوتاه آشنایی اولیه/کاتالوگ. |
order |
number |
ترتیب مرتبسازی در کاتالوگهای کانال. |
aliases |
string[] |
نامهای مستعار اضافی برای جستوجوی انتخاب کانال. |
preferOver |
string[] |
شناسههای Plugin/کانال با اولویت پایینتر که این کانال باید بر آنها مقدم باشد. |
systemImage |
string |
نام اختیاری نماد/تصویر سیستمی برای کاتالوگهای رابط کاربری کانال. |
selectionDocsPrefix |
string |
متن پیشوند پیش از پیوندهای مستندات در سطوح انتخاب. |
selectionDocsOmitLabel |
boolean |
نمایش مستقیم مسیر مستندات بهجای پیوند مستندات برچسبدار در متن انتخاب. |
selectionExtras |
string[] |
رشتههای کوتاه اضافی که به متن انتخاب افزوده میشوند. |
markdownCapable |
boolean |
کانال را برای تصمیمهای قالببندی خروجی، دارای قابلیت Markdown علامتگذاری میکند. |
exposure |
object |
کنترلهای نمایانبودن کانال برای راهاندازی، فهرستهای پیکربندیشده و سطوح مستندات. |
quickstartAllowFrom |
boolean |
این کانال را وارد جریان استاندارد راهاندازی allowFrom در شروع سریع میکند. |
forceAccountBinding |
boolean |
حتی وقتی فقط یک حساب وجود دارد، اتصال صریح حساب را الزامی میکند. |
preferSessionLookupForAnnounceTarget |
boolean |
هنگام تفکیک مقصدهای اعلان برای این کانال، جستوجوی نشست را ترجیح میدهد. |
مثال:
{ "openclaw": { "channel": { "id": "my-channel", "label": "My Channel", "selectionLabel": "My Channel (self-hosted)", "detailLabel": "My Channel Bot", "docsPath": "/channels/my-channel", "docsLabel": "my-channel", "blurb": "Webhook-based self-hosted chat integration.", "order": 80, "aliases": ["mc"], "preferOver": ["my-channel-legacy"], "selectionDocsPrefix": "Guide:", "selectionExtras": ["Markdown"], "markdownCapable": true, "exposure": { "configured": true, "setup": true, "docs": true }, "quickstartAllowFrom": true } }}exposure از موارد زیر پشتیبانی میکند:
configured: کانال را در سطوح فهرستسازی بهسبک پیکربندیشده/وضعیت قرار میدهدsetup: کانال را در انتخابگرهای تعاملی راهاندازی/پیکربندی قرار میدهدdocs: کانال را در سطوح مستندات/پیمایش بهعنوان عمومی علامتگذاری میکند
openclaw.install
openclaw.install فرادادهٔ بسته است، نه فرادادهٔ مانیفست.
| فیلد | نوع | مفهوم |
|---|---|---|
clawhubSpec |
string |
مشخصهٔ معیار ClawHub برای جریانهای نصب/بهروزرسانی و نصب در صورت نیاز هنگام آشنایی اولیه. |
npmSpec |
string |
مشخصهٔ معیار npm برای جریانهای جایگزین نصب/بهروزرسانی. |
localPath |
string |
مسیر توسعهٔ محلی یا نصب همراه. |
defaultChoice |
"clawhub" | "npm" | "local" |
منبع نصب ترجیحی، وقتی چند منبع در دسترس است. |
minHostVersion |
string |
حداقل نسخهٔ پشتیبانیشدهٔ OpenClaw، بهشکل >=x.y.z یا >=x.y.z-prerelease. |
expectedIntegrity |
string |
رشتهٔ یکپارچگی مورد انتظار توزیع npm، معمولاً sha512-...، برای نصبهای سنجاقشده. |
allowInvalidConfigRecovery |
boolean |
به جریانهای نصب مجدد Plugin همراه اجازه میدهد خطاهای مشخص پیکربندی قدیمی را بازیابی کنند. |
requiredPlatformPackages |
string[] |
نامهای مستعار npm مخصوص پلتفرم که هنگام نصب npm باید تأیید شوند. |
رفتار آشنایی اولیه
آشنایی اولیهٔ تعاملی از openclaw.install برای سطوح نصب در صورت نیاز استفاده میکند: اگر Plugin شما پیش از بارگذاری زمان اجرا گزینههای احراز هویت ارائهدهنده یا فرادادهٔ راهاندازی/کاتالوگ کانال را ارائه کند، فرایند آشنایی اولیه میتواند نصب از ClawHub، npm یا منبع محلی را پیشنهاد دهد، Plugin را نصب یا فعال کند و سپس جریان انتخابشده را ادامه دهد. گزینههای ClawHub از clawhubSpec استفاده میکنند و در صورت وجود ترجیح داده میشوند؛ گزینههای npm به فرادادهٔ کاتالوگ مورد اعتماد با npmSpec رجیستری نیاز دارند (نسخههای دقیق و expectedIntegrity سنجاقهای اختیاریاند که در صورت تنظیم، هنگام نصب/بهروزرسانی اعمال میشوند). «چه چیزی نمایش داده شود» را در openclaw.plugin.json و «چگونه نصب شود» را در package.json نگه دارید.
اعمال minHostVersion
اگر minHostVersion تنظیم شده باشد، هم نصب و هم بارگذاری رجیستری مانیفستِ غیرهمراه آن را اعمال میکنند. میزبانهای قدیمیتر از Pluginهای خارجی صرفنظر میکنند؛ رشتههای نسخهٔ نامعتبر رد میشوند. فرض میشود Pluginهای منبع همراه با وارسی میزبان همنسخه باشند.
نصبهای سنجاقشدهٔ npm
برای نصبهای سنجاقشدهٔ npm، نسخهٔ دقیق را در npmSpec نگه دارید و یکپارچگی مورد انتظار مصنوع را اضافه کنید:
{ "openclaw": { "install": { "npmSpec": "@wecom/wecom-openclaw-plugin@1.2.3", "expectedIntegrity": "sha512-REPLACE_WITH_NPM_DIST_INTEGRITY", "defaultChoice": "npm" } }}دامنهٔ allowInvalidConfigRecovery
allowInvalidConfigRecovery راه عمومی برای دورزدن پیکربندیهای خراب نیست. این گزینه فقط برای بازیابی محدود Plugin همراه است و به نصب مجدد/راهاندازی اجازه میدهد بقایای شناختهشدهٔ ارتقا، مانند نبود مسیر Plugin همراه یا ورودی قدیمی channels.<id> برای همان Plugin، را ترمیم کند. اگر پیکربندی به دلایل نامرتبط خراب باشد، نصب همچنان بهصورت بسته شکست میخورد و به متصدی میگوید openclaw doctor --fix را اجرا کند.
بارگذاری کامل با تأخیر
Pluginهای کانال میتوانند با پیکربندی زیر بارگذاری با تأخیر را فعال کنند:
{ "openclaw": { "extensions": ["./index.ts"], "setupEntry": "./setup-entry.ts", "startup": { "deferConfiguredChannelFullLoadUntilAfterListen": true } }}در صورت فعالسازی، OpenClaw در مرحلهٔ راهاندازی پیش از گوشدادن، حتی برای کانالهایی که از قبل پیکربندی شدهاند، فقط setupEntry را بارگذاری میکند. ورودی کامل پس از آغاز گوشدادن Gateway بارگذاری میشود.
اگر ورودی راهاندازی/کامل شما متدهای RPC مربوط به Gateway را ثبت میکند، آنها را زیر یک پیشوند مخصوص Plugin نگه دارید. فضاهای نام مدیریتی رزروشدهٔ هسته (config.*، exec.approvals.*، wizard.*، update.*) در مالکیت هسته باقی میمانند و همیشه به operator.admin نرمالسازی میشوند.
مانیفست Plugin
هر Plugin بومی باید یک openclaw.plugin.json در ریشهٔ بسته ارائه کند. OpenClaw از آن برای اعتبارسنجی پیکربندی بدون اجرای کد Plugin استفاده میکند.
{ "id": "my-plugin", "name": "My Plugin", "description": "Adds My Plugin capabilities to OpenClaw", "configSchema": { "type": "object", "additionalProperties": false, "properties": { "webhookSecret": { "type": "string", "description": "Webhook verification secret" } } }}برای Pluginهای کانال، channels را اضافه کنید (و Pluginهای ارائهدهنده providers را اضافه میکنند):
{ "id": "my-channel", "channels": ["my-channel"], "configSchema": { "type": "object", "additionalProperties": false, "properties": {} }}حتی Pluginهایی که پیکربندی ندارند نیز باید یک طرحواره ارائه کنند. طرحوارهٔ خالی معتبر است:
{ "id": "my-plugin", "configSchema": { "type": "object", "additionalProperties": false }}برای مرجع کامل طرحواره، مانیفست Plugin را ببینید.
انتشار در ClawHub
بستههای Skills و Plugin از فرمانهای انتشار جداگانهای در ClawHub استفاده میکنند. برای بستههای Plugin، از فرمان ویژهٔ بسته استفاده کنید:
clawhub package publish your-org/your-plugin --dry-runclawhub package publish your-org/your-pluginورودی راهاندازی
setup-entry.ts جایگزینی سبک برای index.ts است که OpenClaw هنگامی بارگذاری میکند که فقط به سطوح راهاندازی نیاز دارد (آغازبهکار، ترمیم پیکربندی، بازرسی کانال غیرفعال):
// setup-entry.ts export default defineSetupPluginEntry(myChannelPlugin);این کار از بارگذاری کد سنگین زمان اجرا (کتابخانههای رمزنگاری، ثبتهای CLI، سرویسهای پسزمینه) طی جریانهای راهاندازی جلوگیری میکند.
کانالهای همراه فضای کاری که خروجیهای امن برای راهاندازی را در ماژولهای جانبی نگه میدارند، میتوانند بهجای defineSetupPluginEntry(...) از defineBundledChannelSetupEntry(...) در openclaw/plugin-sdk/channel-entry-contract استفاده کنند. این قرارداد همراه همچنین از خروجی اختیاری runtime پشتیبانی میکند تا سیمکشی زمان اجرای هنگام راهاندازی، سبک و صریح باقی بماند.
زمانی که OpenClaw بهجای ورودی کامل از setupEntry استفاده میکند
- کانال غیرفعال است، اما به سطوح راهاندازی/آغازبهکار نیاز دارد.
- کانال فعال است، اما پیکربندی نشده است.
- بارگذاری معوق فعال است (
deferConfiguredChannelFullLoadUntilAfterListen).
مواردی که setupEntry باید ثبت کند
- شیء Plugin کانال (از طریق
defineSetupPluginEntry). - هر مسیر HTTP موردنیاز پیش از شروع گوشدادن Gateway.
- هر متد Gateway موردنیاز هنگام راهاندازی.
این متدهای Gateway هنگام راهاندازی همچنان باید از فضای نام مدیریتی رزروشدهٔ هسته، مانند config.* یا update.*، اجتناب کنند.
مواردی که setupEntry نباید شامل شود
- ثبتهای CLI.
- سرویسهای پسزمینه.
- واردسازیهای سنگین زمان اجرا (رمزنگاری، SDKها).
- متدهای Gateway که فقط پس از راهاندازی موردنیازند.
واردسازیهای محدود راهنماهای راهاندازی
برای مسیرهای داغِ ویژهٔ راهاندازی، هنگامی که فقط به بخشی از سطح راهاندازی نیاز دارید، درزهای محدود راهنماهای راهاندازی را به چتر گستردهتر plugin-sdk/setup ترجیح دهید:
| مسیر واردسازی | کاربرد | خروجیهای کلیدی |
|---|---|---|
plugin-sdk/setup-runtime |
راهنماهای زمان اجرای هنگام راهاندازی که در setupEntry / راهاندازی معوق کانال در دسترس میمانند |
createSetupTranslator, createPatchedAccountSetupAdapter, createEnvPatchedAccountSetupAdapter, createSetupInputPresenceValidator, noteChannelLookupFailure, noteChannelLookupSummary, promptResolvedAllowFrom, splitSetupEntries, createAllowlistSetupWizardProxy, createDelegatedSetupWizardProxy |
plugin-sdk/setup-adapter-runtime |
نام مستعار سازگاری منسوخشده؛ از plugin-sdk/setup-runtime استفاده کنید |
createEnvPatchedAccountSetupAdapter |
plugin-sdk/setup-tools |
راهنماهای CLI/بایگانی/مستنداتِ راهاندازی/نصب | formatCliCommand, detectBinary, extractArchive, resolveBrewExecutable, formatDocsLink, CONFIG_DIR |
هنگامی که جعبهابزار کامل و مشترک راهاندازی، از جمله راهنماهای وصلهٔ پیکربندی مانند moveSingleAccountChannelSectionToDefaultAccount(...)، را میخواهید، از درز گستردهتر plugin-sdk/setup استفاده کنید.
برای متن ثابت جادوگر راهاندازی از createSetupTranslator(...) استفاده کنید. این تابع از منطقهٔ زبانی جادوگر CLI پیروی میکند (ابتدا OPENCLAW_LOCALE، سپس متغیرهای منطقهٔ زبانی سیستم) و در صورت نبود ترجمه به انگلیسی بازمیگردد. متن راهاندازی ویژهٔ Plugin را در کد متعلق به همان Plugin نگه دارید و کلیدهای کاتالوگ مشترک را فقط برای برچسبهای عمومی راهاندازی، متن وضعیت و متن راهاندازی Pluginهای رسمی همراه بهکار ببرید.
آداپتورهای وصلهٔ راهاندازی هنگام واردسازی برای مسیر داغ ایمن میمانند. جستوجوی سطح قرارداد ارتقای تکحسابی همراه آنها تنبل است؛ بنابراین واردسازی plugin-sdk/setup-runtime پیش از استفادهٔ واقعی از آداپتور، کشف سطح قرارداد همراه را مشتاقانه بارگذاری نمیکند.
ارتقای تکحسابی متعلق به کانال
هنگامی که کانالی از پیکربندی سطحبالای تکحسابی به channels.<id>.accounts.* ارتقا مییابد، رفتار مشترک پیشفرض، مقادیر ارتقایافتهٔ مختص حساب را به accounts.default منتقل میکند.
کانالهای همراه میتوانند این ارتقا را از طریق سطح قرارداد راهاندازی خود محدود یا بازنویسی کنند:
singleAccountKeysToMove: کلیدهای سطحبالای اضافی که باید به حساب ارتقایافته منتقل شوندnamedAccountPromotionKeys: هنگامی که حسابهای نامگذاریشده از قبل وجود دارند، فقط این کلیدها به حساب ارتقایافته منتقل میشوند؛ کلیدهای مشترک خطمشی/تحویل در ریشهٔ کانال باقی میمانندresolveSingleAccountPromotionTarget(...): انتخاب اینکه کدام حساب موجود مقادیر ارتقایافته را دریافت کند
طرحوارهٔ پیکربندی
پیکربندی Plugin با JSON Schema موجود در مانیفست شما اعتبارسنجی میشود. کاربران Pluginها را به این شکل پیکربندی میکنند:
{ plugins: { entries: { "my-plugin": { config: { webhookSecret: "abc123", }, }, }, },}Plugin شما هنگام ثبت، این پیکربندی را بهصورت api.pluginConfig دریافت میکند.
برای پیکربندی ویژهٔ کانال، در عوض از بخش پیکربندی کانال استفاده کنید:
{ channels: { "my-channel": { token: "bot-token", allowFrom: ["user1", "user2"], }, },}ساخت طرحوارههای پیکربندی کانال
از buildChannelConfigSchema برای تبدیل یک طرحوارهٔ Zod به پوشش ChannelConfigSchema استفاده کنید که مصنوعات پیکربندی متعلق به Plugin از آن بهره میبرند:
const accountSchema = z.object({ token: z.string().optional(), allowFrom: z.array(z.string()).optional(), accounts: z.object({}).catchall(z.any()).optional(), defaultAccount: z.string().optional(),}); const configSchema = buildChannelConfigSchema(accountSchema);اگر از قبل قرارداد را بهصورت JSON Schema یا TypeBox مینویسید، از راهنمای مستقیم استفاده کنید تا OpenClaw بتواند در مسیرهای فراداده از تبدیل Zod به JSON Schema صرفنظر کند:
const configSchema = buildJsonChannelConfigSchema( Type.Object({ token: Type.Optional(Type.String()), allowFrom: Type.Optional(Type.Array(Type.String())), }),);برای Pluginهای شخص ثالث، قرارداد مسیر سرد همچنان مانیفست Plugin است: JSON Schema تولیدشده را در openclaw.plugin.json#channelConfigs بازتاب دهید تا طرحوارهٔ پیکربندی، راهاندازی و سطوح رابط کاربری بتوانند بدون بارگذاری کد زمان اجرا، channels.<id> را بازرسی کنند.
جادوگرهای راهاندازی
Pluginهای کانال میتوانند برای openclaw onboard جادوگرهای راهاندازی تعاملی فراهم کنند. جادوگر یک شیء ChannelSetupWizard در ChannelPlugin است:
const setupWizard: ChannelSetupWizard = { channel: "my-channel", status: { configuredLabel: "Connected", unconfiguredLabel: "Not configured", resolveConfigured: ({ cfg }) => Boolean((cfg.channels as any)?.["my-channel"]?.token), }, credentials: [ { inputKey: "token", providerHint: "my-channel", credentialLabel: "Bot token", preferredEnvVar: "MY_CHANNEL_BOT_TOKEN", envPrompt: "Use MY_CHANNEL_BOT_TOKEN from environment?", keepPrompt: "Keep current token?", inputPrompt: "Enter your bot token:", inspect: ({ cfg, accountId }) => { const token = (cfg.channels as any)?.["my-channel"]?.token; return { accountConfigured: Boolean(token), hasConfiguredValue: Boolean(token), }; }, }, ],};ChannelSetupWizard همچنین از textInputs، dmPolicy، allowFrom، groupAccess، prepare، finalize و موارد دیگر پشتیبانی میکند. برای مشاهدهٔ یک نمونهٔ کامل همراه، src/setup-core.ts در Plugin مربوط به Discord را ببینید.
درخواستهای مشترک allowFrom
برای درخواستهای فهرست مجاز پیام خصوصی که فقط به جریان استاندارد note -> prompt -> parse -> merge -> patch نیاز دارند، راهنماهای مشترک راهاندازی از openclaw/plugin-sdk/setup را ترجیح دهید: createPromptParsedAllowFromForAccount(...)، createTopLevelChannelParsedAllowFromPrompt(...) و createNestedChannelParsedAllowFromPrompt(...).
وضعیت استاندارد راهاندازی کانال
برای بلوکهای وضعیت راهاندازی کانال که فقط در برچسبها، امتیازها و خطوط اضافی اختیاری تفاوت دارند، بهجای ساخت دستی همان شیء status در هر Plugin، createStandardChannelSetupStatus(...) از openclaw/plugin-sdk/setup را ترجیح دهید.
سطح اختیاری راهاندازی کانال
برای سطوح اختیاری راهاندازی که فقط باید در زمینههای خاصی نمایش داده شوند، از createOptionalChannelSetupSurface در openclaw/plugin-sdk/channel-setup استفاده کنید:
import { createOptionalChannelSetupSurface } from "openclaw/plugin-sdk/channel-setup"; const setupSurface = createOptionalChannelSetupSurface({ channel: "my-channel", label: "My Channel", npmSpec: "@myorg/openclaw-my-channel", docsPath: "/channels/my-channel",});// Returns { setupAdapter, setupWizard }هنگامی که فقط به یکی از دو بخش این سطح نصب اختیاری نیاز دارید، plugin-sdk/channel-setup سازندههای سطح پایینتر createOptionalChannelSetupAdapter(...) و createOptionalChannelSetupWizard(...) را نیز ارائه میکند.
آداپتور/ویزارد اختیاری تولیدشده هنگام نوشتن واقعی پیکربندی، بهصورت بسته و همراه با خطا عمل میکند. آنها در validateInput، applyAccountConfig و finalize از یک پیام واحد درباره الزام نصب استفاده میکنند و هنگامی که docsPath تنظیم شده باشد، پیوند مستندات را به آن میافزایند.
توابع کمکی راهاندازی مبتنی بر فایل اجرایی
برای رابطهای کاربری راهاندازی مبتنی بر فایل اجرایی، بهجای کپیکردن منطق یکسان فایل اجرایی/وضعیت در هر کانال، توابع کمکی واگذارشده مشترک را ترجیح دهید:
createDetectedBinaryStatus(...)برای بلوکهای وضعیتی که فقط از نظر برچسبها، راهنماییها، امتیازها و تشخیص فایل اجرایی تفاوت دارندcreateCliPathTextInput(...)برای ورودیهای متنی مبتنی بر مسیرcreateDelegatedSetupWizardStatusResolvers(...)،createDelegatedPrepare(...)،createDelegatedFinalize(...)وcreateDelegatedResolveConfigured(...)هنگامی کهsetupEntryباید بهصورت تنبل به یک ویزارد کامل و سنگینتر هدایت کندcreateDelegatedTextInputShouldPrompt(...)هنگامی کهsetupEntryفقط باید تصمیمگیری دربارهtextInputs[*].shouldPromptرا واگذار کند
انتشار و نصب
Pluginهای خارجی: در ClawHub منتشر کنید، سپس نصب کنید:
npm
openclaw plugins install @myorg/openclaw-my-pluginمشخصات ساده بسته هنگام انتقال در زمان راهاندازی از npm نصب میشوند، مگر اینکه نام با شناسه یک Plugin همراه یا رسمی مطابقت داشته باشد؛ در این صورت OpenClaw بهجای آن از نسخه محلی/رسمی استفاده میکند. برای انتخاب قطعی منبع از clawhub:، npm:، git: یا npm-pack: استفاده کنید — به مدیریت Pluginها مراجعه کنید.
فقط ClawHub
openclaw plugins install clawhub:@myorg/openclaw-my-pluginمشخصات بسته npm
هنگامی از npm استفاده کنید که بستهای هنوز به ClawHub منتقل نشده است، یا زمانی که هنگام مهاجرت به مسیر نصب مستقیم npm نیاز دارید:
openclaw plugins install npm:@myorg/openclaw-my-pluginPluginهای درون مخزن: آنها را زیر درخت فضای کاری Pluginهای همراه قرار دهید؛ هنگام ساخت بهطور خودکار شناسایی میشوند.
فراداده بستههای همراه صریح است و هنگام راهاندازی Gateway از JavaScript ساختهشده استنتاج نمیشود. وابستگیهای زمان اجرا باید در بسته Plugin مالک آنها قرار گیرند؛ راهاندازی نسخه بستهبندیشده OpenClaw هرگز وابستگیهای Plugin را ترمیم یا همگامسازی نمیکند.
مرتبط
- ساخت Pluginها — راهنمای گامبهگام شروع کار
- مانیفست Plugin — مرجع کامل شِمای مانیفست
- نقاط ورود SDK —
definePluginEntryوdefineChannelPluginEntry