Claude Cloud 0.9.7 新增
Claude Cloud 对话在 Anthropic 的沙箱中运行 Claude Code,而不是在你的中继主机上。沙箱在它自己的一个 GitHub 仓库克隆上工作。它看到的是推送到 GitHub 的内容,而看不到你机器上的任何东西,其结果会以智能体推送的分支形式返回。该对话会计费到中继主机的 Claude CLI 所登录的 Claude 账户。
在 OAR 中,它与别的对话一样:回复会流式显示,问题以卡片形式到来,在手机上也能使用。
实验性,默认关闭
Claude Cloud 使用 Claude CLI 在中继主机上保存的登录,来调用 Claude CLI 自己使用的 API 端点。这些端点并非有文档说明的公开 API。 Anthropic 可能在不通知的情况下更改它们;届时云端对话和实时用量数据会以一条提示失败,直到 OAR 更新。如果你不放心让 CLI 之外的程序以这种方式使用其登录,请保持该提供商关闭。
所需条件 #
- 中继主机上的 Claude CLI,已用 claude.ai 账户登录:使用 Settings → Providers → Claude → Relogin(设置 → 提供商 → Claude → 重新登录),或在主机上运行
claude。同一个登录也用于 Claude 对话。 - 连接到该 Claude 账户的 GitHub:claude.ai/connect-github。
- 在云端对话要处理的每个仓库上都允许 Claude GitHub 应用访问(GitHub → Settings → Applications → Claude → Configure)。
- Claude 账户上的一个环境。没有环境的账户会在你打开一次 claude.ai/code 时得到它的默认环境。
启用 #
打开 Settings → Providers → Claude Cloud(设置 → 提供商 → Claude Cloud)。
| 控制 | 默认值 | 作用 |
|---|---|---|
| Enable Claude Cloud for New Chat(在新建对话中启用 Claude Cloud) | 关闭 | 在 New Chat(新建对话)中提供 Claude Cloud,并开启 Check Usage(查看用量)中的实时账户数据。当主机没有 Claude 登录时会被拒绝。 |
| Claude login(Claude 登录) | 跳转到 Claude 选项卡,在那里更改登录。 | |
| Cloud environment(云端环境) | 账户的第一个活动环境 | 新云端会话运行的环境。没有保存时,中继取第一个活动环境并保存它。 |
| Default model(默认模型) | claude- |
新云端对话一开始所用的模型。列表是 Claude 提供商的模型(不含其 [1m] 变体),再加上默认值。 |
| Save Claude Cloud settings(保存 Claude Cloud 设置) | 保存环境和默认模型。开关立即生效。 |
该选项卡还会显示对话计费到的账户,以及中继从哪里读取登录、登录有效期到何时。
开启该提供商即表示你同意上述使用 Claude 登录的方式:
- 中继及其云端 worker 只读取访问令牌。它只发送到
https://,不发往其他主机。api. anthropic. com - 它只保存在内存中。不写入数据库或日志,不发送到浏览器,也不放进错误消息。
- OAR 从不刷新它,也从不使用刷新令牌。CLI 自己负责让登录保持有效。当令牌过期时,中继会重新读取该文件,并且最多每五分钟一次让 CLI 检查自己的登录。仍然过期的登录会以一条提示结束该轮,要求重新登录。
- 当开关关闭时,中继不会用这个登录向 Anthropic 请求任何内容:不列出环境,也不读取账户用量。
关闭 Claude Cloud 会把它从 New Chat 中移除。已经存在的云端对话会继续工作。
开始一个云端对话 #
选择 + New Chat → Provider → Claude Cloud(新建对话 → 提供商 → Claude Cloud)。Working directory(工作目录)字段仍然保留,但在这里它只用来填充两个字段,你也可以从列表中选择或自行输入。没有可选择的推理强度。云端会话本身由你的第一条消息创建。对话框的说明见开始对话。
Repository(仓库) #
从文件夹的 origin 远程仓库读取,或从其上游分支的远程仓库读取。字段获得焦点时,OAR 会列出 Claude GitHub 应用可为该账户访问的仓库。列表从 Anthropic 读取并保留一分钟;标签旁边的 ↻ 会再次读取。如果无法读取,原因会显示在之前用过的仓库下方。本中继上较早的云端对话用过的仓库排在最前,并标记为“used here”;其他标记有“private”、“public”、“archived”和“no access”。输入会按 owner/ 筛选列表;方向键和 Enter 选择,Escape 关闭。
你也可以输入或粘贴 owner/ 或一个 GitHub URL,https 或 ssh 均可。只接受 GitHub 仓库。
Branch(分支) #
文件夹的当前分支;从列表中选择的仓库会带来它的默认分支。字段获得焦点时,OAR 会按中继主机的 git 所见提供该仓库的分支(git ls-,使用主机自己的 GitHub 登录)。当主机无法读取它们时,该字段是纯文本字段。留空表示仓库的默认分支。
警告 #
在字段下方,OAR 会警告云端克隆不会拥有的内容:
| 警告 | 含义 |
|---|---|
1 commit not pushed — the cloud clone will not have it. |
文件夹的分支领先于它的上游。有多个提交时会带数量显示。 |
Branch main has no upstream — push it first, the cloud clone only sees Git |
该分支从未推送过。 |
Uncommitted changes stay local. |
文件夹有未提交的更改。 |
This folder is not a git repository — enter the repository by hand. |
文件夹没有给出可填充的内容。 |
No Git |
当存在远程但不是 GitHub 远程时,显示为 The remote of this folder is not on Git。 |
Could not read git details for this folder — enter the repository by hand. |
中继无法读取该文件夹。 |
The Claude Git |
云端会拒绝第一条消息。 |
No cloud environment is set — choose one in Settings → Providers → Claude Cloud. |
在设置中选择一个环境。 |
前两条警告只在字段仍显示文件夹自己的仓库和分支时出现。
如果 Start chat(开始对话)被拒绝,字段下方的一行错误会说明原因:例如 Enter a Git、Not a Git、Not a valid branch name.、Claude Cloud is not enabled on this relay,或 No cloud environment is set. 并建议在设置中选择一个。
在云端对话中工作 #
回复会随着智能体书写而流式显示,包含思考、工具活动和子智能体气泡。当沙箱启动时,工具活动会把它的一步步显示为以 Cloud: 开头的行,然后是 Claude Code running in the cloud 和模型。
- 云端行。 在输入区上方:仓库、分支、指向会话的 claude.ai ↗ 链接、智能体推送的每个分支各有一个 ⇡ branch(⇡ 分支)链接(最新 20 个),以及 Anthropic 所报告的该会话迄今的费用。已推送的分支会打开 GitHub 上它与该对话起始分支的对比(如果智能体推送的就是起始分支本身,则打开该分支)。
- 在 claude.ai 上打开。 对话的
⋯菜单中的 ☁️ Open on claude.ai(在 claude.ai 上打开)会在会话存在后于 claude.ai 上打开它。 - 问题。 智能体的问题(
Ask)以提问卡片形式到来,包含多选。请求权限的工具会得到一张 Allow(允许) / Deny(拒绝)卡片。你在 claude.ai 上回答的卡片会在 OAR 中关闭。User Question - 停止。 Stop(停止)会中断云端这一轮。如果云端在 30 秒内没有确认,该轮会在 OAR 中结束,并带有一条说明智能体可能仍在那边工作的提示,附上会话链接。
- 图片。 JPEG、PNG、GIF 或 WebP,每个最大 5 MB,以内联方式发送。其他附件会被拒绝:沙箱无法读取中继主机的文件。
- 后续消息。 消息会进入同一个云端会话,即使该会话已闲置很久。在一轮期间发送的消息会等待该轮结束。
- 更换模型。 可以在输入区中于轮次之间更换模型,与本地 Claude 对话相同。沙箱会在下一条消息前切换。
- 提交署名。 智能体在沙箱中所做的提交和拉取请求,会以 Claude 选项卡的署名设置所规定的行结尾;见提交署名。提交的作者仍是沙箱的 git 身份(
Claude)。 - 后台工作。 当智能体的后台工作(一个子智能体、一条长命令)运行时,该轮保持打开,因此最后的回复会在同一轮中到达。
- 会话自行开始的轮。 当智能体的后台工作在轮结束后继续存在,或当你在 claude.ai 上发送消息时,回答会作为续接回复出现在对话中,并带有一行说明它的来源。
- 归档与删除。 归档或删除对话会在 Anthropic 处归档云端会话;取消归档会把它带回来。那里不会删除任何东西。
当浏览器或中继不在时 #
智能体会在云端继续工作。在一轮中途重启中继或对话的 worker,不会把你的消息发送两次:新 worker 会在会话的事件日志中找到该轮并跟随它,在此期间已结束的轮则从日志回答。与会话断开的连接会在断开处重新打开。概述见重启与恢复。
触及用量上限时 #
云端在 Claude 用量上限处拒绝的轮会像本地 Claude 轮一样暂停:带有一条含重置时间的提示、横幅,工作在重置后自行继续。见达到用量上限时。上限之前的警告是工具活动中的一行 Claude usage limit warning (...,而不是横幅。
云端对话没有的功能 #
中继主机上的任何东西都不会到达沙箱。
- 中继工具。 没有
preview,没有relay_,也没有按主机路径嵌入的媒体。见按提供商。tool - 文件夹。 没有可更改的工作目录,
⋯菜单中没有 Change CWD(更改工作目录),也没有可浏览的 Session(会话)文件夹。 - 中继模式。 没有中继模式,没有推理强度,也没有上下文大小:这三个选择器都被隐藏。
- 引导与任务。 没有中途引导,也没有后台任务面板。
- 附件。 只有图片。
用量 #
当 Claude Cloud 开启时,Check Usage 会有一张 Claude Cloud 卡片:
- 账户持有的每美元额度各有一个计量条,显示已用、剩余和到期时间;
- Cloud spend (OAR sessions)(云端花费,OAR 会话):Anthropic 为本中继仍存在的云端会话所报告的费用,当你从云端对话打开弹窗时,还会带上这个对话自己的费用;
- 最新的云端会话报告:它的费用,以及按模型的费用和 token。
这些数字是 Anthropic 报告的费用,不是账单,且在其他地方开始的会话不计入。已提供但尚未领取的额度也会被提及,并附上指向 claude.ai 的链接。云端轮先花费云端额度;没有额度时,它们计入 Claude 的限制。
Check Usage中的 Claude 卡片在 Claude Cloud 开启时也会实时从账户读取它的限制。🧠 按钮显示会话上下文窗口已使用多少,不含分类。回复不附带用量行。
由智能体启动云端会话 #
智能体可以用 create_ 开始一个云端对话,使用 provider: "claude-、一个 repo 以及可选的 branch;见 create_session。这对已配对中继上的智能体(按在那里启动任何会话的规则)有效,对本中继上的智能体,在智能体会话开启后也有效。适用的检查与 New Chat 中相同:提供商已开启、已设置环境、仓库在 GitHub 上。没有指定模型的对话以该选项卡的默认模型开始。智能体也可以读取你创建的云端对话、向它发送提示词、等待它和停止它。
环境变量 #
| 名称 | 作用 |
|---|---|
CLAUDE_ |
中继及其云端 worker 使用的 Claude 登录令牌,取代 CLI 的凭据文件。0.9.17 新增 只有 Claude Cloud 和 Claude worker 会得到它,无论是否有 tmux;在 tmux 下它通过一个只有中继用户可读的文件传递,worker 的 shell 读取一次后删除。 |
CLAUDE_ |
Claude 配置目录,取代 ~/.。CLI 的登录(.)从中读取。 |
OAR_ |
在中继主机上设为 off 可停止 New Chat 中的分支列表向 git 查询。分支字段随即成为纯文本字段。 |
无法正常工作时 #
如果 New Chat 中没有 Claude Cloud,请在 Settings → Providers → Claude Cloud 中启用它。
当失败有已知原因时,回复是一条说明发生了什么以及该怎么做的系统提示。然后重新发送消息。
| 你看到的 | 原因与处理 |
|---|---|
开关被拒绝:Claude Cloud needs the Claude CLI login on this host. Log in on Settings → Providers → Claude, then switch it on. |
先在 Claude 选项卡上登录。 |
Claude Cloud needs the Claude login of this relay host, and there is none. |
在 Settings → Providers → Claude 登录。 |
The Claude login of this relay host has expired. |
在 Settings → Providers → Claude 重新登录。API 拒绝该登录也会给出同样的提示。 |
Git |
在 claude.ai/connect-github 连接。 |
The Claude Git |
把该仓库添加到应用的仓库访问中(GitHub → Settings → Applications → Claude → Configure)。 |
The cloud environment of this conversation is missing. |
在 Settings → Providers → Claude Cloud 中选择一个环境。如果列表为空,用这个账户打开一次 claude.ai/code。 |
Claude Cloud refused the request because of a rate limit. |
稍等片刻。如果云端给出等待时间,提示会说 Wait about N s。 |
The cloud session of this conversation was not found. |
它可能已在 claude.ai 上被删除,或中继主机登录到了另一个 Claude 账户。开始一个新的 Claude Cloud 对话。 |
Claude Cloud takes images only, sent inline (JPEG, PNG, GIF or Web |
移除附件,或把智能体需要的内容放进仓库或消息。消息未发送。 |
the Claude Cloud turn failed (... |
中继无法命名的失败,例如 Anthropic 更改了接口之后。重试或发送新消息;若持续失败,更新 OAR。 |
环境列表显示 Could not list the cloud environments: ... |
中继无法从 Anthropic 读取列表。已保存的环境仍可选择。 |
可能过去的连接问题不会让该轮失败:消息回到队列并再次投递。