用户指南

连接你的 AI 智能体

ACP 连接器是一个跑在你自己电脑上的小程序。它把你个人的 Claude 或 Codex 接到一个 Cheers 机器人上, 让它能读频道、看到你附加的文件、并回复——全程用你自己的智能体订阅。本文面向非开发者,带你走一遍:安装、连接、保持更新, 并解决那个最常见的意外。

只需记住一件事:连接器一旦过期,你的机器人会悄悄失去新功能——最明显的就是 看不到你附加到消息里的文件。如果你明明附了文件,机器人却回复"请上传这些文件或提供路径",直接跳到 第 6 步——保持更新

1. 连接器是什么(30 秒版)

Cheers 本身不内置 AI。相反,你自带智能体,从你的电脑把它连进来。三个部件互相通信:

你的浏览器 ──▶ Cheers 网关(服务器) ◀──── 连接器(跑在你电脑上) ──▶ 你的 AI 智能体
                                          └ 一个配置文件 = 一个机器人

一个配置文件描述一个机器人。想要两个机器人(比如一个 Claude、一个 Codex)?两个文件,跑两份,彼此完全独立。

2. 开始之前

你需要怎么确认
能连上的 Cheers 服务器问管理员要地址,比如 ws://localhost:8000 或团队的 URL
已安装智能体运行 command -v claude-agent-acp(或 codex-acp),应打印出一个路径
智能体已登录存在 ~/.claude(或 ~/.codex)目录——那就是你的订阅登录
有管理机器人的权限你(或管理员)能在 Cheers 里打开 设置 → 机器人

就这些——你需要 Rust、Docker,也不需要 API key。给智能体登录一次就够了。

3. 安装连接器

下载对应你系统的预编译二进制,无需任何工具链。把下面这段粘进终端:

# 自动挑选对应系统/CPU 的文件、下载、赋予可执行权限
os=$(uname -s | tr 'A-Z' 'a-z'); arch=$(uname -m | sed -e 's/x86_64/amd64/' -e 's/aarch64/arm64/')
mkdir -p ~/.cheers/bin ~/.cheers/workspace   # workspace 是智能体的工作目录——必须存在,否则连接器会拒绝启动
curl -fsSL -o ~/.cheers/bin/cce-acp-connector \
  "https://github.com/ElePerson/Cheers/releases/latest/download/cce-acp-connector-$os-$arch"
chmod +x ~/.cheers/bin/cce-acp-connector
export PATH="$HOME/.cheers/bin:$PATH"   # 把这行加进 ~/.zshrc 就能长期生效
cce-acp-connector --help                # 打印出帮助 = 成功
如果仓库是私有的,直接 curl 会返回 404。改用 GitHub CLI 下载,例如 gh release download -R ElePerson/Cheers -p "cce-acp-connector-$os-$arch" -O ~/.cheers/bin/cce-acp-connector (不带 tag 时 gh 会取最新的 release)。

4. 创建机器人并拿到令牌

令牌(token)是连接器以你的机器人身份登录网关用的"密码"。在界面里获取:

  1. 登录 Cheers,打开 设置 → 机器人
  2. 创建一个机器人(或打开已有的)。取个名字如 claude,把 bridge/provider 类型设为 generic / ACP
  3. 签发令牌并复制。把它存进一个只有你能读的小文件:
    mkdir -p ~/.cheers/secrets && chmod 700 ~/.cheers/secrets
    # 把 PASTE_TOKEN_HERE 换成你复制的令牌:
    printf '%s' 'PASTE_TOKEN_HERE' > ~/.cheers/secrets/claude.token
    chmod 600 ~/.cheers/secrets/claude.token
令牌放文件里,绝不要写进配置文件。配置文件会被分享、截图、提交到 git——内联的令牌一定会泄露。 另外,重新签发会作废旧令牌,所以同一个机器人同一时间只能有一个连接器在用。

5. 写一个配置文件

创建 ~/.cheers/cheers-daemon.claude.toml。这是最小形式——其余字段都有合理默认值。把两个 URL 改成你的网关地址, 把 command 改成你智能体的路径:

version = 1

[daemon]
state_path = "state-claude.json"   # 相对于本文件所在目录(~/.cheers)
log_dir    = "logs-claude"

[accounts.claude.bridge]
control_url    = "ws://localhost:8000/ws/agent-bridge/control"
data_url       = "ws://localhost:8000/ws/agent-bridge/data"
bot_token_file = "secrets/claude.token"   # 第 4 步的文件——绝不在这里直接写令牌

[accounts.claude.adapter]
type    = "stdio"
command = "/opt/homebrew/bin/claude-agent-acp"   # command -v claude-agent-acp 的输出
args    = []

[accounts.claude.policy.prompt]
allow             = true
allow_attachments = true    # ← 让机器人能收到你附加的文件
allow_images      = true

[accounts.claude.policy.workspace]
default_cwd   = "~/.cheers/workspace"
allowed_roots = ["~/.cheers/workspace"]
backend_may_set_cwd = true

[accounts.claude.policy.env]
inherit = false
allow   = ["HOME", "PATH"]   # HOME 让智能体能读到你 ~/.claude 的订阅登录

[accounts.claude.policy.permission]
forward_to_backend = true    # 工具调用请求会作为审批卡片出现在频道里
wait_timeout_ms    = 900000
on_timeout         = "cancel"
auto_allow         = false

[accounts.claude.policy.mcp]
inject_cheers = true         # 给智能体注入 Cheers 工具(读文件、发消息……)

配置目录最终长这样:

~/.cheers/
├─ cheers-daemon.claude.toml     # 一个文件 = 一个机器人
├─ secrets/claude.token          # 令牌,权限 600
├─ workspace/                    # 智能体的工作目录
└─ logs-claude/                  # 它的日志

启动并确认在线

cce-acp-connector start  --config ~/.cheers/cheers-daemon.claude.toml --name claude
cce-acp-connector status --name claude          # → status=running
cce-acp-connector logs   --name claude --lines 40
# 应看到 "initialized ACP agent" 和 "BridgeRuntime started",没有 ERROR

现在在 Cheers 频道里 @ 这个机器人。有回复就说明连上了。🎉 因为令牌存在文件里,重启不需要任何额外步骤: cce-acp-connector restart --name claude

6. 保持更新 (重要)

Cheers 的新功能往往需要相匹配的连接器版本。过期的连接器照样能连、照样能跑——它只是会悄悄跳过自己还看不懂的东西。 最常见的"受害者"就是附加的 context:文件小标签(chip)在聊天里显示得好好的,但机器人根本没收到,还反过来让你上传文件。 更新一下就能修好。

先看你是不是落后了

cce-acp-connector status --name claude
# 若有更新版本,这里会出现一行 "update available:",
# 启动时的日志里也会有一条提醒。

方式 A —— 打开带签名的自动更新(连接器 ≥ 0.1.27)

在配置里加上这段,然后重启一次。之后连接器会安全地自我更新(校验 ed25519 签名和 sha256、等空闲、原地替换, 新版本不健康还会自动回滚):

[update]
auto = true
升级很老的版本?低于 0.1.27 的二进制会拒绝含 [update] 的配置。 这种情况先用方式 B 更新二进制,再加 [update] 段。

方式 B —— 手动更新

重新跑一遍第 3 步的下载(会覆盖旧二进制),然后重启:

os=$(uname -s | tr 'A-Z' 'a-z'); arch=$(uname -m | sed -e 's/x86_64/amd64/' -e 's/aarch64/arm64/')
curl -fsSL -o ~/.cheers/bin/cce-acp-connector \
  "https://github.com/ElePerson/Cheers/releases/latest/download/cce-acp-connector-$os-$arch"
chmod +x ~/.cheers/bin/cce-acp-connector
cce-acp-connector restart --name claude

自动更新默认关闭是有意为之——更新意味着执行下载来的代码,所以由机器主人自己选择开启。 你随时可以用 CHEERS_ACP_NO_SELF_UPDATE=1 彻底禁用它。

7. 附加文件是怎么工作的

在消息输入框里,Add context(添加上下文)让你附加一个文件(或像 review.md:1-1 这样的行范围, 或工作区里的某个文件)。每个附件会在你的消息上变成一个小标签。发送时,Cheers 把这些引用传给机器人的连接器, 连接器再把它们写进智能体的 prompt,让它知道你指的是什么。

8. 排障

你看到的现象可能原因处理
机器人无视你附加的文件——让你上传或给路径,尽管消息上明明有小标签连接器版本旧于"把附加 context 渲染进 prompt"的那一版更新连接器(≥ 0.1.28)后 restart;同时确认 allow_attachments = true
start 立刻退出,日志提到 token令牌文件缺失或为空重做第 4 步;确认 ~/.cheers/secrets/<名字>.token 存在且非空
start 立刻退出,日志:allowed_roots does not exist配置里 allowed_roots / default_cwd 指向的目录还没创建——启动前它必须存在mkdir -p ~/.cheers/workspace(或你配置里写的那个目录),再重新 start
日志:command not found智能体路径不对command -v claude-agent-acp,把绝对路径填进 adapter.command
智能体启动了但从不回复 / 鉴权失败智能体读不到你的订阅登录确保 policy.env.allow 里包含 HOME
反复重连 / 一直连不上网关地址不对,或网关没起找管理员核对两个 ws://… URL;确认服务器在线
unsupported protocolVersion … Closing你的智能体版本和连接器不匹配把智能体(claude-agent-acp / codex-acp)更新到较新版本
某个工具动作卡在"等待审批"auto_allow = false(安全默认)在频道的审批卡片上批准;或设 auto_allow = true 在本地信任它

延伸阅读