跳转到内容

安装

Control Center 有两种运行方式:一种是位于 app.usectrl.dev 的 Web 应用,无需下载任何东西;另一种是你自行安装的桌面 应用。它们是同一个应用,功能也完全相同。唯一的区别在于服务器在哪里运行——而且 Web 应用无法替你运行服务器。

app.usectrl.dev 就是本应用针对浏览器编译的版本。 无需安装,也无需更新。打开并连接即可。

浏览器标签页无法做到的,是_成为_服务器本身。所有客户端——桌面端、Web 端、手机端—— 都只是渲染层,位于拥有数据库并执行实际工作的无界面 cc_server 之上,因此 Web 应用始终要与你运行的服务器通信。有两种方式为它提供服务器:

在你自己的机器上运行服务器。 在本地启动 cc_server,让 Web 应用指向 ws://localhost:9030。浏览器把 localhost 视为可信来源,因此这不需要 证书,也不需要隧道。这是试用 Web 应用最快的方式,而且你的数据永远不会 离开你的机器。

在另一台机器上运行服务器。 由于 app.usectrl.dev 通过 HTTPS 提供服务,非本地的 服务器必须能通过 wss:// 访问,并使用浏览器已经信任的证书。cc_server 在没有 TLS 时 拒绝绑定非回环地址,所以请从以下方案中选择一种:

  • 直接用 --tls-cert 和 --tls-key 为它提供证书
  • 将它放在终止 TLS 的反向代理之后,并用 --insecure 启动
  • 通过提供证书的隧道或 VPN 将它暴露出去——Tailscale、 cloudflared 或类似方案。设置 → 服务器 → 连接与状态 在 共享此服务器 下提供了内置隧道选项。

只要服务器位于代理、NAT 或隧道之后,就把 --public-url 设置为客户端 实际应连接的地址。它默认使用本地绑定地址,因此不设置时 客户端会尝试错误的主机。

少数功能仅限桌面端,因为它们需要原生窗口或机器自身的 音频设备:悬浮的专注模式胶囊、操作系统通知弹窗(应用内 通知中心在所有平台都可用)、从日历事件“开始录制并关联”, 以及重新运行会议总结。其他一切——空间、智能体、Pull request 审查、流水线、工单、记忆以及会议录制本身——行为都相同。

要将 Web 应用连接到服务器,请参阅 连接到远程服务器。要托管该服务器, 请参阅运行无界面服务器。

要求 macOS Windows Linux
操作系统版本 macOS 13+ (Ventura) Windows 10+ Ubuntu 22.04+ 或其他搭载 glibc 2.35+ 和 GTK 3 的发行版
架构 Apple Silicon (arm64) x64, ARM64 x86_64
Git 必需 必需 必需
磁盘空间 应用约 200 MB,另加服务器的数据目录 约 200 MB 约 200 MB

Intel Mac 没有预构建的下载包。请改为从源代码构建。

服务器的数据目录会比应用本身占用更大。首次启动时,cc_server 会强制 安装设备端模型——文本嵌入(约 90 MB)、说话人分离(约 35 MB) 以及所选的语音模型(默认为 Parakeet TDT v3,约 600 MB;Whisper 各版本为 198–626 MB)——外加一个内嵌的 code-server 构建,并且每次 智能体对话都会为它操作的仓库创建一个写时复制的工作树(在 Windows 上则是 普通的 git worktree)。语音不是可选项:没有 ASR 模型,就不提供 会议和听写相关的操作。语音模型首次下载后仍需重启一次, 录制功能才会亮起。

桌面端会让其服务器使用操作系统的每用户应用程序支持目录。手动启动 cc_server 且未指定 --data-dir 时,默认使用 <application data>/control-center——macOS 上是 ~/Library/Application Support/control-center,Windows 上是 %APPDATA%\control-center, Linux 上是 $XDG_DATA_HOME/control-center(或 ~/.local/share/control-center)。

以下所有构建产物均来自 GitHub Releases。

下载 Control-Center-<version>-arm64.dmg,打开它,然后把 Control Center 拖到“应用程序”文件夹。该构建使用 Developer ID 签名并经 Apple 公证,因此可以正常打开。

  • Control-Center-<version>-x64-setup.exe:单用户安装程序。
  • Control-Center-<version>-windows-x64.zip:便携版压缩包。
  • Control-Center-<version>-arm64-setup.exe:单用户安装程序。
  • Control-Center-<version>-windows-arm64.zip:便携版压缩包。

Windows 上,空间的检出使用 git worktree(不采用写时复制)。

  • Control-Center-<version>-x86_64.AppImage
  • Control-Center-<version>-linux-x64.tar.gz

AppImage 内置更新信息,因此 AppImageUpdate 或 appimaged 可以就地把它升级到最新版本,且只下载发生变化的部分。

两者都基于 Ubuntu 22.04 构建,可在该系统及更新的系统上运行(Debian 12、Fedora 36 及更高版本):它们链接 glibc 2.35 和 GCC 12 的 libstdc++,并从系统获取 GTK 3。原版桌面可能缺少的少数库已随包内置,因此无需安装其他东西。声音——会议播放、声景、机台音频和通知提示音——通过系统的 libmpv 播放(Ubuntu 22.04 上是 libmpv1,较新的 Ubuntu 和 Debian 上是 libmpv2,Fedora 上是 mpv-libs);没有它,应用启动时会隐藏这些控件。

每个版本还会单独提供无界面服务器——cc_server-<version>-macos-arm64.tar.gz、cc_server-<version>-linux-x64.tar.gz、cc_server-<version>-windows-x64.zip、cc_server-<version>-windows-arm64.zip——以及 GHCR 上的 cc-server、cc-webapp 和 cc-remote 镜像。参见运行无界面服务器。

Linux 归档基于 Ubuntu 22.04 构建,其捆绑的原生库链接 glibc 2.35 和 GCC 12 的 libstdc++,因此需要至少这么新的主机(Ubuntu 22.04、Debian 12、Fedora 36 或更高版本)。在更旧的发行版上,请改运行 cc-server 镜像——容器自带用户空间,因此只有内核需要由你提供。

Control Center 通过适配器派发智能体。适配器只有两个,列表是固定的,并且会自动检测——无法再注册其他适配器。

Control Center (built-in) 适配器不需要外部 CLI:智能体循环在服务器内部运行,通过 HTTP 与模型提供商通信,因此始终可用。在 设置 → 服务器 → 模型提供商 中连接提供商。OpenAI、Codex、Cursor 和 Kimi Code 支持浏览器登录;Anthropic、OpenRouter、Google Gemini、DeepSeek、Mistral、xAI、z.ai 和 Moonshot 则需要 API 密钥。Codex 和 Cursor 是这个运行器上的提供商,而不是独立的 CLI。z.ai 有意列出两次:z.ai 是按量付费的开放平台,从你的账户余额中扣费,而 z.ai GLM Coding Plan 是订阅套餐。两者使用同一个账户密钥,但 z.ai 从不同的主机提供该套餐——把编码套餐的密钥粘贴到普通的 z.ai 卡片中,每个请求都会返回 429 … "Insufficient balance or no resource package",因为该套餐没有可扣的余额。Claude Pro/Max 订阅不是 Anthropic API 登录;请改通过 Claude Code 适配器使用该套餐。在那页上你_可以_添加的是自定义提供商——任何兼容 OpenAI 或兼容 Anthropic 的端点(Ollama、LM Studio、vLLM、私有部署),位于 自定义提供商 → 添加提供商 下。

另一个适配器封装外部 CLI:

  • Claude Code(claude):npm install -g @anthropic-ai/claude-code

检测会探查运行 cc_server 的那台机器的 PATH——桌面端运行自己的服务器时就是同一台机器,否则就是远程主机。请在那里安装 Claude Code CLI,而不是在客户端上。该页面上的 刷新 按钮会重新执行探测。

模型列表由每个已连接的提供商实时提供;models.dev 只提供价格和上下文窗口元数据。参见管理适配器与模型。

GitHub 凭据属于你本人,并保存在服务器上,以你的用户 id 为键——而不在客户端的操作系统钥匙串中。你登录的每台设备都使用同一个凭据,其他成员都无法读取它。

如果服务器注册了 GitHub App(创建 GitHub App),设置 → 工作区 → 个人资料与身份 → 代码托管 会提供使用 GitHub 登录(由服务器执行的设备流程)。否则请粘贴个人访问令牌:

  • 经典:repo 和 read:org
  • 细粒度:Contents 和 Pull requests(读写)、Checks 和 Actions(读取)

在 GitHub → Settings → Developer settings → Personal access tokens 创建。服务器会在令牌存储时探测其账号名称,因此该行可以显示“已以 … 身份登录”;探测失败仍会保存令牌,而拼写错误或缺少权限范围会在之后表现为请求失败。

引导流程的第一步就是建立此连接。之后,同一张卡片就是替换或清除它的地方。GitLab 和 Bitbucket 使用同一张卡片;参见连接代码托管。

Control Center 是一个瘦客户端,位于拥有数据库并承担全部工作的无界面 cc_server 进程之上;部署与客户端 说明了这种拆分对桌面端、Web 端和手机端意味着什么。

桌面端首次启动时会询问 “Control Center 应如何运行?”:

  • 在此应用中运行:桌面端会在本机启动并监管一个 cc_server,并通过回环与之通信。无需其他配置。这就是快速开始所假设的设置。
  • 连接到远程实例:用 WebSocket URL、设备 id 以及配对密钥或一次性邀请码,把桌面端指向在别处运行的 cc_server。数据归那台服务器所有;此桌面端只负责渲染。

之后可在 设置 → 服务器 → 连接与状态 中添加或切换服务器。切换会就地重新连接——无需重启。浏览器无法运行服务器,因此 Web 客户端始终是远程的;参见连接到远程服务器。

要自行托管服务器,请参阅运行无界面服务器。其中涵盖构建二进制文件、在首次启动前生成配对密钥,以及 --data-dir / --port / --bind 标志。

  1. 设置 → 服务器 → 模型提供商 会列出两个适配器。“Control Center (built-in)”会显示为已找到,版本为 built-in;如果服务器主机的 PATH 中有它的 CLI,Claude Code 也会显示为已找到。如果没找到,请按刷新。
  2. 设置 → 工作区 → 仓库 会列出此工作区的仓库,而添加仓库 会浏览服务器主机上的文件夹。
  3. 设置 → 工作区 → 智能体 会列出你第一个工作区预置的五个智能体。每个智能体都需要设置适配器和模型才能运行。
  4. 设置 → 服务器 → 诊断与隐私 会报告此主机提供的沙箱后端、嵌入模型的状态以及日志记录情况。

原生库是必需的,且没有降级模式:缺少任何一个都会导致启动硬失败,而不是走一条更慢的路径。请先准备好它们,再做其他事情。所有 Flutter 和 Dart 命令都要通过 fvm 执行,因为 SDK 版本由仓库锁定。

终端窗口
git clone https://github.com/SamuelAlev/control-center.git
cd control-center
scripts/natives/build_natives.sh
fvm flutter pub get
fvm flutter pub run build_runner build --delete-conflicting-outputs
fvm flutter gen-l10n
fvm flutter run -d macos # or -d windows, -d linux

在 macOS 上,安全存储(GitHub、Linear 和 Google 登录)需要应用由 Apple 团队签名——一个免费的 Apple ID 就足够,这是一次性设置,详见本地开发签名。没有它,应用仍能启动;只是安全存储不可用。Windows 和 Linux 无需签名。

要构建无界面服务器二进制文件,请先用同样的方式准备好原生库,然后:

终端窗口
cd apps/cc_server
fvm dart build cli

构建钩子会把 build/natives/ 中已有的内容复制进捆绑包,因此在准备原生库之前构建,会得到一个不含原生库的捆绑包,以及一个拒绝启动的服务器。

Web 客户端请使用 scripts/build_web.sh(手机 PWA 用 --target remote)。CI 运行的就是它:普通的 flutter build web 会跳过构建标识戳、Web Worker 重新生成、部署清单和资源预算检查。