Claude 0.9.0 新增
Claude 提供商通过 Claude Agent SDK,在中继的机器上运行 Anthropic 的 Claude Code 智能体。OAR 为每个对话启动一个 worker 进程。无需输入 API 密钥:Claude 使用中继机器的 Claude 登录,你可以从浏览器更改该登录。
Claude Cloud 在 Anthropic 的沙箱中运行 Claude Code,而不是在你的机器上。它是一个单独的提供商,有自己的设置。0.9.18 新增 Claude API 用 Claude Console API 密钥而不是你的订阅来运行同样的 Claude 对话,一个 Claude 对话可以在两者之间切换。
你需要什么 #
- 中继运行所在机器上的一个 Claude 登录。中继不存储任何 Claude 密钥;由 Claude CLI 保存登录,OAR 只驱动它。你可以从浏览器登录(见 Claude 账户),或在该机器上运行一次
claude。 - 该机器上的 Claude Code CLI(
claude),用于浏览器登录和账户一行。Claude 轮次不需要它:它们运行在 Agent SDK 自带的 Claude Code 构建上。OAR 可以为你安装该 CLI,此后新会话就会使用那份副本。
Claude Code CLI 一行 #
在 Settings → Providers → Claude(设置 → 提供商 → Claude)的顶部,Claude Code CLI 一行会显示该 CLI 是否已安装、其版本、所在位置以及是否为最新。它的按钮取决于状态:
| 按钮 | 何时出现 | 作用 |
|---|---|---|
| Install(安装) | 未找到 CLI | 请你确认,列出要执行的命令和写入的文件夹,然后以中继用户的身份运行 Anthropic 自己的安装程序。在 Linux 和 macOS 上为 curl -fs;在 Windows 上为 irm https://。 |
| Update(更新) | 已找到 CLI | 运行 claude update。 |
| Switch to native installer(切换到原生安装程序) | CLI 是通过 npm 安装到了中继用户无权写入的文件夹 | 运行 claude install。npm 副本留在原处;原生构建在 PATH 上优先。 |
| Cancel(取消) / Dismiss(关闭) | 安装进行中 / 安装结束后 | 停止运行 / 清除结果。 |
安装输出会以 Install log(安装日志)的形式流入面板。它不会因关闭设置而丢失,并可从其他设备监视。中继上同一时间只运行一个安装。你输入的任何内容都不会到达 shell:命令固定在中继内。
OAR 会在中继的 PATH 上查找 claude,然后在 ~/. 和 / 中查找。安装或更新之后,它会立刻使用新的二进制文件,并在重启之间记住它,因此你无需重启中继。已经在运行的会话会保留它们启动时所用的二进制文件。
启用 #
Claude 默认关闭。打开 Settings → Providers → Claude。在 Claude SDK 下:
| 控制 | 默认值 | 作用 |
|---|---|---|
| Enable Claude for New Chat model selection(在新建对话的模型选择中启用 Claude) | 关闭 | 让 Claude 成为 New Chat(新建对话)中的选项,并运行模型发现。切换后立即生效,无需按 Save Claude settings(保存 Claude 设置)。 |
| Claude model ID(Claude 模型 ID) | claude- |
Claude 对话一开始所用的模型。按 Save Claude settings 应用。 |
| Commit attribution(提交署名) | OAR | 提交和拉取请求上的署名。见提交署名。同样需要 Save Claude settings。 |
控制项下方的一行会说明 Claude 所处的状态。关闭 Claude 会把尚未发送消息的对话移回默认提供商。已经开始的对话会保留 Claude。
模型 #
开启 Claude 会发现 Agent SDK 提供的模型,并把它们的 claude- ID 添加到各选择器。使用 Select Models → Claude SDK(选择模型 → Claude SDK)选择其中哪些显示在输入区中;默认模型始终保持启用。
像 claude- 这样的长上下文变体不会作为单独的模型出现。在 New Chat 和输入区中,它们会在基础模型的 Context window(上下文窗口)下拉菜单中显示为一个 1M 条目。
新模型随 OAR 更新一起到来
模型发现会询问 Agent SDK 自带的 Claude Code 构建,因此仅靠 claude update 无法让新的 Claude 模型出现。它会随 OAR 更新一起到来。
Claude 账户 #
在 CLI 一行下方,账户一行会显示已登录的账户及其套餐,例如 Account: dev@example.,或 Not logged in。
Relogin(重新登录) #
- 按 Relogin。中继会在其机器上运行 Claude CLI 的登录。
- 出现一个 Open the Claude login page(打开 Claude 登录页面)链接,并带有 Copy link(复制链接)按钮。在任意设备上打开该链接,并在 claude.ai 上授权。
- Claude.ai 会显示一个代码。将其粘贴到 Paste the code from claude.ai(粘贴来自 claude.ai 的代码)字段中,然后按 Submit code(提交代码)或 Enter。
- 面板会显示
Logged in as …。会运行一次新的模型发现,因此你无需重启中继。
Cancel 会放弃登录。无人完成的登录会在 10 分钟后结束。一个中继上同一时间只运行一个登录。它会推送到每个打开的浏览器,因此你可以在一台设备上开始、在另一台设备上完成,关闭设置也不会丢失它。
中继不持有任何 Claude 机密信息。CLI 会把新的登录写入中继机器的 Claude 配置文件夹(~/.,或 CLAUDE_ 中的文件夹)。
Logout(退出登录) #
Logout 会打开 Log out of Claude(退出 Claude 登录),其中显示账户名称以及正在运行的 Claude worker 数量。用 Log out(退出登录)确认。此后新的 Claude 轮次会失败,直到你再次登录。
正在运行的会话 #
正在运行的 Claude 会话会保留之前的账户,直到它们的 worker 进程退出。新会话使用新账户。
提交署名 #
Claude Code 通常会给智能体所做的提交加上自己的 Co- 行,并给拉取请求正文加一行。OAR 让你选择:
| 选项 | 提交 | 拉取请求 |
|---|---|---|
| OAR(默认) | 以 Co- 结尾,括号中是模型名称,例如 Claude Fable 5.。 |
以 🤖 Generated with [Open Agent Relay](https:// 结尾。 |
| Vanilla(原版) | Claude Code 自己的行。 | Claude Code 自己的行。 |
| Off(关闭) | 无署名行。 | 无署名行。 |
OAR 和 Off 还会把指向会话的链接排除在提交和拉取请求文本之外。
在 Settings → Providers → Claude → Commit attribution(设置 → 提供商 → Claude → 提交署名)中为整个中继设置该选项。在选择框下方,会有一行示例显示提交将写出的内容。
按文件夹 #
Claude 对话的 🧠 上下文按钮会显示该对话文件夹的 Commit attribution,带有一个选择框:Inherit (provider: …)(继承,提供方:…)、OAR、Vanilla 或 Off。这里的选择对该文件夹中的每个 Claude 会话都有效。Inherit 会回到中继范围的设置。
更改会随下一条消息到达正在运行的会话。切换到 vanilla 会在轮次之间重启会话的 CLI。Claude Cloud 对话也遵循中继范围的设置。0.9.18 新增 Claude API 对话是 Claude 会话,与任何其他会话一样遵循文件夹的选择。0.9.17 新增 文件夹中的 DeepSeek 对话遵循文件夹的选择,其中 Vanilla 按 OAR 理解;它们的中继范围设置在 DeepSeek 子选项卡上。其他提供商不受影响。
后台命令上限 0.9.12 新增 #
Settings → Providers → Claude → Claude background command limit(设置 → 提供商 → Claude → Claude 后台命令上限)设置 Claude 在后台运行的命令在 Claude Code 停止它之前可以运行多长时间,用于 Claude 自己没有给该命令设置超时的情况。滑块从 30 分钟到 8 小时,以 30 分钟为步进;默认是 2 小时。Save Claude settings 会保存它。Claude 仍可为单个命令请求最多 8 小时。
- Claude 在前台运行的命令会在 2 分钟后转入后台,这样该轮会继续运行,命令则显示在任务面板中,并带有它的控制台。
- 以
sleep开头的命令,以及子智能体的命令,会留在前台,可能因此让该轮一直运行到上限。 - 中继会告知 Claude 该上限,让它把长命令的完整输出写到日志文件而不是管道给
tail或head,并把必须跨会话重启继续运行的命令用nohup以分离方式启动。 - CLI 在启动时读取该上限:更改会应用于你保存之后启动的 Claude 会话;正在运行的会话会保留它的上限直到重启。Claude Cloud 对话不受影响;0.9.17 新增 DeepSeek 和 0.9.18 新增 Claude API 对话同样运行 Claude Code,使用相同的上限。
OAR 会把该上限作为 BASH_ 传给 Claude Code,BASH_ 为 8 小时,CLAUDE_ 为 2 分钟。这三项会为 OAR 启动的每个 Claude 会话设置,因此中继环境中的同名变量没有效果。
推理强度与思考 #
推理强度 #
推理强度选择器是按消息设置的:你可以在轮次之间更改它。它提供 none 以及模型所报告的级别(low、medium、high、xhigh、max)。Ultracode 会出现在支持 xhigh 的模型上。它表示 xhigh 强度加上多智能体工作流编排,会使用多得多的 token。
上下文窗口 #
对有 1M 变体的模型,Context window 下拉菜单会提供模型的默认窗口(显示为 —,因为 SDK 的目录中没有数据)以及 1。只以 1M 变体发布的模型只会提供它。
思考 #
🧠 上下文按钮还包含两个 Claude 专有的控件,按对话设置:
| 控件 | 选项 | 默认值 |
|---|---|---|
| Thinking(思考) | On(开启)、Off | On |
| Thinking text(思考文本) | Summarized(摘要)、Hidden(隐藏) | Summarized |
开启思考,以及更改文本,会在下一条消息上生效。关闭思考会应用于下一个 CLI 会话。Hidden 只隐藏文本;模型仍在思考,token 也仍然计数。Off 才是节省 token 的控件。
Claude 上特别好用的功能 #
- 中途引导。 你在一轮运行期间发送的消息会进入该轮;发送按钮显示为 Steer(引导)。见轮次与队列和一轮运行期间。
- 模式。 plan 使用 SDK 自带的计划模式,并以 Claude 计划工具的 Plan ready(计划已就绪)看板结束。见中继模式。
- 提问卡片。 Claude 的
Ask会变成一张卡片,包含多选。见 ask_user。User Question - 后台任务与子智能体。 转入后台的命令、子智能体、监视器和工作流会在启动它们的回复之后继续存在,并显示在输入区的任务面板中。子智能体的标题会打开它的完整记录。只有转入后台的子智能体才能单独停止;在当前轮内运行的子智能体会随该轮一起停止。Settings → General → Background task timeout(设置 → 常规 → 后台任务超时)(默认 4 小时)限制后台任务单独维持会话运行的时间。
- 精确的上下文明细。 🧠 按钮会显示 SDK 所报告的各分类。
- 自动压缩。 Claude 会自行压缩较长的会话。🧠 弹窗有一个 Auto-compact window(自动压缩窗口)滑块:Auto(自动)、100k、150k、200k、300k、500k 或 1M。见压缩对话。
- 用量上限暂停。 碰到订阅用量上限的一轮会暂停,并在重置后继续。见达到用量上限时。
- 会话连续性。 SDK 的会话 ID 会被存储,因此对话在其 worker 重启后可以恢复。
- 附件。 最大 5 MB 的图片会以内联方式发送。更大的图片和其他文件会以路径形式交给 Claude 读取。
Claude 轮次在回复下方没有用量行。Claude 的套餐限制见 Check Usage(查看用量)。
会话存储在哪里 #
在文件浏览器中,Session root(会话根目录)按钮(🕵️)会在 Agent SDK 的项目区中打开会话自己的文件夹,位于 ~/.(或 CLAUDE_)内。对话记录是该文件夹旁边的 . 文件。该文件夹只在会话有子智能体或工具结果文件时才会创建,因此对较新的对话来说它可能是空的。删除一个对话会删除它的对话记录。
环境变量 #
在中继启动时的环境中设置这些变量。
| 变量 | 作用 |
|---|---|
CLAUDE_ |
Claude 配置文件夹,取代 ~/.:登录,以及查找会话文件夹的位置。 |
CLAUDE_ |
worker 使用的 Claude Code 二进制文件,取代 Agent SDK 自带的构建。从面板安装或更新时会为你设置它。 |
CLAUDE_ |
覆盖自动压缩窗口。滑块下方的一行会将其列为来源。由 Claude Code 自行读取;当会话在 tmux 下运行时,为中继设置它无法到达会话(见哪些变量会到达智能体)。 |
BASH_、BASH_、CLAUDE_ |
0.9.12 新增 不会从中继环境读取:OAR 会根据后台命令上限为每个 Claude 会话设置它们。 |
CLAUDE_ |
替代 CLI 登录文件的登录令牌,用于 Claude Cloud 和本地 Claude 对话,后者的 CLI 会优先使用它而不是登录文件。0.9.17 新增 只有 Claude 和 Claude Cloud worker 会得到它,在 tmux 下通过一个只有中继用户可读的文件传递;其他提供商的 worker,包括 DeepSeek 的,永远得不到。 |
ANTHROPIC_、ANTHROPIC_ |
0.9.17 新增 不会传给 worker。Claude 对话运行在 Claude 登录上,绝不会运行在中继环境中的密钥上;在 0.9.17 之前,Claude Code 会优先使用这种密钥而不是登录。Claude API 对话运行在 Settings → Providers → Claude API(设置 → 提供商 → Claude API)中保存的密钥上,绝不会使用这些变量。 |
0.9.18 新增 订阅对话绝不会运行在 API 密钥上。 当 Claude Code 自己的某项设置把一个 API 密钥交给它时,它会优先使用 API 密钥而不是你的 Claude 登录:~/. 或对话文件夹的 . 中的 env.、某个 api,或某个 Console 登录。这样的对话过去会运行在该密钥上并向其所有者计费。现在,当 Claude Code 启动时该轮会停止,并带有一条说明来源和要移除的设置的提示,以及代码 relay.。Claude Code 会在启动后片刻发送它的第一个模型请求,因此最多只能有一个模型请求先在该密钥上发出。要在 API 密钥上运行对话,请使用 Claude API 及其计费开关。
疑难解答 #
| 问题 | 怎么办 |
|---|---|
| New Chat 中没有 Claude | 在 Settings → Providers → Claude 中开启 Enable Claude for New Chat model selection。 |
| CLI 一行显示 Not installed(未安装),或账户一行无法读取账户 | 浏览器登录和账户一行需要中继机器上的 claude。按 Install,或自行安装并重新打开设置。 |
Not logged in,或回复说 Claude 无法认证 |
在失败回复上按 Claude settings(Claude 设置),然后按 Relogin(或在机器上运行 claude)。然后重新发送消息。 |
| 登录已过期 | 同上。正在运行的会话会保留它的旧令牌直到 worker 退出;登录后重新发送消息。 |
| 回复指向计费、订阅或组织 | 检查面板所显示的账户:它的订阅、支付方式,以及组织是否允许 Claude Code。Relogin 会登录到另一个账户。 |
| 一轮在用量上限处暂停 | 等待重置,或在横幅上使用 Resume now(立即恢复)或 Cancel。见达到用量上限时。 |
| 新模型不在选择器中 | 模型来自 SDK 自带的 Claude Code 构建;它们随 OAR 更新到来,而不是随 claude update。 |
0.9.18 新增 Claude Code took an API key for this subscription turn (source "…"), so the turn was stopped(relay.) |
从 Claude Code 设置的 env 中移除 ANTHROPIC_(~/.,或文件夹的 .),移除某个 api,或退出 Console 登录,然后重新发送消息。要在 Settings 中保存的密钥上运行该对话,请切换到 API 密钥。 |
| Relogin 在 Windows 上失败 | 登录流程是为 Linux 和 macOS 设计的;在 Windows 上只是尽力而为。改为在终端中运行 claude。 |