Skip to content

🛠️ 06 - 配置详解 ​

中文 | English

本章说明 XiaoQing Core 的公开配置、敏感配置、AI 注册表、插件命名空间、网络边界和热重载语义。 插件专项字段由各插件 README 维护。


⚙️ 配置文件 ​

文件内容管理方式
config/config.json公开运行设置、模型 profile 和插件配置从 .example 复制后按部署环境编辑
config/secrets.jsontoken、管理员身份、AI Key 和插件凭据保存在部署主机并限制文件读取权限
config/config.json.example当前公开配置结构随源码版本维护
config/secrets.json.example当前敏感配置结构随源码版本维护

创建本机配置:

bash
cp config/config.json.example config/config.json
cp config/secrets.json.example config/secrets.json

Core 将两个文件组合成带 revision 的只读设置快照。 插件通过作用域 Context 读取自身命名空间。

config.json 顶层 ai 对象维护统一模型注册表,顶层 plugins 对象维护插件公开命名空间。 secrets.json 使用同名 ai 与 plugins 对象保存对应凭据。


⚙️ Core 配置 ​

机器人与命令 ​

字段类型示例值说明
bot_namestring"小青"Bot 的唯一运行时名称,用于名称召唤、群聊门控、聊天人格、历史角色标签和默认上线通知
command_prefixesstring[]["/"]命令前缀列表
require_bot_name_in_groupbooleantrue群聊普通文本的 Bot 名称门控
default_group_idspositive integer[][123456789]broadcast / targeted schedule 未指定 group_ids 时的群目标
timezoneIANA timezone"Asia/Shanghai"Scheduler、context.now() 和业务日期时区

command_prefixes 可配置多个前缀。 Manifest triggers 保存纯命令词,Router 在消息解析阶段处理前缀。 这五项通过 /reload 发布到新 revision,并触发插件后台重载。

OneBot 通信 ​

字段类型示例值与范围说明
enable_ws_clientbooleanfalse主动 OneBot WebSocket Client 开关
onebot_ws_uriabsolute URLws://127.0.0.1:11000/ws主动 WebSocket 地址,支持 ws 与 wss
onebot_http_baseabsolute URLhttp://127.0.0.1:11001OneBot HTTP Action 地址,支持 http 与 https
ws_queue_sizeinteger200,1..10000主动 WS 事件队列,以及 Inbound 等待 backlog
enable_inbound_serverbooleantrueHTTP/WS Inbound Server 开关
inbound_http_baseplaintext listener URLhttp://127.0.0.1:12000HTTP /event Listener 基址,要求显式端口与根路径
inbound_ws_uriplaintext listener URLws://127.0.0.1:12000/wsWebSocket Listener 地址,要求显式端口
inbound_ws_max_workersinteger8,1..128Inbound 事件处理 worker 与 WS fan-out 并发上限
inbound_ws_broadcast_timeout_secondsnumber5.0,0 < value <= 300单个 WebSocket 广播预算
inbound_trusted_tls_proxybooleanfalse受控代理网络的明文 Listener 授权

启用 HTTP 或 WebSocket Inbound 时,secrets.json 顶层 inbound_token 使用非空字符串。 HTTP 与 WebSocket 共享该 token、接纳队列和会话排序。

HTTP 上报端通过 Authorization: Bearer <inbound_token> 提交认证。 标准上报的回复通过 onebot_http_base 配置的 Action API 发送,并在实际投递成功后返回 {}。 因此 HTTP 上报部署同时配置可达的回复通道及其 onebot_token。 开发验收程序可显式提交 X-XiaoQing-Response-Mode: actions 获取动作列表。 调用者承担动作执行责任。 OneBot secret / X-Signature 对应 HMAC 签名,当前入站接口验证 Bearer token。

主动 WebSocket 与 HTTP Action 通过 secrets.json 顶层 onebot_token 使用 Bearer 鉴权。 有效 secrets 快照中的空字符串表示双方约定的匿名 OneBot 连接。

Inbound 的接纳容量为 inbound_ws_max_workers + ws_queue_size。 同一私聊用户、同一群与用户组合各自按接纳顺序串行执行,各会话键之间共享 worker 并行处理。 达到容量时 HTTP 返回过载状态,WebSocket 返回过载响应。

Inbound 网络边界 ​

默认 Listener 地址使用 loopback。 公网入口采用以下路径:

text
公网 HTTPS/WSS
  → Nginx / Caddy TLS 终止与访问控制
  → loopback HTTP/WS
  → XiaoQing Inbound

跨容器受控网络可设置 inbound_trusted_tls_proxy: true,并通过防火墙将 Listener 流量限定到代理来源。

inbound_http_base 使用 http://,inbound_ws_uri 使用 ws://。 XiaoQing Listener 负责明文 HTTP/WS 协议,TLS 终止由外层代理或网络层提供。 配置非 loopback 主机时同时设置 inbound_trusted_tls_proxy: true,并把主机防火墙入口限定到代理来源。

运行时与数据 ​

字段类型默认值与范围生效方式说明
max_concurrencyinteger5,1..1024热重载Dispatcher 全局活动消息上限
data_rootpath string"data"重启插件运行数据根目录
enable_plugin_watcherbooleanfalse热重载插件文件 watcher 开关
plugin_poll_intervalnumber3600,0.01..86400热重载插件文件轮询秒数
session_timeoutnumber300,0 < value <= 604800热重载Session 默认空闲秒数
timezoneIANA timezone"Asia/Shanghai"热重载Scheduler 与业务时钟时区

data_root 可使用项目相对路径或部署主机绝对路径,并保持在 plugins/ 源码树之外。 每个插件获得 data_root/<plugin_name>/。 Core 首次发现 plugins/<name>/data/ 时,将内容原子迁移到新数据根,并把来源目录归档到 data_root/.legacy-plugin-data/<name>/。 修改 data_root 后重启主进程。

插件 watcher 在启动时运行解释器能力探针。 通过探针的环境支持热重载,restart-only 环境通过重启进程应用源码变化。 Watcher 监控插件 Python、根目录 JSON 与 Manifest watch_files,只发布通过完整稳定快照校验的新插件代。

Windows 生产启动 ​

字段示例约束说明
napcat_account"1234567890"空字符串或 5~20 位十进制数字NapCat 启动位置参数
mkl_threading_layer"TBB"空字符串或最长 64 字符的字母、数字、点、下划线和连字符Bot 子进程的 MKL_THREADING_LAYER

scripts/run-bot-monitor.ps1 在创建子进程前读取这些字段。 启动链调用当前 PATH 中的 Python,并保持部署环境对解释器和依赖的所有权。 字段修改在下次启动监控链时生效。

scripts/stop-bot.vbs 是 Windows 双击停服入口。 它调用监控器的 -Stop 模式,通过仓库级互斥量阻止停服期间产生新实例,并按当前仓库脚本路径与 NapCat 可执行文件路径回收进程树。 CIM 命令行读取采用三次有界重试。 提升权限的 SSH、计划任务或管理员终端创建进程时,普通桌面入口显示一次 UAC,提升后的停止实例重新校验 PID、进程名和绝对命令路径。 停服完成后可双击 scripts/run-bot.vbs 重新启动。


⚙️ 插件执行配置 ​

plugin_execution 同时管理异步入口与同步阻塞任务:

json
{
  "plugin_execution": {
    "timeout_seconds": 60,
    "parallel_limit": 4,
    "admission_queue_limit": 64,
    "sync_parallel_limit": 1,
    "sync_queue_limit": 16,
    "failure_threshold": 3,
    "cooldown_seconds": 60,
    "drain_timeout_seconds": 5,
    "global_sync_queue_limit": 256,
    "overrides": {
      "codex": {"timeout_seconds": 0},
      "shell": {"timeout_seconds": 0}
    }
  }
}
字段范围说明
timeout_seconds0 或 0.1..86400单次插件入口预算。0 由插件自身生命周期控制
parallel_limit1..1024parallel 插件入口并发
admission_queue_limit0..10000插件入口等待队列
sync_parallel_limit1..3单插件同步 worker 并发
sync_queue_limit0..10000单插件同步等待队列
failure_threshold1..10000熔断计数阈值
cooldown_seconds0.1..86400熔断冷却时间
drain_timeout_seconds0.1..3600卸载排空预算
global_sync_queue_limit1..100000全局同步等待队列
overridesobject按插件覆盖上述策略

Manifest concurrency: sequential 将该插件入口并发固定为 1。 parallel 使用 parallel_limit。 同步库通过 run_sync() 进入同步预算。

admission_queue_limit 与 sync_queue_limit 表示等待槽数量,值 0 对应零等待槽。 插件入口总接纳容量等于活动槽与等待槽之和。 overrides.<plugin_name> 可提供任意策略子集,省略字段继承全局策略。 JSON null 会触发配置校验错误。 失败次数达到 failure_threshold 后执行 gate 进入 cooldown_seconds 冷却,插件重载使用 drain_timeout_seconds 等待当前代收尾。


⚙️ 日志配置 ​

字段类型示例值说明
log_levelstring"INFO"根日志级别,常用值为 DEBUG、INFO、WARNING、ERROR
log_to_filebooleantrue写入 logs/xiaoqing.log 与 logs/xiaoqing_error.log
log_to_consolebooleantrue控制台输出
log_use_colorbooleantrue交互终端 ANSI 颜色
log_max_size_mbnumber10size 模式主日志与错误日志的单文件阈值
log_backup_countinteger5轮转文件保留数
log_rotationtime / size"time"主日志每日午夜轮转,或按大小轮转

错误日志固定记录 ERROR 及以上并按大小轮转。 插件日志器自动附加插件名和 request ID。 Core 与插件记录 token、Cookie、授权头和密钥字段时使用摘要或脱敏值。 日志 handler 在进程启动阶段创建,修改本节字段后重启主进程。


🧠 AI/VLM 注册表 ​

统一 AI 配置分为四层:

  1. config.ai.providers:服务地址与公开连接参数。
  2. config.ai.models:可复用模型 profile、模型名、模态和请求默认值。
  3. config.plugins.<name>.ai.routes:插件任务到模型 profile 的有序链。
  4. secrets.ai.providers:Provider API Key。

Provider ​

json
{
  "ai": {
    "providers": {
      "deepseek": {
        "api_base": "https://api.deepseek.com",
        "endpoint_path": "/chat/completions",
        "proxy": ""
      }
    }
  }
}
字段类型默认值规则
api_baseabsolute HTTP(S) URL必填包含 scheme 与主机,省略凭据、query 和 fragment
endpoint_pathabsolute URL path/chat/completions以 / 开头,省略 query 与 fragment
proxyabsolute HTTP(S) URL or empty string""当前 Provider 的可选代理

模型 profile ​

json
{
  "ai": {
    "models": {
      "deepseek-flash": {
        "provider": "deepseek",
        "model": "deepseek-flash",
        "modalities": ["text"],
        "request_defaults": {
          "thinking": {"type": "disabled"}
        }
      }
    }
  }
}
字段类型规则
providerstring引用 config.ai.providers 中的名称
modelstring发送给上游 API 的模型名
modalitiesstring[]非空集合,成员为 text、image、audio
request_defaultsobject模型级附加请求字段。Core 保留 model、messages、stream、采样参数和工具字段

插件 route ​

json
{
  "plugins": {
    "xiaoqing_chat": {
      "ai": {
        "routes": {
          "chat": {
            "models": ["chatgpt", "deepseek-flash", "glm-5.2"],
            "temperature": 0.8,
            "max_tokens": 2000,
            "timeout_seconds": 30,
            "total_timeout_seconds": 60
          }
        }
      }
    }
  }
}
字段默认值与范围说明
models必填非空列表按顺序排列主 profile 与 fallback profile
temperature可选,0..2route 采样温度
top_p可选,0..1route nucleus sampling
max_tokens可选,1..1000000route 输出 token 上限
timeout_seconds30,0.1..600单次上游请求预算
total_timeout_secondsmax(timeout, 60),0.1..1800全部重试与 fallback 的总预算
max_retry1,0..10每个 profile 的重试次数
retry_interval_seconds0.5,0..60指数退避基数
fallback_onCore 默认错误集合触发下一 profile 的错误类别
request_defaults{}route 级附加请求字段

AI 参数的唯一配置入口 ​

chat-latest 使用固定采样默认值。Core 为该模型省略 temperature 和 top_p,并将统一的 max_tokens 输出预算转换为上游的 max_completion_tokens。其他模型沿用路由采样参数。

gpt-6-luna 同样使用 max_completion_tokens。通过当前 Chat Completions 接口调用工具时,在模型的 request_defaults 中设置 "reasoning_effort": "none";该模式保留路由的 temperature 和 top_p。

常规采样参数、输出预算、单次超时、总超时和重试统一放在 config.plugins.<plugin>.ai.routes.<route>。供应商连接信息放在 config.ai.providers,模型定义放在 config.ai.models,密钥放在 secrets.ai.providers。可选的 model_aliases 提供命令短名称。/xc model default 自动选择 routes.chat.models 中第一个可用的 profile。

XiaoQing Chat 从这些路由生成类型化的运行时参数快照。日常回复使用 chat;规划、记忆检索、摘要和表达学习使用 reasoning;回复审查使用 checker;图片理解使用 vision。Agent 的执行与交付检查使用 agent,任务分流使用 triage。常规插件调用沿用路由参数。明确要求长文时会提高输出预算和超时;图片分析被截断时会提高输出预算。可选工作和整项 Agent 任务仍受各自的业务时限约束。

plugins/xiaoqing_chat/config/xiaoqing_config.json 管理人设、记忆和参与行为。旧 AI 字段会触发迁移提示并指出主配置位置:将 temperature、top_p、max_tokens、前后台超时与重试、规划请求超时、回复审查预算、视觉请求参数移到对应路由。深度聊天的采样参数沿用聊天路由。删除 default_model_alias,默认模型由路由顺序决定。行为文件中的 ai 注册表会触发明确错误。

DEBUG 日志记录最终采用的路由、模型 profile、采样值、输出预算、请求超时和重试策略。记录内容限定为调用参数元数据,密钥和消息正文保持私密。

Provider secret ​

json
{
  "ai": {
    "providers": {
      "deepseek": {
        "api_key": "replace-with-provider-key"
      }
    }
  }
}

每个 Provider 在 secrets.ai.providers.<provider_name>.api_key 保存 API Key。 模型级 request_defaults 先合入请求,route 级默认值随后覆盖,调用参数最后覆盖采样与预算字段。

AI Service 先调用 route 中首个具备密钥的 profile,并对 transport、timeout、rate limit、server error、model unavailable、invalid response 和 empty response 执行有界重试与顺序 fallback。 fallback_on 还可选择 request_timeout 与 conflict。 认证、权限、请求参数和配置错误由当前调用插件处理。 total_timeout_seconds 覆盖整条模型链。

供应商凭据块缺失、api_key 缺失、空字符串和纯空白字符串都会使对应模型暂时不可用。Core 在请求前按顺序跳过这些条目,可选模型列表只包含可用项。显式固定到缺密钥模型、整条路由缺少可用密钥时会报配置错误。无效地址、未知模型引用和错误密钥类型仍会触发校验。上游返回认证失败时沿用原有错误处理规则。


⚙️ 插件配置命名空间 ​

公开插件设置位于:

text
config.plugins.<plugin_name>

插件敏感设置位于:

text
secrets.plugins.<plugin_name>

插件通过以下接口读取:

python
context.get_config("path.to.value")
context.get_secret("path.to.value")
context.get_settings_snapshot()

Core 插件选择 ​

路径示例说明
plugins.smalltalk_provider"xiaoqing_chat"Dispatcher 的全局闲聊 provider,可选 smalltalk 或 xiaoqing_chat

Chat 与 Pendo ​

路径示例值说明
plugins.chat.daily_user_limit20单用户每日成功调用额度,范围 1..1000000
plugins.chat.daily_global_limit100全局每日成功调用额度,范围 1..1000000
plugins.pendo.web_enabledtruePendo Web 生命周期开关
plugins.pendo.web_host"127.0.0.1"Web Listener 主机
plugins.pendo.web_port12001Web Listener 端口,范围 1..65535
plugins.pendo.web_session_cookie_securefalseHTTPS 部署使用 true,为浏览器会话 Cookie 添加 Secure
plugins.pendo.web_demo_enabledfalseWeb Demo 空间开关
plugins.pendo.ai.routes.parseroute object自然语言结构化解析模型链

Pendo 的五个 Web 字段按配置 revision 原子发布,监听地址变化会重建插件拥有的 Web Server。 登录 Code 与浏览器会话有效期为 7 天,Widget Token 有效期为 365 天。 Pendo 配置与 Web 说明认证、Demo 与数据目录。

ADS Paper 与 XiaoQing Chat AI ​

路径说明
plugins.ads_paper.ai.routes.summaryADS 论文 AI 摘要 route
plugins.xiaoqing_chat.ai.routes.chat主回复 route
plugins.xiaoqing_chat.ai.routes.checker回复检查 route
plugins.xiaoqing_chat.ai.routes.reasoning规划与推理 route
plugins.xiaoqing_chat.ai.routes.vision图片理解 route,profile 需要 image modality
plugins.xiaoqing_chat.ai.model_aliases用户别名到 route profile 的映射

四条 XiaoQing Chat route 分别拥有模型顺序、单次超时、总超时和重试策略。 发行配置的 checker route 通过 request_defaults.thinking.type = "disabled" 关闭思考以缩短审查延迟。 行为、参与、记忆和表达参数位于 plugins/xiaoqing_chat/config/xiaoqing_config.json,也可写在 config.plugins.xiaoqing_chat 下,两者合并时文件中的值优先。 XiaoQing Chat 配置 逐组说明这些字段。

XiaoQing Agent ​

有人叫小青做事时的任务代理,所有人可用、能力按各自权限,默认关闭:

路径默认说明
plugins.xiaoqing_agent.enabledfalse总开关。关闭时 xiaoqing_chat 照常回复,与没有安装 agent 时一致,修改后下一条消息生效
plugins.xiaoqing_agent.ai.routes.agent必填执行 route,模型需支持 tools 调用
plugins.xiaoqing_agent.ai.routes.triage复用 agent“聊天还是做事”判断 route,建议快速、关闭思考的模型
plugins.xiaoqing_agent.inline_wait_seconds12当轮等待结果的秒数,超出后先回一句再后台交付
plugins.xiaoqing_agent.task_timeout_seconds1800单个任务总时长
plugins.xiaoqing_agent.max_steps40单个任务的模型轮数
plugins.xiaoqing_agent.max_admin_tasks3Bot 管理员的任务同时运行数
plugins.xiaoqing_agent.max_member_tasks4其他人的任务合计同时运行数。0 表示只有 Bot 管理员能用
plugins.xiaoqing_agent.max_tasks_per_member1其他人每人同时运行的任务数

agent 使用发起人的命令权限。每条命令分别检查自身权限。Python、Shell 和文件读写跟随 /shell。SSH 跟随 /ssh。Codex 跟随 /codex。plugin.json 将这三条命令限定为 Bot 管理员使用。 全部字段、工具与数据目录见 XiaoQing Agent。

QingSSH ​

公开预算字段位于 plugins.qingssh:

字段组示例字段作用
命令command_timeout_seconds=30远端命令预算。0 交给管理员主动停止
QQ actionqq_max_actions=6单次结果 action 数
QQ 文本qq_max_text_chars=10000、qq_max_message_chars=1800累计文本与单消息预算
首尾预览qq_head_chars=6000、qq_tail_chars=2000长输出预览保留量
投递qq_send_interval_seconds=0.35、qq_send_timeout_seconds=5action 间隔与单次等待预算
归档archive_max_bytes=67108864、archive_tail_bytes=1048576、archive_retention_files=20命令归档大小、尾部与数量预算

连接定义、Host Key、认证材料和跳板设置位于 secrets.plugins.qingssh,由 /ssh add 等管理员命令管理。 QingSSH 配置 提供连接 schema。

Codex ​

公开作业策略位于 plugins.codex:

字段组示例字段作用
队列max_parallel_jobs=2、per_session_queue_limit=10全局并行与单会话等待任务
进程spawn_timeout_seconds=30、job_timeout_seconds=3600CLI 启动与作业时限
输出max_stdout_bytes、max_stderr_bytes、max_json_line_bytes、max_final_output_bytesstdout、stderr、JSONL 与最终结果预算
QQmax_qq_text_chars=60000、max_qq_images=10聊天文本与图片数量预算
制品扫描artifact_scan_max_entries=5000、artifact_scan_max_depth=8作业制品遍历预算
图片max_image_artifacts、max_image_bytes、max_image_total_bytes、max_image_pixels、max_image_frames图片数量、字节和解码预算
沙箱sandbox="workspace-write"read-only、workspace-write、danger-full-access
审批approval_policy="never"untrusted、on-failure、on-request、never
仓库skip_git_repo_check=trueCodex CLI Git 仓库检查开关

工作目录、允许根目录、保留期、紧急磁盘阈值和 arXiv 摘要会话等扩展字段见 Codex 配置。

Shell 与 Smalltalk ​

路径示例说明
plugins.shell.terminal.backend"direct"direct 通过 create_subprocess_exec 启动外部程序。git-bash 通过 Git Bash 执行命令文本
plugins.shell.terminal.executableGit Bash 绝对路径git-bash 后端的解释器路径
plugins.smalltalk.voice_probability0纯文本闲聊转语音概率,范围 0..1

Shell 命令启用列表、工作目录与审计开关位于 secrets.plugins.shell。 Shell 配置 说明两种后端。 插件使用手册 说明全部 31 个插件的配置入口与数据位置。


⚙️ Secrets ​

Core 顶层敏感字段:

字段说明
inbound_tokenHTTP/WS Inbound Bearer token
onebot_token主动 WebSocket 与 HTTP Action Bearer token
admin_user_idsBot 管理员 QQ 列表
ai.providers.<name>.api_keyAI Provider API Key
plugins.<name>插件私有凭据

inbound_token 在启用 Inbound Listener 时使用非空高熵字符串。 onebot_token 与 OneBot 实现保持一致。 空字符串对应双方约定的匿名模式。 admin_user_ids 使用正整数 QQ 列表。

示例 secrets 中的插件字段:

命名空间字段用途
plugins.arxiv_filterfeishu_webhook飞书推送 Webhook
plugins.flickrapi_keyFlickr App Garden 公共只读 API Key
plugins.wolframalphaappidWolfram|Alpha App ID
plugins.voicesubscription_key、region、voice_name、style、role、proxyAzure Speech 凭据、音色与代理
plugins.chattoken、bot_id、proxyCoze API 凭据与代理
plugins.twitteruser_id、headers.authorization、cookies、proxy、max_pagesX/Twitter 抓取身份、会话和页数预算
plugins.signin.yingshijufengapp_id、kdt_id、access_token、sid影视飓风有赞签到凭据
plugins.ads_paperads_tokenNASA ADS API Token

QingSSH、Shell 与 Codex 的管理员命令会维护各自 secret 命名空间。 字段 schema 位于对应插件 README。 生产 secrets 使用随机高熵 token,并通过文件权限、备份策略和主机访问控制保护。 反向代理可增加来源限制、速率限制与外层认证。


⚙️ 配置热重载 ​

管理员命令:

text
/reload

发布流程:

  1. ConfigManager 连续读取稳定文件快照。
  2. JSON、结构、范围、地址和敏感来源状态完成校验。
  3. ConfigManager 生成新 revision。
  4. 应用层串行发布管理员、凭据、插件视图、AI route、网络端点和调度参数。
  5. 插件配置订阅者接收同一 revision。

生效矩阵 ​

配置类别生效方式
Bot 名称、前缀、默认群、Session、并发、时区/reload 或配置 watcher
OneBot 地址、开关、队列与 token已确认 revision 发布后重建连接
Inbound 地址、开关、worker、队列与 token已确认 revision 发布后由候选 Listener 切换代次
plugin_execution 与插件 watcher 策略/reload 或配置 watcher
AI Provider、profile、route 与 API Key已确认 revision 发布后由下一次 AI 调用读取
插件公开配置与私有凭据已确认 revision 发布后由插件读取
有效的外部 secrets.json 单文件候选管理员核对私聊字段摘要后执行 /reload
data_root、日志字段、napcat_account、mkl_threading_layer重启主进程或生产启动链
插件源码、Manifest 与 watch_files/reload、插件 watcher 或 restart-only 环境的进程重启

普通配置校验异常时继续使用 last-known-good 快照。 敏感来源缺失、损坏、不可读或与新公开配置尚未确认配对时立即进入 fail-closed 状态,撤销网络凭据与运行时管理员视图。 管理员私聊中的 /set_secret 适用于已有 secret 路径,由 Core 完成持锁写入和 revision 发布。

配置 watcher 将分别保存的新文件代视为独立来源事件。 当前公开配置签名与已确认版本一致、当前来源对可信且外部 secrets 文件完整有效时,新文件代作为待确认候选保存。 运行时继续使用已确认 secrets,revision 与凭据代保持当前值。 Core 使用当前可信 OneBot 通道私聊全部当前管理员,通知包含文件有效状态及新增、删除、修改的字段路径,所有字段值保持隐藏。 /reload 会重新读取稳定磁盘来源并原子发布候选。

新公开配置可先发布。 与该来源尚未确认配对的 secrets 进入 INCONSISTENT 撤权状态。 主动 WebSocket 是唯一控制通道的部署采用“停止服务 → 原子保存两个完整文件 → 启动服务”,启动读取会确认新的来源对。 保留独立受保护 Inbound 的实例可在文件稳定后通过该通道执行 /reload。

单个配置文件上限为 8 MiB,JSON 树深度上限为 64,节点上限为 100000。 Core 拒绝非有限数字、重复不稳定读取和超出预算的来源。 部署脚本在停服窗口内先写临时文件并原子替换,再启动服务。

网络地址或 token 变化会唤醒主动 WebSocket 任务,并通过候选 Listener 提交 Inbound 新代。 同一时间只有已提交代接纳新事件。


✅ 生产配置检查表 ​

  • bot_name、命令前缀和默认群符合目标 QQ 场景。
  • inbound_token 使用高熵随机值。
  • Inbound Listener 绑定 loopback 或受控代理网络。
  • 反向代理负责 TLS、来源策略和速率限制。
  • admin_user_ids 只包含当前管理员。
  • AI Key 与插件凭据位于 secrets。
  • 有效的 secrets 单文件替换由管理员核对字段摘要并执行 /reload;公开配置变更与双来源替换安排在停服窗口内。
  • data_root、日志目录和备份目录具有明确所有权。
  • plugin_execution 为长任务插件配置合适预算。
  • Pendo Web Cookie Secure 与 HTTPS 部署保持一致。
  • 正式启动前完成 bash scripts/run_full_uat.sh --plan-only 和完整 UAT。

🧭 下一步 ​

快逃文库 · 2019 年起由 Torch Light 编写 · 基于 MIT 许可发布

加载中...