Skip to content

Releases: SuperJJ007/CSSwitch

v0.3.2 — Science 顶部显示真实模型名 + 新增 Kimi/MiniMax

Choose a tag to compare

@SuperJJ007 SuperJJ007 released this 04 Jul 09:25

v0.3.2 — Science 顶部显示真实模型名 + 新增 Kimi / MiniMax

修复 relay 家在 Science 模型选择器里笼统显示「claude / opus」的问题,让每个服务商都能选择或自填模型、并在 Science 里显示真实模型名;新增 Kimi(Moonshot)与 MiniMax;各家内置模型更新到官方主流版本。

新增

  • Kimi(Moonshot)与 MiniMax:均走原生 Anthropic 兼容端点,零协议转换。
  • 为每个服务商选择或自填模型:模型输入改为「下拉精选 + 自填」——下拉里是我们维护的各家主流模型,也可以直接填任意模型名。自定义端点终于有地方填模型名了。

修复

  • relay 家在 Science 顶部选择器显示笼统的「claude / opus」:现让 relay 家复用 DeepSeek 已验证的「借壳」做法,代理向 Science 返回一个外壳、显示名写成你选择的真实模型名,实际推理仍走你选的模型。真机验证:Science 顶部正确显示 glm-5.2 等真实名。
  • 中转 / 自定义端点可以保存空的连接地址或空模型:现在保存前就拦下,前端与后端各有一道守卫,绝不谎报已保存。
  • 各家内置模型过时:上官方来源逐一核对更新(GLM glm-5.2、MiniMax MiniMax-M3、硅基 DeepSeek-V4 系、Kimi kimi-k2.7-code 等)。

说明

  • 全 relay 家统一为「选一个模型」:GLM / OpenRouter 从「默认跟随 Science」改为需要指定一个模型。升级时旧的未指定模型的配置会自动补上默认模型并给出一次提示。
  • 硅基流动 Anthropic /v1/messages 兼容性经真机确认。
  • 全绿:cargo test 122 / clippy 0 / fmt clean;代理单测 40;真机在隔离沙箱 Science 里验证模型选择器显示。真实 ~/.claude-science 与 8765 端口全程未碰。

完整变更见 CHANGELOG.md。当前版本仅支持 Apple Silicon(arm64),尚未 Apple 公证,首次启动请右键「打开」。

CSSwitch v0.3.1 — 内置预设 base_url 可编辑(修小米 MiMo token plan 401)

Choose a tag to compare

@SuperJJ007 SuperJJ007 released this 04 Jul 03:33

主题:内置预设支持自定义 base_url

修用户反馈的小米 MiMo「token plan」401

修复

  • 小米 MiMo 的「token plan」套餐走独立域名 token-plan-cn.xiaomimimo.com/anthropic,与内置的 api.xiaomimimo.com/anthropic 不是同一 host;旧版预设地址锁死改不了,套餐 key 打到内置域名被上游 401。
  • 现将四家 relay 预设(智谱 GLM / 小米 MiMo / 硅基流动 / OpenRouter)的 base_url 改为可编辑的默认值:预填官方地址,允许改到 token 套餐 / 区域镜像 / 自建反代。新建向导与「编辑连接」两处都可改。
  • DeepSeek / 通义千问为原生 adapter(上游地址在代理内固定,运行时不吃自定义地址),保持只读以免「能填但不生效」。「自定义」来源行为不变。

用法(小米 token plan 用户)

新建或编辑「小米 MiMo」来源,把 base_url 改成 https://token-plan-cn.xiaomimimo.com/anthropic,填套餐 key,点「获取模型」选一个,设为当前即可。

验收

纯前端 + 模板注册表改动,不改运行语义与鉴权。cargo test 114 全绿 / clippy 0 / fmt clean;独立 agent 前端预览在 420×700 与 380×600 两窗口尺寸实测通过。全程只碰隔离环境,未触碰真实 ~/.claude-science

安装:下载 CSSwitch_0.3.1_aarch64.dmg(Apple Silicon),拖入「应用程序」。首次打开若提示未验证,右键「打开」。

CSSwitch v0.3.0 — 多 API 支持 + UI 改版

Choose a tag to compare

@SuperJJ007 SuperJJ007 released this 04 Jul 02:45

CSSwitch v0.3.0 — 多 API 支持 + UI 改版

从只支持 DeepSeek / 通义千问两家,扩展到 7 家 provider + 自定义端点的多 profile 管理;面板重做为配置列表 + chip 网格 + 三能力模型呈现。真机验收通过,正式毕业为稳定版(取代 v0.2.1 成为 Latest)。

✨ 多 API / 多 provider 支持

  • 内置 7 家模板:DeepSeek、通义千问、智谱 GLM、OpenRouter、小米 MiMo、硅基流动,外加自定义 OpenAI / Anthropic 兼容端点(自填 base_url / 模型 / Key)。
  • cc-switch 式多 profile 管理:同一家可存多套、命名、增删、一键切换;切换是事务式的(先探活、健康才提交、失败回滚、全程不停沙箱)。配置 JSON 硬化 + v1→v2 迁移不丢数据。
  • 中转站 relay:填 base_url + token 即可接任意 Anthropic 兼容中转站,/v1/models 自动铺该站真实模型到选择器。

🎨 UI 改版

  • 面板重做为 profile 配置列表;来源选择改 chip 网格(键盘可达 / aria-pressed);模型按三能力呈现(native 内置映射 / relay 跟随 Science / relay 固定);新建 / 编辑走独立视图;文案瘦身 + 无障碍打磨。
  • 反馈栏空闲不占位(去掉常驻「就绪。」,有反馈才显示)。

🐞 修复

  • 配置列表长 key 掩码横向溢出:改定长 •••• + 末 4 位(WKWebView 也撑不破,且不泄漏 key 长度)。
  • 自检(doctor)对非 deepseek/qwen 来源误报「未知 provider」:改多 profile 感知(据 adapter + key 有无报告,key 存 config.json)。
  • 承接 beta 阶段的多 profile / DSML 一系列修复(无效 native key 拦截、切换回滚健壮性、SSE 末帧、布尔校验等)。

📦 安装

下载 CSSwitch_0.3.0_aarch64.dmg,拖入「应用程序」。首次打开请右键 →「打开」(未 Apple 公证,属正常)。仅 Apple Silicon(arm64)

说明

  • 真机验收已由用户在场完成;DSML 工具调用兜底 shim 默认关闭(需 CSSWITCH_TOOLUSE_SHIM=rewrite 显式开启)。
  • 安全:全程只碰隔离沙箱,绝不触碰真实 ~/.claude-science 与端口 8765。
  • 完整变更见 CHANGELOG.md

v0.3.0-beta.2 — 大预览版:relay + 多 profile + DSML(测试版)

Choose a tag to compare

@SuperJJ007 SuperJJ007 released this 03 Jul 22:47

测试版 / 大预览版(Big Preview · prerelease)。 一次把三块尚未进正式版的功能合在一起供实机试用。这不是稳定版,稳定版仍是 v0.2.1。本版取代并撤回同日名不副实的 v0.3.0-beta.1

本版包含

  • 多 profile 配置管理(cc-switch 式):从「固定槽」升级为用户自管的命名配置列表 + 当前生效指针。同一家(如 GLM)可存多套、命名、增删、一键切换;切换是事务式(探活健康才提交、失败回滚、不停沙箱)。内置 7 家 provider 模板。配置继续用 JSON 存储并硬化(原子写 + schema 版本 + .bak)。
  • 中转站 relay provider:填 base_url + token 即可接任意 Anthropic 兼容中转站/v1/models 回源自动铺模型,双鉴权头兼容各家。
  • DSML 兜底 shim(默认 off:DeepSeek 偶发把工具调用泄漏成纯文本 DSML 标记致 Science 卡死(issue #8);shim 端到端接进代理,CSSWITCH_TOOLUSE_SHIMoff/detect/rewrite

关键修复

  • 多 profile:无效 native key 不再被误报「已切到」(native 也走隔离上游探测,坏 key 拦下不提交);切换/编辑健壮性(回滚、停沙箱失败即报错、truthful-save、护栏隔离)。
  • DSML:SSE 末帧丢失 / 非法布尔臆断 false / rewrite 非流式无泄漏时不逐字与遥测误报。

⚠️ 请注意(为什么是预览版)

  • 多 profile / relay 的真机行为仍待复测(RM-04/06/13):代码 + 单测已覆盖,但真机需在场实测确认。请勿当稳定版依赖,重要配置先备份。
  • DSML 默认关闭:普通安装后 DSML 行为与 0.2.1 一致;rewriteCSSWITCH_TOOLUSE_SHIM=rewrite 显式开启。
  • 铁律零回退:全程只碰隔离沙箱,绝不触真实 ~/.claude-science 与端口 8765。

验收

cargo test 113 / clippy 0 / 离线回归 90 全绿 / gitleaks 0。dmg 为 arm64(Apple Silicon)、ad-hoc 签名未公证(首次打开需右键「打开」)。

完整条目见 CHANGELOG.md0.3.0-beta.2 段。

v0.2.1 — 修「开了 CSSwitch 仍要登录」

Choose a tag to compare

@SuperJJ007 SuperJJ007 released this 03 Jul 03:00

v0.2.1 — 修「开了 CSSwitch 仍要登录」

0.2.0 有两个会导致「一键开始走完仍落登录页」的缺陷,本版各修一个、各补一条回归测试。链路方案本身没坏(虚拟 OAuth 结构自洽、代理此前成功处理过真实聊天),坏在「重开 / 取入口 URL」这两条路径。

修复 Fixed

  • 入口 URL 解析claude-science url 现在输出多行(第一行是真 URL,第二行是「single-use…」说明)。旧代码把整段 stdout 当 URL 交给浏览器,参数带上换行与说明文字 → 单次性 nonce 未被正确消费 → 最终落到 /login。新增 first_http_url(),只取第一条合法 http(s):// URL。
  • 健康快捷路径绕过登录修复:0.2.0 只要沙箱 daemon 活着就「连 auth 文件都不读」直接重开窗口,导致旧版遗留 / 凭证损坏 / 已落登录页的健康 daemon 永不自愈。现在健康分支先做只读校验(login_intact):登录自洽 → 只重开(org 不动、旧对话不丢);健康但登录失效 → 停沙箱,走「修复保 org + 重启」自愈。

升级安全 Update safety

更新只替换 app,不动 ~/.csswitch:你的 API key 与沙箱会话原样保留。经全仓删除路径审计,无任何生产代码路径会删除会话数据(orgs/)。

受影响用户临时绕法(装 0.2.1 后不再需要)

先点「停止代理与沙箱」,确认已停,再点「一键开始」——绕开健康快捷路径、生成新入口,不会删除历史组织数据。

验证

cargo test --lib 49 全绿(新增 first_http_url_* / login_intact_* 两条回归)、cargo fmt --check CLEAN、test/run_all.sh ALL GREEN。

铁律:全程只碰隔离沙箱(~/.csswitch/sandbox),绝不触碰真实 ~/.claude-science 与端口 8765。

CSSwitch v0.2.0 — 一键幂等化

Choose a tag to compare

@SuperJJ007 SuperJJ007 released this 03 Jul 01:09

CSSwitch v0.2.0 — 一键幂等化

主题:让「一键开始」变得幂等,修 #3(运行中再点的分派)与 #6 的「复发」部分(更新后对话「不见」),并随三轮外部复审全面加固代理与进程路径。

修复

  • #3 一键幂等分派 + 对话不再被孤儿化(阻止 #6 复发):虚拟登录从「每次重铸」改为幂等。沙箱已在跑时只重新打开,绝不重铸、连登录文件都不读;没起才走完整流程(完整可用则原样复用,部分损坏则修复但保住组织,真首次才新建)。核心不变式:组织 id 只在真正首次生成一次、此后复用与修复都粘住它,根治「每点一次一键就换新组织、把旧对话留在旧目录里界面看不到」。发现多个历史组织却无法确定活动者时报恢复提示,绝不静默新建注:本版只「阻止复发」,已产生的孤儿历史对话恢复留待后续(#6b)。
  • 提示据实:一键结果分「已在运行,已重新打开 / 已用新配置重启代理,Science 沿用不变 / 沿用原有对话 / 已启动」四态;浏览器打开失败改提示手动打开,不再谎报。
  • 停止 / 切换官方模式不再虚报成功:定位不到停止脚本时如实报错;切「官方 Claude」改为先拆第三方链路成功、再落盘,杜绝状态分裂。
  • 代理健壮性:畸形请求体规范回 400;上游 401/403/429 原样透传(DeepSeek 透传与 Qwen 翻译两条路径都修)。

安全 / 健壮性(三轮外部复审加固)

  • OAuth 复用从严校验(合法 UUID + provider + 非空 token + 未过期 + 读路径非符号链接),否则降级修复;加密密钥非法时自愈重造。
  • 孤儿代理清理收紧到本安装的绝对脚本路径 + 端口,不误杀其它 checkout / 手启进程。
  • 沙箱身份改用按 data-dir 的强身份确认,替代裸端口探活,防端口被冒名占用误判。

变更

  • 全仓 Rust 统一格式(cargo fmt --check 通过)。

下载:附件 CSSwitch_0.2.0_aarch64.dmg(Apple Silicon)。完整变更见 CHANGELOG.md

CSSwitch v0.1.5

Choose a tag to compare

@SuperJJ007 SuperJJ007 released this 02 Jul 22:48

本版为文案优化,相对 v0.1.4 零功能 / 逻辑改动

变更

  • 主按钮与面板提示文案统一为中性说法「一键开始」。
  • README 开场白改为「无需 Claude 订阅也能用上它」。

安装

下载 CSSwitch_0.1.5_aarch64.dmg,拖进「应用程序」。首次打开右键 →「打开」(ad-hoc 签名、未做 Apple 公证,属正常;仅 Apple Silicon / arm64)。

前置:本机装好 Claude Science,并有 python3(虚拟登录已是 Rust 原生,不再需要 node)。

CSSwitch v0.1.4

Choose a tag to compare

@SuperJJ007 SuperJJ007 released this 02 Jul 21:23

CSSwitch v0.1.4

自 v0.1.2 起的合并发布,重点是开箱即用实机验证过的稳定性修复

重大:拔掉 node 运行时依赖(开箱即用)

  • node-ectomy:虚拟 OAuth 伪造器移进 Rust 原生实现(oauth_forge.rs,RustCrypto 重写 HKDF-SHA256 + AES-256-GCM v2 令牌),app 运行时彻底不再需要 node。与旧 make-virtual-oauth.mjs 的 v2 GCM 格式字节兼容,node↔rust 双向对拍钉死。这是「缺 node」报错的治本解:不管用户装没装 node 都能用。

新增

  • 第三方 / 官方 一键切换:面板顶部分段切换。第三方模式走 DeepSeek/千问;切到「官方 Claude」即干净交回你真实的 Science 与订阅(用 open 正常启动 + 抹掉 ANTHROPIC_*不碰真实凭证、不起代理/沙箱)。切官方是真正的切换:后端先停掉第三方链路。

修复

  • 沙箱卡在「Switching organization」#3,实机复现并修正):代理对 claude.ai / *.anthropic.com 的 CONNECT fast-fail 返回 401(未登录)。初版返回 403(禁止)会让 operon 当组织问题反复重试、仍卡住;改回 401 才触发 operon treating as logged-out 秒过(operon 日志实测:403→卡、401→过,唯一变量就是状态码)。
  • 面板拖不动#1):随下面的正常窗口改动一并解决。

变更

  • 面板改为正常桌面窗口#4):不再是菜单栏下拉;启动即居中弹出,有标题栏关闭/最小化/缩放三键、可拖动、可缩放;移除菜单栏托盘图标
  • 运行时依赖:node + python3 → 仅 python3(下一步移 axum 拔 python)。

安全 / 健壮性(两轮外部复审)

  • 伪造器护栏加固:绝不解析进真实 ~/.claude-science 之内或其本身(先于沙箱根检查),符号链接异常布局也不碰真实目录;旧 .enc 删除失败改显式报错;登录 shell 探测超时 kill 子进程;http_proxy 收敛为只设 https_proxy;clippy 清零。

已知限制

  • 虚拟登录下,Anthropic 托管的远程 MCP 服务(pubmed / clinical-trials / chembl / biorxiv,位于 *.mcp.claude.com)不可用(需真实 Anthropic 授权,代理已短路,Science 自动跳过);本地内置 bio-tools MCP 正常可用

安装

下载 CSSwitch_0.1.4_aarch64.dmg,拖进「应用程序」。首次打开右键 →「打开」(ad-hoc 签名、未做 Apple 公证,属正常)。目前仅 arm64(Apple Silicon)。需要本机装有 Claude Science 与 python3,并填入你自己的第三方 API key。

完整变更见 CHANGELOG.md

CSSwitch v0.1.2

Choose a tag to compare

@SuperJJ007 SuperJJ007 released this 02 Jul 17:38

菜单栏面板的稳定性与可用性修复版。

修复

  • 面板拖不动:无边框窗口现会锚到菜单栏正下方,且可正常拖动。
  • 端口占用(Errno 48):代理绑定重试 + 起前自动清理上次会话遗留的孤儿代理,「一键越过登录」不再因端口被占而失败。
  • 代理重启后沙箱失效(403):path-secret 改为持久化复用,换 key / 换 provider / 重开 app 后已在跑的沙箱仍然可用。
  • 粘贴 key 后直接「一键越过登录」:现会自动先保存输入框里的 key,不必先点「保存」。
  • 保存即验证 key:保存后经代理向上游发一个最小请求,真判 key 是否可用(有效 / 被拒),而非只看代理是否起来。

反馈与报错

  • 面板新增「反馈 / 报 bug」「日志」入口;GitHub 结构化 Issue 模板上线。
  • 新增隐私声明:绝不做任何自动遥测 / 崩溃上报,所有诊断信息均由你手动提交。

安装

下载 CSSwitch_0.1.2_aarch64.dmg(仅 Apple Silicon),拖进「应用程序」。首次打开 右键 →「打开」(未做 Apple 公证,属正常)。你只需在面板填入自己的第三方 API key。

校验:shasum -a 256 CSSwitch_0.1.2_aarch64.dmg

SHA-256: cdf433cd856a7307bd24b3762429b3a18a582a993b8c942cac267345a4cbd65c

CSSwitch v0.1.1 — 一键面板 + 检查更新

Choose a tag to compare

@SuperJJ007 SuperJJ007 released this 02 Jul 17:08

本次更新

  • 面板简化:主流程收成「选 provider → 粘贴 key → 一键越过登录」。存 key 就自动起代理,去掉多余的「启动代理」按钮,端口收进「高级」。
  • 检查更新:页脚「检查更新」查 GitHub 最新版本,有新版就提示并打开下载页(暂不自动安装,自动更新已列入 Roadmap)。页脚显示当前版本号。
  • 陶土主题:面板配色统一到 Claude 暖橘,和图标、横幅一致。

安装(macOS · Apple Silicon)

下载下方 CSSwitch_0.1.1_aarch64.dmg,拖进「应用程序」。首次打开右键 →「打开」(ad-hoc 签名、未公证,属正常)。

能做什么 / 已知限制 / 免责声明见仓库 README