Releases: SuperJJ007/CSswitch
Release list
v0.3.0-beta.2 — 大预览版:relay + 多 profile + DSML(测试版)
测试版 / 大预览版(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_SHIM选off/detect/rewrite。
关键修复
- 多 profile:无效 native key 不再被误报「已切到」(native 也走隔离上游探测,坏 key 拦下不提交);切换/编辑健壮性(回滚、停沙箱失败即报错、truthful-save、护栏隔离)。
- DSML:SSE 末帧丢失 / 非法布尔臆断 false / rewrite 非流式无泄漏时不逐字与遥测误报。
⚠️ 请注意(为什么是预览版)
- 多 profile / relay 的真机行为仍待复测(RM-04/06/13):代码 + 单测已覆盖,但真机需在场实测确认。请勿当稳定版依赖,重要配置先备份。
- DSML 默认关闭:普通安装后 DSML 行为与 0.2.1 一致;
rewrite需CSSWITCH_TOOLUSE_SHIM=rewrite显式开启。 - 铁律零回退:全程只碰隔离沙箱,绝不触真实
~/.claude-science与端口 8765。
验收
cargo test 113 / clippy 0 / 离线回归 90 全绿 / gitleaks 0。dmg 为 arm64(Apple Silicon)、ad-hoc 签名未公证(首次打开需右键「打开」)。
完整条目见 CHANGELOG.md 的 0.3.0-beta.2 段。
v0.2.1 — 修「开了 CSSwitch 仍要登录」
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 — 一键幂等化
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
本版为文案优化,相对 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
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 才触发 operontreating 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
菜单栏面板的稳定性与可用性修复版。
修复
- 面板拖不动:无边框窗口现会锚到菜单栏正下方,且可正常拖动。
- 端口占用(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 — 一键面板 + 检查更新
本次更新
- 面板简化:主流程收成「选 provider → 粘贴 key → 一键越过登录」。存 key 就自动起代理,去掉多余的「启动代理」按钮,端口收进「高级」。
- 检查更新:页脚「检查更新」查 GitHub 最新版本,有新版就提示并打开下载页(暂不自动安装,自动更新已列入 Roadmap)。页脚显示当前版本号。
- 陶土主题:面板配色统一到 Claude 暖橘,和图标、横幅一致。
安装(macOS · Apple Silicon)
下载下方 CSSwitch_0.1.1_aarch64.dmg,拖进「应用程序」。首次打开右键 →「打开」(ad-hoc 签名、未公证,属正常)。
能做什么 / 已知限制 / 免责声明见仓库 README。
CSSwitch v0.1.0 — macOS 菜单栏 app
CSSwitch:让 Claude Science 的推理走你自选的第三方 API,Science 那套「AI Jupyter」体验照旧。
能做什么
- 保留 Science 的工具调用、代码执行、Skill、MCP,模型换成自选的第三方 API。
- 跳过登录:本地自造虚拟 OAuth 门票,零真实 Anthropic 凭证。
- 一个菜单栏 app 管好一切:选 provider、填 key、起停代理、一键越登录、状态灯。
- 支持 DeepSeek、通义千问(Qwen),或任意 OpenAI 兼容端点(自定义 API)。
安装(macOS · Apple Silicon)
- 下载
CSSwitch_0.1.0_aarch64.dmg,拖进「应用程序」。 - 首次打开被 Gatekeeper 拦是正常的(本 app 做了 ad-hoc 签名但未做 Apple 公证):
右键 →「打开」,或系统设置 → 隐私与安全性 →「仍要打开」。 - 菜单栏出现开关图标,点开面板,填第三方 key 即可用。
已知限制
- 产物仅 arm64(Apple Silicon);Intel Mac 需自行 x86_64 / universal 构建。
- 未公证:严格 Gatekeeper 环境可能仍拦;公证需 Apple Developer ID(本项目不提供)。
- Qwen 流式目前是「上游整段完成后再 SSE 回放」,首 token 延迟约等于整段生成时间
(DeepSeek 默认走原生透传,真流式)。
免责
个人学习与研究用途;推理不经 Anthropic 服务端;对登录令牌格式的逆向与「越过登录」的实现
可能触及相关服务条款与版权法规(如美国 DMCA §1201),是否适用需专业法律判断,使用者自负风险;
本项目与 Anthropic 无任何从属、合作或背书关系;软件按「现状」提供、不提供任何担保。详见仓库 README。