mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 15:40:44 +00:00
* fix(qqbot): enable qqbot plugin by default so runtime deps install before QR-code setup The qqbot plugin manifest was missing the enabledByDefault: true flag. Without it, ensureBundledPluginRuntimeDeps treats qqbot as bundled-but- disabled-by-default (isBundledPluginConfiguredForRuntimeDeps returns false when no qqbot channel/account is configured yet), so @tencent-connect/qqbot-connector is never installed into dist/extensions/qqbot/node_modules on first launch. This creates a chicken-and-egg failure for the QR-code binding flow: finalize.ts dynamically imports @tencent-connect/qqbot-connector to run qrConnect(), but the package isn't present yet because no account is configured — binding is exactly the step that configures the first account. Users hit: QQ Bot 绑定失败: Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@tencent-connect/qqbot-connector' imported from .../dist/extensions/qqbot/channel-*.js Adding enabledByDefault: true makes the host install qqbot's runtime deps eagerly on first launch, mirroring the pattern already used by mistral / groq / deepgram / amazon-bedrock-mantle and other bundled plugins whose providers must be available before any channel config exists. No code changes required; the existing runtime-deps install pipeline handles everything once the gate is opened. * fix(qqbot): changelog for enable-by-default fix (#71051) (thanks @cxyhhhhh) --------- Co-authored-by: sliverp <870080352@qq.com>
154 lines
4.3 KiB
JSON
154 lines
4.3 KiB
JSON
{
|
|
"id": "qqbot",
|
|
"channels": ["qqbot"],
|
|
"channelEnvVars": {
|
|
"qqbot": ["QQBOT_APP_ID", "QQBOT_CLIENT_SECRET"]
|
|
},
|
|
"enabledByDefault": true,
|
|
"skills": ["./skills"],
|
|
"configSchema": {
|
|
"type": "object",
|
|
"additionalProperties": true,
|
|
"$defs": {
|
|
"audioFormatPolicy": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"sttDirectFormats": {
|
|
"type": "array",
|
|
"items": { "type": "string" }
|
|
},
|
|
"uploadDirectFormats": {
|
|
"type": "array",
|
|
"items": { "type": "string" }
|
|
},
|
|
"transcodeEnabled": { "type": "boolean" }
|
|
}
|
|
},
|
|
"stt": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"enabled": { "type": "boolean" },
|
|
"provider": { "type": "string" },
|
|
"baseUrl": { "type": "string" },
|
|
"apiKey": { "type": "string" },
|
|
"model": { "type": "string" }
|
|
}
|
|
},
|
|
"secretRef": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"source": {
|
|
"type": "string",
|
|
"enum": ["env", "file", "exec"]
|
|
},
|
|
"provider": { "type": "string" },
|
|
"id": { "type": "string" }
|
|
},
|
|
"required": ["source", "provider", "id"]
|
|
},
|
|
"secretInput": {
|
|
"anyOf": [{ "type": "string", "minLength": 1 }, { "$ref": "#/$defs/secretRef" }]
|
|
},
|
|
"account": {
|
|
"type": "object",
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"enabled": { "type": "boolean" },
|
|
"name": { "type": "string" },
|
|
"appId": { "type": "string" },
|
|
"clientSecret": { "$ref": "#/$defs/secretInput" },
|
|
"clientSecretFile": { "type": "string" },
|
|
"allowFrom": {
|
|
"type": "array",
|
|
"items": { "type": "string" }
|
|
},
|
|
"systemPrompt": { "type": "string" },
|
|
"markdownSupport": { "type": "boolean" },
|
|
"voiceDirectUploadFormats": {
|
|
"type": "array",
|
|
"items": { "type": "string" }
|
|
},
|
|
"audioFormatPolicy": { "$ref": "#/$defs/audioFormatPolicy" },
|
|
"urlDirectUpload": { "type": "boolean" },
|
|
"upgradeUrl": { "type": "string" },
|
|
"upgradeMode": {
|
|
"type": "string",
|
|
"enum": ["doc", "hot-reload"]
|
|
},
|
|
"streaming": {
|
|
"anyOf": [
|
|
{
|
|
"type": "boolean"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"mode": {
|
|
"type": "string",
|
|
"enum": ["off", "partial"],
|
|
"default": "partial"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"properties": {
|
|
"enabled": { "type": "boolean" },
|
|
"name": { "type": "string" },
|
|
"appId": { "type": "string" },
|
|
"clientSecret": { "$ref": "#/$defs/secretInput" },
|
|
"clientSecretFile": { "type": "string" },
|
|
"allowFrom": {
|
|
"type": "array",
|
|
"items": { "type": "string" }
|
|
},
|
|
"systemPrompt": { "type": "string" },
|
|
"markdownSupport": { "type": "boolean" },
|
|
"voiceDirectUploadFormats": {
|
|
"type": "array",
|
|
"items": { "type": "string" }
|
|
},
|
|
"audioFormatPolicy": { "$ref": "#/$defs/audioFormatPolicy" },
|
|
"stt": { "$ref": "#/$defs/stt" },
|
|
"urlDirectUpload": { "type": "boolean" },
|
|
"upgradeUrl": { "type": "string" },
|
|
"upgradeMode": {
|
|
"type": "string",
|
|
"enum": ["doc", "hot-reload"]
|
|
},
|
|
"streaming": {
|
|
"anyOf": [
|
|
{
|
|
"type": "boolean"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"mode": {
|
|
"type": "string",
|
|
"enum": ["off", "partial"],
|
|
"default": "partial"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"accounts": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"$ref": "#/$defs/account"
|
|
}
|
|
},
|
|
"defaultAccount": { "type": "string" }
|
|
}
|
|
}
|
|
}
|