内容
<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/ochub-wordmark-light.png">
<img src="docs/assets/ochub-wordmark-dark.png" alt="OcHub" width="680">
</picture>
</p>
<p align="center">
一款用于 AI 编程工具的本地桌面控制中心。
切换提供商、管理共享功能并从一个地方运行本地中继。
</p>
<p align="center">
<a href="https://github.com/OcHub-team/OcHub/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/OcHub-team/OcHub/actions/workflows/ci.yml/badge.svg"></a>
<a href="https://github.com/OcHub-team/OcHub/actions/workflows/release.yml"><img alt="Release" src="https://github.com/OcHub-team/OcHub/actions/workflows/release.yml/badge.svg"></a>
<a href="https://github.com/OcHub-team/OcHub/releases/latest"><img alt="最新版本" src="https://img.shields.io/github/v/release/OcHub-team/OcHub?display_name=tag&sort=semver"></a>
<a href="LICENSE"><img alt="GPL-3.0-or-later" src="https://img.shields.io/github/license/OcHub-team/OcHub"></a>
<img alt="macOS, Windows, Linux" src="https://img.shields.io/badge/platform-macOS%20%7C%20Windows%20%7C%20Linux-31b8b5">
</p>
<p align="center">
<a href="https://github.com/OcHub-team/OcHub/releases/latest">下载</a>
·
<a href="#what-ochub-does">功能</a>
·
<a href="#build-from-source">从源码构建</a>
·
<a href="packaging/README.md">发布指南</a>
</p>
> OcHub 正在积极的预发布开发中。在尝试早期版本之前,请备份重要的工具配置。
## OcHub 的功能
OcHub 管理 **Claude Code、Claude Desktop、Codex、OpenCode、OpenClaw 和 Hermes**,无需浏览器壳或网页视图。
| 领域 | 功能 |
| --- | --- |
| 提供商 | 发现、导入、编辑、切换和测试直接 API 提供商 |
| 中继站 | 通过本地网关路由支持的客户端,带有模型别名、推理映射、故障转移、健康检查和用量核算 |
| 共享工具 | 管理 MCP 服务器和支持的客户端的可重用技能 |
| 操作 | 浏览会话、检查用量、配置同步和管理应用行为 |
| 迁移 | 从 cc-switch 数据库或配置文件进行一次性、只读导入 |
OcHub 拥有 `~/.ochub/`,并且从不写回 `~/.cc-switch/`。它会更新您明确管理的工具的实时配置目录,因此在 OcHub 中切换提供商之前,请退出 cc-switch。
### 从 cc-switch 导入
在第一次启动时,OcHub 会查找现有的 cc-switch 安装,并提供导入选项,显示它找到的内容,然后再复制任何内容。读取了两个存储世代:从 v3.x 开始使用的 `cc-switch.db` 数据库和较旧的 `config.json`。如果同时存在这两个文件,则优先使用数据库,因为它还包含使用历史、备份端点和定价。
除非您接受,否则不会导入任何内容,并且导入只会读取 `~/.cc-switch/`,因此 cc-switch 之后仍然可以正常工作。如果您跳过提示 - 或者您已经在安装 cc-switch 之前启动了 OcHub - 相同的导入仍然可以在 **设置 → 数据和备份 → 从 cc-switch 导入** 下用。针对已经有提供商的安装运行它时,首先会拍摄数据库快照,然后替换共享 ID 的记录为 cc-switch 的副本。
## 下载
每个版本标签都在匹配的原生 GitHub 托管运行器上构建。
### Homebrew(macOS)
Homebrew 会自动选择 Apple Silicon 或 Intel 构建:
```sh
brew install --cask ochub-team/tap/ochub
```
使用以下命令升级或卸载 OcHub:
```sh
brew upgrade --cask ochub-team/tap/ochub
brew uninstall --cask ochub
```
Cask 在 [`OcHub-team/homebrew-tap`](https://github.com/OcHub-team/homebrew-tap) 仓库中维护,并下载与每个 GitHub Release 发布的相同 DMG。
### 直接下载
| 平台 | 发布文件 |
| --- | --- |
| macOS Apple Silicon | ARM64 `.dmg` |
| macOS Intel | x64 `.dmg` |
| Windows 10/11 x64 | NSIS 安装程序和便携式 `.zip` |
| Linux x64 | AppImage 和 Debian `.deb` |
### 更新
OcHub 在启动后不久以及之后每天检查一次新版本,并且可以从 **设置 → 关于 → 检查更新** 中安装新版本,而无需离开应用程序。您可以通过同一组中的切换按钮关闭检查。
下载的软件包会针对编译到二进制文件中的签名密钥进行验证,如果版本不是比正在运行的版本更新,则会拒绝更新,因此更新通道不能用于推送未签名的代码或回滚安装。
两种安装方法仅限检查,因为自我更新会与拥有它们的系统冲突:
| 安装 | 应用内更新 |
| --- | --- |
| macOS `.dmg`,Windows 安装程序,Linux AppImage | 是 |
| Debian 软件包 | 否 - 使用 `apt`,以便 dpkg 的记录保持准确 |
| Windows 便携式 ZIP | 否 - 没有安装程序可以重新运行 |
这两种方法会在设置行中报告原因,并链接到发布页面。
发布还包括 `SHA256SUMS` 和 GitHub 工件证明。使用以下命令验证下载的文件:
```sh
sha256sum -c SHA256SUMS --ignore-missing
gh attestation verify <downloaded-file> --repo OcHub-team/OcHub
```
### macOS:在首次启动时批准应用
OcHub 尚未获得苹果的公证,因此 macOS 会要求您批准:
1. 打开 OcHub。macOS 表示无法验证开发者。
2. 进入 **系统设置 › 隐私和安全**,滚动到安全并点击 **仍然打开**。
在 macOS 15 及更高版本上,控制点击应用不再适用于此 - 系统设置路线是唯一的选择。要完全跳过提示,请使用以下命令安装而不使用隔离标志:
```sh
brew install --cask --no-quarantine ochub-team/tap/ochub
```
从 OcHub 内部安装的更新永远不会被隔离,因此这是一个一次性步骤,而不是您在每个版本中重复执行的步骤。
Windows SmartScreen 可能会因同样的原因发出警告。有关开发者 ID 公证和 Authenticode 签名的详细信息,请参阅[发布指南](packaging/README.md)。
## 架构
OcHub 是一个围绕 GPUI 和 axum 构建的 Rust 工作区。
| 货箱 | 角色 |
| --- | --- |
| `ochub-core` | 领域模型、SQLite 存储、提供商切换、客户端配置写入、同步、MCP、技能、会话、用量和身份验证 |
| `ochub-server` | 环回控制 API 和进程内中继网关 |
| `ochub-convert` | 支持的 API 方言之间的请求和响应转换 |
| `ochub-app` | 托管核心和服务器的原生 GPUI 桌面应用程序 |
GPUI 绑定到测试的 Zed 提交。Linux 构建启用 Wayland 和 X11;macOS 构建在运行时编译 Metal 着色器。
## 从源码构建
仓库在 `rust-toolchain.toml` 中固定 Rust **1.97.1**。Rustup 会自动选择它:
```sh
git clone https://github.com/OcHub-team/OcHub.git
cd OcHub
cargo run -p ochub-app
```
平台先决条件:
- **macOS:** Xcode 或 Xcode 命令行工具。
- **Windows:** Visual Studio 2022 构建工具,附带 Windows SDK。
- **Debian/Ubuntu:** 运行 `./scripts/ci/install-linux-deps.sh`。
有用的开发命令:
```sh
just check
just test
just ci
just qa-app # macOS: 固定的 /tmp/OCHUB-QA.app 验收包
```
要本地构建安装程序,请安装与 CI 相同的固定打包工具:
```sh
cargo install cargo-packager --version 0.11.8 --locked
just package-macos
# 或,在 Linux 上:
just package-linux
```
## 自动发布
`Release` 工作流仅接受与 Cargo 工作区版本完全匹配的标签。例如,工作区版本 `0.1.0` 必须发布为 `v0.1.0`。它并行构建了 macOS 两个架构以及 Windows 和 Linux,检查预期的软件包集,创建校验和和出处,然后发布一个 GitHub Release,然后要求 Homebrew Tap 更新 Cask 版本和两个 macOS 校验和。Tap 还会每天检查最新版本作为备用。
详细的签名密钥名称和本地打包命令在 [`packaging/README.md`](packaging/README.md) 中有记录。
## 许可证
OcHub 在 [GNU 通用公共许可证 v3.0 或更高版本](LICENSE) 下获得许可。这是一个从头开始的 GPUI + axum 重写,其灵感来自 [`cc-switch`](https://github.com/farion1231/cc-switch)。