模型管理与双通道计费
Molore的模型体系按「谁掏钱」硬分流成两条外部通道,外加本地零成本通道:BYOK 自付层走用户自己的厂商 Key、费用由用户与厂商直结;平台按量层走平台统一 Key、按 token 扣云端余额。两条通道各走各的账、互不兜底——BYOK 没填 Key 就是不通,平台余额不足就是 402,系统绝不在通道之间自动切换。所有通道判定规则收口在单一事实源 backend/app/services/llm_service/channel_policy.py,历史上规则散在各调用链各自实现、补一处漏一处反复事故十几次,09-15 起全部收口:review 新代码只问一句——这个调用点过没过 channel_policy?
两条通道硬分流
| 维度 | BYOK 自付层 | 平台按量层 |
|---|---|---|
| 目录行形态 | 0 价、非系统行(is_system=0) | sys- 前缀、有价、系统行(is_system=1) |
| Key 来源 | 只认用户级 Key,不回落平台/env | ModelProviderAccount 平台 Key |
| 费用 | 用户与厂商直结,平台 0 加价 | 按 token 扣云端余额 |
| 前提 | Pro 会员 | 有余额即可用,不需要 Pro |
| 失败行为 | 无 Key 硬不通,厂商报错原文透传 | 余额不足返回 402 |
| 桌面端 | 直连厂商 | 系统行 rewrite 为 platform: 前缀走云端转发 |
前端选择器分三组展示:🏠 本地(免费)→ 🔑 BYOK(自付)→ ☁️ 系统模型(按量)。BYOK 控制台在 /settings/byok,内置 23 家厂商预设并支持自定义中转站。
通道策略单一事实源
channel_policy.py 是全仓唯一允许写通道判定的地方,别处不许再写 is_system / 前缀 / provider 判断:
channel_of(model_id, db):唯一分类入口。判定顺序为platform:前缀 → ModelConfig/ollama 前缀判 local → 计费目录行。本地判定必须先于目录行——目录里本地模型是is_system=0的 0 价行(记用量用),只看is_system会把本地模型误判成 BYOK(09-13 自动打标漏到 BYOK DeepSeek 事故的根修)。fallback_candidates(db, model_id, allow_fallback=...):唯一回退策略入口。显式选型零回退;local / platform 主模型零回退;仅 BYOK 主模型保留同通道自动回退名单。后台任务一律传allow_fallback=False——任务后台禁止外部大模型兜底。require_auto_chain_usable(...):自动链路模型门禁统一入口,免费档外部模型自动调用直接 ValueError,不静默降级冒充。- 默认模型常量
DEFAULT_LOCAL_MODEL_ID/DEFAULT_PLATFORM_MODEL_ID:全仓唯一事实源,端点/服务/routing 一律 import,不许再写字面量。 - 刻意不进来:计费机械(冻结/结算/用量记录)留在
llm_billing_service;执行器(_chat_ollama/_chat_deepseek等)留在llm_service。
在架模型与默认模型
- 在架规模:BYOK 16 款(0 价行)+ 平台系统行 8 款 + opencode 聚合 41 款。管理后台厂商接口 4 家:opencode / deepseek / dashscope / glm。免费池已取消。
- 默认模型:
| 用途 | 默认模型 | 通道 | 说明 |
|---|---|---|---|
| 对话 / 工具 / 复盘周报 | sys-glm-5.3-flash | 平台按量 | 常量 channel_policy.DEFAULT_PLATFORM_MODEL_ID |
| Wiki 编译 / 语义深检 | sys-glm-5.3-flash | 平台按量 | GLM 5.3 强制思考,编译分钟级配速为已知代价 |
| 自动生成链路(打标/改写/复盘等) | 本地 qwen3.5:0.8b | 本地零成本 | 常量 DEFAULT_LOCAL_MODEL_ID;本地不可用就跳过,绝不自动扣费 |
- 合规红线:自动生成链路只走本地模型零成本,绝不回落计费通道;「付费功能点按钮才跑」是宣传承诺,未交付不宣传。
推理档黑名单
图谱构建是长任务批量链路,强制思考的推理档模型会按分钟计配速甚至卡死,故设黑名单禁入构建:
REASONING_MODEL_PATTERNS = ("glm-5.3-flash", "glm-5.2", "reasoner", "-o1", "-o3", "-o4")(app/services/graphify_service.py:286),命中即拒绝作为图谱构建模型。- 注意口径:对话默认模型
sys-glm-5.3-flash本身是推理档——对话/编译场景可用,图谱构建场景禁入,两件事不矛盾。
云端按量计费
- 平台按量只查余额不查会员:系统行不吃会员门,余额扣费、余额不足 402(
endpoints/llm/chat.py:782;llm_billing_service.py抛余额不足,请先充值)。 - GLM 定价口径 = 上游成本 × 2.5。按 token 实算,账单可逐笔对账。
- 会员总开关
feature_flags.membership_enabled(默认开;断网沿用缓存、NULL fail-closed);续费/权限/tier 判定全走 plan features。
Pro 三档同权
三档功能完全一致,仅价格与两项权益不同:
| 档位 | 价格 | slug | 每月返 ¥3 按量余额 | 优惠码 |
|---|---|---|---|---|
| 原价档 | ¥9.9/月,¥99/年 | storage | 独有 | 可用 |
| 6 折档 | ¥5.9/月,¥59/年 | — | 不返 | 不可用 |
| 3 折档 | ¥2.9/月,¥29/年 | — | 不返 | 不可用 |
三档同权解锁:模型管家、BYOK 自付、多模型智能路由、全模型用量分析、云端备份同步、优先支持。返 ¥3 按 features 门控。
桌面端模型管家
- Pro 能力:自动检测硬件、一键安装 Ollama、按内存分档推荐模型、一键下载,全程不碰命令行。
- 国内通道:模型双源(自家镜像优先 + registry 回落)+ Ollama zip 直装 +
mirrors.json热更,镜像策略不下发新版本也能更新。
全模型用量分析
Pro 能力:每个模型消耗多少 token、花了多少钱逐笔可查,BYOK 与平台按量分账呈现;本地模型只记用量不计费。
下一步
- 检索引擎与向量存储:检索改写/扩展走本地零成本链的口径
- 知识图谱 GraphRAG:构建模型的推理档禁入与估价
- 模型与计费(用户指南)、定价与会员、模型配置