Get started

اصلاحات اعتبارسنجی Plugin

اصلاحات اعتبارسنجی Plugin

ClawHub بسته‌های Plugin را پیش از انتشار اعتبارسنجی می‌کند و همچنین می‌تواند یافته‌های حاصل از اسکن‌های خودکار بسته را نمایش دهد. این صفحه یافته‌های مربوط به نویسنده را پوشش می‌دهد؛ یعنی یافته‌هایی که نویسنده Plugin می‌تواند در فرادادهٔ بسته، مانیفست، importهای SDK یا آرتیفکت منتشرشدهٔ خود برطرف کند.

این صفحه یافته‌های داخلی پوشش Plugin Inspector را شامل نمی‌شود. اگر گزارشی کامل حاوی کدهای نگه‌داری اسکنر بدون راهنمای رفع مشکل برای نویسنده باشد، آن موارد برای نگه‌دارندگان OpenClaw هستند، نه نویسندگان Plugin.

پس از اعمال هر اصلاح، دوباره اجرا کنید:

bash
clawhub package validate <path-to-plugin>

یافته‌های مربوط به نویسنده

کد از اینجا شروع کنید
package-json-missing افزودن فرادادهٔ بسته
package-openclaw-metadata-missing افزودن بلوک openclaw بسته
package-openclaw-entry-missing اعلام نقاط ورود بستهٔ OpenClaw
package-entrypoint-missing انتشار نقطهٔ ورود اعلام‌شده
package-install-metadata-incomplete تکمیل فرادادهٔ نصب
package-plugin-api-compat-missing اعلام سازگاری API ‏Plugin
package-min-host-version-drift هم‌تراز کردن حداقل نسخهٔ میزبان
package-manifest-version-drift هم‌تراز کردن نسخه‌های بسته و مانیفست
package-openclaw-unsupported-metadata حذف فرادادهٔ پشتیبانی‌نشدهٔ بستهٔ OpenClaw
package-npm-pack-unavailable قابل‌بسته‌بندی کردن آرتیفکت npm
package-npm-pack-entrypoint-missing گنجاندن نقاط ورود در خروجی بسته‌بندی npm
package-npm-pack-metadata-missing گنجاندن فراداده در خروجی بسته‌بندی npm
manifest-name-missing افزودن نام نمایشی مانیفست
manifest-unknown-fields حذف فیلدهای پشتیبانی‌نشدهٔ مانیفست
manifest-unknown-contracts حذف کلیدهای قرارداد پشتیبانی‌نشده
legacy-root-sdk-import جایگزینی importهای ریشهٔ SDK
reserved-sdk-import حذف importهای رزروشدهٔ SDK
sdk-load-session-store جایگزینی دسترسی به کل مخزن نشست
sdk-session-store-write جایگزینی نوشتن در کل مخزن نشست
sdk-session-file-helper جایگزینی توابع کمکی مسیر فایل نشست
sdk-session-transcript-file-target جایگزینی مقصدهای قدیمی فایل رونوشت
sdk-session-transcript-low-level جایگزینی توابع کمکی سطح‌پایین رونوشت
legacy-before-agent-start جایگزینی before_agent_start
provider-auth-env-vars انتقال متغیرهای محیطی ارائه‌دهنده به فرادادهٔ راه‌اندازی
channel-env-vars بازتاب متغیرهای محیطی کانال در فرادادهٔ کنونی
security-manifest-schema-unavailable حذف ارجاع‌های در دسترس نبودن شِمای مانیفست امنیتی
unrecognized-security-manifest حذف فایل‌های پشتیبانی‌نشدهٔ مانیفست امنیتی

فرادادهٔ بسته

package-json-missing

ریشهٔ بسته شامل package.json نیست، بنابراین ClawHub نمی‌تواند بستهٔ npm، نسخه، نقاط ورود یا فرادادهٔ OpenClaw را شناسایی کند.

  • package.json را با name، version و type اضافه کنید.
  • هنگامی که بسته یک Plugin ‏OpenClaw ارائه می‌کند، یک بلوک openclaw اضافه کنید.
  • برای نمونه‌ای حداقلی از بسته، از ساخت Pluginها و برای تفکیک بسته از مانیفست، از مانیفست Plugin استفاده کنید.
  • clawhub package validate <path-to-plugin> را دوباره اجرا کنید.

package-openclaw-metadata-missing

بسته دارای package.json است، اما فرادادهٔ بستهٔ OpenClaw را اعلام نمی‌کند.

  • package.json#openclaw را اضافه کنید.
  • فرادادهٔ نقطهٔ ورود مانند openclaw.extensions یا openclaw.runtimeExtensions را وارد کنید.
  • اگر بسته از طریق ClawHub منتشر یا نصب خواهد شد، فرادادهٔ سازگاری و نصب را اضافه کنید.
  • به فیلدهای package.json مؤثر بر کشف مراجعه کنید.
  • clawhub package validate <path-to-plugin> را دوباره اجرا کنید.

package-openclaw-entry-missing

فرادادهٔ بسته وجود دارد، اما نقطهٔ ورود زمان اجرای OpenClaw را اعلام نمی‌کند.

  • برای نقاط ورود بومی Plugin، ‏openclaw.extensions را اضافه کنید.
  • هنگامی که بستهٔ منتشرشده باید JavaScript ساخته‌شده را بارگذاری کند، openclaw.runtimeExtensions را اضافه کنید.
  • همهٔ مسیرهای نقطهٔ ورود را داخل پوشهٔ بسته نگه دارید.
  • به نقاط ورود Plugin و فیلدهای package.json مؤثر بر کشف مراجعه کنید.
  • clawhub package validate <path-to-plugin> را دوباره اجرا کنید.

package-entrypoint-missing

بسته یک نقطهٔ ورود OpenClaw را اعلام می‌کند، اما فایل ارجاع‌شده در بسته‌ای که اعتبارسنجی می‌شود وجود ندارد.

  • هر مسیر را در openclaw.extensions، openclaw.runtimeExtensions، openclaw.setupEntry و openclaw.runtimeSetupEntry بررسی کنید.
  • اگر نقطهٔ ورود در dist تولید می‌شود، بسته را بسازید.
  • اگر نقطهٔ ورود جابه‌جا شده است، فراداده را به‌روزرسانی کنید.
  • به نقاط ورود Plugin مراجعه کنید.
  • clawhub package validate <path-to-plugin> را دوباره اجرا کنید.

package-install-metadata-incomplete

ClawHub نمی‌تواند تشخیص دهد بسته چگونه باید نصب یا به‌روزرسانی شود.

  • openclaw.install را با منبع نصب پشتیبانی‌شده، مانند clawhubSpec، npmSpec یا localPath تکمیل کنید.
  • هنگامی که بیش از یک منبع نصب در دسترس است، openclaw.install.defaultChoice را تنظیم کنید.
  • برای حداقل نسخهٔ میزبان OpenClaw از openclaw.install.minHostVersion استفاده کنید.
  • به فیلدهای package.json مؤثر بر کشف مراجعه کنید.
  • clawhub package validate <path-to-plugin> را دوباره اجرا کنید.

package-plugin-api-compat-missing

بسته محدودهٔ API ‏Plugin ‏OpenClaw مورد پشتیبانی خود را اعلام نمی‌کند.

  • openclaw.compat.pluginApi را به package.json اضافه کنید.
  • از نسخهٔ API ‏Plugin ‏OpenClaw یا کف semver که بسته را بر مبنای آن ساخته و آزمایش کرده‌اید استفاده کنید.
  • این مورد را از نسخهٔ بسته جدا نگه دارید. نسخهٔ بسته انتشار Plugin را توصیف می‌کند؛ openclaw.compat.pluginApi قرارداد API میزبان را توصیف می‌کند.
  • به فیلدهای package.json مؤثر بر کشف مراجعه کنید.
  • clawhub package validate <path-to-plugin> را دوباره اجرا کنید.

package-min-host-version-drift

حداقل نسخهٔ میزبان بسته با فرادادهٔ نسخهٔ OpenClaw که بسته بر مبنای آن ساخته شده است مطابقت ندارد.

  • openclaw.install.minHostVersion را بررسی کنید.
  • هرگونه فرادادهٔ ساخت OpenClaw در بسته، مانند نسخهٔ OpenClaw استفاده‌شده هنگام انتشار، را بررسی کنید.
  • حداقل نسخهٔ میزبان را با محدودهٔ نسخهٔ میزبانی که بسته واقعاً پشتیبانی می‌کند هم‌تراز کنید.
  • به فیلدهای package.json مؤثر بر کشف مراجعه کنید.
  • clawhub package validate <path-to-plugin> را دوباره اجرا کنید.

package-manifest-version-drift

نسخهٔ بسته و نسخهٔ مانیفست Plugin با یکدیگر مغایرت دارند.

  • package.json#version را به‌عنوان نسخهٔ انتشار بسته ترجیح دهید.
  • اگر openclaw.plugin.json نیز دارای version است، آن را برای مطابقت به‌روزرسانی کنید یا وقتی فرادادهٔ بسته مرجع اصلی است، فرادادهٔ قدیمی نسخهٔ مانیفست را حذف کنید.
  • پس از تغییر فرادادهٔ منتشرشده، نسخهٔ جدیدی از بسته منتشر کنید.
  • به مانیفست Plugin مراجعه کنید.
  • clawhub package validate <path-to-plugin> را دوباره اجرا کنید.

package-openclaw-unsupported-metadata

بلوک package.json#openclaw حاوی فیلدهایی است که به‌عنوان فرادادهٔ بستهٔ OpenClaw پشتیبانی نمی‌شوند.

  • فیلدهای پشتیبانی‌نشده مانند openclaw.bundle را حذف کنید.
  • فرادادهٔ Plugin بومی را در openclaw.plugin.json نگه دارید.
  • نقاط ورود بسته، فرادادهٔ سازگاری، نصب، راه‌اندازی و کاتالوگ را در فیلدهای پشتیبانی‌شدهٔ package.json#openclaw نگه دارید.
  • به فیلدهای package.json مؤثر بر کشف مراجعه کنید.
  • clawhub package validate <path-to-plugin> را دوباره اجرا کنید.

آرتیفکت منتشرشده

package-npm-pack-unavailable

بسته را نمی‌توان در آرتیفکتی بسته‌بندی کرد که ClawHub آن را بازرسی یا منتشر می‌کند.

  • npm pack --dry-run را از ریشهٔ بسته اجرا کنید.
  • فرادادهٔ نامعتبر بسته، اسکریپت‌های چرخهٔ عمر خراب یا ورودی‌های files را که باعث شکست بسته‌بندی می‌شوند، اصلاح کنید.
  • اگر این بسته برای انتشار عمومی در نظر گرفته شده است، private: true را حذف کنید.
  • clawhub package validate <path-to-plugin> را دوباره اجرا کنید.

package-npm-pack-entrypoint-missing

بسته قابل‌بسته‌بندی است، اما آرتیفکت بسته‌بندی‌شده فایل‌های نقطهٔ ورود اعلام‌شده در package.json#openclaw را شامل نمی‌شود.

  • npm pack --dry-run را اجرا و فایل‌هایی را که گنجانده خواهند شد بررسی کنید.
  • پیش از بسته‌بندی، نقاط ورود تولیدشده را بسازید.
  • files، .npmignore یا خروجی ساخت را به‌روزرسانی کنید تا نقاط ورود اعلام‌شده گنجانده شوند.
  • به نقاط ورود Plugin مراجعه کنید.
  • clawhub package validate <path-to-plugin> را دوباره اجرا کنید.

package-npm-pack-metadata-missing

آرتیفکت بسته‌بندی‌شده فاقد فرادادهٔ OpenClaw موجود در بستهٔ منبع شما است.

  • npm pack --dry-run را اجرا کنید و فایل‌های فرادادهٔ موجود را بررسی کنید.
  • مطمئن شوید package.json بلوک openclaw را در مصنوع بسته‌بندی‌شده شامل می‌شود.
  • هنگامی که بسته یک plugin بومی OpenClaw است، مطمئن شوید openclaw.plugin.json در آن گنجانده شده است.
  • files یا .npmignore را به‌روزرسانی کنید تا فرادادهٔ بسته مستثنا نشود.
  • ساخت pluginها را ببینید.
  • clawhub package validate <path-to-plugin> را دوباره اجرا کنید.

فرادادهٔ مانیفست

manifest-name-missing

مانیفست plugin بومی شامل نام نمایشی نیست.

  • یک فیلد غیرخالی name به openclaw.plugin.json اضافه کنید.
  • name را خوانا برای انسان نگه دارید و id را به‌عنوان شناسهٔ پایدار ماشین حفظ کنید.
  • مانیفست Plugin را ببینید.
  • clawhub package validate <path-to-plugin> را دوباره اجرا کنید.

manifest-unknown-fields

مانیفست plugin دارای فیلدهای سطح بالایی است که OpenClaw از آن‌ها پشتیبانی نمی‌کند.

  • هر فیلد سطح بالا را با مرجع فیلدهای مانیفست مقایسه کنید.
  • فیلدهای سفارشی را از openclaw.plugin.json حذف کنید.
  • فرادادهٔ بسته یا نصب را به‌جای مانیفست، به فیلدهای پشتیبانی‌شدهٔ package.json#openclaw منتقل کنید.
  • clawhub package validate <path-to-plugin> را دوباره اجرا کنید.

manifest-unknown-contracts

مانیفست کلیدهای پشتیبانی‌نشده‌ای را درون contracts اعلام می‌کند.

  • هر کلید زیر contracts را با مرجع قراردادها مقایسه کنید.
  • کلیدهای قرارداد پشتیبانی‌نشده را حذف کنید.
  • رفتار زمان اجرا را به کد ثبت plugin منتقل کنید و contracts را به فرادادهٔ ایستای مالکیت قابلیت محدود نگه دارید.
  • clawhub package validate <path-to-plugin> را دوباره اجرا کنید.

مهاجرت SDK و سازگاری

legacy-root-sdk-import

plugin از barrel ریشهٔ منسوخ‌شدهٔ SDK وارد می‌کند: openclaw/plugin-sdk.

  • واردسازی‌های barrel ریشه را با واردسازی‌های متمرکز از زیرمسیرهای عمومی جایگزین کنید.
  • برای definePluginEntry از openclaw/plugin-sdk/plugin-entry استفاده کنید.
  • برای کمک‌تابع‌های نقطهٔ ورود کانال از openclaw/plugin-sdk/channel-core استفاده کنید.
  • برای یافتن واردسازی محدود، از قراردادهای واردسازی و زیرمسیرهای SDK مربوط به Plugin استفاده کنید.
  • clawhub package validate <path-to-plugin> را دوباره اجرا کنید.

reserved-sdk-import

plugin یک مسیر SDK را وارد می‌کند که برای pluginهای همراه یا سازگاری داخلی رزرو شده است.

  • واردسازی‌های رزروشدهٔ SDK داخلی OpenClaw را با زیرمسیرهای عمومی و مستندشدهٔ openclaw/plugin-sdk/* جایگزین کنید.
  • اگر این رفتار SDK عمومی ندارد، کمک‌تابع را درون بستهٔ خود نگه دارید یا یک API عمومی OpenClaw درخواست کنید.
  • برای انتخاب واردسازی پشتیبانی‌شده، از زیرمسیرهای SDK مربوط به Plugin و مهاجرت SDK استفاده کنید.
  • clawhub package validate <path-to-plugin> را دوباره اجرا کنید.

sdk-load-session-store

plugin همچنان از کمک‌تابع منسوخ‌شدهٔ کل مخزن نشست loadSessionStore استفاده می‌کند.

  • هنگام خواندن وضعیت نشست، از getSessionEntry(...) یا listSessionEntries(...) استفاده کنید.
  • هنگام نوشتن وضعیت نشست، از patchSessionEntry(...) یا upsertSessionEntry(...) استفاده کنید.
  • از بارگذاری، تغییر و ذخیره‌سازی کل شیء مخزن نشست خودداری کنید.
  • loadSessionStore(...) را فقط تا زمانی نگه دارید که محدودهٔ سازگاری اعلام‌شدهٔ شما همچنان از نسخه‌های قدیمی‌تر OpenClaw که به آن نیاز دارند پشتیبانی می‌کند.
  • API زمان اجرا و زیرمسیرهای SDK مربوط به Plugin را ببینید.
  • clawhub package validate <path-to-plugin> را دوباره اجرا کنید.

sdk-session-store-write

plugin همچنان از یک کمک‌تابع منسوخ‌شدهٔ نوشتن کل مخزن نشست مانند saveSessionStore یا updateSessionStore استفاده می‌کند.

  • هنگام به‌روزرسانی فیلدهای یک ورودی نشست موجود، از patchSessionEntry(...) استفاده کنید.
  • هنگام جایگزینی یا ایجاد یک ورودی نشست، از upsertSessionEntry(...) استفاده کنید.
  • از بارگذاری، تغییر و ذخیره‌سازی کل شیء مخزن نشست خودداری کنید.
  • کمک‌تابع‌های نوشتن کل مخزن را فقط تا زمانی نگه دارید که محدودهٔ سازگاری اعلام‌شدهٔ شما همچنان از نسخه‌های قدیمی‌تر OpenClaw که به آن‌ها نیاز دارند پشتیبانی می‌کند.
  • API زمان اجرا و زیرمسیرهای SDK مربوط به Plugin را ببینید.
  • clawhub package validate <path-to-plugin> را دوباره اجرا کنید.

sdk-session-file-helper

plugin همچنان از کمک‌تابع‌های منسوخ‌شدهٔ مسیر فایل نشست مانند resolveSessionFilePath یا resolveAndPersistSessionFile استفاده می‌کند.

  • برای خواندن فرادادهٔ نشست بر اساس هویت عامل و نشست، از getSessionEntry(...) استفاده کنید.
  • برای ماندگار کردن فرادادهٔ نشست، از patchSessionEntry(...) یا upsertSessionEntry(...) استفاده کنید.
  • هنگامی که کد یک عملیات رونوشت را آماده می‌کند، از هویت رونوشت یا کمک‌تابع‌های هدف استفاده کنید.
  • مسیرهای فایل رونوشت قدیمی را ماندگار نکنید و به آن‌ها وابسته نباشید.
  • API زمان اجرا و زیرمسیرهای SDK مربوط به Plugin را ببینید.
  • clawhub package validate <path-to-plugin> را دوباره اجرا کنید.

sdk-session-transcript-file-target

plugin همچنان از کمک‌تابع منسوخ‌شدهٔ هدف فایل رونوشت resolveSessionTranscriptLegacyFileTarget استفاده می‌کند.

  • هنگامی که کد فقط به هویت عمومی نشست نیاز دارد، از resolveSessionTranscriptIdentity(...) استفاده کنید.
  • هنگامی که کد به یک هدف ساخت‌یافته برای عملیات رونوشت نیاز دارد، از resolveSessionTranscriptTarget(...) استفاده کنید.
  • از خواندن یا ساخت مستقیم هدف‌های قدیمی فایل رونوشت خودداری کنید.
  • کمک‌تابع قدیمی را فقط تا زمانی نگه دارید که محدودهٔ سازگاری اعلام‌شدهٔ شما همچنان از نسخه‌های قدیمی‌تر OpenClaw که به آن نیاز دارند پشتیبانی می‌کند.
  • API زمان اجرا و زیرمسیرهای SDK مربوط به Plugin را ببینید.
  • clawhub package validate <path-to-plugin> را دوباره اجرا کنید.

sdk-session-transcript-low-level

plugin همچنان از کمک‌تابع‌های سطح پایین منسوخ‌شدهٔ رونوشت مانند appendSessionTranscriptMessage یا emitSessionTranscriptUpdate استفاده می‌کند.

  • برای افزودن به رونوشت از appendSessionTranscriptMessageByIdentity(...) استفاده کنید.
  • برای اعلان‌های به‌روزرسانی رونوشت از publishSessionTranscriptUpdateByIdentity(...) استفاده کنید.
  • سطح ساخت‌یافتهٔ زمان اجرای رونوشت را ترجیح دهید تا OpenClaw بتواند مرزهای صحیح تراکنش و مدیریت هویت را اعمال کند.
  • کمک‌تابع‌های سطح پایین رونوشت را فقط تا زمانی نگه دارید که محدودهٔ سازگاری اعلام‌شدهٔ شما همچنان از نسخه‌های قدیمی‌تر OpenClaw که به آن‌ها نیاز دارند پشتیبانی می‌کند.
  • API زمان اجرا و زیرمسیرهای SDK مربوط به Plugin را ببینید.
  • clawhub package validate <path-to-plugin> را دوباره اجرا کنید.

legacy-before-agent-start

plugin همچنان از hook قدیمی before_agent_start استفاده می‌کند.

  • کارهای بازنویسی مدل یا ارائه‌دهنده را به before_model_resolve منتقل کنید.
  • کارهای تغییر prompt یا context را به before_prompt_build منتقل کنید.
  • before_agent_start را فقط تا زمانی نگه دارید که محدودهٔ سازگاری اعلام‌شدهٔ شما همچنان از نسخه‌های قدیمی‌تر OpenClaw که به آن نیاز دارند پشتیبانی می‌کند.
  • Hookها و سازگاری Plugin را ببینید.
  • clawhub package validate <path-to-plugin> را دوباره اجرا کنید.

provider-auth-env-vars

مانیفست همچنان از فرادادهٔ قدیمی احراز هویت ارائه‌دهندهٔ providerAuthEnvVars استفاده می‌کند.

  • فرادادهٔ متغیر محیطی ارائه‌دهنده را در setup.providers[].envVars نیز بازتاب دهید.
  • providerAuthEnvVars را فقط به‌عنوان فرادادهٔ سازگاری نگه دارید، مادامی که محدودهٔ پشتیبانی‌شدهٔ OpenClaw شما همچنان به آن نیاز دارد.
  • مرجع راه‌اندازی و مهاجرت SDK را ببینید.
  • clawhub package validate <path-to-plugin> را دوباره اجرا کنید.

channel-env-vars

مانیفست از فرادادهٔ قدیمی یا پیشین متغیر محیطی کانال، بدون فرادادهٔ کنونی راه‌اندازی یا پیکربندی مورد انتظار ClawHub استفاده می‌کند.

  • فرادادهٔ متغیر محیطی کانال را اعلانی نگه دارید تا OpenClaw بتواند وضعیت راه‌اندازی را بدون بارگذاری زمان اجرای کانال بررسی کند.
  • راه‌اندازی کانال مبتنی بر متغیر محیطی را در فرادادهٔ کنونی راه‌اندازی، پیکربندی کانال یا کانال بسته که شکل plugin شما استفاده می‌کند نیز بازتاب دهید.
  • channelEnvVars را فقط به‌عنوان فرادادهٔ سازگاری نگه دارید، مادامی که نسخه‌های قدیمی‌تر پشتیبانی‌شدهٔ OpenClaw همچنان به آن نیاز دارند.
  • مانیفست Plugin و pluginهای کانال را ببینید.
  • clawhub package validate <path-to-plugin> را دوباره اجرا کنید.

مانیفست امنیتی

security-manifest-schema-unavailable

بسته، openclaw.security.json را با ارجاعی به schema ارائه می‌کند که ClawHub آن را در دسترس تشخیص نمی‌دهد.

  • اگر URL مربوط به schema فقط جنبهٔ توصیه‌ای دارد، آن را حذف کنید.
  • فقط پس از انتشار یک schema نسخه‌بندی‌شده توسط OpenClaw، از آن استفاده کنید.
  • clawhub package validate <path-to-plugin> را دوباره اجرا کنید.

unrecognized-security-manifest

بسته یک فایل مانیفست امنیتی پشتیبانی‌نشده ارائه می‌کند.

  • openclaw.security.json را حذف کنید تا زمانی که OpenClaw یک schema نسخه‌بندی‌شدهٔ مانیفست امنیتی و رفتار ClawHub را مستند کند.
  • تا زمان ایجاد قرارداد مانیفست، رفتار حساس به امنیت را در مستندات عمومی بسته یا README خود مستند نگه دارید.
  • clawhub package validate <path-to-plugin> را دوباره اجرا کنید.

مرتبط

Was this useful?
On this page

On this page