所有页面
本页内容

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 -fsSL https://claude.ai/install.sh | bash;在 Windows 上为 irm https://claude.ai/install.ps1 | iex。
Update(更新) 已找到 CLI 运行 claude update。
Switch to native installer(切换到原生安装程序) CLI 是通过 npm 安装到了中继用户无权写入的文件夹 运行 claude install。npm 副本留在原处;原生构建在 PATH 上优先。
Cancel(取消) / Dismiss(关闭) 安装进行中 / 安装结束后 停止运行 / 清除结果。

安装输出会以 Install log(安装日志)的形式流入面板。它不会因关闭设置而丢失,并可从其他设备监视。中继上同一时间只运行一个安装。你输入的任何内容都不会到达 shell:命令固定在中继内。

OAR 会在中继的 PATH 上查找 claude,然后在 ~/.local/bin 和 /usr/local/bin 中查找。安装或更新之后,它会立刻使用新的二进制文件,并在重启之间记住它,因此你无需重启中继。已经在运行的会话会保留它们启动时所用的二进制文件。

启用 #

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-sonnet-5 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-opus-5[1m] 这样的长上下文变体不会作为单独的模型出现。在 New Chat 和输入区中,它们会在基础模型的 Context window(上下文窗口)下拉菜单中显示为一个 1M 条目。

新模型随 OAR 更新一起到来

模型发现会询问 Agent SDK 自带的 Claude Code 构建,因此仅靠 claude update 无法让新的 Claude 模型出现。它会随 OAR 更新一起到来。

Claude 账户 #

在 CLI 一行下方,账户一行会显示已登录的账户及其套餐,例如 Account: dev@example.com · Max plan,或 Not logged in。

Relogin(重新登录) #

  1. 按 Relogin。中继会在其机器上运行 Claude CLI 的登录。
  2. 出现一个 Open the Claude login page(打开 Claude 登录页面)链接,并带有 Copy link(复制链接)按钮。在任意设备上打开该链接,并在 claude.ai 上授权。
  3. Claude.ai 会显示一个代码。将其粘贴到 Paste the code from claude.ai(粘贴来自 claude.ai 的代码)字段中,然后按 Submit code(提交代码)或 Enter。
  4. 面板会显示 Logged in as …。会运行一次新的模型发现,因此你无需重启中继。

Cancel 会放弃登录。无人完成的登录会在 10 分钟后结束。一个中继上同一时间只运行一个登录。它会推送到每个打开的浏览器,因此你可以在一台设备上开始、在另一台设备上完成,关闭设置也不会丢失它。

中继不持有任何 Claude 机密信息。CLI 会把新的登录写入中继机器的 Claude 配置文件夹(~/.claude,或 CLAUDE_CONFIG_DIR 中的文件夹)。

Logout(退出登录) #

Logout 会打开 Log out of Claude(退出 Claude 登录),其中显示账户名称以及正在运行的 Claude worker 数量。用 Log out(退出登录)确认。此后新的 Claude 轮次会失败,直到你再次登录。

正在运行的会话 #

正在运行的 Claude 会话会保留之前的账户,直到它们的 worker 进程退出。新会话使用新账户。

提交署名 #

Claude Code 通常会给智能体所做的提交加上自己的 Co-Authored-By: Claude … 行,并给拉取请求正文加一行。OAR 让你选择:

选项 提交 拉取请求
OAR(默认) 以 Co-authored-by: Open Agent Relay (<model>) <no-reply@oar.sh> 结尾,括号中是模型名称,例如 Claude Fable 5.1。 以 🤖 Generated with [Open Agent Relay](https://oar.sh) 结尾。
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_DEFAULT_TIMEOUT_MS 传给 Claude Code,BASH_MAX_TIMEOUT_MS 为 8 小时,CLAUDE_CODE_AUTO_BACKGROUND_TIMEOUT_MS 为 2 分钟。这三项会为 OAR 启动的每个 Claude 会话设置,因此中继环境中的同名变量没有效果。

推理强度与思考 #

推理强度 #

推理强度选择器是按消息设置的:你可以在轮次之间更改它。它提供 none 以及模型所报告的级别(low、medium、high、xhigh、max)。Ultracode 会出现在支持 xhigh 的模型上。它表示 xhigh 强度加上多智能体工作流编排,会使用多得多的 token。

上下文窗口 #

对有 1M 变体的模型,Context window 下拉菜单会提供模型的默认窗口(显示为 —,因为 SDK 的目录中没有数据)以及 1M。只以 1M 变体发布的模型只会提供它。

思考 #

🧠 上下文按钮还包含两个 Claude 专有的控件,按对话设置:

控件 选项 默认值
Thinking(思考) On(开启)、Off On
Thinking text(思考文本) Summarized(摘要)、Hidden(隐藏) Summarized

开启思考,以及更改文本,会在下一条消息上生效。关闭思考会应用于下一个 CLI 会话。Hidden 只隐藏文本;模型仍在思考,token 也仍然计数。Off 才是节省 token 的控件。

Claude 上特别好用的功能 #

  • 中途引导。 你在一轮运行期间发送的消息会进入该轮;发送按钮显示为 Steer(引导)。见轮次与队列和一轮运行期间。
  • 模式。 plan 使用 SDK 自带的计划模式,并以 Claude 计划工具的 Plan ready(计划已就绪)看板结束。见中继模式。
  • 提问卡片。 Claude 的 AskUserQuestion 会变成一张卡片,包含多选。见 ask_user。
  • 后台任务与子智能体。 转入后台的命令、子智能体、监视器和工作流会在启动它们的回复之后继续存在,并显示在输入区的任务面板中。子智能体的标题会打开它的完整记录。只有转入后台的子智能体才能单独停止;在当前轮内运行的子智能体会随该轮一起停止。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/projects(或 CLAUDE_CONFIG_DIR)内。对话记录是该文件夹旁边的 .jsonl 文件。该文件夹只在会话有子智能体或工具结果文件时才会创建,因此对较新的对话来说它可能是空的。删除一个对话会删除它的对话记录。

环境变量 #

在中继启动时的环境中设置这些变量。

变量 作用
CLAUDE_CONFIG_DIR Claude 配置文件夹,取代 ~/.claude:登录,以及查找会话文件夹的位置。
CLAUDE_CODE_EXECUTABLE worker 使用的 Claude Code 二进制文件,取代 Agent SDK 自带的构建。从面板安装或更新时会为你设置它。
CLAUDE_CODE_AUTO_COMPACT_WINDOW 覆盖自动压缩窗口。滑块下方的一行会将其列为来源。由 Claude Code 自行读取;当会话在 tmux 下运行时,为中继设置它无法到达会话(见哪些变量会到达智能体)。
BASH_DEFAULT_TIMEOUT_MS、BASH_MAX_TIMEOUT_MS、CLAUDE_CODE_AUTO_BACKGROUND_TIMEOUT_MS 0.9.12 新增 不会从中继环境读取:OAR 会根据后台命令上限为每个 Claude 会话设置它们。
CLAUDE_CODE_OAUTH_TOKEN 替代 CLI 登录文件的登录令牌,用于 Claude Cloud 和本地 Claude 对话,后者的 CLI 会优先使用它而不是登录文件。0.9.17 新增 只有 Claude 和 Claude Cloud worker 会得到它,在 tmux 下通过一个只有中继用户可读的文件传递;其他提供商的 worker,包括 DeepSeek 的,永远得不到。
ANTHROPIC_API_KEY、ANTHROPIC_AUTH_TOKEN 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 登录:~/.claude/settings.json 或对话文件夹的 .claude/settings*.json 中的 env.ANTHROPIC_API_KEY、某个 apiKeyHelper,或某个 Console 登录。这样的对话过去会运行在该密钥上并向其所有者计费。现在,当 Claude Code 启动时该轮会停止,并带有一条说明来源和要移除的设置的提示,以及代码 relay.subscription-key-source。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.subscription-key-source) 从 Claude Code 设置的 env 中移除 ANTHROPIC_API_KEY(~/.claude/settings.json,或文件夹的 .claude/settings*.json),移除某个 apiKeyHelper,或退出 Console 登录,然后重新发送消息。要在 Settings 中保存的密钥上运行该对话,请切换到 API 密钥。
Relogin 在 Windows 上失败 登录流程是为 Linux 和 macOS 设计的;在 Windows 上只是尽力而为。改为在终端中运行 claude。