modify: 统一插件风格

This commit is contained in:
2026-08-14 16:04:09 +08:00
parent 3cc40267be
commit 5b870f32fa
2 changed files with 22 additions and 15 deletions
+20 -14
View File
@@ -92,23 +92,27 @@ port = 1883
--- ---
## 2. Worker 加载配置 (`workers/config.toml`) ## 2. 插件注册配置(`workers/<type>/config.toml` 的 `[workers]` 节)
定义哪些插件被加载及运行时参数。每个插件一个 `[[workers]]` 数组项。 定义哪些插件被加载及运行时参数。网关启动时扫描 `config/workers/*/config.toml` 自动发现;
**每个插件在自己目录的 `config.toml` 中用 `[workers]` 节注册**(与 `[worker]` 路由默认值共存于同一文件)。
```toml ```toml
[[workers]] # config/workers/auth/config.toml
type = "auth" # 插件类型名 [workers]
type = "auth" # 插件类型名(worker type)
module = "plugins.auth" # Python 模块路径 module = "plugins.auth" # Python 模块路径
factory = "create_workers" # 工厂函数名 factory = "create_workers" # 工厂函数名(Plugin 基类绑定的方法)
cleanup = "cleanup" # 清理函数名(可选) cleanup = "cleanup" # 清理函数名
count = 3 # Worker 副本数 count = 3 # Worker 副本数
[workers.config] [workers.config]
type = "auth" data_dir = "./data" # 插件运行时配置(展平后传给 create_workers)
data_dir = "./data" # 插件自定义配置
``` ```
> 旧式全局文件 `config/workers/config.toml`(`[[workers]]` 数组)仍兼容读取,
> 仅加载其中尚未由各插件自注册的类型,新插件请勿使用。
### 字段说明 ### 字段说明
| 字段 | 必填 | 说明 | | 字段 | 必填 | 说明 |
@@ -118,13 +122,15 @@ data_dir = "./data" # 插件自定义配置
| `factory` | ✅ | 工厂函数名,用于创建 Worker 实例 | | `factory` | ✅ | 工厂函数名,用于创建 Worker 实例 |
| `cleanup` | ❌ | 清理函数名,插件卸载时调用 | | `cleanup` | ❌ | 清理函数名,插件卸载时调用 |
| `count` | ✅ | Worker 副本数(并行处理请求数) | | `count` | ✅ | Worker 副本数(并行处理请求数) |
| `[workers.config]` | ❌ | 传递给插件的自定义配置字典 | | `[workers.config]` | ❌ | 传递给插件的运行时配置(展平合并,子节见各插件) |
| `[[workers.mqtt_topics]]` | ❌ | 插件声明的 MQTT Bridge 额外订阅主题(topic/subject/response_topic) |
--- ---
## 3. 分组配置 (`workers/<type>/config.toml`) ## 3. 分组配置(`workers/<type>/config.toml` 的 `[worker]` 节)
每个插件目录下的 `config.toml` 定义该插件所有路由的公共默认值。 每个插件目录下的 `config.toml` 定义该插件所有路由的公共默认值
(与第 2 节的 `[workers]` 注册节共存于同一文件)。
```toml ```toml
[worker] [worker]
@@ -235,9 +241,9 @@ uv run python -m chongming.scripts.gen_models
``` ```
config.toml (全局) config.toml (全局)
└─ workers/config.toml (插件注册) └─ workers/<type>/config.toml (插件注册 [workers] 节 + 分组默认值 [worker] 节)
└─ workers/<type>/config.toml (分组默认值) └─ workers/<type>/<op>.toml (端点覆盖)
└─ workers/<type>/<op>.toml (端点覆盖)
``` ```
每层可覆盖上层默认值,端点级字段 (`timeout`, `cacheable`, `auth_required`, `internal`) 优先级最高。 每层可覆盖上层默认值,端点级字段 (`timeout`, `cacheable`, `auth_required`, `internal`) 优先级最高。
(旧式 `workers/config.toml` 全局注册文件仍兼容读取,仅作兜底。)
+2 -1
View File
@@ -22,7 +22,8 @@ tags = ["aibox_sophon_adapter", "sophon", "adapter"]
# subject: 可选,目标 Zenoh subject,支持 {1} {2}... 占位符; # subject: 可选,目标 Zenoh subject,支持 {1} {2}... 占位符;
# 默认 "<插件类型>.<topic 最后一段>" # 默认 "<插件类型>.<topic 最后一段>"
# response_topic: 可选,响应发布主题,支持占位符;默认 "<实际匹配主题>/response" # response_topic: 可选,响应发布主题,支持占位符;默认 "<实际匹配主题>/response"
# 请求负载同样支持 _method / _timeout / _cacheable 控制字段 # 请求负载为信封协议: {"meta": {"method"/"timeout"/"cacheable"}, "data": {...}}
# meta 各字段可选(method 默认 GET,timeout 默认 30s,cacheable 默认 false)
# 盒子侧只支持设置根主题:根主题已改为 box(非 chongming 保留命名空间,避免被网关 Bridge 拦截), # 盒子侧只支持设置根主题:根主题已改为 box(非 chongming 保留命名空间,避免被网关 Bridge 拦截),
# 盒子心跳发布到 box/aibox_sophon/board_ping,映射到本插件的心跳 RPC。 # 盒子心跳发布到 box/aibox_sophon/board_ping,映射到本插件的心跳 RPC。
[[workers.mqtt_topics]] [[workers.mqtt_topics]]