openclaw.plugin.json. Đối với các bố cục gói tương thích (Codex, Claude, Cursor), xem Gói Plugin.
Các định dạng gói tương thích sử dụng tệp manifest riêng:
- Gói Codex:
.codex-plugin/plugin.json - Gói Claude:
.claude-plugin/plugin.json, hoặc bố cục thành phần Claude mặc định không có manifest - Gói Cursor:
.cursor-plugin/plugin.json
openclaw.plugin.json bên dưới. Đối với gói tương thích, OpenClaw đọc siêu dữ liệu gói, các thư mục gốc Skills đã khai báo, thư mục gốc lệnh Claude, giá trị mặc định settings.json của Claude, giá trị mặc định LSP của Claude và các gói hook được hỗ trợ khi bố cục đáp ứng kỳ vọng thời gian chạy của OpenClaw.
Mọi plugin OpenClaw gốc phải cung cấp openclaw.plugin.json trong thư mục gốc của plugin. OpenClaw đọc tệp này để xác thực cấu hình mà không thực thi mã plugin. Manifest bị thiếu hoặc không hợp lệ sẽ chặn việc xác thực cấu hình và được coi là lỗi plugin.
Xem Plugin để biết hướng dẫn đầy đủ về hệ thống plugin và Mô hình khả năng để biết mô hình khả năng gốc cùng hướng dẫn hiện tại về khả năng tương thích bên ngoài.
Chức năng của tệp này
openclaw.plugin.json là siêu dữ liệu mà OpenClaw đọc trước khi tải mã plugin của bạn. Mọi nội dung trong đó phải đủ nhẹ để kiểm tra mà không cần khởi động thời gian chạy của plugin.
Sử dụng tệp này cho:
- danh tính plugin, xác thực cấu hình và gợi ý giao diện người dùng cấu hình
- siêu dữ liệu xác thực, tích hợp ban đầu và thiết lập (bí danh, tự động bật, biến môi trường của nhà cung cấp, lựa chọn xác thực)
- gợi ý kích hoạt cho các bề mặt mặt phẳng điều khiển
- quyền sở hữu họ mô hình dạng viết tắt
- ảnh chụp tĩnh về quyền sở hữu khả năng (
contracts) - siêu dữ liệu trình chạy QA mà máy chủ
openclaw qadùng chung có thể kiểm tra - siêu dữ liệu cấu hình dành riêng cho kênh được hợp nhất vào danh mục và các bề mặt xác thực
package.json.
Ví dụ tối thiểu
Ví dụ đầy đủ
Tham chiếu các trường cấp cao nhất
Tham chiếu catalog
catalog cung cấp các gợi ý hiển thị tùy chọn cho trình duyệt plugin. Máy chủ có thể bỏ qua các gợi ý này. Chúng không bao giờ cài đặt hoặc bật plugin, đồng thời không thay đổi hành vi thời gian chạy hoặc mức độ tin cậy của plugin.
Tham chiếu siêu dữ liệu nhà cung cấp tạo nội dung
Các trường siêu dữ liệu nhà cung cấp tạo nội dung mô tả các tín hiệu xác thực tĩnh cho những nhà cung cấp được khai báo trong danh sáchcontracts.*GenerationProviders tương ứng. OpenClaw đọc các trường này trước khi thời gian chạy của nhà cung cấp được tải để các công cụ lõi có thể quyết định một nhà cung cấp tạo nội dung có khả dụng hay không mà không cần nhập mọi plugin nhà cung cấp.
Chỉ sử dụng các trường này cho những dữ kiện khai báo có chi phí thấp. Việc truyền tải, chuyển đổi yêu cầu, làm mới token, xác thực thông tin xác thực và hành vi tạo nội dung thực tế vẫn thuộc về thời gian chạy của plugin.
Mỗi mục
configSignals hỗ trợ:
Mỗi điều kiện bảo vệ
mode hỗ trợ:
Mỗi mục
authSignals hỗ trợ:
Mỗi điều kiện bảo vệ
providerBaseUrl hỗ trợ:
Tham chiếu siêu dữ liệu công cụ
toolMetadata sử dụng cùng các cấu trúc configSignals và authSignals như siêu dữ liệu nhà cung cấp tạo nội dung, được lập chỉ mục theo tên công cụ. contracts.tools khai báo quyền sở hữu. toolMetadata khai báo bằng chứng khả dụng có chi phí thấp để OpenClaw có thể tránh nhập thời gian chạy của plugin chỉ để hàm tạo công cụ của nó trả về null.
toolMetadata cũng chấp nhận optional (đánh dấu công cụ là không bắt buộc để kích hoạt plugin) và replaySafe (đánh dấu việc thực thi công cụ là an toàn để lặp lại sau một lượt mô hình chưa hoàn tất), ngoài các trường configSignals/authSignals dùng chung ở trên.
Nếu một công cụ không có toolMetadata, OpenClaw sẽ giữ nguyên hành vi hiện có và tải plugin sở hữu khi hợp đồng công cụ khớp với chính sách. Đối với các công cụ trên đường dẫn nóng có hàm tạo phụ thuộc vào xác thực/cấu hình, tác giả plugin nên khai báo toolMetadata thay vì khiến lõi nhập thời gian chạy để truy vấn.
Tham chiếu providerAuthChoices
Mỗi mụcproviderAuthChoices mô tả một lựa chọn tiếp nhận ban đầu hoặc xác thực. OpenClaw đọc mục này trước khi thời gian chạy của nhà cung cấp được tải. Danh sách thiết lập nhà cung cấp sử dụng các lựa chọn trong manifest này, các lựa chọn thiết lập được suy ra từ bộ mô tả và siêu dữ liệu catalog cài đặt mà không cần tải thời gian chạy của nhà cung cấp.
Khi
appGuidedDiscovery là true, phương thức xác thực tương ứng của nhà cung cấp phải cung cấp
appGuidedSetup.detect và appGuidedSetup.prepare. Việc phát hiện phải ở chế độ
chỉ đọc: không đăng nhập, kéo mô hình, tải xuống hoặc ghi cấu hình. Bước chuẩn bị sẽ kiểm tra lại
chính xác mô hình đã chọn và trả về một đề xuất cấu hình; OpenClaw kiểm thử trực tiếp
đề xuất đó trong môi trường cô lập và chỉ ghi nhận sau khi thành công.
Tham chiếu commandAliases
Sử dụngcommandAliases khi một plugin sở hữu tên lệnh thời gian chạy mà người dùng có thể vô tình đặt vào plugins.allow hoặc cố chạy như một lệnh CLI gốc. OpenClaw sử dụng siêu dữ liệu này để chẩn đoán mà không nhập mã thời gian chạy của plugin.
Tham chiếu activation
Sử dụngactivation khi plugin có thể khai báo với chi phí thấp những sự kiện mặt phẳng điều khiển nào cần đưa plugin vào kế hoạch kích hoạt/tải.
Khối này là siêu dữ liệu của trình lập kế hoạch, không phải API vòng đời. Nó không đăng ký hành vi thời gian chạy, không thay thế register(...) và không đảm bảo rằng mã plugin đã được thực thi. Trình lập kế hoạch kích hoạt sử dụng các trường này để thu hẹp các plugin ứng viên trước khi quay về siêu dữ liệu quyền sở hữu manifest hiện có như providers, channels, commandAliases, setup.providers, contracts.tools và các hook.
Ưu tiên siêu dữ liệu hẹp nhất đã mô tả quyền sở hữu. Sử dụng providers, channels, commandAliases, các bộ mô tả thiết lập hoặc contracts khi những trường đó thể hiện mối quan hệ. Sử dụng activation cho các gợi ý bổ sung dành cho trình lập kế hoạch mà những trường quyền sở hữu đó không thể biểu diễn. Sử dụng cliBackends cấp cao nhất cho các bí danh thời gian chạy CLI như claude-cli, my-cli hoặc google-gemini-cli; activation.onAgentHarnesses chỉ dành cho các ID bộ khung tác tử nhúng chưa có trường quyền sở hữu.
Mỗi plugin cần chủ động đặt activation.onStartup. Chỉ đặt thành true khi plugin phải chạy trong quá trình khởi động Gateway. Đặt thành false khi plugin không hoạt động lúc khởi động và chỉ nên tải từ các trình kích hoạt hẹp hơn. Việc lược bỏ onStartup không còn ngầm tải plugin khi khởi động; hãy sử dụng siêu dữ liệu kích hoạt rõ ràng cho các trình kích hoạt lúc khởi động, kênh, cấu hình, bộ khung tác tử, bộ nhớ hoặc các trình kích hoạt hẹp hơn khác.
Các thành phần đang sử dụng trực tiếp:
- Việc lập kế hoạch khởi động Gateway sử dụng
activation.onStartupđể nhập rõ ràng khi khởi động. - Việc lập kế hoạch CLI được kích hoạt bằng lệnh sẽ dự phòng về
commandAliases[].cliCommandhoặccommandAliases[].namecũ. - Việc lập kế hoạch khởi động môi trường chạy agent sử dụng
activation.onAgentHarnessescho các harness nhúng vàcliBackends[]cấp cao nhất cho các bí danh môi trường chạy CLI. - Việc lập kế hoạch thiết lập/kênh được kích hoạt từ kênh sẽ dự phòng về quyền sở hữu
channels[]cũ khi thiếu siêu dữ liệu kích hoạt kênh rõ ràng. - Việc lập kế hoạch Plugin khi khởi động sử dụng
activation.onConfigPathscho các bề mặt cấu hình gốc không thuộc kênh, chẳng hạn như khốibrowsercủa Plugin trình duyệt đi kèm. - Việc lập kế hoạch thiết lập/môi trường chạy được kích hoạt từ nhà cung cấp sẽ dự phòng về quyền sở hữu
providers[]cũ vàcliBackends[]cấp cao nhất khi thiếu siêu dữ liệu kích hoạt nhà cung cấp rõ ràng.
activation-command-hint có nghĩa là activation.onCommands đã khớp, còn manifest-command-alias có nghĩa là bộ lập kế hoạch đã sử dụng quyền sở hữu commandAliases thay thế. Các nhãn lý do này dành cho chẩn đoán máy chủ và kiểm thử; tác giả Plugin nên tiếp tục khai báo siêu dữ liệu mô tả quyền sở hữu chính xác nhất.
Tham chiếu qaRunners
Sử dụngqaRunners khi một Plugin đóng góp một hoặc nhiều trình chạy phương thức truyền tải bên dưới
gốc openclaw qa dùng chung. Giữ siêu dữ liệu này nhẹ và tĩnh; môi trường chạy Plugin
vẫn sở hữu việc đăng ký CLI thực tế thông qua một bề mặt runtime-api.ts
nhẹ, xuất các qaRunnerCliRegistrations tương ứng. Một adapterFactory
tùy chọn cung cấp phương thức truyền tải cho các kịch bản QA dùng chung mà không
thay đổi trình chạy của lệnh đã đăng ký.
Id
adapterFactory phải khớp với commandName. Không xuất các đăng ký
cho những lệnh không có trong manifest.
Tham chiếu thiết lập
Sử dụngsetup khi các bề mặt thiết lập và hướng dẫn ban đầu cần siêu dữ liệu nhẹ thuộc sở hữu Plugin trước khi môi trường chạy tải.
cliBackends cấp cao nhất vẫn hợp lệ và tiếp tục mô tả các backend suy luận CLI. setup.cliBackends là bề mặt bộ mô tả dành riêng cho thiết lập, dùng cho các luồng mặt phẳng điều khiển/thiết lập chỉ nên sử dụng siêu dữ liệu.
Khi có, setup.providers và setup.cliBackends là bề mặt tra cứu ưu tiên theo bộ mô tả dành cho việc khám phá thiết lập. Nếu bộ mô tả chỉ thu hẹp Plugin ứng viên và quá trình thiết lập vẫn cần các hook môi trường chạy phong phú hơn tại thời điểm thiết lập, hãy đặt requiresRuntime: true và giữ nguyên setup-api làm đường dẫn thực thi dự phòng.
OpenClaw đưa setup.providers[].envVars vào các tra cứu xác thực nhà cung cấp và biến môi trường chung. Đặt siêu dữ liệu môi trường về thiết lập và trạng thái tại đó.
Sử dụng providerUsageAuthEnvVars khi thông tin xác thực ở cấp thanh toán hoặc tổ chức phải kích hoạt resolveUsageAuth mà không trở thành thông tin xác thực suy luận. Những tên này được đưa vào cơ chế chặn dotenv của không gian làm việc, loại bỏ khỏi tiến trình con ACP, lọc bí mật trong sandbox và làm sạch bí mật trên diện rộng. Môi trường chạy của nhà cung cấp vẫn đọc và phân loại giá trị bên trong resolveUsageAuth.
OpenClaw cũng có thể suy ra các lựa chọn thiết lập đơn giản từ setup.providers[].authMethods khi không có mục thiết lập, hoặc khi setup.requiresRuntime: false khai báo rằng môi trường chạy thiết lập là không cần thiết. Các mục providerAuthChoices rõ ràng vẫn được ưu tiên cho nhãn tùy chỉnh, cờ CLI, phạm vi hướng dẫn ban đầu và siêu dữ liệu trợ lý.
Chỉ đặt requiresRuntime: false khi các bộ mô tả đó đủ cho bề mặt thiết lập. OpenClaw coi false được khai báo rõ ràng là một hợp đồng chỉ dùng bộ mô tả và sẽ không thực thi setup-api hoặc openclaw.setupEntry để tra cứu thiết lập. Nếu một Plugin chỉ dùng bộ mô tả vẫn cung cấp một trong các mục môi trường chạy thiết lập đó, OpenClaw sẽ báo cáo một chẩn đoán bổ sung và tiếp tục bỏ qua mục đó. Việc bỏ qua requiresRuntime duy trì hành vi dự phòng cũ để các Plugin hiện có đã thêm bộ mô tả mà không có cờ này không bị hỏng.
Vì việc tra cứu thiết lập có thể thực thi mã setup-api thuộc sở hữu Plugin, các giá trị setup.providers[].id và setup.cliBackends[] đã chuẩn hóa phải duy nhất trên toàn bộ các Plugin được phát hiện. Quyền sở hữu không rõ ràng sẽ đóng an toàn thay vì chọn bên thắng dựa trên thứ tự khám phá.
Khi môi trường chạy thiết lập thực sự được thực thi, thông tin chẩn đoán của registry thiết lập sẽ báo cáo sai lệch bộ mô tả nếu setup-api đăng ký một nhà cung cấp hoặc backend CLI mà các bộ mô tả trong manifest không khai báo, hoặc nếu một bộ mô tả không có đăng ký môi trường chạy tương ứng. Các chẩn đoán này mang tính bổ sung và không từ chối các Plugin cũ.
Tham chiếu setup.providers
authEvidence dành cho các dấu hiệu thông tin xác thực cục bộ thuộc sở hữu nhà cung cấp có thể được xác minh mà không cần tải mã môi trường chạy. Các kiểm tra này phải luôn nhẹ và cục bộ: không gọi mạng, không đọc chuỗi khóa hoặc trình quản lý bí mật, không chạy lệnh shell và không thăm dò API của nhà cung cấp.
Các mục bằng chứng được hỗ trợ:
Các trường thiết lập
Tham chiếu uiHints
uiHints là một ánh xạ từ tên trường cấu hình đến các gợi ý kết xuất nhỏ. Khóa có thể sử dụng dấu chấm cho các trường cấu hình lồng nhau, nhưng không đoạn đường dẫn nào được là __proto__, constructor hoặc prototype; quá trình thiết lập từ chối các tên đó.
Tham chiếu contracts
Chỉ sử dụngcontracts cho siêu dữ liệu quyền sở hữu khả năng tĩnh mà OpenClaw có thể đọc mà không cần nhập môi trường chạy Plugin.
contracts.embeddedExtensionFactories được giữ lại cho các factory tiện ích mở rộng chỉ dành cho app-server Codex đi kèm. Thay vào đó, các phép biến đổi kết quả công cụ đi kèm nên khai báo contracts.agentToolResultMiddleware và đăng ký bằng api.registerAgentToolResultMiddleware(...). Các plugin đã cài đặt chỉ có thể sử dụng cùng điểm nối middleware này khi được bật rõ ràng và chỉ cho các runtime mà chúng khai báo trong contracts.agentToolResultMiddleware.
Các plugin đã cài đặt cần tầng chính sách tiền công cụ được máy chủ tin cậy phải khai báo từng id cục bộ đã đăng ký trong contracts.trustedToolPolicies và được bật rõ ràng. Các plugin đi kèm tiếp tục sử dụng đường dẫn chính sách đáng tin cậy hiện có, nhưng các plugin đã cài đặt có id chính sách chưa được khai báo sẽ bị từ chối trước khi đăng ký. Các id chính sách được giới hạn phạm vi theo plugin đăng ký, vì vậy hai plugin đều có thể khai báo và đăng ký workflow-budget; một plugin không được đăng ký cùng một id cục bộ hai lần.
Các đăng ký api.registerTool(...) của runtime phải khớp với contracts.tools. Quá trình khám phá công cụ sử dụng danh sách này để chỉ tải các runtime plugin có thể sở hữu các công cụ được yêu cầu.
Các plugin nhà cung cấp triển khai resolveExternalAuthProfiles nên khai báo contracts.externalAuthProviders; các hook xác thực bên ngoài chưa khai báo sẽ bị bỏ qua.
Các plugin nhà cung cấp triển khai cả resolveUsageAuth và fetchUsageSnapshot nên khai báo từng id nhà cung cấp được tự động phát hiện trong contracts.usageProviders. Quá trình khám phá mức sử dụng đọc hợp đồng này trước khi tải mã runtime, sau đó xác minh cả hai hook sau khi chỉ tải các chủ sở hữu đã khai báo.
Các nhà cung cấp embedding tổng quát nên khai báo contracts.embeddingProviders cho từng adapter được đăng ký bằng api.registerEmbeddingProvider(...). Sử dụng hợp đồng tổng quát để tạo vector có thể tái sử dụng, bao gồm các nhà cung cấp được tìm kiếm bộ nhớ sử dụng. contracts.memoryEmbeddingProviders là cơ chế tương thích dành riêng cho bộ nhớ đã ngừng khuyến nghị và chỉ được duy trì trong khi các nhà cung cấp hiện có chuyển sang điểm nối nhà cung cấp embedding tổng quát.
Các nhà cung cấp worker phải khai báo từng id api.registerWorkerProvider(...) trong contracts.workerProviders. Core lưu bền vững ý định trước khi gọi provision; các nhà cung cấp xác thực cài đặt trước khi cấp phát bên ngoài, và các lệnh gọi lặp lại với cùng id thao tác phải tiếp nhận cùng một lease. Core cũng lưu bền vững ảnh chụp nhanh cài đặt đã xác thực đó và truyền nó cùng leaseId đến inspect({ leaseId, profile }) và destroy({ leaseId, profile }), kể cả sau khi hồ sơ được đặt tên bị thay đổi hoặc xóa. Việc hủy có tính lũy đẳng, quá trình kiểm tra trả về hợp trạng thái đóng active / destroyed / unknown, và vật liệu khóa riêng SSH chỉ được tham chiếu thông qua SecretRef. Các điểm cuối SSH đã cấp phát cũng phải bao gồm một hostKey công khai từ đầu ra cấp phát đáng tin cậy với định dạng chính xác là algorithm base64, không có tên máy chủ hoặc chú thích, để core có thể ghim máy chủ trước khi kết nối. Các nhà cung cấp tạo ref danh tính động có thể triển khai resolveSshIdentity({ leaseId, profile, keyRef }) có thẩm quyền; các nhà cung cấp không có triển khai này sử dụng trình phân giải bí mật tổng quát của core. Một unknown có thẩm quyền sẽ biến bản ghi cục bộ đang hoạt động thành bản ghi mồ côi; sau một yêu cầu hủy đã được lưu bền vững, nó xác nhận quá trình tháo dỡ.
contracts.gatewayMethodDispatch hiện chấp nhận "authenticated-request". Đây là cổng vệ sinh API cho các route HTTP plugin gốc cố ý điều phối các phương thức mặt phẳng điều khiển Gateway trong cùng tiến trình, không phải sandbox chống lại các plugin gốc độc hại. Chỉ sử dụng nó cho các bề mặt đi kèm/dành cho người vận hành đã được xem xét kỹ và vốn đã yêu cầu xác thực HTTP của Gateway. Một route có quyền vẫn có thể truy cập được trong khi cơ chế tiếp nhận công việc gốc của Gateway bị đóng chỉ khi route đó cũng khai báo auth: "gateway" và gatewayRuntimeScopeSurface: "trusted-operator" dành riêng cho route; các route ngang hàng thông thường từ cùng plugin vẫn nằm sau ranh giới tiếp nhận. Điều này giữ cho trạng thái tạm ngưng và chức năng tiếp tục có thể truy cập mà không cấp cho toàn bộ plugin quyền bỏ qua cơ chế tiếp nhận. Giới hạn việc phân tích và định hình phản hồi bên ngoài quá trình điều phối; công việc thực chất hoặc làm thay đổi trạng thái phải đi qua quá trình điều phối phương thức Gateway, nơi sở hữu việc thực thi cơ chế tiếp nhận và phạm vi.
Tham chiếu configContracts
Sử dụngconfigContracts cho hành vi cấu hình thuộc sở hữu của manifest mà các trình trợ giúp core tổng quát cần dùng mà không nhập runtime plugin: phát hiện cờ nguy hiểm, đích di chuyển SecretRef và thu hẹp đường dẫn cấu hình cũ.
Mỗi mục
dangerousFlags hỗ trợ:
secretInputs hỗ trợ:
Tham chiếu mediaUnderstandingProviderMetadata
Sử dụngmediaUnderstandingProviderMetadata khi nhà cung cấp khả năng hiểu nội dung đa phương tiện có các mô hình mặc định, mức ưu tiên dự phòng xác thực tự động hoặc hỗ trợ tài liệu gốc mà các trình trợ giúp lõi chung cần trước khi runtime tải. Các khóa cũng phải được khai báo trong contracts.mediaUnderstandingProviders.
Tham chiếu channelConfigs
Sử dụngchannelConfigs khi plugin kênh cần siêu dữ liệu cấu hình ít tốn tài nguyên trước khi runtime tải. Quá trình khám phá thiết lập/trạng thái kênh chỉ đọc có thể sử dụng trực tiếp siêu dữ liệu này cho các kênh bên ngoài đã cấu hình khi không có mục thiết lập, hoặc khi setup.requiresRuntime: false khai báo rằng runtime thiết lập là không cần thiết.
channelConfigs là siêu dữ liệu manifest của plugin, không phải một phần cấu hình người dùng cấp cao nhất mới. Người dùng vẫn cấu hình các phiên bản kênh trong channels.<channel-id>. OpenClaw đọc siêu dữ liệu manifest để quyết định plugin nào sở hữu kênh đã cấu hình đó trước khi mã runtime của plugin thực thi.
Đối với plugin kênh, configSchema và channelConfigs mô tả các đường dẫn khác nhau:
configSchemaxác thựcplugins.entries.<plugin-id>.configchannelConfigs.<channel-id>.schemaxác thựcchannels.<channel-id>
channels[] cũng nên khai báo các mục channelConfigs tương ứng. Nếu thiếu chúng, OpenClaw vẫn có thể tải plugin, nhưng lược đồ cấu hình trên đường dẫn nguội, quá trình thiết lập và các bề mặt Control UI không thể biết hình dạng tùy chọn do kênh sở hữu cho đến khi runtime của plugin thực thi.
channelConfigs.<channel-id>.commands.nativeCommandsAutoEnabled và nativeSkillsAutoEnabled có thể khai báo các giá trị mặc định auto tĩnh cho những phép kiểm tra cấu hình lệnh chạy trước khi runtime kênh tải. Các kênh đi kèm cũng có thể công bố cùng những giá trị mặc định đó thông qua package.json#openclaw.channel.commands, cùng với siêu dữ liệu danh mục kênh khác do gói sở hữu.
Thay thế một plugin kênh khác
Sử dụngpreferOver khi plugin của bạn là chủ sở hữu được ưu tiên cho một id kênh mà plugin khác cũng có thể cung cấp. Các trường hợp phổ biến gồm id plugin đã được đổi tên, plugin độc lập thay thế plugin đi kèm hoặc một fork được duy trì vẫn giữ nguyên id kênh để tương thích cấu hình.
channels.chat được cấu hình, OpenClaw xem xét cả id kênh và id plugin được ưu tiên. Nếu plugin có mức ưu tiên thấp hơn chỉ được chọn vì nó đi kèm hoặc được bật theo mặc định, OpenClaw sẽ tắt plugin đó trong cấu hình runtime hiệu lực để một plugin duy nhất sở hữu kênh và các công cụ của kênh. Lựa chọn rõ ràng của người dùng vẫn được ưu tiên: nếu người dùng bật rõ ràng cả hai plugin (thông qua plugins.allow hoặc cấu hình plugins.entries có nội dung thực), OpenClaw sẽ giữ nguyên lựa chọn đó và báo cáo chẩn đoán trùng lặp kênh/công cụ thay vì âm thầm thay đổi tập hợp plugin được yêu cầu.
Chỉ giới hạn phạm vi preferOver ở các id plugin thực sự có thể cung cấp cùng một kênh. Đây không phải là trường ưu tiên chung và không đổi tên các khóa cấu hình người dùng.
Tham chiếu modelSupport
Sử dụngmodelSupport khi OpenClaw cần suy luận plugin nhà cung cấp của bạn từ các id mô hình dạng viết tắt như gpt-5.6-sol hoặc claude-sonnet-4.6 trước khi runtime của plugin tải.
- các tham chiếu
provider/modelrõ ràng sử dụng siêu dữ liệu manifestproviderssở hữu chúng modelPatternsđược ưu tiên hơnmodelPrefixes- nếu một plugin không đi kèm và một plugin đi kèm đều khớp, plugin không đi kèm được ưu tiên
- sự nhập nhằng còn lại bị bỏ qua cho đến khi người dùng hoặc cấu hình chỉ định nhà cung cấp
Các mục
modelPatterns được biên dịch thông qua compileSafeRegex, công cụ này từ chối các mẫu chứa phép lặp lồng nhau (ví dụ (a+)+$). Các mẫu không vượt qua phép kiểm tra an toàn sẽ bị âm thầm bỏ qua, tương tự như biểu thức chính quy không hợp lệ về cú pháp. Hãy giữ mẫu đơn giản và tránh các bộ định lượng lồng nhau.
Tham chiếu modelCatalog
Sử dụngmodelCatalog khi OpenClaw cần biết siêu dữ liệu mô hình của nhà cung cấp trước khi tải runtime của plugin. Đây là nguồn do manifest sở hữu cho các hàng danh mục cố định, bí danh nhà cung cấp, quy tắc ẩn và chế độ khám phá. Việc làm mới runtime vẫn thuộc về mã runtime của nhà cung cấp, nhưng manifest cho lõi biết khi nào cần runtime.
aliases tham gia tra cứu quyền sở hữu nhà cung cấp để lập kế hoạch danh mục mô hình. Đích của bí danh phải là nhà cung cấp cấp cao nhất thuộc sở hữu của cùng một plugin. Khi danh sách được lọc theo nhà cung cấp sử dụng bí danh, OpenClaw có thể đọc manifest sở hữu và áp dụng các ghi đè API/URL cơ sở của bí danh mà không cần tải runtime của nhà cung cấp. Bí danh không mở rộng các danh sách danh mục không được lọc; danh sách rộng chỉ xuất các hàng của nhà cung cấp chính tắc sở hữu.
suppressions thay thế hook suppressBuiltInModel cũ của runtime nhà cung cấp. Các mục loại bỏ chỉ được áp dụng khi nhà cung cấp thuộc sở hữu của plugin hoặc được khai báo là khóa modelCatalog.aliases trỏ đến một nhà cung cấp thuộc sở hữu. Các hook loại bỏ ở runtime không còn được gọi trong quá trình phân giải mô hình.
Các trường nhà cung cấp:
Các trường mô hình:
Các trường loại bỏ:
Không đưa dữ liệu chỉ dành cho runtime vào
modelCatalog. Chỉ dùng static khi các hàng manifest đủ đầy đủ để những bề mặt danh sách được lọc theo nhà cung cấp và bộ chọn có thể bỏ qua việc khám phá registry/runtime. Dùng refreshable khi các hàng manifest là những mục khởi đầu có thể liệt kê hoặc phần bổ sung hữu ích, nhưng quá trình làm mới/bộ nhớ đệm có thể thêm nhiều hàng hơn sau đó; bản thân các hàng có thể làm mới không có tính thẩm quyền. Dùng runtime khi OpenClaw phải tải runtime của nhà cung cấp để biết danh sách.
Tham chiếu modelIdNormalization
DùngmodelIdNormalization để dọn dẹp id mô hình ít tốn kém thuộc quyền sở hữu của nhà cung cấp, việc này phải diễn ra trước khi tải runtime của nhà cung cấp. Cách này giữ các bí danh như tên mô hình ngắn, id cũ cục bộ của nhà cung cấp và quy tắc tiền tố proxy trong manifest của plugin sở hữu thay vì trong các bảng lựa chọn mô hình cốt lõi.
Tham chiếu providerEndpoints
DùngproviderEndpoints để phân loại endpoint mà chính sách yêu cầu chung phải biết trước khi tải runtime của nhà cung cấp. Phần cốt lõi vẫn sở hữu ý nghĩa của từng endpointClass; manifest của plugin sở hữu siêu dữ liệu host và URL cơ sở.
Các plugin nhà cung cấp được ngoại vi hóa chính thức bị loại khỏi bản phân phối cốt lõi, vì vậy
manifest của chúng không hiển thị cho đến khi được cài đặt. providerEndpoints của chúng
cũng phải được phản chiếu trong scripts/lib/official-external-provider-catalog.json để
việc phân loại endpoint tiếp tục hoạt động khi không có plugin; một kiểm thử hợp đồng
thực thi yêu cầu phản chiếu này.
Các trường endpoint:
Tham chiếu providerRequest
Sử dụngproviderRequest cho siêu dữ liệu tương thích yêu cầu nhẹ mà chính sách yêu cầu chung cần dùng mà không phải tải runtime của nhà cung cấp. Giữ việc viết lại payload theo hành vi cụ thể trong các hook runtime của nhà cung cấp hoặc các trình trợ giúp dùng chung cho họ nhà cung cấp.
Tham chiếu secretProviderIntegrations
Sử dụngsecretProviderIntegrations khi một plugin có thể công bố một thiết lập sẵn nhà cung cấp thực thi SecretRef có thể tái sử dụng. OpenClaw đọc siêu dữ liệu này trước khi runtime của plugin tải, lưu quyền sở hữu plugin trong secrets.providers.<alias>.pluginIntegration và để runtime SecretRef thực hiện việc phân giải bí mật. Các thiết lập sẵn chỉ được cung cấp cho plugin đi kèm và plugin đã cài đặt được phát hiện từ các thư mục gốc cài đặt plugin được quản lý, chẳng hạn như bản cài đặt từ git và ClawHub.
providerAlias, OpenClaw sử dụng mã định danh tích hợp làm bí danh nhà cung cấp SecretRef. Bí danh nhà cung cấp phải khớp với mẫu bí danh nhà cung cấp SecretRef thông thường, ví dụ team-secrets hoặc onepassword-work.
Khi người vận hành chọn thiết lập sẵn, OpenClaw ghi một tham chiếu nhà cung cấp như sau:
command/args thủ công.
Hiện chỉ hỗ trợ các thiết lập sẵn source: "exec". command phải là ${node}, và args[0] phải là một tập lệnh phân giải ./ tương đối với thư mục gốc plugin. Khi khởi động/tải lại, OpenClaw hiện thực hóa tập lệnh đó thành tệp thực thi Node hiện tại và đường dẫn tuyệt đối tới tập lệnh bên trong plugin. Các tùy chọn Node như --require, --import, --loader, --env-file, --eval và --print không thuộc hợp đồng thiết lập sẵn của manifest. Người vận hành cần các lệnh không phải Node có thể trực tiếp cấu hình nhà cung cấp thực thi độc lập thủ công.
OpenClaw suy ra trustedDirs cho các thiết lập sẵn trong manifest từ thư mục gốc plugin và, đối với thiết lập sẵn ${node}, từ thư mục của tệp thực thi Node hiện tại. Các trustedDirs được khai báo trong manifest sẽ bị bỏ qua. Các tùy chọn nhà cung cấp thực thi khác như timeoutMs, noOutputTimeoutMs, maxOutputBytes, jsonOnly, env, passEnv và allowInsecurePath được chuyển nguyên trạng sang cấu hình nhà cung cấp thực thi SecretRef thông thường.
Tham chiếu modelPricing
Sử dụngmodelPricing khi một nhà cung cấp cần hành vi định giá ở mặt phẳng điều khiển trước khi runtime tải. Bộ nhớ đệm định giá của Gateway đọc siêu dữ liệu này mà không nhập mã runtime của nhà cung cấp.
Các trường nguồn:
Chỉ mục nhà cung cấp OpenClaw
Chỉ mục nhà cung cấp OpenClaw là siêu dữ liệu xem trước do OpenClaw sở hữu dành cho các nhà cung cấp có plugin có thể chưa được cài đặt. Đây không phải là một phần của manifest plugin. Manifest plugin vẫn là nguồn có thẩm quyền về plugin đã cài đặt. Chỉ mục nhà cung cấp là hợp đồng dự phòng nội bộ mà các bề mặt chọn mô hình trước khi cài đặt và nhà cung cấp có thể cài đặt trong tương lai sẽ sử dụng khi plugin nhà cung cấp chưa được cài đặt. Thứ tự thẩm quyền của danh mục:- Cấu hình người dùng.
- Manifest plugin đã cài đặt
modelCatalog. - Bộ nhớ đệm danh mục mô hình từ lần làm mới tường minh.
- Các hàng xem trước của Chỉ mục nhà cung cấp OpenClaw.
modelCatalog như manifest plugin, nhưng chỉ nên giới hạn ở siêu dữ liệu hiển thị ổn định, trừ khi các trường bộ điều hợp runtime như api, baseUrl, giá hoặc cờ tương thích được chủ ý giữ đồng bộ với manifest plugin đã cài đặt. Các nhà cung cấp có cơ chế khám phá /models trực tiếp nên ghi các hàng đã làm mới thông qua đường dẫn bộ nhớ đệm danh mục mô hình tường minh, thay vì để quy trình liệt kê hoặc hướng dẫn thiết lập thông thường gọi API của nhà cung cấp.
Các mục trong Chỉ mục nhà cung cấp cũng có thể chứa siêu dữ liệu plugin có thể cài đặt cho những nhà cung cấp có plugin đã được chuyển ra khỏi lõi hoặc chưa được cài đặt vì lý do khác. Siêu dữ liệu này phản chiếu mẫu danh mục kênh: tên gói, đặc tả cài đặt npm, tính toàn vẹn dự kiến và các nhãn lựa chọn xác thực nhẹ là đủ để hiển thị một tùy chọn thiết lập có thể cài đặt. Sau khi plugin được cài đặt, manifest của plugin sẽ được ưu tiên và mục Chỉ mục nhà cung cấp của nhà cung cấp đó sẽ bị bỏ qua.
openclaw doctor --fix di chuyển một tập nhỏ, đóng gồm các khóa năng lực manifest cấp cao nhất cũ sang contracts.*: speechProviders, mediaUnderstandingProviders, imageGenerationProviders và tools. Không khóa nào trong số này (hoặc bất kỳ danh sách năng lực nào khác) còn được đọc dưới dạng trường manifest cấp cao nhất; quá trình tải manifest thông thường chỉ nhận dạng chúng bên dưới contracts.
Manifest so với package.json
Hai tệp đảm nhiệm các vai trò khác nhau:
Nếu không chắc một phần siêu dữ liệu thuộc về đâu, hãy dùng quy tắc sau:
- nếu OpenClaw phải biết thông tin đó trước khi tải mã plugin, hãy đặt nó trong
openclaw.plugin.json - nếu thông tin đó liên quan đến đóng gói, tệp điểm vào hoặc hành vi cài đặt npm, hãy đặt nó trong
package.json
Các trường package.json ảnh hưởng đến quá trình khám phá
Một số siêu dữ liệu plugin trước runtime được chủ ý đặt trongpackage.json bên dưới khối openclaw thay vì openclaw.plugin.json. openclaw.bundle và openclaw.bundle.json không phải là hợp đồng plugin OpenClaw; plugin gốc phải sử dụng openclaw.plugin.json cùng với các trường package.json#openclaw được hỗ trợ bên dưới.
Các ví dụ quan trọng:
Siêu dữ liệu manifest quyết định những lựa chọn nhà cung cấp/kênh/thiết lập nào xuất hiện trong quá trình làm quen ban đầu trước khi runtime tải.
package.json#openclaw.install cho quá trình làm quen ban đầu biết cách tìm nạp hoặc bật Plugin đó khi người dùng chọn một trong các lựa chọn này. Không chuyển các gợi ý cài đặt vào openclaw.plugin.json.
openclaw.install.minHostVersion được thực thi trong quá trình cài đặt và tải sổ đăng ký manifest đối với các nguồn Plugin không đi kèm. Các giá trị không hợp lệ bị từ chối; các giá trị mới hơn nhưng hợp lệ khiến Plugin bên ngoài bị bỏ qua trên máy chủ cũ hơn. Các Plugin nguồn đi kèm được giả định là có cùng phiên bản với bản checkout của máy chủ.
openclaw.install.requiredPlatformPackages dành cho các gói npm cung cấp những tệp nhị phân gốc bắt buộc thông qua các bí danh tùy chọn dành riêng cho nền tảng. Liệt kê tên gói npm thuần cho mọi bí danh nền tảng được hỗ trợ. Trong quá trình cài đặt npm, OpenClaw chỉ xác minh bí danh đã khai báo có ràng buộc lockfile khớp với máy chủ hiện tại. Nếu npm báo thành công nhưng bỏ sót bí danh đó, OpenClaw thử lại một lần với bộ nhớ đệm mới và hoàn tác cài đặt nếu bí danh vẫn còn thiếu.
openclaw.compat.pluginApi được thực thi trong quá trình cài đặt gói đối với các nguồn Plugin không đi kèm. Dùng trường này cho mức sàn API SDK/runtime Plugin OpenClaw mà gói đã được build dựa trên. Trường này có thể nghiêm ngặt hơn minHostVersion khi một gói Plugin cần API mới hơn nhưng vẫn giữ gợi ý cài đặt thấp hơn cho các luồng khác. Theo mặc định, quá trình đồng bộ bản phát hành chính thức của OpenClaw nâng các mức sàn API Plugin chính thức hiện có lên phiên bản phát hành OpenClaw, nhưng các bản phát hành chỉ dành cho Plugin có thể giữ mức sàn thấp hơn khi gói chủ ý hỗ trợ máy chủ cũ hơn. Không chỉ dùng phiên bản gói làm hợp đồng tương thích. peerDependencies.openclaw vẫn là siêu dữ liệu gói npm; OpenClaw dùng hợp đồng openclaw.compat.pluginApi để đưa ra quyết định về khả năng tương thích khi cài đặt.
Siêu dữ liệu cài đặt theo yêu cầu chính thức nên dùng clawhubSpec khi Plugin được phát hành trên ClawHub; quá trình làm quen ban đầu xem đó là nguồn từ xa ưu tiên và ghi lại thông tin tạo tác ClawHub sau khi cài đặt. npmSpec vẫn là phương án dự phòng tương thích cho các gói chưa chuyển sang ClawHub.
Việc ghim chính xác phiên bản npm đã nằm trong npmSpec, ví dụ "npmSpec": "@wecom/wecom-openclaw-plugin@1.2.3". Các mục danh mục bên ngoài chính thức nên ghép thông số chính xác với expectedIntegrity để các luồng cập nhật đóng an toàn nếu tạo tác npm được tìm nạp không còn khớp với bản phát hành đã ghim. Quá trình làm quen ban đầu tương tác vẫn cung cấp các thông số npm từ sổ đăng ký đáng tin cậy, bao gồm tên gói thuần và dist-tag, để đảm bảo khả năng tương thích. Chẩn đoán danh mục có thể phân biệt nguồn lựa chọn mặc định chính xác, thả nổi, được ghim tính toàn vẹn, thiếu tính toàn vẹn, không khớp tên gói và không hợp lệ. Chẩn đoán cũng cảnh báo khi có expectedIntegrity nhưng không có nguồn npm hợp lệ để ghim. Khi có expectedIntegrity, các luồng cài đặt/cập nhật thực thi trường này; khi trường này bị bỏ qua, kết quả phân giải sổ đăng ký được ghi lại mà không có ghim tính toàn vẹn.
Các Plugin kênh nên cung cấp openclaw.setupEntry khi quá trình quét trạng thái, danh sách kênh hoặc SecretRef cần xác định các tài khoản đã cấu hình mà không tải toàn bộ runtime. Điểm vào thiết lập nên cung cấp siêu dữ liệu kênh cùng các bộ điều hợp cấu hình, trạng thái và bí mật an toàn cho thiết lập; giữ các máy khách mạng, trình lắng nghe Gateway và runtime truyền tải trong điểm vào tiện ích mở rộng chính.
Các trường điểm vào runtime không ghi đè việc kiểm tra ranh giới gói dành cho các trường điểm vào nguồn. Ví dụ, openclaw.runtimeExtensions không thể làm cho đường dẫn openclaw.extensions thoát ra ngoài trở thành có thể tải được.
openclaw.install.allowInvalidConfigRecovery có phạm vi hẹp một cách có chủ ý. Trường này không khiến mọi cấu hình bị hỏng đều có thể cài đặt. Hiện tại, trường này chỉ cho phép các luồng cài đặt khôi phục từ một số lỗi nâng cấp Plugin đi kèm đã lỗi thời cụ thể, chẳng hạn như thiếu đường dẫn Plugin đi kèm hoặc một mục channels.<id> đã lỗi thời cho chính Plugin đi kèm đó. Các lỗi cấu hình không liên quan vẫn chặn cài đặt và chuyển người vận hành đến openclaw doctor --fix.
openclaw.channel.persistedAuthState là siêu dữ liệu gói cho một mô-đun kiểm tra nhỏ:
openclaw.channel.configuredState hỗ trợ các phép kiểm tra cấu hình với chi phí thấp. Ưu tiên siêu dữ liệu biến môi trường dạng khai báo khi các biến môi trường là đủ:
env.allOf khi mọi biến được liệt kê đều bắt buộc và env.anyOf khi chỉ cần bất kỳ một biến không rỗng nào. Nếu một phép kiểm tra nhỏ không thuộc runtime cần nhiều hơn siêu dữ liệu môi trường, hãy dùng specifier cùng exportName như minh họa cho persistedAuthState; khi có env, OpenClaw dùng trường này mà không tải mô-đun đó. Nếu phép kiểm tra cần phân giải cấu hình đầy đủ hoặc runtime thực của kênh, hãy giữ logic đó trong hook config.hasConfiguredState của Plugin.
Thứ tự ưu tiên khám phá (id Plugin trùng lặp)
OpenClaw khám phá Plugin từ ba gốc, được kiểm tra theo thứ tự sau: các Plugin đi kèm được phân phối cùng OpenClaw, gốc cài đặt toàn cục (~/.openclaw/extensions) và gốc không gian làm việc hiện tại (<workspace>/.openclaw/extensions), cùng với mọi mục plugins.load.paths tường minh.
Nếu hai kết quả khám phá có cùng id, chỉ manifest có mức ưu tiên cao nhất được giữ lại; các bản trùng lặp có mức ưu tiên thấp hơn bị loại bỏ thay vì được tải bên cạnh nó. Thứ tự ưu tiên từ cao xuống thấp:
- Được cấu hình chọn — một đường dẫn được ghim tường minh trong
plugins.entries.<id> - Cài đặt toàn cục khớp với bản ghi cài đặt được theo dõi — một Plugin được cài đặt qua
openclaw plugin install/openclaw plugin updatemà hệ thống theo dõi cài đặt của OpenClaw nhận diện cho cùng id đó, ngay cả khi id cũng thuộc về một Plugin đi kèm - Đi kèm — các Plugin được phân phối cùng OpenClaw
- Không gian làm việc — các Plugin được khám phá tương đối với không gian làm việc hiện tại
- Mọi ứng viên được khám phá khác
- Một bản sao rẽ nhánh hoặc lỗi thời của Plugin đi kèm, nằm ở trạng thái không được theo dõi trong không gian làm việc hoặc thư mục gốc toàn cục, sẽ không che khuất bản dựng đi kèm.
- Để ghi đè một Plugin đi kèm, hãy chạy
openclaw plugin installcho id đó để bản cài đặt toàn cục được theo dõi có độ ưu tiên cao hơn bản sao đi kèm, hoặc ghim một đường dẫn cụ thể quaplugins.entries.<id>để đường dẫn đó được ưu tiên theo thứ tự ưu tiên do cấu hình lựa chọn. - Các bản sao trùng lặp bị loại bỏ sẽ được ghi vào nhật ký để Doctor và chẩn đoán khởi động có thể chỉ ra bản sao đã bị loại bỏ.
- Các ghi đè trùng lặp do cấu hình lựa chọn được mô tả là ghi đè rõ ràng trong chẩn đoán, nhưng vẫn đưa ra cảnh báo để các bản rẽ nhánh lỗi thời và trường hợp vô tình che khuất vẫn dễ nhận biết.
Yêu cầu về JSON Schema
- Mỗi Plugin phải cung cấp một JSON Schema, ngay cả khi không chấp nhận cấu hình nào.
- Có thể sử dụng schema trống (ví dụ:
{ "type": "object", "additionalProperties": false }). - Schema được xác thực khi đọc/ghi cấu hình, không phải trong thời gian chạy.
- Khi mở rộng hoặc rẽ nhánh một Plugin đi kèm bằng các khóa cấu hình mới, hãy đồng thời cập nhật
openclaw.plugin.jsonconfigSchemacủa Plugin đó. Schema của Plugin đi kèm được kiểm tra nghiêm ngặt, vì vậy việc thêmplugins.entries.<id>.config.myNewKeyvào cấu hình người dùng mà không thêmmyNewKeyvàoconfigSchema.propertiessẽ bị từ chối trước khi môi trường chạy của Plugin được tải.
Hành vi xác thực
- Các khóa
channels.*không xác định là lỗi, trừ khi id kênh được khai báo bởi manifest của Plugin. Nếu cùng id đó cũng xuất hiện trongplugins.allow,plugins.entrieshoặcplugins.installs(một Plugin được tham chiếu nhưng hiện không thể được phát hiện), OpenClaw sẽ hạ cấp trường hợp này thành cảnh báo. plugins.entries.<id>,plugins.allowvàplugins.denytham chiếu đến id Plugin không xác định là cảnh báo (“mục cấu hình lỗi thời bị bỏ qua”), không phải lỗi, để việc nâng cấp và các Plugin đã bị xóa/đổi tên không ngăn Gateway khởi động.plugins.slots.memorytham chiếu đến id Plugin không xác định là lỗi, ngoại trừ Plugin bên ngoài chính thứcmemory-lancedbđã biết; trường hợp này chỉ đưa ra cảnh báo.- Nếu một Plugin đã được cài đặt nhưng manifest hoặc schema bị hỏng hay bị thiếu, quá trình xác thực sẽ thất bại và Doctor sẽ báo cáo lỗi Plugin.
- Nếu cấu hình Plugin tồn tại nhưng Plugin bị tắt, cấu hình sẽ được giữ lại và cảnh báo sẽ hiển thị trong Doctor cùng nhật ký.
plugins.*.
Ghi chú
- Manifest là bắt buộc đối với các Plugin OpenClaw gốc, bao gồm cả các lần tải từ hệ thống tệp cục bộ. Môi trường chạy vẫn tải riêng mô-đun Plugin; manifest chỉ dùng cho việc phát hiện và xác thực.
- Manifest gốc được phân tích cú pháp bằng JSON5, do đó chấp nhận chú thích, dấu phẩy ở cuối và khóa không có dấu ngoặc kép, miễn là giá trị cuối cùng vẫn là một đối tượng.
- Trình tải manifest chỉ đọc các trường manifest đã được lập tài liệu. Tránh sử dụng khóa cấp cao nhất tùy chỉnh.
channels,providers,cliBackendsvàskillsđều có thể được bỏ qua khi Plugin không cần đến chúng.providerCatalogEntryphải luôn gọn nhẹ và không nên nhập mã thời gian chạy có phạm vi rộng; hãy dùng nó cho siêu dữ liệu danh mục nhà cung cấp tĩnh hoặc các bộ mô tả phát hiện có phạm vi hẹp, không dùng để thực thi tại thời điểm yêu cầu.- Các loại Plugin độc quyền được chọn thông qua
plugins.slots.*:kind: "memory"quaplugins.slots.memory(mặc địnhmemory-core),kind: "context-engine"quaplugins.slots.contextEngine(mặc địnhlegacy). - Hãy khai báo loại Plugin độc quyền trong manifest này.
OpenClawPluginDefinition.kindtại điểm vào thời gian chạy đã không còn được khuyến nghị và chỉ được giữ lại làm phương án dự phòng tương thích cho các Plugin cũ. - Siêu dữ liệu biến môi trường trong
setup.providers[].envVarschỉ mang tính khai báo. Trạng thái, kiểm tra, xác thực phân phối Cron và các bề mặt chỉ đọc khác vẫn áp dụng chính sách tin cậy và kích hoạt hiệu lực của Plugin trước khi coi một biến môi trường là đã được cấu hình. - Đối với siêu dữ liệu trình hướng dẫn thời gian chạy cần mã nhà cung cấp, hãy xem hook thời gian chạy của nhà cung cấp.
- Nếu Plugin của bạn phụ thuộc vào các mô-đun gốc, hãy lập tài liệu về các bước dựng và mọi yêu cầu đối với danh sách cho phép của trình quản lý gói (ví dụ: pnpm
allow-build-scripts+pnpm rebuild <package>).
Liên quan
Xây dựng Plugin
Bắt đầu sử dụng Plugin.
Kiến trúc Plugin
Kiến trúc nội bộ và mô hình khả năng.
Tổng quan về SDK
Tài liệu tham chiếu SDK của Plugin và các lệnh nhập đường dẫn con.