@wengine-ai/llms 2.3.16 → 2.3.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -93,6 +93,7 @@ npm install -g @wengine-ai/claude-code-router-next@latest && ccr restart
93
93
 
94
94
  | 版本 | 发布内容 |
95
95
  | --- | --- |
96
+ | **v2.3.17** | <ul><li>**修复 fallback 触发时所有备用模型报 Invalid URL**: 主模型限流(如智谱套餐)触发 fallback 后,此前所有备用模型都报 `Invalid URL`;根因是 fallback 用了原始 `ConfigProvider[]`(无 `baseUrl`)而非已注册的 `LLMProvider[]`,改为 `providerService.getProviders()`。</li><li>**修复 fireworks 托管上游用量统计全 0**: fireworks 流式把真实 usage 放在 `finish_reason` 之后的 `choices:[]` 空 chunk 里,此前 `finish_reason` 块用 null usage 覆盖了已 merge 的真实值、且 `break` 丢弃了后续 usage chunk,导致 `input` 有值但 `output`/缓存命中为 0;现改为 finish 后继续读取、只设 stop_reason 不碰 usage、`break` 改 `hasFinished=true`,并修复下游三层用量捕获与 `??` 对 0 不 fallback 的问题。</li><li>**忽略已删除模型的残留路由,防止健康池污染**: 从 provider 配置删除模型后,路由与 fallback 中残留的 `provider,model` 仍被当作有效候选反复失败污染健康池;现在对无法匹配的候选直接返回 `null` 并在请求前校验,`ProviderHealthStore` 统一拦截空 provider/model 防畸形 key 污染,同时抽取 `findProviderModel` 共用函数。</li></ul> |
96
97
  | **v2.3.16** | <ul><li>**修复 system 消息顺序兼容 DeepSeek/vLLM**: OpenAI 兼容提供商(DeepSeek V4、GLM、vLLM)要求 `[system, user, assistant]` 顺序,此前 system 排在 user/assistant 之后会导致输出乱码;现在将 system 消息前置并去重。</li><li>**接管时去除 Attribution 动态头以提升缓存命中**: CCR 接管 Claude Code 时默认写入 `CLAUDE_CODE_ATTRIBUTION_HEADER=0`,去掉系统提示词开头随请求变化的 attribution 头(客户端版本 + prompt fingerprint),稳定上游 prompt 缓存前缀;可在设置页或 `disableAttributionHeader: false` 关闭。</li><li>**设置页布局紧凑化**: 「日志级别」下拉从独占整行移入两列网格,与「API 密钥」并排显示,减少纵向留白。</li></ul> |
97
98
  | **v2.3.15** | <ul><li>**Fallback 前同模型重试一次**: 模型调用出现一次异常不再立即切换到备用模型,而是先对同一模型自动重试一次(Double-Check),避免因瞬时错误(网络抖动、偶发限流、空 SSE 响应等)导致不必要的模型切换;重试仍失败才走原有 fallback 流程。</li><li>**用量统计显示上游真实模型**: 部分上游网关会偷偷将请求路由/降级到另一个后端模型(如请求 glm-5 实际返回 MiniMax-M2.5)。用量统计的模型映射现在追加上游返回的真实模型,格式为 `originalModel → routedModel → upstreamModel`(如 `ccr-opus → glm-5 → minimax-m2.5`),上游未偷换时自动省略。</li></ul> |
98
99
  | **v2.3.14** | <ul><li>**修复状态栏显示 `<synthetic>` 模型名**:Claude Code 在 auto-compact 自动压缩、中断恢复时写入的 `<synthetic>` 合成消息(非真实 LLM 响应)此前被状态栏当作模型名显示(从 Claude 账号会话切换到 ccr 接管、或发生自动压缩后尤其常见);现在过滤该合成标识,正确显示实际路由模型,同时不再把合成消息的 usage 计入 token 统计。</li></ul> |
@@ -102,7 +103,6 @@ npm install -g @wengine-ai/claude-code-router-next@latest && ccr restart
102
103
  | **v2.3.10** | <ul><li>**修复标题生成等元请求误触发 `think` 场景路由**:`thinking: {type: "disabled"}` 是真值对象,此前会被误判为"已开启思考"并路由到 `think` 模型;现在仅当 `thinking.type === "enabled"` 时才进入 `think` 场景,避免关闭模型族路由的项目仍被路由到全局 think 模型。</li><li>**修复主模型熔断且无 fallback 时返回空模型**:`Router.default` 因健康检查熔断且无可用 fallback 时,此前直接返回空模型导致合成 "provider not found" 错误;现在会跳过健康检查兜底重试主模型,让 Claude Code 收到真实上游响应并自行重试。</li></ul> |
103
104
  | **v2.3.9** | <ul><li>**Codex 代管理账号令牌自动刷新**:新增后台调度器(启动 60 秒后首次执行,之后每 30 分钟一次),自动检查所有 Codex 代管理账号——无论是否为当前激活账号——当 `access_token` 距过期不足 24 小时,或自上次刷新已超过 7 天时,自动用 `refresh_token` 换取新 token 并写回账号存储;若为当前激活账号,同时同步覆盖 `~/.codex/auth.json`。可通过 `Clients.codex.autoRefreshTokens` 关闭(默认开启)。</li><li>**运行时 fallback 重试未遵循项目级 `enableFallback` 修复**:请求实际发出后失败(如限流)触发的重试 fallback 此前直接读取全局 `Router.enableFallback` 与全局顶层 `fallback` 配置,忽略项目级 `enableFallback: false` 与项目自定义 `Router.fallback`;现在运行时重试与路由阶段使用同一份项目级 fallback 配置。</li></ul> |
104
105
  | **v2.3.8** | <ul><li>**可配置上下文窗口**:设置页新增 `ContextWindow`,接管 Claude Code / Codex 时用于设置 auto-compact 窗口,默认 200000 tokens。</li><li>**Codex 自动压缩窗口同步**:CCR 接管 Codex 时写入 `model_context_window` 与 `model_auto_compact_token_limit`(约 90%),确保模型别名也能按真实上下文窗口触发自动压缩。</li><li>**项目路由会话识别修复**:兼容 Claude Code `metadata.user_id` 的 JSON/object/legacy session 格式,并只缓存成功匹配,避免首个请求 session 文件尚未生成时项目级路由被长期判定为未命中。</li><li>**关闭模型族路由后别名映射旁路修复**:`enableFamilyRouting` 关闭时,`ccr-opus`/`ccr-sonnet`/`ccr-haiku` 不再被 `Router.models` 中遗留的别名映射拦截,正确回退到项目自定义的 scenario 路由。</li></ul> |
105
- | **v2.3.7** | <ul><li>**新增项目默认接管并跟随全局**:在「项目配置」页添加项目时,默认开启「CCR 接管」与「使用全局配置」,自动写入 ccr 代理配置并保持项目路由实时跟随全局,新项目开箱即用。</li><li>**项目级 fallback 复制修复**:自定义项目路由时正确复制全局顶层 `fallback`,避免备用模型链丢失。</li><li>**接管模型配置同步修复**:切换接管开关时按当前全局配置重新生成托管字段,确保全局变更后重新接管能同步最新模型路由,同时保留 `permissions`/`hooks` 等非托管配置。</li></ul> |
106
106
  > 仅保留最近 10 个版本,更早版本的发布摘要见 [CHANGELOG-archive.md](./CHANGELOG-archive.md),完整详细变更记录见 [CHANGELOG.md](./CHANGELOG.md)。
107
107
 
108
108
  ### 2. 配置