Claude Subconscious模型自动检测机制揭秘:9级优先级如何选出最佳模型
【免费下载链接】claude-subconsciousGive Claude Code a subconscious项目地址: https://gitcode.com/GitHub_Trending/cl/claude-subconscious
Claude Subconscious是一个运行在 Claude Code 背后的"潜意识"Agent 插件:它悄悄观察你的每一次编码会话、积累跨会话记忆,并在你提问前"耳语"建议。而其中最省心的设计,就是它的模型自动检测机制——插件会自动查询 Letta 服务器上的可用模型,通过一套9 级优先级规则为后台 Agent 选出最合适的模型,全程无需手动配置。这篇文章就来完整拆解这套选模逻辑。
Claude Subconscious 是什么?🧠
一句话概括:一个在后台默默工作的"第二大脑"。
- 看:读取每一个 Claude Code 会话的完整转录
- 记:跨会话、跨项目、跨时间持久化记忆
- 说:在每次提示词之前把建议和上下文"注入"给主 Claude
- 不阻塞:全部通过 Letta Code SDK 在后台异步运行
而支撑这个后台 Agent 的,正是一个可靠的 LLM——选对模型,"潜意识"才聪明。
模型自动检测的完整流程 🔍
整个检测逻辑集中在 scripts/agent_config.ts 中,由 ensureModelAvailable() 函数在每次会话启动时触发,分三步走:
第 1 步:查询服务器上的可用模型
插件调用 Letta 的GET /v1/models/接口拉取模型清单(见 listAvailableModels())。请求地址由 letta_api_url.ts 统一拼接,同时兼容云端api.letta.com与自部署的 Letta 服务器(通过LETTA_BASE_URL指定)。
第 2 步:校验 Agent 当前模型是否可用
拿到模型清单后,先解析 Agent 当前的模型标识(provider/model格式),再通过 findModel() 做多格式、忽略大小写的模糊匹配:handle、provider_type/model、provider_type/name三种写法都能命中。
- ✅ 当前模型可用 → 什么都不做,直接用
- ❌ 当前模型不可用 → 进入第 3 步
第 3 步:按 9 级优先级自动选择
核心选择逻辑只有短短十几行,见 selectBestModel():从上到下遍历优先级列表,返回第一个服务器上真实存在的模型;如果 8 个首选全部缺席,就兜底使用服务器返回的第一个模型。
9 级优先级全解析:排序背后的讲究 🏆
优先级列表定义在 PREFERRED_MODELS,源码注释里写得很直白:"向质量倾斜"——因为潜意识 Agent 需要优秀的指令遵循能力和工具调用能力,才能读懂转录、探索代码库。
| 优先级 | 模型 | 入选理由 |
|---|---|---|
| 1 | letta/auto | Letta Cloud 智能自动路由 |
| 2 | anthropic/claude-sonnet-4-5 | ⭐ 官方推荐的 Agent 最佳模型 |
| 3 | openai/gpt-4.1-mini | 1M 上下文,性价比之选 |
| 4 | anthropic/claude-haiku-4-5 | 快速轻量版 Claude |
| 5 | openai/gpt-5.2 | OpenAI 旗舰兜底 |
| 6 | google_ai/gemini-3-flash | Google 均衡之选 |
| 7 | google_ai/gemini-2.5-flash | 备用 Flash |
| 8 | minimax/MiniMax-M2.7 | 旗舰模型,1M 上下文 |
| 9 | 服务器上的首个可用模型 | 🛡️ 终极兜底,绝不留空 |
可以看到排序思路非常清晰:先智能路由,再 Claude 系(Agent 场景强项),再高性价比,再各家旗舰,最后无条件兜底。第 9 级的存在意味着——只要你的 Letta 服务器上有任意一个模型,插件就一定能跑起来。
LETTA_MODEL 手动覆盖:想全权掌控怎么办?⚙️
自动检测虽然省心,但如果你已经想好了要用哪个模型,设置环境变量即可:
export LETTA_MODEL="anthropic/claude-sonnet-4-5"手动覆盖的优先级最高,但同样会被"体检"(见 ensureModelAvailable() 的分支):
- 该模型在服务器上可用→ 立即采用;如果
LETTA_CONTEXT_WINDOW也设置了(如1048576表示 1M tokens),会一并同步上下文窗口大小 - 该模型不可用→ 打印警告 + 服务器模型列表,然后自动降级到 9 级优先级选择
选中的模型如何写回 Agent?✍️
选出模型后,插件通过 PATCH 接口更新 Agent 配置,这里有两个值得注意的工程细节:
- 保留原有设置:buildLlmConfig() 会以当前配置为基底浅拷贝,只替换模型身份字段(model / handle / provider),temperature 等自定义参数原样保留
- 适配新 API 形态:updateAgentModel() 使用 Letta 新的顶层
model+context_window_limit字段(旧的llm_config字段已被废弃,详见 CHANGELOG.md),避免了旧写法导致的 400 报错
最终选定的模型还会记录到~/.letta/claude-subconscious/config.json的model字段中(见 getAgentId()),下次启动时即可快速比对。
如何验证检测结果?📋
- 看启动日志:自动选择时会输出醒目的提示,如
Auto-selecting model: anthropic/claude-sonnet-4-5,并附一行操作指引 - 看本地配置:
~/.letta/claude-subconscious/config.json中的model字段 - 看单元测试:模型的匹配与选择逻辑都有完整测试覆盖,参考 agent_config.test.ts
- 看内置 Agent:默认捆绑的 Agent 定义在 Subconscious.af,开箱即导入
写在最后 🎯
Claude Subconscious 的模型自动检测机制,本质上回答了一个后台 Agent 产品的经典问题:如何让"零配置"不等于"将就"。
- 9 级优先级让"自动"有了明确的价值观——质量优先、兜底保底
- 手动覆盖与自动检测和平共存,专家用户依然有完全控制权
- 每一步失败都是"降级"而非"报错",体验丝滑
对于新手而言,你只需要设置好LETTA_API_KEY,剩下的选模工作就放心交给这 9 级优先级吧。
【免费下载链接】claude-subconsciousGive Claude Code a subconscious项目地址: https://gitcode.com/GitHub_Trending/cl/claude-subconscious
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考