模型选择

wescode 的模型选择机制:单一数据源与显式选择原则。


核心原则

用户必须始终知道"我在和哪个模型对话"——隐式选择 = 结果不可复现 + 成本不透明 + 能力不确定。


INV-MODEL-01:Model 必填

AppRunRequest.Model 为空时引擎拒绝执行(fail-closed),返回 ErrModelRequired。

应用层(wescode)负责在发送前确定默认模型并显式传入。


INV-MODEL-02:所有可用模型对用户可见

引擎 resolver 能使用的所有 provider(Shared + Named + BYOK),前端模型选择器都必须展示。

禁止"幽灵 provider"(引擎能用但前端不显示)。


单一数据源

INV-PROVIDER-VIEW-01

模型列表通过单一 RPC sidebar/availableModels 统一返回:

GateGuard 判断

是否配置了 BYOK 也从 availableModels 派生:

const hasByok = availableModels.some(
  m => m.source === 'byok' && m.status !== 'no_key'
)

LLM Catalog

模型市场数据的唯一权威来源是 weisyn.git/catalog.yaml:

catalog.yaml → weisyn.ProviderCatalog()
  → boot: provider.SetCatalog(...)
  → NormalizeProvider() 自动补齐 ContextWindow

规则


欠费处理

场景WES 模型BYOK 模型发送
余额充足可选可选正常
WES 欠费 + 有 BYOK + 当前选 BYOKdisabled可选正常
WES 欠费 + 无 BYOKdisabled—阻断

前端交互


相关文档