Table of Contents

包与清单

插件以包分发:包体(二进制/脚本/模块)+清单(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 托管进程数与内存

未配置=不裁剪语义。子进程容器形态见内核选型。