Skip to content

refactor: 简化 LLM 配置,config.yaml 为唯一权威来源#26

Merged
robscc merged 1 commit intomainfrom
refactor/simplify-llm-config
Mar 19, 2026
Merged

refactor: 简化 LLM 配置,config.yaml 为唯一权威来源#26
robscc merged 1 commit intomainfrom
refactor/simplify-llm-config

Conversation

@robscc
Copy link
Owner

@robscc robscc commented Mar 19, 2026

Summary

  • config.yaml 成为 LLM 配置的唯一权威来源_default_model_config() 每次从 ~/.nimo/config.yaml 读取,修改后无需重启即刻生效
  • Provider 不再持久化 api_key:JSON 文件只保存 base_url / generate_kwargs / extra_models,api_key 统一从 config.yaml 获取,避免密钥散落在多处
  • Session 不再持久化 model_name:改为动态从 config.yaml 读取展示,解决「改了全局配置旧 Session 不生效」的问题
  • SubAgent fallback 自动读 config.yamlget_model_config() 无 fallback 参数时自动从 config.yaml 加载默认值

改动文件(11 files, +145 -47)

模块 文件 改动
核心 personal_assistant.py _default_model_config() 改用 ConfigFileManager
核心 cron_scheduler.py 复用 _default_model_config()
Provider manager.py 删除 _sync_settings_api_key()_load_from_storage 不恢复 key;_save_provider 不写 key;get_chat_model 注入 config.yaml key
Provider providers.py ProviderUpdateRequest 移除 api_key 字段
Provider openai_provider.py 添加 fail-fast 检查(缺 key 时明确报错)
Session session.py create_session 不写 model_name;list/meta/config 从 config.yaml 读
SubAgent agent.py get_model_config(fallback=None) 自动读 config.yaml
Frontend api/index.ts SessionConfigUpdate 移除 model_name
Tests 3 个测试文件 更新 api_key 持久化/Session model_name/SubAgent fallback 测试

Test plan

  • 单元 + 集成测试全部通过(529 passed,2 个预存在的 UNIQUE constraint 失败不受影响)
  • 修改 config.yaml 的 llm.model,不重启服务,发消息验证新模型立即生效
  • 删除 ~/.nimo/providers/builtin/*.json 中的 api_key 字段,重启服务,验证不影响正常对话
  • 创建带自定义模型的 SubAgent → 走自己的配置;不带自定义模型的 SubAgent → 走 config.yaml

🤖 Generated with Claude Code

将 LLM 配置从 7 层覆盖关系简化为两层:config.yaml(全局默认)+ SubAgent DB(可选覆盖)。

- _default_model_config() 每次从 config.yaml 读取,修改后无需重启
- Provider 系统不再持久化 api_key 到 JSON,统一从 config.yaml 获取
- Session 不再持久化 model_name,改为动态从 config.yaml 读取展示
- SubAgent fallback 无参数时自动从 config.yaml 读取默认配置
- 更新相关单元测试和集成测试

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@robscc robscc merged commit 80ecac3 into main Mar 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant