# 配置单点化(R2):CONFIG_DEFS 单一数据源 每新增一个配置键需要改三处(`CONFIG_TEMPLATE` 模板 JSON、全局变量声明、`load_config` 逐键默认值),三处漂移是配置 bug 的常见来源。决定:`CONFIG_DEFS`(键|默认值数组)成为**模板与默认值的单一数据源**——`render_config_template()` 从它生成 config.json 模板(替代 `CONFIG_TEMPLATE` 常量),`load_config` 循环加载全部标量键(`printf -v` 动态赋值 + `${!key:-}` 间接引用,零 eval),特殊键在循环后做后处理(FOLDER_* locale 默认、扩展名拆数组、MEDIA_WORKERS/AI_BATCH_SIZE 数值校验、日志目录初始化、命名模板兜底)。 **收益**:新增纯标量键 = 改 `CONFIG_DEFS` 一行(模板与默认值自动生效,永不漂移);`load_config` 手写赋值区净减约 70 行。**边界**:① 后处理逻辑保留手写(locale/校验/数组是行为逻辑,不适合数据驱动);② `printf -v` 是 bash 内置(无 eval,配置值不执行);③ NAMING_* 的字面值须与 `naming_template_default` 保持一致(后者是 render_naming 兜底权威,两处同步修改);④ 白名单键集合(load_config / convert_env_to_json)改经 `render_config_template` 派生——模板与白名单同源。 **Considered Options**: 保留三处手写(原状)——新增键易漏一处导致模板与默认值漂移;全部配置改关联数组访问(`${CFG[key]}`)——动所有消费点,破坏 `$VAR` 直接引用的大量既有代码;CONFIG_DEFS + 循环加载(选定)——单一数据源 + 最小侵入,特殊键后处理保留确定性。