首次运行
安装好 oar 命令之后(参见安装),你和一段对话之间还隔着三件事:中继需要一份配置(端口、谁能访问它,以及一个访问令牌),它需要处于运行状态,你的浏览器需要凭该令牌登录。本页按这个顺序逐一说明。
设置 #
oar setup 会写入配置文件,即 OAR 状态文件夹中的 config.(macOS 和 Linux 上是 ~/.,Windows 上是 %APPDATA%\;环境变量 OAR_ 可以移动它)。它设置三项内容,在 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- 或 --autostart 中的任意一个,setup 就完全不再提问;你没有给出的项保持当前值。
| 选项 | 作用 |
|---|---|
--port <port> |
使用这个端口(从 1 到 65535 的数字)。 |
--lan |
让中继可以被你网络上的其他设备访问。 |
--local |
让中继仅限本机。不能与 --lan 一起使用。 |
--new- |
替换访问令牌。每个已登录的浏览器都会被退出登录。 |
--autostart signin|boot|off |
0.9.15 新增 切换中继自行启动的方式,与 oar autostart 相同。仅用于全局安装。 |
--defaults |
不提问。现有配置保持不变;新配置则设为仅本机以及从 3333 开始的第一个空闲端口。 |
--start |
同时启动中继,并在有 systemd 用户会话的 Linux 上安装每次登录时启动它的服务。安装器会使用它。 |
--migrate- |
用于更名之前的早期 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 切换到镜像网络模式(. 中的 networking)。
该地址是普通的 http。在你自己的网络之外,请使用 OAR 的隧道之一,它们会加上 HTTPS(参见从你的网络之外访问)。
如果丢失令牌 #
oar url 会打印包含当前令牌的地址。如果你更想要一个新的,运行 oar setup --new-:它会写入新令牌并重启中继(在终端中会先询问),每个已登录的设备都必须用新地址重新登录。
初始界面 #
第一个屏幕是空的对话视图。它显示什么取决于中继:
- 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 …/ |
中继启动后退出了。该消息会在 OAR 的 logs 文件夹中指出日志文件名;请阅读最后几行。oar doctor 会显示正在使用的安装、状态文件夹和配置。 |
| 你手动启动的服务器立即以 Relay already running(中继已在运行)或 Relay appears to be owned by another live process(中继似乎属于另一个正在运行的进程)退出 | 每个数据文件夹只允许一个中继运行。该消息会出现在那个终端中,或当 oar 启动它时出现在 server- 中,并给出持有锁的中继的进程 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- 之后,或配置中更改了令牌之后,旧地址会失效。 |
The relay runs with its earlier settings; restart it to apply the new ones. |
你在中继运行时更改了令牌、端口或访问方式。oar restart 会应用这些更改。 |