包与清单
插件以包分发:包体(二进制/脚本/模块)+清单(manifest.json,v2 schema)。 清单是声明面真源——身份、能力、分发、签名全在这一个文件。
清单 v2
{
"specVersion": 2,
"namespace": "acme",
"name": "token-check",
"version": "1.0.0",
"sdkRange": "*",
"mode": "Assembly",
"entry": { "assembly": "Acme.TokenCheck.dll", "startup": "Startup" },
"features": [],
"backgroundTasks": [],
"capabilities": ["state.kv", "net.call"],
"degradedCapabilities": [],
"distribution": "tenant"
}
| 字段组 | 语义 |
|---|---|
specVersion/namespace/name/version |
清单版本+身份三元组(ns/name 定位一切操作) |
sdkRange |
SDK 版本范围(SemVer 约束——SDK 演进不破坏老插件) |
mode |
运行内核:Assembly|Wasm|Grpc|Script|Subprocess |
entry |
内核入口——assembly+startup(ALC)/script/module/abi 按 mode 取用 |
features[]/backgroundTasks[] |
特性/后台任务元数据(code 三级回落的中级兜底) |
capabilities |
能力声明制授权(点分键,见内核选型矩阵) |
degradedCapabilities |
逐键显式降级确认(Unsupported 键的唯一合法出路) |
distribution |
tenant(租户私有域)|platform|platform-allowlist |
resources/errorPolicy |
资源限额/错误策略(fail-open|fail-close 语义族) |
contentHash/signature |
完整性摘要与签名块(信任验签输入) |
字段只增不删——schema 演进向后兼容。
包的三个作用域语义
| 语义 | 内容 |
|---|---|
| 一次启停 | enable/disable 以包为单位(租户面 plugin 实体 draft→publish) |
| 一份注入 | 包级 DI 容器——SDK 六面桥+插件自有服务(Scoped=容器级单例) |
| 一棵子树 | __sys:plugindata/{ns}/** 存储——ns 即隔离与协作域 |
生命周期
traffic-worker plugin install --body @manifest.json # 安装(按 distribution 分发)
traffic-worker plugin list # 已安装(双层合并视图)
traffic-worker plugin enable acme/token-check # 启用(draft→publish)
traffic-worker plugin disable acme/token-check # 停用
traffic-worker plugin uninstall acme/token-check # 卸载(引用计数确认——被编排引用拒绝)
被编排链引用的插件卸载被拒(引用计数确认;--force 越过)——先摘链再卸载。
租户场景包配额
租户私有域包受配额闸约束(quota-set):
| 维 | 语义 |
|---|---|
maxPackages/maxPackageBytes |
包数量与单包体积 |
hostedSubprocessEnabled |
是否允许子进程容器场景包 |
maxHostedProcesses/maxProcessMemoryMb |
托管进程数与内存 |
未配置=不裁剪语义。子进程容器形态见内核选型。