用途:configuration worker 是服务端的命名配置项注册表。每个条目包含 id、名称、描述、描述值结构的 JSON Schema,以及经该 Schema 校验的 JSON 值。worker 启动时调用 configuration::register 声明 Schema,用 configuration::set 发布值;消费方用 configuration::get / configuration::list 读取,并可绑定 configuration 触发器在变更时自动响应,无需轮询。
主要能力:默认 fs 适配器在 ./config 下按 id 持久化 YAML 文件并监听目录,外部编辑会产生 configuration:updated 事件;bridge 适配器委托远程引擎。worker 由引擎拥有,可在 engine.workers.configuration 配置。支持按 id 的 TTL(默认关闭),当最后一个订阅触发器注销后清理条目。
函数:configuration::register 声明 id、名称、描述、JSON Schema 和可选 initial_value,幂等重注册会替换 Schema 与元数据;configuration::set 替换已注册 id 的值,校验后发出 configuration:updated;configuration::get 按 id 读取,默认对实时环境展开 ${VAR:default},raw: true 时返回存储模板;configuration::list 枚举所有 id 的名称、描述和 Schema,不返回值;configuration::schema 读取单个 id 的 Schema/名称/描述,不暴露值。register 与 set 是唯一写入操作,读取有缓存且开销低。
响应式触发器:在 register/set/delete(含外部文件编辑和 bridge 转发事件)后异步调用匹配处理器。绑定方式:先 iii.registerFunction('stream::on-config-change', handler),再 iii.registerTrigger({type:'configuration', function_id:'stream::on-config-change', config:{configuration_id:'iii-stream', event_types:['configuration:updated']}})。configuration_id 与 event_types 均可选,省略 configuration_id 则接收所有 id。读取不触发触发器。
限制:不是通用键值存储,每个条目必须有已注册 JSON Schema;无部分更新,set 总是整体替换;bridge 适配器无法删除远程引擎条目,需靠 TTL 或源引擎处理;Schema 重注册不做版本检查,不兼容的 Schema 会直接替换,迁移需另行协调。