Repository navigation
DSCODE 0.7.7
DSCODE 0.7.7
这版把 OpenRouter 从 pi-ai 换成 DSCODE 自己的适配器,补上 0.7.6 之后发现的缺口:流里返回的上游错误不重试、实际扣费算不准、网页搜索只能走 DeepSeek、推理模型上的会话标题和自动审批经常失败。同时改进了压缩的显示与阈值,以及 /provider、/model 的交互。
- OpenRouter 用自己的适配器:直接调用 OpenRouter 的 chat completions,模型列表、上下文窗口、推理档位和价格都来自 OpenRouter 实时的
/api/v1/models,在数据目录缓存一天,新模型不用等发版;第一次查询模型最多等 10 秒。DeepSeek、GLM、Kimi、Qwen 经过适配和测试,其他支持工具调用的模型尽力可用。每个模型用自己的推理档位:DeepSeek V4 保留官方的 off/low/high/max,支持 max 的模型额外提供 Ultra,推理内容按reasoning_details原样回传。 - 路由交给 OpenRouter:每个请求带
session_id,同一会话尽量留在同一个上游,保持缓存;只在支持请求全部参数、且不是 fp4 量化的服务商里选(Kimi 的原生 INT4 保留)。Qwen 在 system 和最新一条用户消息上加显式缓存断点。 - 错误按 OpenRouter 的错误码处理:流里返回的上游错误(如 502)会重试,429 读取
Retry-After,402 识别为额度不足,上下文超长会触发压缩后重试。 - 按实际扣费记账:会话费用使用 OpenRouter 返回的
usage.cost(含 BYOK 手续费和不同上游的价格),只有拿不到时才按价格表估算。 - 网页搜索跟随 provider:OpenRouter 会话通过 OpenRouter 的 web 插件(Exa)搜索,DeepSeek 会话仍用 DeepSeek;只有 OpenRouter key 的用户也能搜索。
/openrouter账户面板:显示账户余额、当前 key 的额度和今天/本周/本月花费;配置 management key 后,还能看所有 API key 的用量,以及最近 30 天按模型和实际服务商统计的花费。/provider openrouter或/login openrouter保存 API key 后会提供一个可选的 management key 步骤,保存前向 OpenRouter 校验,只用于读取。footer 余额读取账户余额,key 被拒绝时退回显示 key 的剩余额度。- 压缩的显示与阈值:压缩进行时显示一个自动玩俄罗斯方块的小动画和"正在压缩上下文,请稍后"(跟随
/language)。自动压缩阈值按模型缓存读价与输入价的比值分档:低于 0.1 在 90% 时压缩,低于 0.5 在 80%,否则 60%;查不到价格保持 80%,配置里显式写的阈值优先。在/model切换到会触发压缩的模型时先确认。 /model直接搜索:打开后直接输入即可搜索,每个字符都用 BM25 重新排序(模型名权重最高,其次 id 和 provider),正在输入的词按前缀匹配。搜索变化后不聚焦,回车或方向键聚焦第一个结果,聚焦时回车选中;Esc 先清空搜索再关闭,Tab 打开 provider 设置,重试改为 Ctrl+R。- 斜杠菜单:在菜单里对
/provider、/login、/openrouter按回车会直接打开对应面板,不用再按一次。 - 标题与自动审批:OpenRouter 上生成标题时用模型支持的最低推理强度,标题输出上限从 64 调到 1024;自动审批自检改为请求 low 强度,输出上限从 768 调到 4096。
- 迁移:老版本写在
llm-pi-ai里的 OpenRouter 配置会自动清除,pi-ai 路由不再加载;pi-ai 时期会话里的推理内容仍能回传。
升级前退出使用同一数据目录的 DSCODE 会话:
npm install -g @toddzheng024/dscode@0.7.7
dscode update 0.7.7也可从 GitHub Releases 下载 dscode-0.7.7.tar.gz 安装独立源码包;两种安装方式使用不同数据目录,不自动迁移会话和凭据。
验证覆盖单元、覆盖率基线、eval、集成、TUI 与包构建。本次新增:
- 用真实 OpenRouter key 调用 DeepSeek V4 Flash、GLM 5.3 Flash、Kimi K2.6、Qwen 3.8 27B、Muse Spark 1.3 与 Muse Spark 1.3 Contributor:工具调用、带推理内容回传的续轮、重复前缀的缓存命中、实际扣费、标题请求;固定走 Z.AI 验证了 GLM 推理内容的回传;无效模型的报错与 OpenRouter 网页搜索。
- 真实 Ink 渲染:压缩动画在各宽度下的显示、模型切换确认、
/openrouter面板与 management key 输入、/model直接搜索与聚焦规则、斜杠菜单回车。 - 真实账户读取:普通 key 读到账户余额;普通 key 会被 management key 校验拒绝。
- 离线登录验证:真实 Host 中 OpenRouter 路由从缓存的模型列表列出模型、档位正确,并在网络请求前截获请求体。
未做 / 已知限制:
- 阿里云托管的 Qwen 的显式缓存断点没能实测(账号的零数据保留设置挡住了这些端点)。
- management key 下的所有 key 用量和 30 天花费只用模拟数据验证,没有真实 management key。
- Claude、GPT、Gemini 为尽力支持,不再像 pi-ai 那样给 Anthropic 模型自动加缓存断点。
- 缓存命中取决于 OpenRouter 为会话选中的上游服务商。