Skip to content

Generated configuration field reference ​

Generated from runtime source and JSON Schema. Do not edit manually. See Configuration for narrative guidance and examples.

  • Generator: pnpm docs:config
  • Drift check: pnpm check:config-reference

Host top-level fields ​

The authoritative contract is packages/im/runtime/src/host-config-schema.json, consumed by the Runtime at basic/cli/src/plugin-runtime/console/configuration-projection.ts.

PathTypeRequiredDefaultDescription
httpobjectno—HTTP, Console, REST/RPC/SSE, and Webhook Host.
http.readinessobjectno—Required runtime components for /pub/ready; no external network probes.
http.readiness.databasebooleannotrueRequire an initialized Database Host (not a live database query).
http.readiness.endpointsarray<object>no—Required Endpoint admission slots, selected by exact plugin owner and stable slot name.
http.readiness.endpoints[].ownerstringyes——
http.readiness.endpoints[].namestringyes——
http.readiness.agentsarray<string>no—Required configured Agent bindings; does not verify model credentials or provider reachability.
databaseobjectno—Database Host and dialect connection options.
aiobjectno—Providers, Agents, sessions, memory, tools, and execution security.
ai.workroomobjectno—Process-owned Workroom control-plane policy; Projects remain in the persistent Catalog.
ai.workroom.trustedPackPublishersarray<string>no—Authenticated Console principal ids allowed to publish shared Capability Packs.
ai.workroom.disclosureobjectno—Explicit P12 model processor contracts for Workroom disclosure bootstrap.
ai.workroom.disclosure.tenantIdstringno——
ai.workroom.disclosure.modelProvidersobjectno——
ai.workroom.disclosure.modelProviders.<key>.endpointstringyes——
ai.workroom.disclosure.modelProviders.<key>.ownerstringno——
ai.workroom.disclosure.modelProviders.<key>.trustDomainstringno——
ai.workroom.disclosure.modelProviders.<key>.processingRegionsarray<string>yes——
ai.workroom.disclosure.modelProviders.<key>.maxConfidentialitystring: "public", "project_internal", "confidential", "restricted"yes——
ai.workroom.disclosure.modelProviders.<key>.externalbooleanyes——
ai.workroom.disclosure.modelProviders.<key>.noTrainingbooleanyes——
ai.workroom.disclosure.modelProviders.<key>.loggingModestring: "disabled", "metadata_only", "full"yes——
ai.workroom.disclosure.modelProviders.<key>.maximumRetentionSecondsintegeryes——
ai.workroom.disclosure.modelProviders.<key>.allowsRedisclosurebooleanyes——
ai.workroom.disclosure.modelProviders.<key>.supportsDeletionbooleanyes——
ai.agentobjectno—Agent execution, queueing, tool, and model policies.
ai.agent.inboundQueueobjectno—Inbound turn queue policy.
ai.agent.inboundQueue.groupModestring: "supersede", "fifo"no—Replace an older queued group turn, or process all turns in arrival order.
ai.agent.execSecuritystring: "deny", "allowlist", "full"no—Shell command security boundary.
ai.agent.execPresetstring: "readonly", "network", "development", "custom"no—Command allowlist preset used outside full mode.
ai.agent.execApprovalModestring: "ask", "bypass", "auto"no—Approval policy for main Agent commands.
ai.agent.subagentExecApprovalModestring: "ask", "bypass", "auto"no—Approval policy for sub-Agent commands.
ai.agent.workerExecApprovalModestring: "ask", "bypass", "auto"no—Approval policy for worker commands.
ai.agent.taskExecApprovalModestring: "ask", "bypass", "auto"no—Approval policy for task commands.
ai.agent.toolExecutionstring: "parallel", "sequential", "tiered"no—How tool calls in one model step are scheduled.
ai.agent.modelSizeHintstring: "", "small", "medium", "large"no—Optional model-size hint; an empty string clears the hint.
ai.agent.promptCacheRetentionstring: "in_memory", "24h"no—Provider prompt-cache retention policy.
ai.agent.steeringModestring: "one-at-a-time", "all"no—Process steering messages one at a time or drain all pending messages together.
ai.agent.followUpModestring: "one-at-a-time", "all"no—Process follow-up messages one at a time or drain all pending messages together.
ai.agent.outputSchemaboolean | string: "segments" | objectno—Structured final-output mode: false for text, true or segments for canonical message segments, or a custom JSON Schema object.
ai.agent.scheduleobjectno—Unattended Schedule execution policy.
ai.agent.schedule.securityobjectno—Schedule command security policy.
ai.agent.schedule.security.execPresetstring: "readonly", "network"no—Schedule Jobs may use only the read-only or network preset.
mcpobjectno—Expose Bot tools through an MCP Server.
a2aobjectno—A2A Agent Card, remote execution, and Workroom callbacks.
speechobjectno—Speech-to-text and text-to-speech Host.
htmlRendererobjectno—HTML and image rendering options backed by Shotium.
htmlRenderer.widthnumberno—Default layout width in CSS pixels.
htmlRenderer.defaultWidthnumberno—Legacy alias of width.
htmlRenderer.viewportobjectno—Default viewport for Shotium rendering.
htmlRenderer.viewport.widthnumberno—Viewport width in CSS pixels.
htmlRenderer.viewport.heightnumberno—Viewport height in CSS pixels.
htmlRenderer.backgroundColorstringno—Fragment background color.
htmlRenderer.defaultBackgroundColorstringno—Legacy alias of backgroundColor.
htmlRenderer.scalenumberno—Device scale factor.
htmlRenderer.typestring: "png", "jpeg", "webp"no—Default raster output format.
htmlRenderer.qualitynumberno—Quality for jpeg/webp output.
htmlRenderer.timeoutnumberno—Navigation timeout in milliseconds.
htmlRenderer.waitUntilstring: "load", "networkidle"no—Navigation wait strategy.
htmlRenderer.fontFamilystringno—Default font-family for fragments.
htmlRenderer.maxImageHeightnumberno—Split overly tall PNGs above this height; 0 disables splitting.
htmlRenderer.sliceCompressionnumberno—Compression level used when splitting PNGs.
htmlRenderer.allowFileAccessbooleanno—Allow local file subresources.
htmlRenderer.takeOverHtmlSegmentsbooleanno—Take over html/markdown rich-segment image rendering.
htmlRenderer.cacheDirstringno—HTTP cache directory; use off to disable.
htmlRenderer.cacheMaxBytesnumberno—Maximum HTTP cache size in bytes.
htmlRenderer.userAgentstringno—Custom user agent string.
htmlRenderer.idleTimeoutMsnumberno—Daemon idle-exit timeout in milliseconds.
htmlRenderer.logStatsbooleanno—Log render timing statistics.
htmlRenderer.modestring: "inprocess", "daemon"no—Whether Shotium runs in-process or as a daemon.
htmlRenderer.aiTextAsImageboolean | objectno—Optional plain-text to image conversion before send.
assistantobjectno—Scheduled jobs, event ingress, and failure notifications.
log_levelstring | numberno—Runtime log level.
pluginobjectno—Root Plugin configuration; replaced by its project schema during composition.

Plugin instance fields ​

These fields are read directly from each plugin schema.json. The <name> in plugins.<name> is the default instanceKey.

dingtalk ​

plugins/adapters/dingtalk/schema.json

PathTypeRequiredDefaultDescription
plugins.dingtalk.apiBaseUrlstringno"https://oapi.dingtalk.com"—
plugins.dingtalk.masterstring | numberno—框架 master(DingTalk userid;AI/工具权限、endpoint 管理)。endpoints[i].master 可逐项覆盖
plugins.dingtalk.trustedarray<string | number>no—框架 trusted 用户列表(弱于 master)。endpoints[i].trusted 可逐项追加
plugins.dingtalk.endpointsarray<object>yes—多账号:一个插件实例挂多个 endpoint。每项与顶层字段同构(id 必填,其余覆盖顶层)
plugins.dingtalk.endpoints[].masterstring | numberno—本 endpoint 的框架 master(DingTalk userid);覆盖顶层 master
plugins.dingtalk.endpoints[].trustedarray<string | number>no—本 endpoint 的 trusted 列表
plugins.dingtalk.endpoints[].appKeystringyes—Dingtalk app key
plugins.dingtalk.endpoints[].appSecretstringyes—Dingtalk app secret
plugins.dingtalk.endpoints[].webhookPathstringno—Dingtalk webhook path
plugins.dingtalk.endpoints[].robotCodestringno—Dingtalk robot code
plugins.dingtalk.endpoints[].apiBaseUrlstringno——
plugins.dingtalk.endpoints[].commandPrefixstringno——
plugins.dingtalk.endpoints[].idstringyes—Dingtalk bot name
plugins.dingtalk.commandPrefixstringno""命令前缀(默认 '' 无前缀,任意文本按命令匹配;如 '/' 要求 / 开头)。endpoints[i] 可逐项覆盖

discord ​

plugins/adapters/discord/schema.json

PathTypeRequiredDefaultDescription
plugins.discord.connectionstring: "gateway", "interactions"no"gateway"Gateway WebSocket (default). interactions uses httpHostToken POST + Ed25519 verify.
plugins.discord.intentsarray<number>no——
plugins.discord.enableSlashCommandsbooleannofalse—
plugins.discord.globalCommandsbooleannofalse—
plugins.discord.defaultActivityobjectno——
plugins.discord.defaultActivity.namestringyes——
plugins.discord.defaultActivity.typestring: "PLAYING", "STREAMING", "LISTENING", "WATCHING", "COMPETING"yes——
plugins.discord.defaultActivity.urlstringno——
plugins.discord.slashCommandsarray<object>no——
plugins.discord.applicationIdstringno—Required when connection is interactions.
plugins.discord.publicKeystringno—Required when connection is interactions (hex Ed25519 public key).
plugins.discord.interactionsPathstringno"/discord/interactions"POST path on httpHostToken when connection is interactions.
plugins.discord.masterstring | numberno—框架 master(Discord user snowflake;AI/工具权限、endpoint 管理)。endpoints[i].master 可逐项覆盖
plugins.discord.trustedarray<string | number>no—框架 trusted 用户列表(弱于 master)。endpoints[i].trusted 可逐项追加
plugins.discord.endpointsarray<object>yes—多账号:每项定义一个 endpoint,id/token 必填,其余字段覆盖实例默认值
plugins.discord.endpoints[].masterstring | numberno—本 endpoint 的框架 master(Discord user snowflake);覆盖顶层 master
plugins.discord.endpoints[].trustedarray<string | number>no—本 endpoint 的 trusted 列表
plugins.discord.endpoints[].tokenstringyes—Discord bot token
plugins.discord.endpoints[].connectionstring: "gateway", "interactions"no——
plugins.discord.endpoints[].intentsarray<number>no——
plugins.discord.endpoints[].enableSlashCommandsbooleanno——
plugins.discord.endpoints[].globalCommandsbooleanno——
plugins.discord.endpoints[].defaultActivityobjectno——
plugins.discord.endpoints[].defaultActivity.namestringyes——
plugins.discord.endpoints[].defaultActivity.typestring: "PLAYING", "STREAMING", "LISTENING", "WATCHING", "COMPETING"yes——
plugins.discord.endpoints[].defaultActivity.urlstringno——
plugins.discord.endpoints[].slashCommandsarray<object>no——
plugins.discord.endpoints[].applicationIdstringno——
plugins.discord.endpoints[].publicKeystringno——
plugins.discord.endpoints[].interactionsPathstringno——
plugins.discord.endpoints[].commandPrefixstringno——
plugins.discord.endpoints[].idstringyes—Discord bot name
plugins.discord.commandPrefixstringno""命令前缀(默认 '' 无前缀,任意文本按命令匹配;如 '/' 要求 / 开头)。endpoints[i] 可逐项覆盖

email ​

plugins/adapters/email/schema.json

PathTypeRequiredDefaultDescription
plugins.email.masterstring | numberno—框架 master(email address;AI/工具权限、endpoint 管理)。endpoints[i].master 可逐项覆盖
plugins.email.trustedarray<string | number>no—框架 trusted 用户列表(弱于 master)。endpoints[i].trusted 可逐项追加
plugins.email.endpointsarray<object>yes—多账号:一个插件实例挂多个 endpoint。每项与顶层字段同构(id 必填,其余覆盖顶层)
plugins.email.endpoints[].masterstring | numberno—本 endpoint 的框架 master(email address);覆盖顶层 master
plugins.email.endpoints[].trustedarray<string | number>no—本 endpoint 的 trusted 列表
plugins.email.endpoints[].smtpobjectyes——
plugins.email.endpoints[].smtp.hoststringyes——
plugins.email.endpoints[].smtp.portnumberyes——
plugins.email.endpoints[].smtp.securebooleanyes——
plugins.email.endpoints[].smtp.authobjectyes——
plugins.email.endpoints[].smtp.auth.userstringyes——
plugins.email.endpoints[].smtp.auth.passstringyes——
plugins.email.endpoints[].imapobjectyes——
plugins.email.endpoints[].imap.hoststringyes——
plugins.email.endpoints[].imap.portnumberyes——
plugins.email.endpoints[].imap.tlsbooleanyes——
plugins.email.endpoints[].imap.userstringyes——
plugins.email.endpoints[].imap.passwordstringyes——
plugins.email.endpoints[].imap.checkIntervalnumberno60000—
plugins.email.endpoints[].imap.reconnectIntervalnumberno5000—
plugins.email.endpoints[].imap.mailboxstringno"INBOX"—
plugins.email.endpoints[].imap.markSeenbooleannotrue—
plugins.email.endpoints[].attachmentsobjectno——
plugins.email.endpoints[].attachments.enabledbooleannofalse—
plugins.email.endpoints[].attachments.downloadPathstringno——
plugins.email.endpoints[].attachments.maxFileSizenumberno——
plugins.email.endpoints[].attachments.allowedTypesarray<string>no——
plugins.email.endpoints[].commandPrefixstringno——
plugins.email.endpoints[].idstringyes—Email bot name
plugins.email.commandPrefixstringno""命令前缀(默认 '' 无前缀,任意文本按命令匹配;如 '/' 要求 / 开头)。endpoints[i] 可逐项覆盖

github ​

plugins/adapters/github/schema.json

PathTypeRequiredDefaultDescription
plugins.github.hoststringno—GitHub Enterprise hostname (default github.com)
plugins.github.webhook_pathstringno"/github/webhook"—
plugins.github.auto_reply_reposarray<string>no—Repos whose Issue/PR comments auto-trigger AI without @bot
plugins.github.bot_loginstringno—Override App bot login (default {slug}[bot])
plugins.github.workspace_rootstringno—Managed git workspace root
plugins.github.masterstring | numberno—框架 master(GitHub user login or id;AI/工具权限、endpoint 管理)。endpoints[i].master 可逐项覆盖
plugins.github.trustedarray<string | number>no—框架 trusted 用户列表(弱于 master)。endpoints[i].trusted 可逐项追加
plugins.github.endpointsarray<object>yes—多账号:一个插件实例挂多个 endpoint
plugins.github.endpoints[].masterstring | numberno—本 endpoint 的框架 master(GitHub user login or id);覆盖顶层 master
plugins.github.endpoints[].trustedarray<string | number>no—本 endpoint 的 trusted 列表
plugins.github.endpoints[].app_idstring | numberyes—GitHub App ID
plugins.github.endpoints[].private_keystringyes—GitHub App private key (PEM content or file path)
plugins.github.endpoints[].webhook_secretstringno—Webhook HMAC secret; enables httpHostToken POST route
plugins.github.endpoints[].idstringyes—GitHub App bot name
plugins.github.endpoints[].hoststringno—GitHub Enterprise hostname
plugins.github.endpoints[].webhook_pathstringno—Webhook route path
plugins.github.endpoints[].auto_reply_reposarray<string>no—Repos whose comments auto-trigger AI
plugins.github.endpoints[].bot_loginstringno—Override App bot login
plugins.github.endpoints[].workspace_rootstringno—Managed git workspace root
plugins.github.endpoints[].commandPrefixstringno—本 endpoint 的命令前缀
plugins.github.commandPrefixstringno""命令前缀(默认 '' 无前缀,任意文本按命令匹配;如 '/' 要求 / 开头)。endpoints[i] 可逐项覆盖

icqq ​

plugins/adapters/icqq/schema.json

PathTypeRequiredDefaultDescription
plugins.icqq.masterstring | numberyes—框架 master QQ uin(/approve、AI/工具权限);endpoints[i].master 可逐项覆盖
plugins.icqq.trustedarray<string | number>no—框架 trusted QQ uin 列表(弱于 master)
plugins.icqq.passwordstringno—QQ 密码(可选,不填则扫码登录)
plugins.icqq.platformnumber: 1, 2, 3, 4, 5, 6, 7no1登录设备平台:1=Android, 2=aPad, 3=Watch, 4=iMac, 5=iPad, 6=Tim, 7=Custom
plugins.icqq.verstringno—协议版本号,仅在对应 platform 有多个版本时有效,不填则使用最新版本
plugins.icqq.signApiAddrstringno—签名服务器地址;未配置时若安装了 @icqqjs/qqsign 则自动使用本地签名
plugins.icqq.dataDirstringno—数据存储文件夹路径,默认为主模块下的 data 文件夹
plugins.icqq.autoReconnectbooleannotrue断线后是否自动重连(默认 true)
plugins.icqq.outboundMediastring: "file", "base64"no"file"出站媒体模式:file=落盘本地路径(默认); base64=CQ base64:// 内联
plugins.icqq.ignoreSelfbooleannotrue群聊和频道中是否过滤自己的消息(默认 true)
plugins.icqq.resendbooleannofalse被风控时是否尝试用分片发送(默认 false)
plugins.icqq.cacheGroupMemberbooleannotrue是否缓存群员列表(默认 true);群多时(500+)会多占约 100MB+ 内存
plugins.icqq.autoServerbooleannotrue是否自动选择最优服务器(默认 true)
plugins.icqq.qqntbooleannotrue是否使用 QQNT 协议(默认 true)
plugins.icqq.ntLoginbooleanno—是否使用 NT 登录方式
plugins.icqq.endpointsarray<object>yes—多账号:一个插件实例挂多个 endpoint。每项与顶层字段同构(id 必填,其余覆盖顶层)
plugins.icqq.endpoints[].idstringyes—QQ uin
plugins.icqq.endpoints[].masterstring | numberno—本 endpoint 的 master QQ uin;覆盖顶层 master
plugins.icqq.endpoints[].trustedarray<string | number>no—本 endpoint 的 trusted 列表
plugins.icqq.endpoints[].passwordstringno—本 endpoint 的 QQ 密码
plugins.icqq.endpoints[].platformnumber: 1, 2, 3, 4, 5, 6, 7no—登录设备平台:1=Android, 2=aPad, 3=Watch, 4=iMac, 5=iPad, 6=Tim, 7=Custom
plugins.icqq.endpoints[].verstringno—协议版本号
plugins.icqq.endpoints[].signApiAddrstringno—签名服务器地址
plugins.icqq.endpoints[].dataDirstringno—数据存储文件夹路径
plugins.icqq.endpoints[].autoReconnectbooleanno—断线后是否自动重连
plugins.icqq.endpoints[].outboundMediastring: "file", "base64"no—出站媒体模式
plugins.icqq.endpoints[].ignoreSelfbooleanno—是否过滤自己的消息
plugins.icqq.endpoints[].resendbooleanno—被风控时是否分片发送
plugins.icqq.endpoints[].cacheGroupMemberbooleanno—是否缓存群员列表
plugins.icqq.endpoints[].autoServerbooleanno—是否自动选择最优服务器
plugins.icqq.endpoints[].qqntbooleanno—是否使用 QQNT 协议
plugins.icqq.endpoints[].ntLoginbooleanno—是否使用 NT 登录方式
plugins.icqq.endpoints[].commandPrefixstringno—本 endpoint 的命令前缀
plugins.icqq.commandPrefixstringno""命令前缀(默认 '' 无前缀)。endpoints[i] 可逐项覆盖

kook ​

plugins/adapters/kook/schema.json

PathTypeRequiredDefaultDescription
plugins.kook.connectionstring: "websocket", "webhook"no"websocket"WebSocket gateway (default). webhook requires httpHostToken, verify_token, and a public HTTPS callback URL.
plugins.kook.webhookPathstringno"/kook/webhook"POST path registered via httpHostToken when connection is webhook.
plugins.kook.data_dirstringno——
plugins.kook.timeoutnumberno10000—
plugins.kook.max_retrynumberno3—
plugins.kook.ignorestring: "bot", "self"no"bot"—
plugins.kook.logLevelstring: "trace", "debug", "info", "warn", "error", "fatal", "mark", "off"no"info"—
plugins.kook.masterstring | numberno—框架 master(KOOK user id;AI/工具权限、endpoint 管理)。endpoints[i].master 可逐项覆盖
plugins.kook.trustedarray<string | number>no—框架 trusted 用户列表(弱于 master)。endpoints[i].trusted 可逐项追加
plugins.kook.endpointsarray<object>yes—多账号:每项定义一个 endpoint,id/token 必填,其余字段覆盖实例默认值
plugins.kook.endpoints[].masterstring | numberno—本 endpoint 的框架 master(KOOK user id);覆盖顶层 master
plugins.kook.endpoints[].trustedarray<string | number>no—本 endpoint 的 trusted 列表
plugins.kook.endpoints[].tokenstringyes—KOOK bot token
plugins.kook.endpoints[].connectionstring: "websocket", "webhook"no——
plugins.kook.endpoints[].webhookPathstringno——
plugins.kook.endpoints[].verify_tokenstringno—KOOK developer console verify token (required for webhook mode).
plugins.kook.endpoints[].encrypt_keystringno—Optional Encrypt Key when message encryption is enabled in KOOK console.
plugins.kook.endpoints[].data_dirstringno——
plugins.kook.endpoints[].timeoutnumberno——
plugins.kook.endpoints[].max_retrynumberno——
plugins.kook.endpoints[].ignorestring: "bot", "self"no——
plugins.kook.endpoints[].logLevelstring: "trace", "debug", "info", "warn", "error", "fatal", "mark", "off"no——
plugins.kook.endpoints[].commandPrefixstringno——
plugins.kook.endpoints[].idstringyes—KOOK bot name
plugins.kook.commandPrefixstringno""命令前缀(默认 '' 无前缀,任意文本按命令匹配;如 '/' 要求 / 开头)。endpoints[i] 可逐项覆盖

lark ​

plugins/adapters/lark/schema.json

PathTypeRequiredDefaultDescription
plugins.lark.webhookPathstringno"/lark/webhook"—
plugins.lark.apiBaseUrlstringno——
plugins.lark.isFeishubooleannotrue—
plugins.lark.masterstring | numberno—框架 master(Lark/Feishu open_id or user_id;AI/工具权限、endpoint 管理)。endpoints[i].master 可逐项覆盖
plugins.lark.trustedarray<string | number>no—框架 trusted 用户列表(弱于 master)。endpoints[i].trusted 可逐项追加
plugins.lark.endpointsarray<object>yes—多账号:一个插件实例挂多个 endpoint。每项与顶层字段同构(id 必填,其余覆盖顶层)
plugins.lark.endpoints[].masterstring | numberno—本 endpoint 的框架 master(Lark/Feishu open_id or user_id);覆盖顶层 master
plugins.lark.endpoints[].trustedarray<string | number>no—本 endpoint 的 trusted 列表
plugins.lark.endpoints[].appIdstringyes—Lark app ID
plugins.lark.endpoints[].appSecretstringyes—Lark app secret
plugins.lark.endpoints[].encryptKeystringno—Lark encrypt key
plugins.lark.endpoints[].verificationTokenstringno—Lark verification token
plugins.lark.endpoints[].webhookPathstringno——
plugins.lark.endpoints[].apiBaseUrlstringno——
plugins.lark.endpoints[].isFeishubooleanno——
plugins.lark.endpoints[].commandPrefixstringno——
plugins.lark.endpoints[].idstringyes—Lark bot name
plugins.lark.commandPrefixstringno""命令前缀(默认 '' 无前缀,任意文本按命令匹配;如 '/' 要求 / 开头)。endpoints[i] 可逐项覆盖

line ​

plugins/adapters/line/schema.json

PathTypeRequiredDefaultDescription
plugins.line.webhookPathstringno"/line/webhook"—
plugins.line.apiBaseUrlstringno"https://api.line.me"—
plugins.line.masterstring | numberno—框架 master(LINE user id;AI/工具权限、endpoint 管理)。endpoints[i].master 可逐项覆盖
plugins.line.trustedarray<string | number>no—框架 trusted 用户列表(弱于 master)。endpoints[i].trusted 可逐项追加
plugins.line.endpointsarray<object>yes—多账号:一个插件实例挂多个 endpoint。每项与顶层字段同构(id 必填,其余覆盖顶层)
plugins.line.endpoints[].masterstring | numberno—本 endpoint 的框架 master(LINE user id);覆盖顶层 master
plugins.line.endpoints[].trustedarray<string | number>no—本 endpoint 的 trusted 列表
plugins.line.endpoints[].channelSecretstringyes—LINE channel secret
plugins.line.endpoints[].channelAccessTokenstringyes—LINE channel access token
plugins.line.endpoints[].webhookPathstringno——
plugins.line.endpoints[].apiBaseUrlstringno——
plugins.line.endpoints[].commandPrefixstringno——
plugins.line.endpoints[].idstringyes—LINE bot name
plugins.line.commandPrefixstringno""命令前缀(默认 '' 无前缀,任意文本按命令匹配;如 '/' 要求 / 开头)。endpoints[i] 可逐项覆盖

milky ​

plugins/adapters/milky/schema.json

PathTypeRequiredDefaultDescription
plugins.milky.connectionstring: "ws", "sse", "webhook", "wss"no"ws"ws (default), sse (EventSource client), webhook or wss (webhook/wss via httpHostToken)
plugins.milky.reconnect_intervalnumberno5000—
plugins.milky.heartbeat_intervalnumberno30000—
plugins.milky.masterstring | numberno—框架 master(QQ uin;AI/工具权限、endpoint 管理)。endpoints[i].master 可逐项覆盖
plugins.milky.trustedarray<string | number>no—框架 trusted 用户列表(弱于 master)。endpoints[i].trusted 可逐项追加
plugins.milky.endpointsarray<object>yes—多账号:一个插件实例挂多个 endpoint。每项与顶层字段同构(id 必填,其余覆盖顶层)
plugins.milky.endpoints[].masterstring | numberno—本 endpoint 的框架 master(QQ uin);覆盖顶层 master
plugins.milky.endpoints[].trustedarray<string | number>no—本 endpoint 的 trusted 列表
plugins.milky.endpoints[].connectionstring: "ws", "sse", "webhook", "wss"no——
plugins.milky.endpoints[].baseUrlstringyes—Milky HTTP API base URL (required); WS event path is derived as ws(s)😕/host/event
plugins.milky.endpoints[].pathstringno—Path for webhook / reverse-wss
plugins.milky.endpoints[].access_tokenstringno—Milky access token
plugins.milky.endpoints[].reconnect_intervalnumberno——
plugins.milky.endpoints[].heartbeat_intervalnumberno——
plugins.milky.endpoints[].commandPrefixstringno——
plugins.milky.endpoints[].idstringyes—Milky bot name
plugins.milky.commandPrefixstringno""命令前缀(默认 '' 无前缀,任意文本按命令匹配;如 '/' 要求 / 开头)。endpoints[i] 可逐项覆盖

napcat ​

plugins/adapters/napcat/schema.json

PathTypeRequiredDefaultDescription
plugins.napcat.connectionstring: "ws", "wss", "http"no"ws"ws (default), wss (reverse WS), or http (POST webhook + HTTP API outbound)
plugins.napcat.reconnect_intervalnumberno5000—
plugins.napcat.heartbeat_intervalnumberno30000—
plugins.napcat.poll_intervalnumberno30000—
plugins.napcat.masterstring | numberno—框架 master(QQ uin;AI/工具权限、endpoint 管理)。endpoints[i].master 可逐项覆盖
plugins.napcat.trustedarray<string | number>no—框架 trusted 用户列表(弱于 master)。endpoints[i].trusted 可逐项追加
plugins.napcat.endpointsarray<object>yes—多账号:一个插件实例挂多个 endpoint。每项与顶层字段同构(id 必填,其余覆盖顶层)
plugins.napcat.endpoints[].masterstring | numberno—本 endpoint 的框架 master(QQ uin);覆盖顶层 master
plugins.napcat.endpoints[].trustedarray<string | number>no—本 endpoint 的 trusted 列表
plugins.napcat.endpoints[].connectionstring: "ws", "wss", "http"no——
plugins.napcat.endpoints[].urlstringno—NapCat WebSocket URL (required for connection: ws)
plugins.napcat.endpoints[].pathstringno—WS path for reverse-wss
plugins.napcat.endpoints[].http_urlstringno—HTTP API base URL (connection: http outbound)
plugins.napcat.endpoints[].post_pathstringno—HTTP POST event path (connection: http inbound)
plugins.napcat.endpoints[].access_tokenstringno—NapCat access token
plugins.napcat.endpoints[].reconnect_intervalnumberno——
plugins.napcat.endpoints[].heartbeat_intervalnumberno——
plugins.napcat.endpoints[].poll_intervalnumberno——
plugins.napcat.endpoints[].commandPrefixstringno——
plugins.napcat.endpoints[].idstringyes—NapCat bot name
plugins.napcat.commandPrefixstringno""命令前缀(默认 '' 无前缀,任意文本按命令匹配;如 '/' 要求 / 开头)。endpoints[i] 可逐项覆盖

onebot11 ​

plugins/adapters/onebot11/schema.json

PathTypeRequiredDefaultDescription
plugins.onebot11.connectionstring: "ws", "wss"no"ws"connection: ws (forward WS client, default) or wss (reverse WS via httpHostToken)
plugins.onebot11.reconnect_intervalnumberno5000—
plugins.onebot11.heartbeat_intervalnumberno30000—
plugins.onebot11.masterstring | numberno—框架 master(platform user id;AI/工具权限、endpoint 管理)。endpoints[i].master 可逐项覆盖
plugins.onebot11.trustedarray<string | number>no—框架 trusted 用户列表(弱于 master)。endpoints[i].trusted 可逐项追加
plugins.onebot11.endpointsarray<object>yes—多账号:一个插件实例挂多个 endpoint。每项与顶层字段同构(id 必填,其余覆盖顶层)
plugins.onebot11.endpoints[].masterstring | numberno—本 endpoint 的框架 master(platform user id);覆盖顶层 master
plugins.onebot11.endpoints[].trustedarray<string | number>no—本 endpoint 的 trusted 列表
plugins.onebot11.endpoints[].connectionstring: "ws", "wss"no——
plugins.onebot11.endpoints[].urlstringno—OneBot implementation WebSocket URL (required for connection: ws)
plugins.onebot11.endpoints[].pathstringno—WS path for reverse-wss (connection: wss)
plugins.onebot11.endpoints[].access_tokenstringno—OneBot access token
plugins.onebot11.endpoints[].reconnect_intervalnumberno——
plugins.onebot11.endpoints[].heartbeat_intervalnumberno——
plugins.onebot11.endpoints[].commandPrefixstringno——
plugins.onebot11.endpoints[].idstringyes—OneBot11 bot name
plugins.onebot11.commandPrefixstringno""命令前缀(默认 '' 无前缀,任意文本按命令匹配;如 '/' 要求 / 开头)。endpoints[i] 可逐项覆盖

onebot12 ​

plugins/adapters/onebot12/schema.json

PathTypeRequiredDefaultDescription
plugins.onebot12.connectionstring: "ws", "webhook", "wss"no"ws"ws (default), webhook (httpHostToken POST), or wss (reverse WS via httpHostToken)
plugins.onebot12.reconnect_intervalnumberno5000—
plugins.onebot12.heartbeat_intervalnumberno30000—
plugins.onebot12.masterstring | numberno—框架 master(platform user id;AI/工具权限、endpoint 管理)。endpoints[i].master 可逐项覆盖
plugins.onebot12.trustedarray<string | number>no—框架 trusted 用户列表(弱于 master)。endpoints[i].trusted 可逐项追加
plugins.onebot12.endpointsarray<object>yes—多账号:一个插件实例挂多个 endpoint。每项与顶层字段同构(id 必填,其余覆盖顶层)
plugins.onebot12.endpoints[].masterstring | numberno—本 endpoint 的框架 master(platform user id);覆盖顶层 master
plugins.onebot12.endpoints[].trustedarray<string | number>no—本 endpoint 的 trusted 列表
plugins.onebot12.endpoints[].connectionstring: "ws", "webhook", "wss"no——
plugins.onebot12.endpoints[].urlstringno—OneBot implementation WebSocket URL (required for connection: ws)
plugins.onebot12.endpoints[].pathstringno—HTTP/WS path for webhook or reverse-wss
plugins.onebot12.endpoints[].api_urlstringno—HTTP action endpoint for webhook outbound (required for connection: webhook send)
plugins.onebot12.endpoints[].access_tokenstringno—OneBot access token
plugins.onebot12.endpoints[].reconnect_intervalnumberno——
plugins.onebot12.endpoints[].heartbeat_intervalnumberno——
plugins.onebot12.endpoints[].commandPrefixstringno——
plugins.onebot12.endpoints[].idstringyes—OneBot12 bot name
plugins.onebot12.commandPrefixstringno""命令前缀(默认 '' 无前缀,任意文本按命令匹配;如 '/' 要求 / 开头)。endpoints[i] 可逐项覆盖

qq ​

plugins/adapters/qq/schema.json

PathTypeRequiredDefaultDescription
plugins.qq.modestring: "websocket", "webhook", "middleware"no"websocket"WebSocket gateway (default). webhook/middleware use httpHostToken POST.
plugins.qq.sandboxbooleannofalse—
plugins.qq.botKindstring: "public", "private"no"public"公域/私域:均含 GROUP_AND_C2C_EVENT;频道消息分别为 PUBLIC_GUILD_MESSAGES / GUILD_MESSAGES。未显式配置 intents 时按此展开
plugins.qq.masterstring | numberno—框架 master(endpoint 管理命令、AI/工具权限);openid。endpoints[i].master 可逐项覆盖
plugins.qq.trustedarray<string | number>no—框架 trusted 用户列表(弱于 master)。endpoints[i].trusted 可逐项追加
plugins.qq.intentsarray<string>no—WebSocket Identify intents;省略时按 botKind 自动生成(public→含 PUBLIC_GUILD_MESSAGES)
plugins.qq.accessTokenUrlstringno——
plugins.qq.gatewayUrlstringno——
plugins.qq.webhookPathstringno"/qq/webhook"POST path on httpHostToken for webhook/middleware modes.
plugins.qq.endpointsarray<object>yes—多账号:每项定义一个 endpoint,id/appid/secret 必填,其余字段覆盖实例默认值
plugins.qq.endpoints[].appidstringyes—QQ official bot app ID
plugins.qq.endpoints[].secretstringyes—QQ official bot secret
plugins.qq.endpoints[].modestring: "websocket", "webhook", "middleware"no——
plugins.qq.endpoints[].sandboxbooleanno——
plugins.qq.endpoints[].masterstring | numberno—本 endpoint 的框架 master(openid);覆盖顶层 master
plugins.qq.endpoints[].trustedarray<string | number>no—本 endpoint 的 trusted 列表
plugins.qq.endpoints[].botKindstring: "public", "private"no—覆盖顶层 botKind(公域/私域),用于按 endpoint 生成 intents
plugins.qq.endpoints[].intentsarray<string>no—覆盖顶层 intents
plugins.qq.endpoints[].accessTokenUrlstringno——
plugins.qq.endpoints[].gatewayUrlstringno——
plugins.qq.endpoints[].webhookPathstringno——
plugins.qq.endpoints[].commandPrefixstringno——
plugins.qq.endpoints[].idstringyes—QQ bot name
plugins.qq.commandPrefixstringno""命令前缀(默认 '' 无前缀,任意文本按命令匹配;如 '/' 要求 / 开头)。endpoints[i] 可逐项覆盖

sandbox ​

plugins/adapters/sandbox/schema.json

PathTypeRequiredDefaultDescription
plugins.sandbox.masterstring | numberno—框架 master(sandbox client id (distinct from endpoints[].owner);AI/工具权限、endpoint 管理)。endpoints[i].master 可逐项覆盖
plugins.sandbox.trustedarray<string | number>no—框架 trusted 用户列表(弱于 master)。endpoints[i].trusted 可逐项追加
plugins.sandbox.endpointsarray<object>yes—多账号:一个插件实例挂多个 endpoint。每项与顶层字段同构(id 必填,其余覆盖顶层)
plugins.sandbox.endpoints[].masterstring | numberno—本 endpoint 的框架 master(sandbox client id (distinct from endpoints[].owner));覆盖顶层 master
plugins.sandbox.endpoints[].trustedarray<string | number>no—本 endpoint 的 trusted 列表
plugins.sandbox.endpoints[].ownerstringno—Sandbox owner user ID
plugins.sandbox.endpoints[].commandPrefixstringno——
plugins.sandbox.endpoints[].idstringyes—Sandbox bot name
plugins.sandbox.commandPrefixstringno""命令前缀(默认 '' 无前缀,任意文本按命令匹配;如 '/' 要求 / 开头)。endpoints[i] 可逐项覆盖

satori ​

plugins/adapters/satori/schema.json

PathTypeRequiredDefaultDescription
plugins.satori.connectionstring: "ws", "webhook"no"ws"ws (default) or webhook (httpHostToken POST route)
plugins.satori.heartbeat_intervalnumberno10000WS PING interval in milliseconds
plugins.satori.masterstring | numberno—框架 master(platform user id;AI/工具权限、endpoint 管理)。endpoints[i].master 可逐项覆盖
plugins.satori.trustedarray<string | number>no—框架 trusted 用户列表(弱于 master)。endpoints[i].trusted 可逐项追加
plugins.satori.endpointsarray<object>yes—多账号:每项定义一个 endpoint,id/baseUrl 必填,其余字段覆盖实例默认值
plugins.satori.endpoints[].masterstring | numberno—本 endpoint 的框架 master(platform user id);覆盖顶层 master
plugins.satori.endpoints[].trustedarray<string | number>no—本 endpoint 的 trusted 列表
plugins.satori.endpoints[].baseUrlstringyes—Satori SDK HTTP/WS base URL (e.g. http://127.0.0.1:5140)
plugins.satori.endpoints[].connectionstring: "ws", "webhook"no——
plugins.satori.endpoints[].tokenstringno—Bearer token for API and WS IDENTIFY
plugins.satori.endpoints[].pathstringno—Webhook POST path (connection: webhook)
plugins.satori.endpoints[].heartbeat_intervalnumberno——
plugins.satori.endpoints[].commandPrefixstringno——
plugins.satori.endpoints[].idstringyes—Satori bot name
plugins.satori.commandPrefixstringno""命令前缀(默认 '' 无前缀,任意文本按命令匹配;如 '/' 要求 / 开头)。endpoints[i] 可逐项覆盖

slack ​

plugins/adapters/slack/schema.json

PathTypeRequiredDefaultDescription
plugins.slack.socketModebooleannotruePrefer Socket Mode (default). Set false for HTTP Events via httpHostToken.
plugins.slack.webhookPathstringno"/slack/events"—
plugins.slack.clientPingTimeoutnumberno15000Socket Mode client ping timeout (ms)
plugins.slack.masterstring | numberno—框架 master(Slack user id;AI/工具权限、endpoint 管理)。endpoints[i].master 可逐项覆盖
plugins.slack.trustedarray<string | number>no—框架 trusted 用户列表(弱于 master)。endpoints[i].trusted 可逐项追加
plugins.slack.endpointsarray<object>yes—多账号:一个插件实例挂多个 endpoint。每项与顶层字段同构(id 必填,其余覆盖顶层)
plugins.slack.endpoints[].masterstring | numberno—本 endpoint 的框架 master(Slack user id);覆盖顶层 master
plugins.slack.endpoints[].trustedarray<string | number>no—本 endpoint 的 trusted 列表
plugins.slack.endpoints[].tokenstringyes—Bot User OAuth Token (xoxb-...)
plugins.slack.endpoints[].signingSecretstringno—Required for HTTP Events API (socketMode: false)
plugins.slack.endpoints[].appTokenstringno—App-Level Token (xapp-...) for Socket Mode
plugins.slack.endpoints[].socketModebooleanno——
plugins.slack.endpoints[].webhookPathstringno——
plugins.slack.endpoints[].clientPingTimeoutnumberno——
plugins.slack.endpoints[].commandPrefixstringno——
plugins.slack.endpoints[].idstringyes—Slack bot name
plugins.slack.commandPrefixstringno""命令前缀(默认 '' 无前缀,任意文本按命令匹配;如 '/' 要求 / 开头)。endpoints[i] 可逐项覆盖

telegram ​

plugins/adapters/telegram/schema.json

PathTypeRequiredDefaultDescription
plugins.telegram.pollingbooleannotrueLong-poll getUpdates (default). Set false for webhook via httpHostToken.
plugins.telegram.webhookobjectno—Webhook settings when polling is false.
plugins.telegram.webhook.domainstringno——
plugins.telegram.webhook.pathstringno"/telegram/webhook"—
plugins.telegram.webhook.secretTokenstringno—Verified via X-Telegram-Bot-Api-Secret-Token.
plugins.telegram.allowedUpdatesarray<string>no["message","callback_query"]—
plugins.telegram.apiBaseUrlstringno"https://api.telegram.org"—
plugins.telegram.masterstring | numberno—框架 master(Telegram user id;AI/工具权限、endpoint 管理)。endpoints[i].master 可逐项覆盖
plugins.telegram.trustedarray<string | number>no—框架 trusted 用户列表(弱于 master)。endpoints[i].trusted 可逐项追加
plugins.telegram.endpointsarray<object>yes—多账号:一个插件实例挂多个 endpoint。每项与顶层字段同构(id 必填,其余覆盖顶层)
plugins.telegram.endpoints[].masterstring | numberno—本 endpoint 的框架 master(Telegram user id);覆盖顶层 master
plugins.telegram.endpoints[].trustedarray<string | number>no—本 endpoint 的 trusted 列表
plugins.telegram.endpoints[].tokenstringyes—Telegram bot token
plugins.telegram.endpoints[].pollingbooleanno——
plugins.telegram.endpoints[].webhookobjectno——
plugins.telegram.endpoints[].webhook.domainstringno——
plugins.telegram.endpoints[].webhook.pathstringno——
plugins.telegram.endpoints[].webhook.secretTokenstringno——
plugins.telegram.endpoints[].allowedUpdatesarray<string>no——
plugins.telegram.endpoints[].apiBaseUrlstringno——
plugins.telegram.endpoints[].commandPrefixstringno——
plugins.telegram.endpoints[].idstringyes—Telegram bot name
plugins.telegram.commandPrefixstringno""命令前缀(默认 '' 无前缀,任意文本按命令匹配;如 '/' 要求 / 开头)。endpoints[i] 可逐项覆盖

wechat-mp ​

plugins/adapters/wechat-mp/schema.json

PathTypeRequiredDefaultDescription
plugins.wechat-mp.pathstringno"/wechat/webhook"—
plugins.wechat-mp.encryptbooleannofalse—
plugins.wechat-mp.encryptModestring: "plain", "compatible", "secure"no—Default follows encrypt: 'plain' when encrypt=false, 'compatible' when encrypt=true
plugins.wechat-mp.replyModestring: "passive", "customer_service"no"passive"—
plugins.wechat-mp.passiveReplyTimeoutMsnumberno4500—
plugins.wechat-mp.masterstring | numberno—框架 master(WeChat OpenID;AI/工具权限、endpoint 管理)。endpoints[i].master 可逐项覆盖
plugins.wechat-mp.trustedarray<string | number>no—框架 trusted 用户列表(弱于 master)。endpoints[i].trusted 可逐项追加
plugins.wechat-mp.endpointsarray<object>yes—多账号:一个插件实例挂多个 endpoint。每项与顶层字段同构(id 必填,其余覆盖顶层)
plugins.wechat-mp.endpoints[].masterstring | numberno—本 endpoint 的框架 master(WeChat OpenID);覆盖顶层 master
plugins.wechat-mp.endpoints[].trustedarray<string | number>no—本 endpoint 的 trusted 列表
plugins.wechat-mp.endpoints[].appIdstringyes—WeChat MP app ID
plugins.wechat-mp.endpoints[].appSecretstringyes—WeChat MP app secret
plugins.wechat-mp.endpoints[].tokenstringyes—WeChat MP callback token
plugins.wechat-mp.endpoints[].encodingAESKeystringno—WeChat MP encoding AES key
plugins.wechat-mp.endpoints[].pathstringno——
plugins.wechat-mp.endpoints[].encryptbooleanno——
plugins.wechat-mp.endpoints[].encryptModestring: "plain", "compatible", "secure"no——
plugins.wechat-mp.endpoints[].replyModestring: "passive", "customer_service"no——
plugins.wechat-mp.endpoints[].passiveReplyTimeoutMsnumberno——
plugins.wechat-mp.endpoints[].commandPrefixstringno——
plugins.wechat-mp.endpoints[].idstringyes—WeChat MP bot name
plugins.wechat-mp.commandPrefixstringno""命令前缀(默认 '' 无前缀,任意文本按命令匹配;如 '/' 要求 / 开头)。endpoints[i] 可逐项覆盖

wecom ​

plugins/adapters/wecom/schema.json

PathTypeRequiredDefaultDescription
plugins.wecom.webhookPathstringno"/wecom/callback"—
plugins.wecom.apiBaseUrlstringno"https://qyapi.weixin.qq.com"—
plugins.wecom.masterstring | numberno—框架 master(WeCom userid;AI/工具权限、endpoint 管理)。endpoints[i].master 可逐项覆盖
plugins.wecom.trustedarray<string | number>no—框架 trusted 用户列表(弱于 master)。endpoints[i].trusted 可逐项追加
plugins.wecom.endpointsarray<object>yes—多账号:一个插件实例挂多个 endpoint。每项与顶层字段同构(id 必填,其余覆盖顶层)
plugins.wecom.endpoints[].masterstring | numberno—本 endpoint 的框架 master(WeCom userid);覆盖顶层 master
plugins.wecom.endpoints[].trustedarray<string | number>no—本 endpoint 的 trusted 列表
plugins.wecom.endpoints[].corpIdstringyes—WeCom corp ID
plugins.wecom.endpoints[].agentSecretstringyes—WeCom agent secret
plugins.wecom.endpoints[].tokenstringyes—WeCom callback token
plugins.wecom.endpoints[].encodingAESKeystringyes—WeCom encoding AES key
plugins.wecom.endpoints[].webhookPathstringno——
plugins.wecom.endpoints[].apiBaseUrlstringno——
plugins.wecom.endpoints[].commandPrefixstringno——
plugins.wecom.endpoints[].idstringyes—WeCom bot name
plugins.wecom.commandPrefixstringno""命令前缀(默认 '' 无前缀,任意文本按命令匹配;如 '/' 要求 / 开头)。endpoints[i] 可逐项覆盖

plugins/adapters/weixin-ilink/schema.json

PathTypeRequiredDefaultDescription
plugins.weixin-ilink.botAgentstringno——
plugins.weixin-ilink.baseUrlstringno"https://ilinkai.weixin.qq.com"—
plugins.weixin-ilink.cdnBaseUrlstringno"https://novac2c.cdn.weixin.qq.com/c2c"—
plugins.weixin-ilink.longPollTimeoutMsnumberno35000—
plugins.weixin-ilink.dataDirstringno"data/weixin-ilink"Endpoint state root for credentials, cursors, context tokens, and media
plugins.weixin-ilink.masterstring | numberno—框架 master(Weixin user id;AI/工具权限、endpoint 管理)。endpoints[i].master 可逐项覆盖
plugins.weixin-ilink.trustedarray<string | number>no—框架 trusted 用户列表(弱于 master)。endpoints[i].trusted 可逐项追加
plugins.weixin-ilink.endpointsarray<object>yes—多账号:一个插件实例挂多个 endpoint。每项与顶层字段同构(id 必填,其余覆盖顶层)
plugins.weixin-ilink.endpoints[].masterstring | numberno—本 endpoint 的框架 master(Weixin user id);覆盖顶层 master
plugins.weixin-ilink.endpoints[].trustedarray<string | number>no—本 endpoint 的 trusted 列表
plugins.weixin-ilink.endpoints[].botTokenstringno—iLink bot token; omit to load endpoint state or start QR login
plugins.weixin-ilink.endpoints[].idstringyes—Weixin iLink bot name
plugins.weixin-ilink.endpoints[].botAgentstringno——
plugins.weixin-ilink.endpoints[].baseUrlstringno——
plugins.weixin-ilink.endpoints[].cdnBaseUrlstringno——
plugins.weixin-ilink.endpoints[].longPollTimeoutMsnumberno——
plugins.weixin-ilink.endpoints[].dataDirstringno—Endpoint state root
plugins.weixin-ilink.endpoints[].commandPrefixstringno—本 endpoint 的命令前缀
plugins.weixin-ilink.commandPrefixstringno""命令前缀(默认 '' 无前缀,任意文本按命令匹配;如 '/' 要求 / 开头)。endpoints[i] 可逐项覆盖

process-monitor ​

plugins/features/process-monitor/schema.json

PathTypeRequiredDefaultDescription
plugins.process-monitor.enabledbooleannotrue是否启用进程监控
plugins.process-monitor.notifyOnStartbooleannotrue首次启动时通知
plugins.process-monitor.notifyOnRestartbooleannotrue正常重启时通知
plugins.process-monitor.notifyOnCrashbooleannotrue异常崩溃重启时通知
plugins.process-monitor.notifyChannelsarray<object>no[]通知渠道(slice-1 仅 webhook 生效)
plugins.process-monitor.notifyChannels[].typestring: "webhook"yes——
plugins.process-monitor.notifyChannels[].targetstringyes——

blackjack ​

plugins/games/blackjack/schema.json

This Schema declares no fields.

dice-duel ​

plugins/games/dice-duel/schema.json

This Schema declares no fields.

dungeon-expedition ​

plugins/games/dungeon-expedition/schema.json

This Schema declares no fields.

guess-number ​

plugins/games/guess-number/schema.json

This Schema declares no fields.

hub ​

plugins/games/hub/schema.json

This Schema declares no fields.

idiom-chain ​

plugins/games/idiom-chain/schema.json

This Schema declares no fields.

rps ​

plugins/games/rps/schema.json

This Schema declares no fields.

text-adventure ​

plugins/games/text-adventure/schema.json

This Schema declares no fields.

tic-tac-toe ​

plugins/games/tic-tac-toe/schema.json

This Schema declares no fields.

word-riddle ​

plugins/games/word-riddle/schema.json

This Schema declares no fields.

activity-feedback ​

plugins/services/activity-feedback/schema.json

PathTypeRequiredDefaultDescription
plugins.activity-feedback.enabledbooleannotrueEnable activity feedback for this plugin instance.
plugins.activity-feedback.defaultsobjectno—Default policy for all platforms and Endpoints.
plugins.activity-feedback.defaults.enabledbooleannotrueEnable this policy layer.
plugins.activity-feedback.defaults.phasesobjectno—Feedback policy keyed by lifecycle phase.
plugins.activity-feedback.defaults.phases.queuedobjectno——
plugins.activity-feedback.defaults.phases.queued.privateobjectno——
plugins.activity-feedback.defaults.phases.queued.private.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.defaults.phases.queued.private.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.defaults.phases.queued.private.messagestringno—Status text for type=message.
plugins.activity-feedback.defaults.phases.queued.private.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.defaults.phases.queued.private.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.defaults.phases.queued.private.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.defaults.phases.queued.groupobjectno——
plugins.activity-feedback.defaults.phases.queued.group.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.defaults.phases.queued.group.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.defaults.phases.queued.group.messagestringno—Status text for type=message.
plugins.activity-feedback.defaults.phases.queued.group.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.defaults.phases.queued.group.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.defaults.phases.queued.group.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.defaults.phases.queued.channelobjectno——
plugins.activity-feedback.defaults.phases.queued.channel.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.defaults.phases.queued.channel.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.defaults.phases.queued.channel.messagestringno—Status text for type=message.
plugins.activity-feedback.defaults.phases.queued.channel.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.defaults.phases.queued.channel.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.defaults.phases.queued.channel.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.defaults.phases.activeobjectno——
plugins.activity-feedback.defaults.phases.active.privateobjectno——
plugins.activity-feedback.defaults.phases.active.private.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.defaults.phases.active.private.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.defaults.phases.active.private.messagestringno—Status text for type=message.
plugins.activity-feedback.defaults.phases.active.private.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.defaults.phases.active.private.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.defaults.phases.active.private.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.defaults.phases.active.groupobjectno——
plugins.activity-feedback.defaults.phases.active.group.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.defaults.phases.active.group.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.defaults.phases.active.group.messagestringno—Status text for type=message.
plugins.activity-feedback.defaults.phases.active.group.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.defaults.phases.active.group.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.defaults.phases.active.group.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.defaults.phases.active.channelobjectno——
plugins.activity-feedback.defaults.phases.active.channel.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.defaults.phases.active.channel.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.defaults.phases.active.channel.messagestringno—Status text for type=message.
plugins.activity-feedback.defaults.phases.active.channel.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.defaults.phases.active.channel.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.defaults.phases.active.channel.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.defaults.phases.thinkingobjectno——
plugins.activity-feedback.defaults.phases.thinking.privateobjectno——
plugins.activity-feedback.defaults.phases.thinking.private.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.defaults.phases.thinking.private.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.defaults.phases.thinking.private.messagestringno—Status text for type=message.
plugins.activity-feedback.defaults.phases.thinking.private.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.defaults.phases.thinking.private.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.defaults.phases.thinking.private.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.defaults.phases.thinking.groupobjectno——
plugins.activity-feedback.defaults.phases.thinking.group.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.defaults.phases.thinking.group.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.defaults.phases.thinking.group.messagestringno—Status text for type=message.
plugins.activity-feedback.defaults.phases.thinking.group.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.defaults.phases.thinking.group.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.defaults.phases.thinking.group.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.defaults.phases.thinking.channelobjectno——
plugins.activity-feedback.defaults.phases.thinking.channel.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.defaults.phases.thinking.channel.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.defaults.phases.thinking.channel.messagestringno—Status text for type=message.
plugins.activity-feedback.defaults.phases.thinking.channel.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.defaults.phases.thinking.channel.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.defaults.phases.thinking.channel.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.defaults.phases.schedule_startobjectno——
plugins.activity-feedback.defaults.phases.schedule_start.privateobjectno——
plugins.activity-feedback.defaults.phases.schedule_start.private.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.defaults.phases.schedule_start.private.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.defaults.phases.schedule_start.private.messagestringno—Status text for type=message.
plugins.activity-feedback.defaults.phases.schedule_start.private.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.defaults.phases.schedule_start.private.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.defaults.phases.schedule_start.private.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.defaults.phases.schedule_start.groupobjectno——
plugins.activity-feedback.defaults.phases.schedule_start.group.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.defaults.phases.schedule_start.group.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.defaults.phases.schedule_start.group.messagestringno—Status text for type=message.
plugins.activity-feedback.defaults.phases.schedule_start.group.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.defaults.phases.schedule_start.group.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.defaults.phases.schedule_start.group.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.defaults.phases.schedule_start.channelobjectno——
plugins.activity-feedback.defaults.phases.schedule_start.channel.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.defaults.phases.schedule_start.channel.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.defaults.phases.schedule_start.channel.messagestringno—Status text for type=message.
plugins.activity-feedback.defaults.phases.schedule_start.channel.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.defaults.phases.schedule_start.channel.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.defaults.phases.schedule_start.channel.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.defaults.phases.schedule_finishobjectno——
plugins.activity-feedback.defaults.phases.schedule_finish.privateobjectno——
plugins.activity-feedback.defaults.phases.schedule_finish.private.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.defaults.phases.schedule_finish.private.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.defaults.phases.schedule_finish.private.messagestringno—Status text for type=message.
plugins.activity-feedback.defaults.phases.schedule_finish.private.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.defaults.phases.schedule_finish.private.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.defaults.phases.schedule_finish.private.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.defaults.phases.schedule_finish.groupobjectno——
plugins.activity-feedback.defaults.phases.schedule_finish.group.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.defaults.phases.schedule_finish.group.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.defaults.phases.schedule_finish.group.messagestringno—Status text for type=message.
plugins.activity-feedback.defaults.phases.schedule_finish.group.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.defaults.phases.schedule_finish.group.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.defaults.phases.schedule_finish.group.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.defaults.phases.schedule_finish.channelobjectno——
plugins.activity-feedback.defaults.phases.schedule_finish.channel.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.defaults.phases.schedule_finish.channel.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.defaults.phases.schedule_finish.channel.messagestringno—Status text for type=message.
plugins.activity-feedback.defaults.phases.schedule_finish.channel.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.defaults.phases.schedule_finish.channel.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.defaults.phases.schedule_finish.channel.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.defaults.phases.schedule_errorobjectno——
plugins.activity-feedback.defaults.phases.schedule_error.privateobjectno——
plugins.activity-feedback.defaults.phases.schedule_error.private.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.defaults.phases.schedule_error.private.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.defaults.phases.schedule_error.private.messagestringno—Status text for type=message.
plugins.activity-feedback.defaults.phases.schedule_error.private.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.defaults.phases.schedule_error.private.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.defaults.phases.schedule_error.private.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.defaults.phases.schedule_error.groupobjectno——
plugins.activity-feedback.defaults.phases.schedule_error.group.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.defaults.phases.schedule_error.group.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.defaults.phases.schedule_error.group.messagestringno—Status text for type=message.
plugins.activity-feedback.defaults.phases.schedule_error.group.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.defaults.phases.schedule_error.group.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.defaults.phases.schedule_error.group.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.defaults.phases.schedule_error.channelobjectno——
plugins.activity-feedback.defaults.phases.schedule_error.channel.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.defaults.phases.schedule_error.channel.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.defaults.phases.schedule_error.channel.messagestringno—Status text for type=message.
plugins.activity-feedback.defaults.phases.schedule_error.channel.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.defaults.phases.schedule_error.channel.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.defaults.phases.schedule_error.channel.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.platformsobjectno—Platform overrides keyed by platform name; values use the same shape as defaults.
plugins.activity-feedback.platforms.<platform>.enabledbooleannotrueEnable this policy layer.
plugins.activity-feedback.platforms.<platform>.phasesobjectno—Feedback policy keyed by lifecycle phase.
plugins.activity-feedback.platforms.<platform>.phases.queuedobjectno——
plugins.activity-feedback.platforms.<platform>.phases.queued.privateobjectno——
plugins.activity-feedback.platforms.<platform>.phases.queued.private.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.platforms.<platform>.phases.queued.private.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.platforms.<platform>.phases.queued.private.messagestringno—Status text for type=message.
plugins.activity-feedback.platforms.<platform>.phases.queued.private.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.platforms.<platform>.phases.queued.private.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.platforms.<platform>.phases.queued.private.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.platforms.<platform>.phases.queued.groupobjectno——
plugins.activity-feedback.platforms.<platform>.phases.queued.group.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.platforms.<platform>.phases.queued.group.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.platforms.<platform>.phases.queued.group.messagestringno—Status text for type=message.
plugins.activity-feedback.platforms.<platform>.phases.queued.group.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.platforms.<platform>.phases.queued.group.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.platforms.<platform>.phases.queued.group.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.platforms.<platform>.phases.queued.channelobjectno——
plugins.activity-feedback.platforms.<platform>.phases.queued.channel.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.platforms.<platform>.phases.queued.channel.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.platforms.<platform>.phases.queued.channel.messagestringno—Status text for type=message.
plugins.activity-feedback.platforms.<platform>.phases.queued.channel.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.platforms.<platform>.phases.queued.channel.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.platforms.<platform>.phases.queued.channel.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.platforms.<platform>.phases.activeobjectno——
plugins.activity-feedback.platforms.<platform>.phases.active.privateobjectno——
plugins.activity-feedback.platforms.<platform>.phases.active.private.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.platforms.<platform>.phases.active.private.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.platforms.<platform>.phases.active.private.messagestringno—Status text for type=message.
plugins.activity-feedback.platforms.<platform>.phases.active.private.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.platforms.<platform>.phases.active.private.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.platforms.<platform>.phases.active.private.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.platforms.<platform>.phases.active.groupobjectno——
plugins.activity-feedback.platforms.<platform>.phases.active.group.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.platforms.<platform>.phases.active.group.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.platforms.<platform>.phases.active.group.messagestringno—Status text for type=message.
plugins.activity-feedback.platforms.<platform>.phases.active.group.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.platforms.<platform>.phases.active.group.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.platforms.<platform>.phases.active.group.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.platforms.<platform>.phases.active.channelobjectno——
plugins.activity-feedback.platforms.<platform>.phases.active.channel.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.platforms.<platform>.phases.active.channel.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.platforms.<platform>.phases.active.channel.messagestringno—Status text for type=message.
plugins.activity-feedback.platforms.<platform>.phases.active.channel.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.platforms.<platform>.phases.active.channel.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.platforms.<platform>.phases.active.channel.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.platforms.<platform>.phases.thinkingobjectno——
plugins.activity-feedback.platforms.<platform>.phases.thinking.privateobjectno——
plugins.activity-feedback.platforms.<platform>.phases.thinking.private.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.platforms.<platform>.phases.thinking.private.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.platforms.<platform>.phases.thinking.private.messagestringno—Status text for type=message.
plugins.activity-feedback.platforms.<platform>.phases.thinking.private.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.platforms.<platform>.phases.thinking.private.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.platforms.<platform>.phases.thinking.private.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.platforms.<platform>.phases.thinking.groupobjectno——
plugins.activity-feedback.platforms.<platform>.phases.thinking.group.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.platforms.<platform>.phases.thinking.group.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.platforms.<platform>.phases.thinking.group.messagestringno—Status text for type=message.
plugins.activity-feedback.platforms.<platform>.phases.thinking.group.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.platforms.<platform>.phases.thinking.group.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.platforms.<platform>.phases.thinking.group.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.platforms.<platform>.phases.thinking.channelobjectno——
plugins.activity-feedback.platforms.<platform>.phases.thinking.channel.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.platforms.<platform>.phases.thinking.channel.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.platforms.<platform>.phases.thinking.channel.messagestringno—Status text for type=message.
plugins.activity-feedback.platforms.<platform>.phases.thinking.channel.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.platforms.<platform>.phases.thinking.channel.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.platforms.<platform>.phases.thinking.channel.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.platforms.<platform>.phases.schedule_startobjectno——
plugins.activity-feedback.platforms.<platform>.phases.schedule_start.privateobjectno——
plugins.activity-feedback.platforms.<platform>.phases.schedule_start.private.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.platforms.<platform>.phases.schedule_start.private.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.platforms.<platform>.phases.schedule_start.private.messagestringno—Status text for type=message.
plugins.activity-feedback.platforms.<platform>.phases.schedule_start.private.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.platforms.<platform>.phases.schedule_start.private.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.platforms.<platform>.phases.schedule_start.private.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.platforms.<platform>.phases.schedule_start.groupobjectno——
plugins.activity-feedback.platforms.<platform>.phases.schedule_start.group.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.platforms.<platform>.phases.schedule_start.group.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.platforms.<platform>.phases.schedule_start.group.messagestringno—Status text for type=message.
plugins.activity-feedback.platforms.<platform>.phases.schedule_start.group.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.platforms.<platform>.phases.schedule_start.group.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.platforms.<platform>.phases.schedule_start.group.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.platforms.<platform>.phases.schedule_start.channelobjectno——
plugins.activity-feedback.platforms.<platform>.phases.schedule_start.channel.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.platforms.<platform>.phases.schedule_start.channel.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.platforms.<platform>.phases.schedule_start.channel.messagestringno—Status text for type=message.
plugins.activity-feedback.platforms.<platform>.phases.schedule_start.channel.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.platforms.<platform>.phases.schedule_start.channel.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.platforms.<platform>.phases.schedule_start.channel.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.platforms.<platform>.phases.schedule_finishobjectno——
plugins.activity-feedback.platforms.<platform>.phases.schedule_finish.privateobjectno——
plugins.activity-feedback.platforms.<platform>.phases.schedule_finish.private.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.platforms.<platform>.phases.schedule_finish.private.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.platforms.<platform>.phases.schedule_finish.private.messagestringno—Status text for type=message.
plugins.activity-feedback.platforms.<platform>.phases.schedule_finish.private.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.platforms.<platform>.phases.schedule_finish.private.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.platforms.<platform>.phases.schedule_finish.private.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.platforms.<platform>.phases.schedule_finish.groupobjectno——
plugins.activity-feedback.platforms.<platform>.phases.schedule_finish.group.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.platforms.<platform>.phases.schedule_finish.group.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.platforms.<platform>.phases.schedule_finish.group.messagestringno—Status text for type=message.
plugins.activity-feedback.platforms.<platform>.phases.schedule_finish.group.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.platforms.<platform>.phases.schedule_finish.group.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.platforms.<platform>.phases.schedule_finish.group.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.platforms.<platform>.phases.schedule_finish.channelobjectno——
plugins.activity-feedback.platforms.<platform>.phases.schedule_finish.channel.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.platforms.<platform>.phases.schedule_finish.channel.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.platforms.<platform>.phases.schedule_finish.channel.messagestringno—Status text for type=message.
plugins.activity-feedback.platforms.<platform>.phases.schedule_finish.channel.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.platforms.<platform>.phases.schedule_finish.channel.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.platforms.<platform>.phases.schedule_finish.channel.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.platforms.<platform>.phases.schedule_errorobjectno——
plugins.activity-feedback.platforms.<platform>.phases.schedule_error.privateobjectno——
plugins.activity-feedback.platforms.<platform>.phases.schedule_error.private.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.platforms.<platform>.phases.schedule_error.private.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.platforms.<platform>.phases.schedule_error.private.messagestringno—Status text for type=message.
plugins.activity-feedback.platforms.<platform>.phases.schedule_error.private.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.platforms.<platform>.phases.schedule_error.private.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.platforms.<platform>.phases.schedule_error.private.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.platforms.<platform>.phases.schedule_error.groupobjectno——
plugins.activity-feedback.platforms.<platform>.phases.schedule_error.group.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.platforms.<platform>.phases.schedule_error.group.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.platforms.<platform>.phases.schedule_error.group.messagestringno—Status text for type=message.
plugins.activity-feedback.platforms.<platform>.phases.schedule_error.group.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.platforms.<platform>.phases.schedule_error.group.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.platforms.<platform>.phases.schedule_error.group.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.platforms.<platform>.phases.schedule_error.channelobjectno——
plugins.activity-feedback.platforms.<platform>.phases.schedule_error.channel.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.platforms.<platform>.phases.schedule_error.channel.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.platforms.<platform>.phases.schedule_error.channel.messagestringno—Status text for type=message.
plugins.activity-feedback.platforms.<platform>.phases.schedule_error.channel.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.platforms.<platform>.phases.schedule_error.channel.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.platforms.<platform>.phases.schedule_error.channel.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.endpointsobjectno—Endpoint overrides keyed by platform:endpointKey; values use the same shape as defaults.
plugins.activity-feedback.endpoints.<platform:endpointKey>.enabledbooleannotrueEnable this policy layer.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phasesobjectno—Feedback policy keyed by lifecycle phase.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.queuedobjectno——
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.queued.privateobjectno——
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.queued.private.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.queued.private.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.queued.private.messagestringno—Status text for type=message.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.queued.private.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.queued.private.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.queued.private.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.queued.groupobjectno——
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.queued.group.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.queued.group.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.queued.group.messagestringno—Status text for type=message.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.queued.group.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.queued.group.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.queued.group.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.queued.channelobjectno——
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.queued.channel.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.queued.channel.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.queued.channel.messagestringno—Status text for type=message.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.queued.channel.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.queued.channel.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.queued.channel.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.activeobjectno——
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.active.privateobjectno——
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.active.private.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.active.private.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.active.private.messagestringno—Status text for type=message.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.active.private.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.active.private.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.active.private.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.active.groupobjectno——
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.active.group.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.active.group.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.active.group.messagestringno—Status text for type=message.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.active.group.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.active.group.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.active.group.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.active.channelobjectno——
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.active.channel.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.active.channel.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.active.channel.messagestringno—Status text for type=message.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.active.channel.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.active.channel.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.active.channel.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.thinkingobjectno——
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.thinking.privateobjectno——
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.thinking.private.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.thinking.private.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.thinking.private.messagestringno—Status text for type=message.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.thinking.private.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.thinking.private.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.thinking.private.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.thinking.groupobjectno——
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.thinking.group.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.thinking.group.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.thinking.group.messagestringno—Status text for type=message.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.thinking.group.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.thinking.group.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.thinking.group.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.thinking.channelobjectno——
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.thinking.channel.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.thinking.channel.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.thinking.channel.messagestringno—Status text for type=message.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.thinking.channel.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.thinking.channel.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.thinking.channel.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_startobjectno——
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_start.privateobjectno——
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_start.private.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_start.private.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_start.private.messagestringno—Status text for type=message.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_start.private.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_start.private.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_start.private.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_start.groupobjectno——
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_start.group.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_start.group.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_start.group.messagestringno—Status text for type=message.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_start.group.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_start.group.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_start.group.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_start.channelobjectno——
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_start.channel.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_start.channel.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_start.channel.messagestringno—Status text for type=message.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_start.channel.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_start.channel.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_start.channel.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_finishobjectno——
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_finish.privateobjectno——
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_finish.private.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_finish.private.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_finish.private.messagestringno—Status text for type=message.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_finish.private.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_finish.private.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_finish.private.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_finish.groupobjectno——
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_finish.group.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_finish.group.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_finish.group.messagestringno—Status text for type=message.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_finish.group.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_finish.group.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_finish.group.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_finish.channelobjectno——
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_finish.channel.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_finish.channel.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_finish.channel.messagestringno—Status text for type=message.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_finish.channel.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_finish.channel.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_finish.channel.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_errorobjectno——
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_error.privateobjectno——
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_error.private.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_error.private.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_error.private.messagestringno—Status text for type=message.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_error.private.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_error.private.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_error.private.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_error.groupobjectno——
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_error.group.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_error.group.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_error.group.messagestringno—Status text for type=message.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_error.group.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_error.group.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_error.group.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_error.channelobjectno——
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_error.channel.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_error.channel.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_error.channel.messagestringno—Status text for type=message.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_error.channel.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_error.channel.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.endpoints.<platform:endpointKey>.phases.schedule_error.channel.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.scheduleobjectno—Schedule-only start, finish, and error feedback.
plugins.activity-feedback.schedule.phasesobjectno——
plugins.activity-feedback.schedule.phases.startobjectno——
plugins.activity-feedback.schedule.phases.start.privateobjectno——
plugins.activity-feedback.schedule.phases.start.private.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.schedule.phases.start.private.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.schedule.phases.start.private.messagestringno—Status text for type=message.
plugins.activity-feedback.schedule.phases.start.private.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.schedule.phases.start.private.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.schedule.phases.start.private.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.schedule.phases.start.groupobjectno——
plugins.activity-feedback.schedule.phases.start.group.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.schedule.phases.start.group.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.schedule.phases.start.group.messagestringno—Status text for type=message.
plugins.activity-feedback.schedule.phases.start.group.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.schedule.phases.start.group.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.schedule.phases.start.group.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.schedule.phases.start.channelobjectno——
plugins.activity-feedback.schedule.phases.start.channel.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.schedule.phases.start.channel.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.schedule.phases.start.channel.messagestringno—Status text for type=message.
plugins.activity-feedback.schedule.phases.start.channel.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.schedule.phases.start.channel.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.schedule.phases.start.channel.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.schedule.phases.finishobjectno——
plugins.activity-feedback.schedule.phases.finish.privateobjectno——
plugins.activity-feedback.schedule.phases.finish.private.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.schedule.phases.finish.private.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.schedule.phases.finish.private.messagestringno—Status text for type=message.
plugins.activity-feedback.schedule.phases.finish.private.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.schedule.phases.finish.private.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.schedule.phases.finish.private.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.schedule.phases.finish.groupobjectno——
plugins.activity-feedback.schedule.phases.finish.group.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.schedule.phases.finish.group.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.schedule.phases.finish.group.messagestringno—Status text for type=message.
plugins.activity-feedback.schedule.phases.finish.group.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.schedule.phases.finish.group.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.schedule.phases.finish.group.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.schedule.phases.finish.channelobjectno——
plugins.activity-feedback.schedule.phases.finish.channel.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.schedule.phases.finish.channel.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.schedule.phases.finish.channel.messagestringno—Status text for type=message.
plugins.activity-feedback.schedule.phases.finish.channel.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.schedule.phases.finish.channel.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.schedule.phases.finish.channel.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.schedule.phases.errorobjectno——
plugins.activity-feedback.schedule.phases.error.privateobjectno——
plugins.activity-feedback.schedule.phases.error.private.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.schedule.phases.error.private.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.schedule.phases.error.private.messagestringno—Status text for type=message.
plugins.activity-feedback.schedule.phases.error.private.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.schedule.phases.error.private.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.schedule.phases.error.private.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.schedule.phases.error.groupobjectno——
plugins.activity-feedback.schedule.phases.error.group.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.schedule.phases.error.group.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.schedule.phases.error.group.messagestringno—Status text for type=message.
plugins.activity-feedback.schedule.phases.error.group.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.schedule.phases.error.group.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.schedule.phases.error.group.platformConfigobjectno—Platform-specific options.
plugins.activity-feedback.schedule.phases.error.channelobjectno——
plugins.activity-feedback.schedule.phases.error.channel.typestring: "reaction", "message", "typing", "none"no—How the phase is presented.
plugins.activity-feedback.schedule.phases.error.channel.emojistringno—Reaction value for type=reaction.
plugins.activity-feedback.schedule.phases.error.channel.messagestringno—Status text for type=message.
plugins.activity-feedback.schedule.phases.error.channel.autoRemovebooleannotrueRemove the feedback after the phase stops.
plugins.activity-feedback.schedule.phases.error.channel.removeDelaynumberno—Delay before removal in milliseconds; negative values are normalized to zero at runtime.
plugins.activity-feedback.schedule.phases.error.channel.platformConfigobjectno—Platform-specific options.

60s ​

plugins/utils/60s/schema.json

PathTypeRequiredDefaultDescription
plugins.60s.apiBasestringno"https://60s.viki.moe"60s API base URL

code-runner ​

plugins/utils/code-runner/schema.json

This Schema declares no fields.

content-moderation ​

plugins/utils/content-moderation/schema.json

PathTypeRequiredDefaultDescription
plugins.content-moderation.enabledbooleannotrue总开关
plugins.content-moderation.onErrorstring: "open", "closed"no"open"审查源失败时的全局默认策略:open=视为通过,closed=视为 critical
plugins.content-moderation.maskCharstringno"*"文本打码字符
plugins.content-moderation.replyTemplatestringno"消息含不当内容,已拦截。"reply 动作时的提示文案
plugins.content-moderation.mastersarray<string>no[]额外视为 master 的 userId(兜底,与 endpoint master 合并)
plugins.content-moderation.inboundobjectno——
plugins.content-moderation.inbound.enabledbooleannotrue—
plugins.content-moderation.inbound.bypassMastersbooleannotruemaster 跳过入站审查
plugins.content-moderation.inbound.whitelistobjectno——
plugins.content-moderation.inbound.whitelist.userIdsarray<string>no[]—
plugins.content-moderation.inbound.whitelist.conversationIdsarray<string>no[]—
plugins.content-moderation.outboundobjectno——
plugins.content-moderation.outbound.enabledbooleannotrue—
plugins.content-moderation.outbound.bypassbooleannofalse为 true 时跳过出站审查
plugins.content-moderation.actionsobjectno—severity → 动作(字符串或数组);缺省用偏严默认表
plugins.content-moderation.actions.passstring: "allow", "log", "reply", "redact", "drop", "recall" | array<string: "allow", "log", "reply", "redact", "drop", "recall">no——
plugins.content-moderation.actions.lowstring: "allow", "log", "reply", "redact", "drop", "recall" | array<string: "allow", "log", "reply", "redact", "drop", "recall">no——
plugins.content-moderation.actions.mediumstring: "allow", "log", "reply", "redact", "drop", "recall" | array<string: "allow", "log", "reply", "redact", "drop", "recall">no——
plugins.content-moderation.actions.highstring: "allow", "log", "reply", "redact", "drop", "recall" | array<string: "allow", "log", "reply", "redact", "drop", "recall">no——
plugins.content-moderation.actions.criticalstring: "allow", "log", "reply", "redact", "drop", "recall" | array<string: "allow", "log", "reply", "redact", "drop", "recall">no——
plugins.content-moderation.sourcesarray<object>no[]—
plugins.content-moderation.sources[].idstringyes——
plugins.content-moderation.sources[].typestring: "local", "http"yes——
plugins.content-moderation.sources[].enabledbooleannotrue—
plugins.content-moderation.sources[].onErrorstring: "open", "closed"no——
plugins.content-moderation.sources[].includeBuiltinbooleannotrue是否合并内置分级违禁词词库
plugins.content-moderation.sources[].wordsarray<string | object>no[]自定义词:字符串(用 defaultSeverity)或
plugins.content-moderation.sources[].wordFilesarray<string>no[]词库文件;行格式 word / severity:word / word|severity
plugins.content-moderation.sources[].defaultSeveritystring: "low", "medium", "high", "critical"no"high"未标注分级的自定义词默认 severity
plugins.content-moderation.sources[].severitystring: "low", "medium", "high", "critical"no"high"兼容旧字段,等同 defaultSeverity
plugins.content-moderation.sources[].urlstringno——
plugins.content-moderation.sources[].headersobjectno——
plugins.content-moderation.sources[].timeoutMsnumberno5000—
plugins.content-moderation.sources[].forceUploadbooleannofalse强制下载图片后上传,不传 URL

group-suite ​

plugins/utils/group-suite/schema.json

PathTypeRequiredDefaultDescription
plugins.group-suite.keywordReplybooleannofalse—
plugins.group-suite.basePointsMinnumberno10—
plugins.group-suite.basePointsMaxnumberno30—
plugins.group-suite.streakBonusnumberno5—
plugins.group-suite.streakCapnumberno50—
plugins.group-suite.rankSizenumberno10—
plugins.group-suite.teachMaxPerGroupnumberno200—
plugins.group-suite.teachCooldownMsnumberno3000—
plugins.group-suite.teachAllowRegexbooleannotrue—
plugins.group-suite.teachPageSizenumberno10—

plugins/utils/link-poster/schema.json

This Schema declares no fields.

lottery ​

plugins/utils/lottery/schema.json

PathTypeRequiredDefaultDescription
plugins.lottery.pickCountnumberno5—
plugins.lottery.scheduleCronstringno"0 0 18 * * *"—
plugins.lottery.historyLimitnumberno500—
plugins.lottery.scheduleEnabledbooleannotrue—
plugins.lottery.backtestEnabledbooleannotrue—
plugins.lottery.backtestWindownumberno50—
plugins.lottery.backtestRandomTrialsnumberno64—
plugins.lottery.backtestMinHistorynumberno30—
plugins.lottery.backtestAdaptivebooleannotrue—
plugins.lottery.weightPersistEnabledbooleannotrue—
plugins.lottery.weightHoldoutFallbackbooleannotrue—
plugins.lottery.gamesarray<string>no["kl8","ssq","dlt","fc3d","pl3","pl5"]—
plugins.lottery.pushTargetsarray<object>no[]OutboundHost push destinations for cron/publish reports
plugins.lottery.pushTargets[].adapterstringyes——
plugins.lottery.pushTargets[].endpointIdstringno——
plugins.lottery.pushTargets[].channelTypestringno"private"—
plugins.lottery.pushTargets[].channelIdstringyes——
plugins.lottery.kl8objectno——
plugins.lottery.kl8.pickCountnumberno5—
plugins.lottery.kl8.recommendGroupsnumberno3—
plugins.lottery.kl8.groupStrategiesarray<string>no["balanced","hot","cold"]—

music ​

plugins/utils/music/schema.json

This Schema declares no fields.

qrcode ​

plugins/utils/qrcode/schema.json

This Schema declares no fields.

repeater ​

plugins/utils/repeater/schema.json

PathTypeRequiredDefaultDescription
plugins.repeater.thresholdnumberno3触发复读的最少人数
plugins.repeater.cooldownnumberno30000同一群冷却时间 (ms)
plugins.repeater.maxLengthnumberno200消息长度上限

rss ​

plugins/utils/rss/schema.json

PathTypeRequiredDefaultDescription
plugins.rss.pollCronstringno"0 */5 * * * *"轮询频率 (6 段 Cron 表达式)
plugins.rss.maxPerGroupnumberno30—
plugins.rss.maxItemsnumberno5—
plugins.rss.timeoutnumberno15000—

short-url ​

plugins/utils/short-url/schema.json

This Schema declares no fields.