fix(qqbot): allow extension fields in channel config schema (#64075)

* fix(qqbot): allow extension fields in channel config schema

Use passthrough() on QQBotConfigSchema, QQBotAccountSchema, and
QQBotStreamingSchema so third-party builds that share the qqbot
channel id can add custom fields without triggering
"must NOT have additional properties" validation errors.

tts and stt sub-schemas remain strict to preserve typo detection
for those sensitive fields.

* Update extensions/qqbot/openclaw.plugin.json

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* chore(qqbot): update changelog for config schema passthrough

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
This commit is contained in:
Mingkuan
2026-04-10 17:01:00 +08:00
committed by GitHub
parent 3b6500ca20
commit 005b629b6d
4 changed files with 82 additions and 46 deletions

View File

@@ -7,7 +7,7 @@
"skills": ["./skills"],
"configSchema": {
"type": "object",
"additionalProperties": false,
"additionalProperties": true,
"$defs": {
"audioFormatPolicy": {
"type": "object",
@@ -77,7 +77,7 @@
},
"account": {
"type": "object",
"additionalProperties": false,
"additionalProperties": true,
"properties": {
"enabled": { "type": "boolean" },
"name": { "type": "string" },
@@ -102,15 +102,22 @@
"enum": ["doc", "hot-reload"]
},
"streaming": {
"type": "object",
"additionalProperties": false,
"properties": {
"mode": {
"type": "string",
"enum": ["off", "partial"],
"default": "partial"
"anyOf": [
{
"type": "boolean"
},
{
"type": "object",
"additionalProperties": true,
"properties": {
"mode": {
"type": "string",
"enum": ["off", "partial"],
"default": "partial"
}
}
}
}
]
}
}
}
@@ -141,15 +148,22 @@
"enum": ["doc", "hot-reload"]
},
"streaming": {
"type": "object",
"additionalProperties": false,
"properties": {
"mode": {
"type": "string",
"enum": ["off", "partial"],
"default": "partial"
"anyOf": [
{
"type": "boolean"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"mode": {
"type": "string",
"enum": ["off", "partial"],
"default": "partial"
}
}
}
}
]
},
"accounts": {
"type": "object",