feat(plugins): provision owned resources and reconcile account changes (#292)

Co-authored-by: Zyy <zyycn@users.noreply.github.com>
Co-authored-by: Codex <noreply@openai.com>
This commit is contained in:
Zyy
2026-09-26 18:46:12 +08:00
committed by GitHub
co-authored by Zyy Codex
parent 02177af921
commit b981e42342
52 changed files with 1920 additions and 69 deletions
+7 -2
View File
@@ -139,11 +139,16 @@ flowchart LR
正文按需读取,透传无需额外读取权限;转换和改写不能绕过 Core 的交付、取消与结算边界。
数据面插件通过受管 HTTP 已发送或无法证明未发送时,Runtime 把该事实并入 Core 的请求副作用水位,后续不能按
Provider 的 `not_sent` 结果透明重放。
- **访问域不跨调用。** `network`、`models`、`accounts`、`data`、`requests`、`public_endpoints` 只开放对应资源域;
- **访问域不跨调用。** `network`、`models`、`accounts`、`data`、`requests`、`public_endpoints`、`groups`、`keys` 只开放对应资源域;
账号、HTTP、模型、私有状态和日志回调仍绑定有效父调用与阶段。管理页和 CLI 不预绑定 Client Key,模型调用按次
选择当前 Key;页面 Responses 桥还复核精确实例目标和 `models` 域,并在等待与交付期间持续撤销检查。
`frontend_authentication` 必须显式配置 principal 到 Key 的映射;公开登录回调使用一次性票据且不继承宿主回调权限。
`data` 仅向管理和命令阶段提供账号基础投影与已有额度观测,不提供凭据、预测或 SQL,不进入客户端请求链。
`data` 仅向管理、命令和维护阶段提供账号基础投影与已有额度观测,不提供凭据、预测或 SQL,不进入客户端请求链。
- **维护只作用于已发布实例。** `maintenance` 由 Host 监督的 Runtime worker 调用,启用、恢复、配置发布和周期补偿共用幂等对账入口。
发布通知只用于唤醒,事实始终来自当前快照与数据库;同实例串行,通知合并,停用与版本替换取消旧任务。
自有分组和 Key 按实例、资源类型与稳定资源键登记;Admin 组织用例,Store 在同一事务复核当前启用 revision、
制品授权与归属,并复用原生资源写入、审计和配置发布。无变化不递增 revision;插件不能接管管理员资源,
成员变更不覆盖账号的其他分组。停用保留资源;删除实例只解除归属。
- **版本切换保持数据一致。** 同一插件最多启用一个实例;每个实例与制品摘要保存最近启用时提交的配置、密钥和绑定,
快照与实例修改共享事务,停用草稿不覆盖恢复点。版本切换优先恢复目标快照,否则合并缺失默认值并保留显式设置。
私有状态按实例、schema 与配置版本隔离,写入使用精确记录版本。
+8 -2
View File
@@ -34,7 +34,7 @@ flowchart LR
确认安装后,若该插件还没有任何配置,宿主会:
1. 从 schema 填入普通配置默认值,不把敏感字段的默认值写入普通配置
2. 为需要实例范围的贡献项生成默认绑定;管理页面和命令行按声明注册,入口认证不自动绑定
2. 为需要实例范围的贡献项生成默认绑定;管理页面、命令行和自动维护按声明注册,入口认证不自动绑定
3. 配置完整时直接启用并发布;仅缺少必填项时保存为停用并打开配置页
类型错误、非法 schema 或把敏感值混入普通配置会直接拒绝,不会伪装成“待配置”。更新已有插件时不会创建另一套配置,
@@ -49,9 +49,11 @@ flowchart LR
| `network` | 访问网络 |
| `models` | 查询模型和 Client Key 基本信息并调用模型,可能产生消耗 |
| `accounts` | 读取和修改账号,包括访问原始凭据 |
| `data` | 仅在管理或命令入口只读全部账号的基础信息和已有额度观测,不含凭据或预测 |
| `data` | 仅在管理、命令或维护入口只读全部账号的基础信息和已有额度观测,不含凭据或预测 |
| `requests` | 查看和处理请求、响应、路由及账号选择 |
| `public_endpoints` | 提供无需登录即可访问的资源与回调入口 |
| `groups` | 创建插件自有分组,可将所有现有及未来账号加入或移出这些分组 |
| `keys` | 创建绑定插件自有分组的 Client Key,不读取密钥明文 |
访问域不是操作列表或资源白名单。实例配置不能扩大、缩小或伪造制品声明;切换版本后使用目标制品已经接受的精确声明。
插件进程与网关使用相同的系统身份,接受访问域不是操作系统沙箱,因此只安装可信来源的包。
@@ -73,6 +75,9 @@ flowchart LR
也不会自动删除历史配置、密钥或私有数据。升级前已经启用多套的插件会提示整理,宿主不会擅自选择停用对象,后续启用或更新
必须收敛到一套配置。
声明自动维护的插件可自行准备已授权的分组和 Key,无需提供管理员密码。停用会停止维护,但保留这些资源及其原生启用状态;
删除插件配置也不自动删除资源。需要撤销 Key 访问时,在 Key 管理中停用或删除相应 Key。
“已启用”表示配置已经发布,不是外部服务的健康证明。“等待生效”表示候选仍在准备;“需要处理”会显示发布或运行失败原因。
并发编辑冲突时应重新加载当前 revision 后确认,不能覆盖另一窗口的修改。
@@ -81,6 +86,7 @@ flowchart LR
| 功能 | 使用方式 |
| --- | --- |
| 管理页面 | 从插件详情或左侧插件导航打开;页面在隔离 iframe 中运行 |
| 自动维护 | 启用、重启及账号等配置变化后自动对账;失败重试,周期补漏 |
| 页面模型请求 | 每次选择 Client Key,经固定实例版本的 Responses 桥执行,返回原生 JSON 或 SSE |
| 请求中间件、模型路由、账号调度、重试策略、请求观察 | 匹配功能范围的正常网关请求自动使用;重试策略故障时交给后续处理 |
| 模型目录 | 启用后原子发布别名,列表与路由继承目标模型的能力和现有访问范围 |