docs(plugins): clarify duplicate override diagnostics · openclaw/openclaw@c35ed54
steipete
·
2026-05-02
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
@@ -32,6 +32,7 @@ Docs: https://docs.openclaw.ai
|
32 | 32 | |
33 | 33 | - Gateway/diagnostics: include a bounded redacted startup error message in stability bundles, so crash-loop reports identify the failing plugin or contract without exposing secrets. Refs #75797. Thanks @ymebosma. |
34 | 34 | - Control UI/Talk: allow the OpenAI Realtime WebRTC offer endpoint through the Control UI CSP, configure browser sessions with explicit VAD/transcription input settings, and surface OpenAI realtime error/lifecycle events instead of leaving Talk stuck as live with no diagnostic. Fixes #73427. |
| 35 | +- Plugins: clarify config-selected duplicate plugin override diagnostics and document manifest schema updates for bundled-plugin forks. Fixes #8582. Thanks @sachah. |
35 | 36 | - Providers/OpenAI: resolve `keychain:<service>:<account>` `OPENAI_API_KEY` refs before creating OpenAI Realtime browser sessions or voice bridges, with a bounded cached Keychain lookup. Fixes #72120. Thanks @ctbritt. |
36 | 37 | - Discord/gateway: reconnect when the gateway socket closes while waiting for the shared IDENTIFY concurrency window, instead of silently skipping IDENTIFY and leaving the bot online but unresponsive. Fixes #74617. Thanks @zeeskdr-ai. |
37 | 38 | - Voice Call: add `sessionScope: "per-call"` for fresh per-call agent memory while preserving the default per-phone caller history. Fixes #45280. Thanks @pondcountry. |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -1271,12 +1271,30 @@ Implications:
|
1271 | 1271 | - A forked or stale copy of a bundled plugin sitting in the workspace will not shadow the bundled build. |
1272 | 1272 | - To actually override a bundled plugin with a local one, pin it via `plugins.entries.<id>` so it wins by precedence rather than relying on workspace discovery. |
1273 | 1273 | - Duplicate drops are logged so Doctor and startup diagnostics can point at the discarded copy. |
| 1274 | +- Config-selected duplicate overrides are worded as explicit overrides in diagnostics, but still warn so stale forks and accidental shadows stay visible. |
1274 | 1275 | |
1275 | 1276 | ## JSON Schema requirements |
1276 | 1277 | |
1277 | 1278 | - **Every plugin must ship a JSON Schema**, even if it accepts no config. |
1278 | 1279 | - An empty schema is acceptable (for example, `{ "type": "object", "additionalProperties": false }`). |
1279 | 1280 | - Schemas are validated at config read/write time, not at runtime. |
| 1281 | +- When extending or forking a bundled plugin with new config keys, update that plugin's `openclaw.plugin.json` `configSchema` at the same time. Bundled plugin schemas are strict, so adding `plugins.entries.<id>.config.myNewKey` in user config without adding `myNewKey` to `configSchema.properties` will be rejected before the plugin runtime loads. |
| 1282 | + |
| 1283 | +Example schema extension: |
| 1284 | + |
| 1285 | +```json |
| 1286 | +{ |
| 1287 | +"configSchema": { |
| 1288 | +"type": "object", |
| 1289 | +"additionalProperties": false, |
| 1290 | +"properties": { |
| 1291 | +"myNewKey": { |
| 1292 | +"type": "string" |
| 1293 | + } |
| 1294 | + } |
| 1295 | + } |
| 1296 | +} |
| 1297 | +``` |
1280 | 1298 | |
1281 | 1299 | ## Validation behavior |
1282 | 1300 | |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -753,7 +753,10 @@ export function loadPluginManifestRegistry(
|
753 | 753 | level: "warn", |
754 | 754 | pluginId: manifest.id, |
755 | 755 | source: overriddenCandidate.source, |
756 | | -message: `duplicate plugin id detected; ${overriddenCandidate.origin} plugin will be overridden by ${winnerCandidate.origin} plugin (${winnerCandidate.source})`, |
| 756 | +message: |
| 757 | +winnerCandidate.origin === "config" |
| 758 | + ? `duplicate plugin id resolved by explicit config-selected plugin; ${overriddenCandidate.origin} plugin will be overridden by config plugin (${winnerCandidate.source})` |
| 759 | + : `duplicate plugin id detected; ${overriddenCandidate.origin} plugin will be overridden by ${winnerCandidate.origin} plugin (${winnerCandidate.source})`, |
757 | 760 | }); |
758 | 761 | continue; |
759 | 762 | } |
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。