Plugin SDK reference

راه‌اندازی و پیکربندی Plugin

مرجع بسته‌بندی Plugin (فراداده package.json)، مانیفست‌ها (openclaw.plugin.json)، ورودی‌های راه‌اندازی، و شِماهای پیکربندی.

فراداده بسته

package.json شما به یک فیلد openclaw نیاز دارد که به سیستم Plugin بگوید Plugin شما چه چیزی ارائه می‌کند:

Channel plugin

json
{  "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."    }  }}

Provider plugin / ClawHub baseline

openclaw-clawhub-package.json
{  "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[]

فایل‌های نقطه ورود (نسبت به ریشه بسته).

setupEntrystring

ورودی سبک‌وزن فقط برای راه‌اندازی (اختیاری).

channelobject

فراداده کاتالوگ کانال برای راه‌اندازی، انتخاب‌گر، شروع سریع، و سطوح وضعیت.

providersstring[]

شناسه‌های ارائه‌دهنده که توسط این Plugin ثبت شده‌اند.

installobject

راهنمایی‌های نصب: npmSpec، localPath، defaultChoice، minHostVersion، expectedIntegrity، allowInvalidConfigRecovery.

startupobject

پرچم‌های رفتار راه‌اندازی.

openclaw.channel

openclaw.channel فراداده بسته سبک برای کشف کانال و سطوح راه‌اندازی پیش از بارگذاری runtime است.

فیلد نوع معنای آن
id string شناسه کانال مرجع.
label string برچسب اصلی کانال.
selectionLabel string برچسب انتخاب‌گر/راه‌اندازی وقتی باید با label متفاوت باشد.
detailLabel string برچسب جزئیات ثانویه برای کاتالوگ‌های غنی‌تر کانال و سطوح وضعیت.
docsPath string مسیر مستندات برای پیوندهای راه‌اندازی و انتخاب.
docsLabel string برچسب جایگزین برای پیوندهای مستندات وقتی باید با شناسه کانال متفاوت باشد.
blurb string توضیح کوتاه برای onboarding/کاتالوگ.
order number ترتیب مرتب‌سازی در کاتالوگ‌های کانال.
aliases string[] نام‌های مستعار اضافی برای جست‌وجوی انتخاب کانال.
preferOver string[] شناسه‌های Plugin/کانال با اولویت پایین‌تر که این کانال باید از آن‌ها جلوتر باشد.
systemImage string نام اختیاری آیکن/تصویر سیستمی برای کاتالوگ‌های UI کانال.
selectionDocsPrefix string متن پیشوند پیش از پیوندهای مستندات در سطوح انتخاب.
selectionDocsOmitLabel boolean نمایش مستقیم مسیر مستندات به‌جای پیوند مستندات برچسب‌دار در متن انتخاب.
selectionExtras string[] رشته‌های کوتاه اضافی که به متن انتخاب افزوده می‌شوند.
markdownCapable boolean کانال را برای تصمیم‌های قالب‌بندی خروجی به‌عنوان سازگار با Markdown علامت‌گذاری می‌کند.
exposure object کنترل‌های دیده‌شدن کانال برای راه‌اندازی، فهرست‌های پیکربندی‌شده، و سطوح مستندات.
quickstartAllowFrom boolean این کانال را وارد جریان استاندارد راه‌اندازی شروع سریع allowFrom می‌کند.
forceAccountBinding boolean حتی وقتی فقط یک حساب وجود دارد، اتصال صریح حساب را الزامی می‌کند.
preferSessionLookupForAnnounceTarget boolean هنگام resolve کردن هدف‌های announce برای این کانال، جست‌وجوی نشست را ترجیح می‌دهد.

نمونه:

json
{  "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 برای نصب/به‌روزرسانی و جریان‌های نصب هنگام نیاز در onboarding.
npmSpec string مشخصه مرجع npm برای جریان‌های fallback نصب/به‌روزرسانی.
localPath string مسیر نصب محلی توسعه یا بسته‌شده.
defaultChoice "clawhub" | "npm" | "local" منبع نصب ترجیحی وقتی چند منبع در دسترس است.
minHostVersion string حداقل نسخه پشتیبانی‌شده OpenClaw به‌شکل >=x.y.z یا >=x.y.z-prerelease.
expectedIntegrity string رشته integrity مورد انتظار npm dist، معمولا sha512-...، برای نصب‌های pinned.
allowInvalidConfigRecovery boolean به جریان‌های نصب دوباره Plugin بسته‌شده اجازه می‌دهد از خرابی‌های خاص پیکربندی کهنه بازیابی کنند.
requiredPlatformPackages string[] aliasهای npm مخصوص پلتفرمِ الزامی که هنگام نصب npm راستی‌آزمایی می‌شوند.
Onboarding behavior

onboarding تعاملی نیز از openclaw.install برای سطوح نصب هنگام نیاز استفاده می‌کند. اگر Plugin شما گزینه‌های احراز هویت ارائه‌دهنده یا فراداده راه‌اندازی/کاتالوگ کانال را پیش از بارگذاری runtime آشکار کند، onboarding می‌تواند آن گزینه را نشان دهد، برای نصب از ClawHub، npm، یا local درخواست کند، Plugin را نصب یا فعال کند، سپس جریان انتخاب‌شده را ادامه دهد. گزینه‌های onboarding در ClawHub از clawhubSpec استفاده می‌کنند و در صورت وجود ترجیح داده می‌شوند؛ گزینه‌های npm به فراداده کاتالوگ مورد اعتماد با npmSpec رجیستری نیاز دارند؛ نسخه‌های دقیق و expectedIntegrity پین‌های اختیاری npm هستند. اگر expectedIntegrity وجود داشته باشد، جریان‌های نصب/به‌روزرسانی آن را برای npm enforce می‌کنند. فراداده «چه چیزی نشان داده شود» را در openclaw.plugin.json و فراداده «چگونه نصب شود» را در package.json نگه دارید.

minHostVersion enforcement

اگر minHostVersion تنظیم شده باشد، هم نصب و هم بارگذاری رجیستری مانیفستِ غیربسته‌شده آن را enforce می‌کنند. میزبان‌های قدیمی‌تر Pluginهای خارجی را رد می‌کنند؛ رشته‌های نسخه نامعتبر پذیرفته نمی‌شوند. فرض می‌شود Pluginهای منبع بسته‌شده با checkout میزبان هم‌نسخه هستند.

Pinned npm installs

برای نصب‌های pinned npm، نسخه دقیق را در npmSpec نگه دارید و integrity آرتیفکت مورد انتظار را اضافه کنید:

json
{  "openclaw": {    "install": {      "npmSpec": "@wecom/wecom-openclaw-plugin@1.2.3",      "expectedIntegrity": "sha512-REPLACE_WITH_NPM_DIST_INTEGRITY",      "defaultChoice": "npm"    }  }}
allowInvalidConfigRecovery scope

allowInvalidConfigRecovery گذرگاه عمومی برای پیکربندی‌های خراب نیست. فقط برای بازیابی محدود Pluginهای بسته‌شده است، تا نصب دوباره/راه‌اندازی بتواند بازمانده‌های شناخته‌شده ارتقا مانند مسیر Plugin بسته‌شده گم‌شده یا ورودی کهنه channels.<id> برای همان Plugin را ترمیم کند. اگر پیکربندی به دلایل نامرتبط خراب باشد، نصب همچنان به‌صورت fail-closed شکست می‌خورد و به اپراتور می‌گوید openclaw doctor --fix را اجرا کند.

بارگذاری کاملِ به‌تعویق‌افتاده

Pluginهای کانال می‌توانند با این مورد، بارگذاری به‌تعویق‌افتاده را فعال کنند:

json
{  "openclaw": {    "extensions": ["./index.ts"],    "setupEntry": "./setup-entry.ts",    "startup": {      "deferConfiguredChannelFullLoadUntilAfterListen": true    }  }}

وقتی فعال باشد، OpenClaw در مرحله راه‌اندازی پیش از listen فقط setupEntry را بارگذاری می‌کند، حتی برای کانال‌هایی که از قبل پیکربندی شده‌اند. ورودی کامل پس از شروع listen کردن Gateway بارگذاری می‌شود.

اگر ورودی setup/full شما متدهای RPC در Gateway ثبت می‌کند، آن‌ها را روی یک پیشوند مخصوص Plugin نگه دارید. namespaceهای رزروشده مدیریت هسته (config.*، exec.approvals.*، wizard.*، update.*) در مالکیت هسته می‌مانند و همیشه به operator.admin resolve می‌شوند.

مانیفست Plugin

هر Plugin بومی باید یک openclaw.plugin.json در ریشه بسته داشته باشد. OpenClaw از این برای اعتبارسنجی پیکربندی بدون اجرای کد Plugin استفاده می‌کند.

json
{  "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های کانال، kind و channels را اضافه کنید:

json
{  "id": "my-channel",  "kind": "channel",  "channels": ["my-channel"],  "configSchema": {    "type": "object",    "additionalProperties": false,    "properties": {}  }}

حتی Pluginهایی که هیچ پیکربندی‌ای ندارند نیز باید یک طرحواره ارائه کنند. یک طرحواره خالی معتبر است:

json
{  "id": "my-plugin",  "configSchema": {    "type": "object",    "additionalProperties": false  }}

برای مرجع کامل طرحواره، مانیفست Plugin را ببینید.

انتشار ClawHub

برای بسته‌های Plugin، از فرمان اختصاصی ClawHub برای بسته استفاده کنید:

bash
clawhub package publish your-org/your-plugin --dry-runclawhub package publish your-org/your-plugin

نقطه ورود راه‌اندازی

فایل setup-entry.ts جایگزینی سبک برای index.ts است که OpenClaw زمانی آن را بارگذاری می‌کند که فقط به سطح‌های راه‌اندازی نیاز دارد (آنبوردینگ، ترمیم پیکربندی، بازرسی کانال غیرفعال).

typescript
// setup-entry.ts  export default defineSetupPluginEntry(myChannelPlugin);

این کار از بارگذاری کد سنگین زمان اجرا (کتابخانه‌های رمزنگاری، ثبت‌نام‌های CLI، سرویس‌های پس‌زمینه) در جریان‌های راه‌اندازی جلوگیری می‌کند.

کانال‌های workspace همراه که خروجی‌های ایمن برای راه‌اندازی را در ماژول‌های کناری نگه می‌دارند، می‌توانند به‌جای defineSetupPluginEntry(...) از defineBundledChannelSetupEntry(...) از openclaw/plugin-sdk/channel-entry-contract استفاده کنند. آن قرارداد همراه همچنین از یک خروجی اختیاری runtime پشتیبانی می‌کند تا سیم‌کشی زمان اجرای مربوط به زمان راه‌اندازی سبک و صریح باقی بماند.

زمانی که OpenClaw به‌جای ورودی کامل از setupEntry استفاده می‌کند
  • کانال غیرفعال است اما به سطح‌های راه‌اندازی/آنبوردینگ نیاز دارد.
  • کانال فعال است اما پیکربندی نشده است.
  • بارگذاری به‌تعویق‌افتاده فعال است (deferConfiguredChannelFullLoadUntilAfterListen).
چیزی که setupEntry باید ثبت کند
  • شیء Plugin کانال (از طریق defineSetupPluginEntry).
  • هر مسیر HTTP که پیش از گوش‌دادن Gateway لازم است.
  • هر متد Gateway که هنگام شروع لازم است.

آن متدهای Gateway هنگام شروع همچنان باید از namespaceهای رزروشده ادمین هسته مانند config.* یا update.* اجتناب کنند.

چیزی که setupEntry نباید شامل شود
  • ثبت‌نام‌های CLI.
  • سرویس‌های پس‌زمینه.
  • importهای سنگین زمان اجرا (رمزنگاری، SDKها).
  • متدهای Gateway که فقط پس از شروع لازم‌اند.

importهای محدود برای کمک‌گرهای راه‌اندازی

برای مسیرهای داغی که فقط مخصوص راه‌اندازی هستند، وقتی فقط به بخشی از سطح راه‌اندازی نیاز دارید، seamهای محدود کمک‌گر راه‌اندازی را بر چتر گسترده‌تر plugin-sdk/setup ترجیح دهید:

مسیر import کاربرد خروجی‌های کلیدی
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(...)، از seam گسترده‌تر plugin-sdk/setup استفاده کنید.

برای متن ثابت ویزارد راه‌اندازی از createSetupTranslator(...) استفاده کنید. این تابع از locale ویزارد CLI (OPENCLAW_LOCALE، سپس متغیرهای locale سیستم) پیروی می‌کند و به انگلیسی برمی‌گردد. متن راه‌اندازی اختصاصی Plugin را در کد متعلق به Plugin نگه دارید و کلیدهای کاتالوگ مشترک را فقط برای برچسب‌های رایج راه‌اندازی، متن وضعیت، و متن راه‌اندازی Pluginهای رسمی همراه استفاده کنید.

آداپتورهای وصله راه‌اندازی هنگام import برای مسیر داغ ایمن می‌مانند. جست‌وجوی سطح قرارداد ارتقای تک‌حسابه همراه آن‌ها lazy است، بنابراین import کردن plugin-sdk/setup-runtime پیش از استفاده واقعی از آداپتور، کشف سطح قرارداد همراه را به‌صورت eager بارگذاری نمی‌کند.

ارتقای تک‌حسابه متعلق به کانال

وقتی یک کانال از پیکربندی سطح بالای تک‌حسابه به channels.<id>.accounts.* ارتقا می‌یابد، رفتار مشترک پیش‌فرض این است که مقادیر account-scoped ارتقایافته را به accounts.default منتقل کند.

کانال‌های همراه می‌توانند آن ارتقا را از طریق سطح قرارداد راه‌اندازی خود محدود یا بازنویسی کنند:

  • singleAccountKeysToMove: کلیدهای سطح بالای اضافی که باید به حساب ارتقایافته منتقل شوند
  • namedAccountPromotionKeys: وقتی حساب‌های نام‌دار از قبل وجود دارند، فقط این کلیدها به حساب ارتقایافته منتقل می‌شوند؛ کلیدهای policy/delivery مشترک در ریشه کانال می‌مانند
  • resolveSingleAccountPromotionTarget(...): انتخاب کنید کدام حساب موجود مقادیر ارتقایافته را دریافت کند

طرحواره پیکربندی

پیکربندی Plugin در برابر JSON Schema موجود در مانیفست شما اعتبارسنجی می‌شود. کاربران Pluginها را از این طریق پیکربندی می‌کنند:

json5
{  plugins: {    entries: {      "my-plugin": {        config: {          webhookSecret: "abc123",        },      },    },  },}

Plugin شما این پیکربندی را هنگام ثبت‌نام به‌صورت api.pluginConfig دریافت می‌کند.

برای پیکربندی اختصاصی کانال، به‌جای آن از بخش پیکربندی کانال استفاده کنید:

json5
{  channels: {    "my-channel": {      token: "bot-token",      allowFrom: ["user1", "user2"],    },  },}

ساخت طرحواره‌های پیکربندی کانال

از buildChannelConfigSchema برای تبدیل یک طرحواره Zod به wrapper به نام ChannelConfigSchema استفاده کنید که توسط artifactهای پیکربندی متعلق به Plugin استفاده می‌شود:

typescript
  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 بتواند در مسیرهای metadata از تبدیل Zod به JSON-Schema صرف‌نظر کند:

typescript
  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 mirror کنید تا طرحواره پیکربندی، راه‌اندازی، و سطح‌های UI بتوانند channels.<id> را بدون بارگذاری کد زمان اجرا بازرسی کنند.

ویزاردهای راه‌اندازی

Pluginهای کانال می‌توانند برای openclaw onboard ویزاردهای راه‌اندازی تعاملی ارائه کنند. ویزارد یک شیء ChannelSetupWizard روی ChannelPlugin است:

typescript
 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 از credentials، textInputs، dmPolicy، allowFrom، groupAccess، prepare، finalize و موارد بیشتر پشتیبانی می‌کند. برای نمونه‌های کامل، بسته‌های Plugin همراه را ببینید (برای مثال Plugin مربوط به Discord در src/channel.setup.ts).

promptهای allowFrom مشترک

برای promptهای allowlist پیام مستقیم که فقط به جریان استاندارد note -> prompt -> parse -> merge -> patch نیاز دارند، کمک‌گرهای راه‌اندازی مشترک از openclaw/plugin-sdk/setup را ترجیح دهید: createPromptParsedAllowFromForAccount(...)، createTopLevelChannelParsedAllowFromPrompt(...)، و createNestedChannelParsedAllowFromPrompt(...).

وضعیت استاندارد راه‌اندازی کانال

برای بلوک‌های وضعیت راه‌اندازی کانال که فقط از نظر برچسب‌ها، امتیازها، و خط‌های اضافی اختیاری متفاوت‌اند، به‌جای ساخت دستی همان شیء status در هر Plugin، createStandardChannelSetupStatus(...) از openclaw/plugin-sdk/setup را ترجیح دهید.

سطح اختیاری راه‌اندازی کانال

برای سطح‌های راه‌اندازی اختیاری که باید فقط در contextهای خاصی ظاهر شوند، از createOptionalChannelSetupSurface از openclaw/plugin-sdk/channel-setup استفاده کنید:

typescript
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(...) را زمانی که فقط به یکی از دو نیمه آن سطح نصب اختیاری نیاز دارید، ارائه می‌کند.

آداپتور/ویزارد اختیاری تولیدشده در نوشتن‌های واقعی پیکربندی fail closed می‌شود. آن‌ها در validateInput، applyAccountConfig، و finalize از یک پیام واحد نیازمند نصب استفاده می‌کنند و وقتی docsPath تنظیم شده باشد، یک پیوند مستندات اضافه می‌کنند.

کمک‌گرهای راه‌اندازی پشتیبانی‌شده با باینری

برای UIهای راه‌اندازی پشتیبانی‌شده با باینری، به‌جای کپی‌کردن همان glue باینری/وضعیت در هر کانال، کمک‌گرهای delegated مشترک را ترجیح دهید:

  • createDetectedBinaryStatus(...) برای بلوک‌های وضعیت که فقط از نظر برچسب‌ها، راهنماها، امتیازها، و تشخیص باینری متفاوت هستند
  • createCliPathTextInput(...) برای ورودی‌های متنی مبتنی بر مسیر
  • createDelegatedSetupWizardStatusResolvers(...)، createDelegatedPrepare(...)، createDelegatedFinalize(...)، و createDelegatedResolveConfigured(...) زمانی که setupEntry باید به‌صورت در زمان نیاز به یک جادوگر کامل سنگین‌تر واگذار شود
  • createDelegatedTextInputShouldPrompt(...) زمانی که setupEntry فقط باید تصمیم textInputs[*].shouldPrompt را واگذار کند

انتشار و نصب

Pluginهای خارجی: در ClawHub منتشر کنید، سپس نصب کنید:

npm

bash
openclaw plugins install @myorg/openclaw-my-plugin

مشخصات بستهٔ بدون پیشوند در زمان گذار راه‌اندازی از npm نصب می‌شوند.

فقط ClawHub

bash
openclaw plugins install clawhub:@myorg/openclaw-my-plugin

مشخصات بستهٔ npm

وقتی بسته‌ای هنوز به ClawHub منتقل نشده است، یا وقتی در زمان مهاجرت به مسیر نصب مستقیم npm نیاز دارید، از npm استفاده کنید:

bash
openclaw plugins install npm:@myorg/openclaw-my-plugin

Pluginهای داخل مخزن: آن‌ها را زیر درخت فضای کاری Pluginهای بسته‌بندی‌شده قرار دهید تا در زمان ساخت به‌صورت خودکار کشف شوند.

کاربران می‌توانند نصب کنند:

bash
openclaw plugins install <package-name>

فرادادهٔ بستهٔ باندل‌شده صریح است و در زمان راه‌اندازی Gateway از JavaScript ساخته‌شده استنتاج نمی‌شود. وابستگی‌های زمان اجرا به بستهٔ Pluginی تعلق دارند که مالک آن‌هاست؛ راه‌اندازی OpenClaw بسته‌بندی‌شده هرگز وابستگی‌های Plugin را تعمیر یا بازتاب نمی‌دهد.

مرتبط

Was this useful?
On this page

On this page