Plugins
بستههای Plugin
OpenClaw میتواند Pluginها را از سه اکوسیستم خارجی نصب کند: Codex، Claude، و Cursor. به اینها بستهها گفته میشود — بستههای محتوا و فرادادهای که OpenClaw آنها را به قابلیتهای بومی مانند skills، hookها و ابزارهای MCP نگاشت میکند.
چرا بستهها وجود دارند
بسیاری از Pluginهای مفید با قالب Codex، Claude یا Cursor منتشر میشوند. بهجای اینکه از نویسندگان خواسته شود آنها را بهصورت Pluginهای بومی OpenClaw بازنویسی کنند، OpenClaw این قالبها را تشخیص میدهد و محتوای پشتیبانیشده آنها را به مجموعه قابلیتهای بومی نگاشت میکند. یعنی میتوانید یک بسته فرمان Claude یا یک بسته Skills مربوط به Codex را نصب کنید و بلافاصله از آن استفاده کنید.
نصب یک بسته
نصب از یک دایرکتوری، آرشیو یا بازارچه
# Local directoryopenclaw plugins install ./my-bundle # Archiveopenclaw plugins install ./my-bundle.tgz # Claude marketplaceopenclaw plugins marketplace list <marketplace-name>openclaw plugins install <plugin-name>@<marketplace-name>تأیید تشخیص
openclaw plugins listopenclaw plugins inspect <id>بستهها با Format: bundle و زیرنوعی از codex، claude یا cursor نمایش داده میشوند.
راهاندازی مجدد و استفاده
openclaw gateway restartقابلیتهای نگاشتشده (skills، hookها، ابزارهای MCP، پیشفرضهای LSP) در نشست بعدی در دسترس هستند.
OpenClaw چه چیزهایی را از بستهها نگاشت میکند
امروز همه قابلیتهای بستهها در OpenClaw اجرا نمیشوند. در ادامه آمده است چه چیزهایی کار میکنند و چه چیزهایی تشخیص داده میشوند اما هنوز وصل نشدهاند.
اکنون پشتیبانی میشود
| قابلیت | نحوه نگاشت | اعمال میشود روی |
|---|---|---|
| محتوای skill | ریشههای skill بستهها بهعنوان skills عادی OpenClaw بارگذاری میشوند | همه قالبها |
| فرمانها | commands/ و .cursor/commands/ بهعنوان ریشههای skill در نظر گرفته میشوند |
Claude، Cursor |
| بستههای hook | چیدمانهای سبک OpenClaw شامل HOOK.md + handler.ts |
Codex |
| ابزارهای MCP | پیکربندی MCP بسته با تنظیمات Pi تعبیهشده ادغام میشود؛ سرورهای stdio و HTTP پشتیبانیشده بارگذاری میشوند | همه قالبها |
| سرورهای LSP | فایل .lsp.json در Claude و lspServers اعلامشده در manifest با پیشفرضهای LSP مربوط به Pi تعبیهشده ادغام میشوند |
Claude |
| تنظیمات | فایل settings.json در Claude بهعنوان پیشفرضهای Pi تعبیهشده وارد میشود |
Claude |
محتوای skill
- ریشههای skill بستهها بهعنوان ریشههای skill عادی OpenClaw بارگذاری میشوند
- ریشههای
commandsدر Claude بهعنوان ریشههای skill اضافی در نظر گرفته میشوند - ریشههای
.cursor/commandsدر Cursor بهعنوان ریشههای skill اضافی در نظر گرفته میشوند
یعنی فایلهای فرمان markdown در Claude از طریق بارگذار skill عادی OpenClaw کار میکنند. markdown فرمانهای Cursor نیز از همان مسیر کار میکند.
بستههای hook
- ریشههای hook بستهها فقط زمانی کار میکنند که از چیدمان عادی بسته hook
در OpenClaw استفاده کنند. امروز این مورد عمدتاً حالت سازگار با Codex است:
HOOK.mdhandler.tsیاhandler.js
MCP برای Pi
- بستههای فعالشده میتوانند پیکربندی سرور MCP ارائه کنند
- OpenClaw پیکربندی MCP بسته را با تنظیمات مؤثر Pi تعبیهشده بهصورت
mcpServersادغام میکند - OpenClaw ابزارهای MCP پشتیبانیشده بستهها را هنگام نوبتهای عامل Pi تعبیهشده با راهاندازی سرورهای stdio یا اتصال به سرورهای HTTP ارائه میکند
- پروفایلهای ابزار
codingوmessagingبهطور پیشفرض ابزارهای MCP بسته را شامل میشوند؛ برای انصراف در یک agent یا Gateway ازtools.deny: ["bundle-mcp"]استفاده کنید - تنظیمات محلی پروژه برای Pi همچنان پس از پیشفرضهای بسته اعمال میشوند، بنابراین تنظیمات فضای کاری میتوانند در صورت نیاز ورودیهای MCP بسته را بازنویسی کنند
- فهرست ابزارهای MCP بسته پیش از ثبت بهصورت قطعی مرتب میشود، بنابراین تغییر ترتیب
listTools()در بالادست باعث آشفتگی بلوکهای ابزار prompt-cache نمیشود
انتقالها
سرورهای MCP میتوانند از انتقال stdio یا HTTP استفاده کنند:
Stdio یک فرایند فرزند را راهاندازی میکند:
{ "mcp": { "servers": { "my-server": { "command": "node", "args": ["server.js"], "env": { "PORT": "3000" } } } }}HTTP بهطور پیشفرض از طریق sse، یا در صورت درخواست از طریق streamable-http، به یک سرور MCP در حال اجرا وصل میشود:
{ "mcp": { "servers": { "my-server": { "url": "http://localhost:3100/mcp", "transport": "streamable-http", "headers": { "Authorization": "Bearer ${MY_SECRET_TOKEN}" }, "connectionTimeoutMs": 30000 } } }}transportمیتواند روی"streamable-http"یا"sse"تنظیم شود؛ وقتی حذف شود، OpenClaw ازsseاستفاده میکندtype: "http"یک شکل پاییندستی بومی CLI است؛ در پیکربندی OpenClaw ازtransport: "streamable-http"استفاده کنید.openclaw mcp setوopenclaw doctor --fixنام مستعار رایج را نرمال میکنند.- فقط طرحهای URL با
http:وhttps:مجاز هستند - مقادیر
headersاز درونیابی${ENV_VAR}پشتیبانی میکنند - ورودی سروری که هم
commandو همurlداشته باشد رد میشود - اطلاعات اعتبارسنجی URL (userinfo و پارامترهای query) از توضیحات ابزار و گزارشها حذف میشوند
connectionTimeoutMsمهلت اتصال پیشفرض ۳۰ ثانیهای را برای هر دو انتقال stdio و HTTP بازنویسی میکند
نامگذاری ابزار
OpenClaw ابزارهای MCP بسته را با نامهای امن برای provider و در قالب
serverName__toolName ثبت میکند. برای مثال، سروری با کلید "vigil-harbor" که یک
ابزار memory_search ارائه میکند، بهصورت vigil-harbor__memory_search ثبت میشود.
- نویسههای خارج از
A-Za-z0-9_-با-جایگزین میشوند - قطعههایی که با یک حرف غیرالفبایی شروع میشوند یک پیشوند حرفی میگیرند، بنابراین کلیدهای
عددی سرور مانند
12306به پیشوندهای ابزار امن برای provider تبدیل میشوند - پیشوندهای سرور به ۳۰ نویسه محدود میشوند
- نامهای کامل ابزار به ۶۴ نویسه محدود میشوند
- نامهای خالی سرور به
mcpبرمیگردند - نامهای پاکسازیشده متداخل با پسوندهای عددی از هم متمایز میشوند
- ترتیب نهایی ابزارهای ارائهشده بر اساس نام امن قطعی است تا نوبتهای تکراری Pi از نظر کش پایدار بمانند
- فیلترکردن پروفایل، همه ابزارهای یک سرور MCP بسته را متعلق به Plugin
bundle-mcpدر نظر میگیرد، بنابراین allowlistها و deny listهای پروفایل میتوانند هم نام ابزارهای ارائهشده منفرد و هم کلید Plugin یعنیbundle-mcpرا شامل شوند
تنظیمات Pi تعبیهشده
- وقتی بسته فعال باشد، فایل
settings.jsonدر Claude بهعنوان تنظیمات پیشفرض Pi تعبیهشده وارد میشود - OpenClaw کلیدهای بازنویسی shell را پیش از اعمال پاکسازی میکند
کلیدهای پاکسازیشده:
shellPathshellCommandPrefix
LSP تعبیهشده Pi
- بستههای فعالشده Claude میتوانند پیکربندی سرور LSP ارائه کنند
- OpenClaw فایل
.lsp.jsonبهعلاوه هر مسیرlspServersاعلامشده در manifest را بارگذاری میکند - پیکربندی LSP بسته با پیشفرضهای مؤثر LSP مربوط به Pi تعبیهشده ادغام میشود
- امروز فقط سرورهای LSP پشتیبانیشده مبتنی بر stdio قابل اجرا هستند؛ انتقالهای پشتیبانینشده
همچنان در
openclaw plugins inspect <id>نمایش داده میشوند
تشخیص داده میشود اما اجرا نمیشود
این موارد شناسایی و در diagnostics نمایش داده میشوند، اما OpenClaw آنها را اجرا نمیکند:
agents، خودکارسازیhooks.json،outputStylesدر Claude.cursor/agents،.cursor/hooks.json،.cursor/rulesدر Cursor- فراداده inline/app در Codex فراتر از گزارش قابلیت
قالبهای بسته
بستههای Codex
نشانگرها: .codex-plugin/plugin.json
محتوای اختیاری: skills/، hooks/، .mcp.json، .app.json
بستههای Codex زمانی بهترین سازگاری را با OpenClaw دارند که از ریشههای skill و دایرکتوریهای
بسته hook سبک OpenClaw (HOOK.md + handler.ts) استفاده کنند.
بستههای Claude
دو حالت تشخیص:
- مبتنی بر manifest:
.claude-plugin/plugin.json - بدون manifest: چیدمان پیشفرض Claude (
skills/،commands/،agents/،hooks/،.mcp.json،.lsp.json،settings.json)
رفتار اختصاصی Claude:
commands/بهعنوان محتوای skill در نظر گرفته میشودsettings.jsonبه تنظیمات Pi تعبیهشده وارد میشود (کلیدهای بازنویسی shell پاکسازی میشوند).mcp.jsonابزارهای stdio پشتیبانیشده را برای Pi تعبیهشده ارائه میکند.lsp.jsonبهعلاوه مسیرهایlspServersاعلامشده در manifest در پیشفرضهای LSP مربوط به Pi تعبیهشده بارگذاری میشوندhooks/hooks.jsonتشخیص داده میشود اما اجرا نمیشود- مسیرهای مؤلفه سفارشی در manifest افزایشی هستند (پیشفرضها را گسترش میدهند، جایگزین آنها نمیشوند)
بستههای Cursor
نشانگرها: .cursor-plugin/plugin.json
محتوای اختیاری: skills/، .cursor/commands/، .cursor/agents/، .cursor/rules/، .cursor/hooks.json، .mcp.json
.cursor/commands/بهعنوان محتوای skill در نظر گرفته میشود.cursor/rules/،.cursor/agents/و.cursor/hooks.jsonفقط تشخیص داده میشوند
اولویت تشخیص
OpenClaw ابتدا قالب Plugin بومی را بررسی میکند:
openclaw.plugin.jsonیاpackage.jsonمعتبر باopenclaw.extensions— بهعنوان Plugin بومی در نظر گرفته میشود- نشانگرهای بسته (
.codex-plugin/،.claude-plugin/، یا چیدمان پیشفرض Claude/Cursor) — بهعنوان بسته در نظر گرفته میشود
اگر یک دایرکتوری شامل هر دو باشد، OpenClaw از مسیر بومی استفاده میکند. این کار از نصب ناقص بستههای دو-قالبی بهعنوان بسته جلوگیری میکند.
وابستگیهای زمان اجرا و پاکسازی
- بستههای سازگار شخص ثالث تعمیر
npm installهنگام شروع را دریافت نمیکنند. آنها باید از طریقopenclaw plugins installنصب شوند و هر آنچه لازم دارند را در دایرکتوری Plugin نصبشده همراه داشته باشند. - Pluginهای بستهبندیشده متعلق به OpenClaw یا بهصورت سبک همراه core ارائه میشوند یا از طریق نصبکننده Plugin قابل دانلود هستند. شروع Gateway هرگز برای آنها package manager اجرا نمیکند.
openclaw doctor --fixدایرکتوریهای وابستگی stageشده قدیمی را حذف میکند و میتواند Pluginهای قابل دانلودی را که هنگام ارجاع پیکربندی به آنها از نمایه Plugin محلی گم شدهاند بازیابی کند.
امنیت
بستهها مرز اعتماد محدودتری نسبت به Pluginهای بومی دارند:
- OpenClaw ماژولهای runtime دلخواه بسته را درونپردازهای بارگذاری نمیکند
- مسیرهای Skills و بسته hook باید داخل ریشه Plugin باقی بمانند (با بررسی مرزی)
- فایلهای تنظیمات با همان بررسیهای مرزی خوانده میشوند
- سرورهای stdio MCP پشتیبانیشده ممکن است بهعنوان زیرفرایند راهاندازی شوند
این باعث میشود بستهها بهطور پیشفرض امنتر باشند، اما همچنان باید بستههای شخص ثالث را برای قابلیتهایی که ارائه میکنند بهعنوان محتوای مورد اعتماد در نظر بگیرید.
عیبیابی
بسته تشخیص داده میشود اما قابلیتها اجرا نمیشوند
openclaw plugins inspect <id> را اجرا کنید. اگر قابلیتی فهرست شده اما با وضعیت
وصلنشده علامتگذاری شده است، این یک محدودیت محصول است — نه نصب خراب.
فایلهای فرمان Claude ظاهر نمیشوند
مطمئن شوید بسته فعال است و فایلهای markdown داخل یک ریشه تشخیصدادهشده
commands/ یا skills/ قرار دارند.
تنظیمات Claude اعمال نمیشوند
فقط تنظیمات Pi تعبیهشده از settings.json پشتیبانی میشوند. OpenClaw
تنظیمات بسته را بهعنوان patchهای خام پیکربندی در نظر نمیگیرد.
hookهای Claude اجرا نمیشوند
hooks/hooks.json فقط تشخیص داده میشود. اگر به hookهای قابل اجرا نیاز دارید، از
چیدمان بسته hook در OpenClaw استفاده کنید یا یک Plugin بومی ارائه دهید.
مرتبط
- نصب و پیکربندی Pluginها
- ساخت Pluginها — ساخت یک Plugin بومی
- manifest مربوط به Plugin — schema بومی manifest