Aude Code

aude-rc(7)

NAME

aude-rc — 远程控制一台机器上的 aude 会话

SYNOPSIS

aude --harness name [--name name]

aude pair

aude devices

aude revoke device | --all

DESCRIPTION

监听器提供这台机器上的每个会话。在这台机器或另一台机器上,iPhone 应用、Mac 应用和 ‘aude attach’ 都能使用这些会话。每个客户端都能列出会话、发送文本行,并看到相同的实录。第一个使用监听器的宿主或命令会启动 ‘aude listen’ 进程。最后一个宿主或命令结束 30 秒后,该进程退出。TERM、HUP 或 INT 信号也会停止它。

只有这台机器列入一台设备后,该设备才能附加。配对会列入设备。握手的每一端都证明自己的密钥。已列入的设备可以访问每个会话。它可以发送任务,也可以启动或移除子智能体。

当有已列入的设备或打开的配对窗口时,监听器还会在 127.0.0.1 上监听 port.json 中的端口。 aude-tunnel(7) 中的隧道让其他计算机上的设备能访问监听器。

OPTIONS

name
会话的名称,默认为工作目录的名称。 aude 把名称转换为小写。每个不是 ASCII 字母或数字的字符都变为连字符。相邻的连字符合并为一个。名称最多保留 32 个字符,两端没有连字符。如果结果为空,则使用 ‘aude’ 作为名称。

ATTACHING

当有已列入的设备时, DIAGNOSTICS 中的可达信息给出这台机器的 URL。该 URL 不指定会话,也不含配对码。用手机扫描它的二维码。把它粘贴到 Mac 应用中,或者在另一台机器上把它交给 ‘aude attach’ 命令。该 URL 不是机密。对于该 URL,应用只更新已配对机器的地址。

PAIRING

‘aude pair’ 会打开一个配对窗口,持续两分钟,有没有会话都可以。它打印一个 URL:

AUDE:<address>/<fingerprint>/<code>
地址是隧道名称的大写形式。$ 代替 .trycloudflare.com,+ 代替 .ts.net。没有隧道时,地址只有端口,该端口位于 127.0.0.1。URL 后面是 ‘only this computer can dial 127.0.0.1’ 这一行。在支持颜色的终端上,aude 在 URL 上方打印二维码。配对码是机密。它只能使用一次。使用该 URL 时, ‘aude attach’ 也会配对。它不登记机器。

在应用中,New 会打开一个用于输入 URL 的表单。打开应用的 URL 会填入该表单。表单的按钮是 Attach,当 URL 含有配对码时则是 Pair。

‘aude pair’ 会一直等待,直到有设备配对。然后它打印 ‘paired "<name>" <fingerprint>’ 这一行。如果配对窗口先关闭,它打印 ‘pairing closed’ 这一行。第二个 ‘aude pair’ 会关闭第一个配对窗口。因为 Mac 应用有自己的密钥,所以它也必须与这台 Mac 配对。

DEVICES

‘aude devices’ 先打印这台机器的密钥,然后打印隧道,再打印每台已列入的设备:

<name>  <fingerprint>
如果没有密钥,它会先生成一个。你可以把一行复制到另一台机器的 peers.json 中。

REVOKE

‘aude revoke device’ 移除一台设备。请给出设备的名称,或其名称或指纹的开头部分。监听器写入 peers.json 后,会关闭该设备的链路。

‘aude revoke --all’ 移除每台设备和这台机器的密钥。然后它生成一个新密钥。每台设备都必须重新配对。每个会话都继续运行。

THE KEY

第一个使用密钥的命令会生成密钥。该命令打印:

rc: made this device's key; no machine lists it yet
在每台设备上,密钥都是一个文件。

FILES

~/.aude/rc 的模式为 0700。只有你能写入其中的文件。每个文件最多 1 MiB。

device.key
这台机器的密钥,一个 32 字节的普通文件,模式为 0600。
peers.json
一个 JSON 对象,把每台已列入设备的完整指纹映射到它的名称:
{"<fingerprint>": "<name>"}
配对或撤销会写入它。没有 aude 进程运行时,你也可以写入它。
port.json
监听器第一次绑定的端口,即 8765 到 8864 中第一个空闲的端口。
tunnel.json
隧道,其形式如 aude-tunnel(7) 所述。
listener.socket
这台机器上的进程使用的监听器套接字,模式为 0600。
listener.lock
监听器的锁。

EXIT STATUS

设备配对时, ‘aude pair’ 的退出码为 0。配对窗口关闭或无法打开时,它的退出码为 8。拨号后没有监听器应答的命令,退出码为 8。 aude(1) 列出其他退出码。

EXAMPLES

配对手机:

$ aude pair
  <the QR code>
  AUDE:<name>$/<fingerprint>/<code>
  pairing window open for two minutes; it closes on the first pairing
paired "my phone" 43MINEMOLU2QDYIRISB6HVGMMF6X

启动一个会话。它会启动监听器:

$ aude --harness claude
  devices reach this machine at AUDE:<name>$/<fingerprint>: my phone

在没有终端的情况下,让这台机器保持可访问,直到你停止该命令:

$ tail -f /dev/null | aude --harness claude &

在 systemd 下,保持 KillMode=control-group,这样每个 aude 进程都会按顺序停止。

移除手机:

$ aude devices
this machine  CIWVK7ZHMCBW6Z5BRVKUL6VJGK7Z
tunnel  trycloudflare
my phone  43MINEMOLU2QDYIRISB6HVGMMF6X
$ aude revoke "my phone"
revoked "my phone" 43MINEMOLU2QDYIRISB6HVGMMF6X

DIAGNOSTICS

首次拨号即启动了监听器的进程会在标准错误上打印可达信息,但终端中的 ‘aude attach’ 除外:

devices reach this machine at <url>: <names>
其后是该 URL 的二维码。设置了 NO_COLOR 或由 ‘aude pair’ 打印这一行时除外。
devices cannot reach this machine: 127.0.0.1:<port> is in use
其他错误会让这一行以 ‘could not be bound (errno <n>)’ 结尾。配对窗口打开时,监听器会再次绑定。释放该端口,或者移除 port.json 以使用另一个端口。
devices cannot reach this machine: the <tunnel> tunnel <finding> — see aude-tunnel(7)
 
rc could not read peers.json: <defect>
没有设备能附加或配对。 aude 不会修改该文件。修复该文件,或者运行 ‘aude revoke --all’ 命令。 devices、pair 和 revoke device 的退出码为 6。

命令打印以下任一行后退出,退出码为 8,或为该条给出的退出码。宿主在第一个轮次之前也是如此:

rc could not use this device's key file — <detail>
如果其他用户拥有该文件的任何权限,运行 ‘chmod 600 ~/.aude/rc/device.key’ 命令。要获得新的密钥和 URL,在没有 aude 进程运行时移除该文件。
rc could not start: <detail>
 
rc could not write <path>: <reason>
不会写入任何内容。如果该路径位于某个记录中,该记录的会话会结束。退出码为 6。
another version of aude listens for this machine, for <names> — end them first
如果没有剩余会话,这一行会说明那个监听器何时结束。
the listener holds another device key than device.key — end every aude session of this machine first
 
could not attach — unauthorised: this machine does not list this device
应用也会这样提示。进行配对,或者在那台机器上没有 aude 进程运行时,把该设备加入它的 peers.json。 ‘pairing code rejected’ 表示配对码错误或已过期。
could not attach — the handshake with <address> failed; another version of aude listens there, or something between changed its bytes
也可能是 aude 以外的程序在那里监听。重新配对没有帮助。
peers.json changed while aude ran — it is read again when aude next starts
配对或撤销没有产生任何效果。退出码为 6。

SEE ALSO

aude(1), aude-team(7), aude-terminal(7), aude-tunnel(7), aude-wire(7), aude-workflow(7)

CAVEATS

只在你控制一台设备期间列入它。已列入的设备能以你的身份在这台机器上运行 shell 命令,并且事先不会询问你。

不要向任何人展示配对 URL。在它的配对窗口打开期间,任何读到它的人都能配对。配对之后,检查 ‘aude devices’ 的输出。

你的账号下的任何进程都能读取密钥。在每个平台上,该文件的任何副本(包括备份)都是这台设备。持有副本的人可以附加到列入了这台设备的每台机器,直到那台机器撤销它。

设备检查 URL 中的指纹。监听器检查它的对等方列表。 aude 不使用自己的证书。