← 返回首页

CmdCode V0.5 useModel.ts 全面审查报告

全面代码审查 · useModel.ts 架构修复
58+
TS 文件
8
已修复
7
无需修改
1
保持独立

✅ 已使用 useModel.ts 的文件(无需修改)

文件使用方式
src/chat.ts getCurrentConfig() 作为 fallback
src/chat-enhanced.ts 同上
src/chat-factory.ts 通过引擎间接使用
src/web.ts getCurrentModel/setCurrentModel/getCurrentConfig/getAllModels/resolveModelById 全部正确连接
src/cli.ts getCurrentConfig() + setCurrentModel()
webui/index.html 前端通过 /api/model/switch 调用后端 setCurrentModel()
web/cmdcode-web.html 前端 switchToModel() 调用 /api/model/switch

🛠 已修复的文件

1. src/commands/model.ts — 6 处 setCurrentModel() 添加

  • 🔧 handleModelCommand() 自定义模型添加成功 → setCurrentModel(setup.model)
  • 🔧 handleModelCommand() 用户模型切换成功 → setCurrentModel(modelConfig.model)
  • 🔧 handleModelCommand() 内置模型添加成功 → setCurrentModel(provider.id)
  • 🔧 switchModelDirect() 用户模型匹配 → setCurrentModel(modelConfig.model)
  • 🔧 switchModelDirect() 内置+密钥池存在 → setCurrentModel(provider.id)
  • 🔧 switchModelDirect() 免费内置 → setCurrentModel(provider.id)

2. src/commands/set.ts — 2 处 setCurrentModel() 添加

  • 🔧 /set 交互式配置成功 → setCurrentModel(model)
  • 🔧 /set <key> 快捷设置成功 → setCurrentModel(config.model)

🔒 向量记忆例外(保持独立)

src/memory/embedding.ts — 通过 DEFAULT_MEMORY_SEARCH + getEmbeddingApiKey() 独立配置,未接入 useModel.ts,符合要求

📊 架构总结

修改前,CLI 切换模型(/model, /set)时只更新本地 config 对象和 ChatEngine,不通知 useModel.ts

⚠️ 这导致:Web UI 看到的当前模型与实际 CLI 使用的模型不一致

⚠️ 新建的 ChatEngine(如 /clear 后)不知道 CLI 已切模型

修改后,所有模型切换路径都调用 setCurrentModel(),确保 ~/.cmdcode/current-model.json 持久化 + 全系统一致。

🔄 模型切换调用链路

┌─────────────────────────────────────────────┐ │ 用户输入 /model / set 命令 │ └──────────────┬──────────────────────────────┘ ▼ ┌─────────────────────────────────────────────┐ │ commands/model.ts / commands/set.ts │ │ - handleModelCommand() │ │ - switchModelDirect() │ │ - /set 交互式配置 │ └──────────────┬──────────────────────────────┘ ▼ ┌─────────────────────────────────────────────┐ │ setCurrentModel(modelId) ← 新增调用 │ │ - 写入 ~/.cmdcode/current-model.json │ │ - 更新 useModel 内部状态 │ └──────────────┬──────────────────────────────┘ ▼ ┌─────────────────────────────────────────────┐ │ ChatEngine + Web UI + CLI 全系统同步 │ └─────────────────────────────────────────────┘

✅ 修复结果

0
新错误
8
调用点修复
2
文件修改
1
例外保持
来源:DeepSeek 分享 · 仅供学习参考