feature/boot-config
main
启动参数支持三层来源统一解析,按 dev/test/prod 环境段一键切换:
config show
config init
go test ./...
config show --env dev
serve --config cfg.json --env dev
--mock
Why: 启动参数原先只有 CLI flags 与库内设置,无法以配置文件按 dev/test/prod 环境切换工作区目录、存储档、模型密钥等;需要配置文件/环境变量/命令行三层 来源统一解析并支持多环境启动。 Evidence: go test ./... 全绿(config/settings 新增单测 + server 系统层 e2e); 真实二进制冒烟:config init/show(逐键来源标注、DSN 与 apiKey 脱敏、env+flag 覆盖优先级)、serve --config --env dev(启动日志与 /api/settings system 层、 user 层无 mock 残留)、configs/agent-system.example.json 三段均可解析。 Impact: serve/apikey 新增 --config/--env 与 AGENT_SYSTEM_* 环境变量;新增 config show|init 子命令(只读诊断与模板);--mock 改为启动注入、不再写入 user 设置(旧库残留处理见 README 兼容性说明);GET /api/settings 附加 system 字段(向后兼容)。 Refs: development-guidelines standards/configuration.md(单一解析管道/只读 explain/实例隔离);设计方案 4.9 设置分层。
关闭原因:与已合入的 #4(feature/config-surface,经批准的配置面设计 2026-09-30-configuration-surface.md)重复——本 PR 为并行会话对同一需求的独立实现,按协作规则拒绝陈旧/重复候选。
差异点(本 PR 有、#4 无,留作后续提案参考,不随本 PR 合入):
分支 feature/boot-config 暂留远端供比对,可随时删除。
No dependencies set.
The note is not visible to the blocked user.
目标
启动参数支持三层来源统一解析,按 dev/test/prod 环境段一键切换:
config show只读诊断(逐键来源 + DSN/apiKey 脱敏,不建库不改目录);config init生成 dev/test/prod 模板(0600)。验证
go test ./...全绿(新增 internal/config 16 例、settings 覆盖校验、server 系统层 e2e)。config init→config show --env dev(来源标注与脱敏);AGENT_SYSTEM_ADDR 覆盖文件层、--data 覆盖环境层;serve --config cfg.json --env dev(启动日志 config 行、/api/settings system 层生效值、user 层无 mock 残留);configs/agent-system.example.json 三段均可解析。行为变化
--mock(及文件/环境 mock)改为系统层启动注入,不再写入 user 设置;旧库可能残留 runtime.mock=true,README 有处理说明。关闭原因:与已合入的 #4(feature/config-surface,经批准的配置面设计 2026-09-30-configuration-surface.md)重复——本 PR 为并行会话对同一需求的独立实现,按协作规则拒绝陈旧/重复候选。
差异点(本 PR 有、#4 无,留作后续提案参考,不随本 PR 合入):
分支 feature/boot-config 暂留远端供比对,可随时删除。
Pull request closed