所有页面
本页内容

首次运行

安装好 oar 命令之后(参见安装),你和一段对话之间还隔着三件事:中继需要一份配置(端口、谁能访问它,以及一个访问令牌),它需要处于运行状态,你的浏览器需要凭该令牌登录。本页按这个顺序逐一说明。

设置 #

oar setup 会写入配置文件,即 OAR 状态文件夹中的 config.json(macOS 和 Linux 上是 ~/.oar,Windows 上是 %APPDATA%\oar;环境变量 OAR_STATE_ROOT 可以移动它)。它设置三项内容,在 Windows 上还会设置自启动:

设置项 含义 新配置的默认值
访问令牌 每个浏览器登录所用的密钥。 为你随机生成的一个令牌。
访问方式 This machine only(仅本机),或 LAN(你网络上的其他设备)。 仅本机。
端口 中继监听的端口。 3333,或从 3333 开始的第一个空闲端口。
自启动(Windows) 0.9.15 新增 中继是否自行启动:登录时、在任何人登录之前开机时,或根本不启动。不属于配置的一部分。 当前生效的模式;新安装时关闭。

macOS 和 Linux 的安装器已经替你运行了 oar setup --defaults --start,因此一个中继正以这些默认值运行,安装器也打印了它的地址。Windows 安装器最后运行 oar setup,它会提出下面的问题但不会启动中继:接下来运行 oar start。手动执行 npm install -g 之后,请自行运行 oar setup,然后运行 oar start。

在终端中,oar setup 会问三个问题,每次都显示当前值,因此按 Enter 即可保留。0.9.15 新增 在 Windows 上它还会问第四个问题,即中继如何启动(自启动):

New auth token? It signs every device out.
Access: 1 = this machine only, 2 = LAN (other devices on your network) [1]:
Port [3333]:
Autostart: 1 = at sign-in, 2 = at boot, before anyone signs in (one administrator prompt), 3 = off [3]:

At boot(开机时)会在这台电脑上请求一次管理员确认;拒绝提示不会做任何改动,setup 仍会写入配置。

你选择的端口必须是空闲的。setup 不接受其他程序占用的端口,在 WSL 上也不接受 Windows 占用的端口:使用 --port 时它会停止,在交互提问时则会再问一次。同一安装的中继可以保留自己的端口。

setup 也接受选项。给出 --port、--lan、--local、--new-token 或 --autostart 中的任意一个,setup 就完全不再提问;你没有给出的项保持当前值。

选项 作用
--port <port> 使用这个端口(从 1 到 65535 的数字)。
--lan 让中继可以被你网络上的其他设备访问。
--local 让中继仅限本机。不能与 --lan 一起使用。
--new-token 替换访问令牌。每个已登录的浏览器都会被退出登录。
--autostart signin|boot|off 0.9.15 新增 切换中继自行启动的方式,与 oar autostart 相同。仅用于全局安装。
--defaults 不提问。现有配置保持不变;新配置则设为仅本机以及从 3333 开始的第一个空闲端口。
--start 同时启动中继,并在有 systemd 用户会话的 Linux 上安装每次登录时启动它的服务。安装器会使用它。
--migrate-from <dir> 用于更名之前的早期 OAR git 检出:把 <dir> 中检出的中继状态复制到 OAR 的状态文件夹。检出绝不会被改动。当仍有中继从该检出运行时会被拒绝。每次你指定一个文件夹它都会运行:已经迁移过的只会说明这一点,没有任何内容可迁移的会报错。参见迁移旧安装。

当中继正在运行,而你更改了令牌、端口或访问方式时,setup 会重启它以使改动生效。在终端中它会先询问 The relay is running. Restart it now to apply the change?(中继正在运行。现在重启以应用更改?);使用 --defaults 或没有终端时,它会立即重启。如果你回答否,正在运行的中继会保持其先前的设置,直到 oar restart。

在最后,setup 会打印中继地址,并在手机可以访问它时打印一个二维码(参见从手机访问)。

启动与停止 #

在终端中不带参数运行 oar 会得到一个菜单:一个标题栏,显示中继的状态(运行中或已停止、版本、地址、端口、访问方式、服务),以及每条命令的条目。使用方向键或数字加 Enter;q 退出。在终端之外,oar 改为打印状态和用法。

你首先需要的命令:

命令 作用
oar start 在后台启动中继并打印它的地址。已经在运行的中继不会被改动。
oar status 说明中继是否在运行、在哪个端口、以哪种访问方式。当中继运行时退出码为 0,未运行时为 3。
oar url 再次打印地址(含令牌),并在手机可用时打印二维码。
oar stop 停止中继。它会等到没有轮次在运行。
oar restart 重启它,同样会等待正在运行的轮次。

oar start 会打印一行类似这样的内容:

[oar] Relay URL: http://localhost:3333/?token=<your token>

把那个地址当作密码对待:它携带了令牌。当访问方式设为仅本机时,第二行会说明这一点,并列出从手机访问它的两种方式:局域网访问或隧道。

打开中继 #

在运行中继的机器上用浏览器打开打印的地址。?token= 部分会为你登录。然后中继会用持续 30 天的 cookie 让浏览器保持登录状态,浏览器的地址栏也会去掉令牌。该 cookie 是 HttpOnly 的,当你通过 HTTPS 访问中继时,它会被标记为 Secure。

地址中没有令牌时,中继会显示一个登录框,上面写着 Enter your access token to connect(输入你的访问令牌以连接)。粘贴令牌并点击 Connect(连接)。输入错误会显示 Invalid token(令牌无效)。

从手机访问 #

要在同一网络上的手机或另一台电脑访问,请开启局域网访问:

oar setup --lan

如果中继在运行,setup 会重启它(在终端中会先询问)。它会打印一个地址,用你机器的网络地址代替 localhost,同时还有一个二维码。用手机扫描它。oar url 之后会打印相同的地址和二维码。只有当中继有局域网访问权限且机器有网络地址时,二维码才会出现;局域网访问已开启但没有网络地址时,命令会说明这一点。在使用默认网络的 WSL 上,该地址仅对 WSL 内部可见,其他设备无法访问它,因此 setup 不打印二维码:请使用隧道,或将 WSL 切换到镜像网络模式(.wslconfig 中的 networkingMode=mirrored)。

该地址是普通的 http。在你自己的网络之外,请使用 OAR 的隧道之一,它们会加上 HTTPS(参见从你的网络之外访问)。

如果丢失令牌 #

oar url 会打印包含当前令牌的地址。如果你更想要一个新的,运行 oar setup --new-token:它会写入新令牌并重启中继(在终端中会先询问),每个已登录的设备都必须用新地址重新登录。

初始界面 #

第一个屏幕是空的对话视图。它显示什么取决于中继:

  • Set up a provider(设置提供商),当没有任何提供商就绪时。它提供 Open Settings(打开设置)和 + New chat(新建对话)。GitHub Copilot 是默认提供商;它需要中继主机上有已登录的 Copilot CLI。其他提供商在 Settings → Providers(设置 → 提供商)下开启。提供商一览说明了每个提供商需要什么。
  • Start your first chat(开始你的第一个对话),当某个提供商就绪时。+ New chat 是主按钮。

⚙️ Settings 位于对话顶部的 ⋯ 菜单中,空屏幕上也有它的按钮。在窄屏上,☰ 按钮会显示对话列表。

侧边栏中的 + New Chat 会打开一个对话框,让你选择提供商、模型和工作目录。开始对话会逐个字段介绍它。

让它保持运行 #

oar start 会让中继一直运行,直到你停止它或机器重启。要在每次登录时启动它,oar service install 会在有 systemd 用户会话的 Linux 上和 Windows 上进行设置;菜单中也有对应的条目。0.9.15 新增 在 Windows 上,oar autostart boot 改为在开机时(任何人登录之前)启动它。macOS 上尚不可用:在那里用 oar start 启动中继。

从你的网络之外访问 #

OAR 内置了隧道支持,可通过 HTTPS 从你的网络之外访问中继:Cloudflare Tunnel 或 SSH 隧道。请先阅读 OAR 暴露什么。

无法启动时 #

你看到什么 怎么办
Port 3333 is in use by another program (or by a relay with another token). 来自 oar start 另一个程序占用了该端口,或带有早期令牌的中继仍在运行。该消息建议使用 oar setup --port <port>。
Port 3333 is held by another program, or by a relay with another token. 来自 oar status、oar stop 或 oar restart 原因相同。当本安装的中继似乎正在运行时,oar stop 和 oar restart 会追加第二行,并给出其进程 ID:从其 Web 界面的 ⋯ 菜单用 🌄 Restart web relay(重启网页中继)重启它,或结束该进程,然后运行 oar start。oar status 不会给出这种提示。
Port 3333 is in use by another program. 来自 oar setup 原因相同。setup 会要求另选端口;使用 --port 时则会提示你另选一个。
The relay did not come up — see …/server-err.log 中继启动后退出了。该消息会在 OAR 的 logs 文件夹中指出日志文件名;请阅读最后几行。oar doctor 会显示正在使用的安装、状态文件夹和配置。
你手动启动的服务器立即以 Relay already running(中继已在运行)或 Relay appears to be owned by another live process(中继似乎属于另一个正在运行的进程)退出 每个数据文件夹只允许一个中继运行。该消息会出现在那个终端中,或当 oar 启动它时出现在 server-err.log 中,并给出持有锁的中继的进程 ID 和锁文件。0.9.14 新增 消息结尾会说明该怎么做(oar stop, or end process <pid>),中继以退出码 78 退出。用 oar stop 停止那个中继,然后再次启动。参见每个数据文件夹一个中继。
WSL:Windows 上的浏览器显示另一个页面,或拒绝令牌 在 WSL 的默认网络中,一个端口在发行版内部可能是空闲的,但 Windows 程序却在监听它,此时 Windows 浏览器中的 localhost:<port> 会访问到那个程序。oar setup 会选择在两侧都空闲的端口,当 Windows 占用端口时,oar status、oar start 和 oar doctor 会发出警告。用 oar setup --port <port> 选择另一个端口。
登录框中显示 Invalid token 使用 oar url 中的令牌,它会打印当前的令牌。在 --new-token 之后,或配置中更改了令牌之后,旧地址会失效。
The relay runs with its earlier settings; restart it to apply the new ones. 你在中继运行时更改了令牌、端口或访问方式。oar restart 会应用这些更改。