Skip to content

⚙️ 04 - Core 模块 ​

本章是 core/ 的职责索引,帮助维护者从运行现象定位到代码所有者。组件关系见 系统架构,公开插件接口见 API 参考。


⏰ 应用装配与生命周期 ​

模块职责
app.pyXiaoQingApp 稳定门面、组件引用和公开启动入口
app_support.py应用装配所需的纯解析与辅助函数
app_config_apply.py配置 revision、敏感状态和运行参数的串行发布
app_plugin_context.py插件 Context、principal、capability 和服务视图签发
app_lifecycle.py启动事务、回滚、任务监督和逆序关闭
app_ingress.pyInbound Listener 候选绑定、提交和旧代排空
app_delivery.pyOneBot Action 投递、回执和测试事件收集
app_identity.py管理员状态、principal authority 和身份快照
app_scheduling.py插件 schedule 的发布、替换和撤销
app_plugin_watch.py插件 watcher 的启动、监督、退避和关闭
lifecycle.py通用资源栈、异步回收和关闭预算

XiaoQingApp 负责所有权编排。具体业务逻辑位于对应服务模块,启动与关闭路径由 app_lifecycle.py 统一组织。


⌨️ 消息分发与命令 ​

模块职责
message.pyOneBot 消息段标准化、文本提取和消息属性解析
dispatcher.pyMessageContext 构建、A–G 流程、Session 与插件调用
router.pyManifest 命令树、触发词索引、子命令解析和冲突检测
args.pyParsedArgs token 与选项解析
models.pyOneBot、Manifest、命令、服务和配置数据模型
auth.pyBot 管理员、群管理员和命令权限判断
public_errors.py内部异常到公开错误码和 request ID 的映射

Dispatcher 的固定流程为:处理门控、URL、Bot 名称、会话、命令、命令兜底、闲聊。Router 从已验证 Manifest 构建只读命令目录,并把解析结果放入插件 Context。


🧩 插件管理 ​

模块职责
plugin_manager.py插件管理门面和高层加载操作
plugin_manager_support.py插件定义、加载记录、Manifest 支撑类型和工具
plugin_watcher.py目录发现、Manifest 校验、源码快照和文件变化收敛
plugin_generation.py插件代际创建、发布、回滚、排空和回收
plugin_runtime.py运行入口、声明式服务、调用授权和代际守卫
plugin_execution.py按插件并发、队列、超时、熔断、同步 bulkhead 和公平调度
plugin_data.py项目级数据目录、布局升级和路径所有权

插件加载按目录规范名排序。Watcher 构建稳定快照,Generation 负责原子发布,Runtime 负责调用边界,Execution 负责资源预算。

Manifest concurrency 由 plugin_execution.py 落实:

  • parallel 使用插件配置的并发上限。
  • sequential 为插件入口提供单并发执行。

Python 模块依赖在导入前验证。命令触发词冲突在发布命令目录前报告。


🧩 插件公开能力 ​

模块职责
context.pyPluginContext 实现、作用域视图和便捷方法
interfaces.pyProtocol、principal、capability 和跨模块接口
capabilities.pyCore 签发能力的具体实现
plugin_base.py消息段、Action、同步任务、文件和拆分工具

Context 由当前插件名、用户、群、request ID 和 principal 共同确定。普通插件获得当前命名空间的配置与 secret;Manifest capability 对应 Core 维护的窄特权对象。


💬 会话、调度与投递 ​

模块职责
session.pySession 快照、会话键、串行锁、超时和原子更新
scheduler.pyAPScheduler 装配、Manifest cron 注册和目标投递
scheduler_compat.pyAPScheduler 版本适配边界
delivery.py进程内发送回执、目标化调度结果和 commit-after-ack
durable_fanout.py多目标通知的持久进度和恢复
async_keyed_lock.py按业务键串行的异步锁

Session 管理用户驱动的多轮交互。Scheduler 管理时间驱动任务及其广播、目标化或静默投递模式。Delivery 与 Durable Fanout 管理业务状态提交和主动消息投递进度。


🌐 OneBot 与网络 ​

模块职责
onebot.pyHTTP Action 发送器、主动 WebSocket Client 和连接退避
server.pyHTTP /event、WebSocket /ws、/health、/metrics 和 Inbound 调度
inbound_policy.pyListener 地址、loopback、代理信任和 token 策略
safe_http.pyURL、DNS、目标网段、重定向和出站请求安全校验
bounded_http.py响应状态、内容类型、字节预算和流式读取
image_validation.py图片类型、尺寸、像素和解码预算

Inbound HTTP 与 WebSocket 使用同一鉴权和会话排序。出站远程内容先经过 safe_http.py 解析目标,再由 bounded_http.py 执行有界读取。


🔐 配置、AI 与安全 ​

模块职责
config.pyJSON 读取、来源状态、只读快照、revision 和文件 watcher
ai.pyProvider、模型 profile、插件 route、重试、fallback 和总预算
sensitive_audit.py敏感字段审计、摘要和脱敏
atomic_store.pyJSON 与字节数据的原子写入和恢复
bounded_file_cache.pyTTL、LRU、条目数和字节数受限的磁盘缓存

配置分为公开配置和 secrets。应用层按 revision 发布快照。AI Service 从同一 revision 解析 provider、模型、插件 route 和凭据。


📌 基础设施 ​

模块职责
logging_config.py控制台、文件、颜色、轮转和日志格式
metrics.py消息、插件、错误、延迟和队列指标
clock.py时区感知时间和可测试时钟
constants.pyCore 共享边界常量
exceptions.py领域异常类型
version.py从项目元数据或 wheel 元数据解析运行时版本
__init__.pyCore 包边界

🏗️ 关键所有权 ​

资源创建者关闭者
共享 HTTP SessionXiaoQingAppapp_lifecycle.py
Inbound Serverapp_ingress.pyapp_lifecycle.py
主动 WebSocket Clientapp_lifecycle.pyapp_lifecycle.py
Plugin Generationplugin_generation.pyplugin_generation.py
插件内嵌服务插件 init()插件 shutdown()
Schedulerapp_lifecycle.pyapp_lifecycle.py
Config Watcherapp_lifecycle.py 调用 ConfigManager.watch()app_lifecycle.py
Plugin Watcherapp_plugin_watch.pyapp_plugin_watch.py

资源创建和回收由同一所有权边界配对。应用关闭按依赖关系逆序执行。

DeliveryReceipt 跟踪一个逻辑回复所需的全部物理 Action。动作进入收集队列时保留待结算状态,实际传输的成功、失败和未知结果分别决定提交、回滚与未知处理。Core 接管的收据由传输层计数,插件发送帮助器保留同一结算权,避免拆分消息重复累计成功。标准 HTTP 上报完成真实 Action 投递后才返回事件确认。

主动 WebSocket 的连接通知与读循环并发运行,通知中的 Action 可以通过持续运行的读循环接收 echo。连接结束时统一回收通知任务与待响应请求。


🩺 排障定位 ​

现象首要模块关联模块
OneBot 连接与重连onebot.pyapp_config_apply.py, app_lifecycle.py
Inbound 鉴权与端口server.pyinbound_policy.py, app_ingress.py
命令匹配router.pydispatcher.py, models.py
群聊参与dispatcher.pySmalltalk Provider 插件
插件加载与重载plugin_watcher.pyplugin_generation.py, plugin_runtime.py
插件超时与过载plugin_execution.pydispatcher.py
Session 状态session.py对应插件 session handler
定时消息scheduler.pydurable_fanout.py, 对应插件 handler
AI routeai.pyconfig.py, context.py
外部 URLsafe_http.pybounded_http.py, 对应插件

🧭 下一步 ​

基于 MIT 许可发布

加载中...