cc-witch-web,已开源!实现OpenClaw、Claude Code等Agent的大模型便捷快速切换

开篇

这个五一节的第一天,着手解决了一个近2个月一直想解决的快捷更换AI Agent大模型的问题,手搓了cc-witch-web。

虽然现在有比较主流火爆的cc-switch和cc-switch-cli,但是cc-switch只能用于图形界面,cc-switch-cli只能用于命令行模式。桌面的cc-switch用着固然爽,服务器上却不能用,因为为了保障服务器性能,云服务器基本上都没有安装图形界面,使用cc-switch-cli给运行在云服务器上的Openclaw更换模型时就没那么高效和便捷了。

这个Web 端 AI Agent 模型切换管理工具,借鉴 cc-switch 的核心数据模型和切换方式,我把它打造成了web版本,服务跑起来后同时支持无图形界面的服务器和有图形界面的桌面环境,当然,如果放在云服务器上,考虑apikey等参数的安全性,加了登录页面。

当前支持 Claude Code 和 OpenClaw,架构已预留 OpenCode、Codex 等 Agent 扩展。

已开源到https://github.com/QinKunming/cc-switch-web

希望给大家所有帮助。web页面图示如下:

功能

  • Web 管理:浏览器操作,无需 GUI

  • Provider 管理:添加、编辑、删除、一键切换

  • 预设导入:19 个 Claude Code 预设 + 14 个 OpenClaw 预设

  • 热切换:Claude Code 切换后无需重启

  • 回填保护:切换前自动保存当前配置,手动改动不丢失

  • 登录认证:用户名 + 密码 + 验证码,防止公网服务器未授权访问泄露api

  • 数据库 :~/.cc-switch/cc-switch.db

快速开始

前置要求

  • Python 3.11+

安装

复制代码
cd cc-switch-web
pip install -r requirements.txt

启动

复制代码
python server.py

首次启动会自动生成默认密码并打印到控制台:

复制代码
  CC Switch Web
  Default login: admin / xxxxxxxx
  Change password in ~/.cc-switch/web-auth.json
  Local:   http://127.0.0.1:8787
  Network: http://192.168.x.x:8787

打开浏览器访问 http://<ip>:8787,使用打印的账号密码登录。

自定义参数

复制代码
python server.py --host=0.0.0.0 --port=9000

部署

Windows 10

方式一:直接运行

复制代码
cd cc-switch-web
pip install -r requirements.txt
python server.py

方式二:开机自启(Task Scheduler)

  1. 打开 Task Scheduler → Create Basic Task

  2. 触发器:计算机启动时

  3. 操作:启动程序

    • 程序:python.exe 完整路径(如 C:\Python312\python.exe)

    • 参数:server.py

    • 起始目录:cc-switch-web 完整路径

  4. 勾选"不管用户是否登录都要运行"

Ubuntu(无图形界面)

方式一:直接运行

复制代码
cd cc-switch-web
pip3 install -r requirements.txt
python3 server.py

方式二:systemd 服务(推荐)

  1. 创建服务文件:
复制代码
sudo tee /etc/systemd/system/cc-switch-web.service << 'EOF'
[Unit]
Description=CC Switch Web
After=network.target
​
[Service]
Type=simple
User=<你的用户名>
WorkingDirectory=/path/to/cc-switch-web
ExecStart=/usr/bin/python3 /path/to/cc-switch-web/server.py
Restart=on-failure
RestartSec=5
​
[Install]
WantedBy=multi-user.target
EOF
  1. 启用并启动:
复制代码
sudo systemctl daemon-reload
sudo systemctl enable cc-switch-web
sudo systemctl start cc-switch-web
  1. 查看状态和日志:
复制代码
sudo systemctl status cc-switch-web
sudo journalctl -u cc-switch-web -f

首次启动时查看默认密码:

复制代码
sudo journalctl -u cc-switch-web | grep "Default login"

方式三:后台运行(简单方式)

复制代码
nohup python3 server.py > cc-switch.log 2>&1 &
# 查看初始密码
head -5 cc-switch.log

修改密码

编辑 ~/.cc-switch/web-auth.json,密码为 SHA256 哈希值。

生成新密码哈希:

复制代码
import hashlib
print(hashlib.sha256("your-new-password".encode()).hexdigest())

将生成的哈希值替换到配置文件中对应用户的值即可。

配置文件路径

文件 路径 说明
Claude Code ~/.claude/settings.json 自动检测
OpenClaw ~/.openclaw/openclaw.json JSON5 格式,写入标准 JSON
cc-switch 数据库 ~/.cc-switch/cc-switch.db 与桌面版共享
Web 认证 ~/.cc-switch/web-auth.json 用户密码存储

架构

复制代码
cc-switch-web/
  server.py           # FastAPI 服务(启动入口、路由、认证中间件)
  db.py               # SQLite 数据层(兼容 cc-switch schema v10)
  config_ops.py       # 配置文件读写、原子写入、回填
  models.py           # Pydantic 数据模型
  presets/
    claude_presets.py  # Claude Code 预设(19 个)
    openclaw_presets.py # OpenClaw 预设(14 个)
  static/
    index.html         # Web 前端(单文件,内联 CSS + JS)
  requirements.txt

Agent 扩展

在 server.py 的 AGENT_REGISTRY 中注册新 Agent:

复制代码
AGENT_REGISTRY = {
    "claude":    {"name": "Claude Code", "icon": "🤖", "configurable": True},
    "openclaw":  {"name": "OpenClaw",    "icon": "🐾", "configurable": True},
    "opencode":  {"name": "OpenCode",    "icon": "🔵", "configurable": False},
    "codex":     {"name": "Codex",       "icon": "⚡", "configurable": False},
}

设置 configurable: True 后,该 Agent 会出现在侧边栏并支持 provider 管理。需要同时实现对应的切换逻辑和预设数据。

安全说明

  • 默认绑定 0.0.0.0:8787,局域网可访问

  • 登录需要用户名 + 密码 + 算术验证码

  • Session 有效期 7 天,存储在 HttpOnly Cookie 中

  • API Key 明文存储在 SQLite(与 cc-switch 一致),建议设置数据库文件权限为 0600

  • 如需 HTTPS,建议使用 nginx/caddy 反向代理

致谢

核心数据模型和配置逻辑来自 cc-switch(MIT License, Jason Young)

License

MIT

相关推荐
米小虾4 小时前
Agent = 大脑 + 眼睛 + 手脚:一篇看懂现代 AI Agent 的骨架
人工智能
小小测试开发4 小时前
安全评测得分 0.9556 掉到 0.3257,只改了 top_k 和 prompt_style 之外的题面比例
人工智能·安全·prompt
slacker-kian4 小时前
[实践]-用LLM对文本结构化:把多段文本描述变成规范的 JSON 知识库
人工智能·llm·prompt·结构化·pydantic·one-shot 提示
品牌常新4 小时前
景区巡逻机器人怎么选?派宝S5全地形守护解析
运维·人工智能·机器人
冬奇Lab5 小时前
LLM 驱动的自动化测试系列(13):Flaky Test 不是重跑几次就能解决的分类问题
人工智能·测试
血小溅5 小时前
当交付不再带来增长,医疗产品如何借 AI 持续进化?
人工智能
幻灭行度5 小时前
基于昇腾 910B NPU 部署 SenseVoiceSmall 语音识别服务
人工智能·语音识别
冬奇Lab5 小时前
一天一个开源项目(第237篇):DeepSeek Bot —— 把 DeepSeek Harness 变成一个有记忆、能群聊、会互相派活的 Bot 团队
人工智能·开源·deepseek
larance5 小时前
DecisionTree 二分类
人工智能·分类·数据挖掘