110 lines
6.1 KiB
Markdown
110 lines
6.1 KiB
Markdown
# 多台電腦:大腦、手腳、螢幕
|
||
|
||
帳號裡選一台 AnyBot 當**大腦**,其他電腦和手機都連到它。
|
||
|
||
| 角色 | 是什麼 | 怎麼設 |
|
||
|---|---|---|
|
||
| 大腦 | 保存所有 Bot、聊天、記憶和例行任務,由它思考和排程。要一直開著 | 登入帳號就是(預設) |
|
||
| 螢幕 | 有視窗的電腦:看到的、改的都是大腦的 Bot;同時也是大腦的手腳 | 設定 › 手機與帳號 › 大腦 › 「改用它當大腦」 |
|
||
| 手腳 | 讓大腦的 Bot 操作這台:畫面、點擊打字、檔案和指令、這台的瀏覽器 | 「加一台電腦」的那一行,或 `anybot setup` |
|
||
| 手機 | 網頁版,打開帳號伺服器的網址 | 登入同一個帳號 |
|
||
|
||
所有電腦都透過**帳號伺服器**互相連絡。每台 AnyBot 主動連過去、保持一條一直開著的連線,所以電腦不用開放連接埠,也不用固定 IP。
|
||
|
||
## 一、架帳號伺服器和大腦
|
||
|
||
### 做法 A:放在伺服器上(推薦,Mac 關機時大腦也還在)
|
||
|
||
需要:一台有 Docker 的 Linux 主機,以及一個指到它的網域。
|
||
|
||
```sh
|
||
git clone git@git.30cm.net:daniel.w/AnyBot.git && cd AnyBot
|
||
make server
|
||
```
|
||
|
||
只問三件事:網域、帳號、密碼。會自動申請 HTTPS 憑證、建立帳號、啟動大腦。完成畫面會告訴你手機和電腦怎麼連。之後再執行一次 `make server`,可以選「用現有設定,更新並重新啟動」。
|
||
|
||
不想在伺服器上編譯:下載發行檔 `AnyBot-<版本>-server-x86_64.tar.gz`,解開後 `cd deploy/server && ./setup.sh`,用的是已經編好的程式。
|
||
|
||
### 做法 B:先用一台 Mac 當大腦(家裡用 Tailscale)
|
||
|
||
1. 跑帳號伺服器,並設成開機自動啟動:
|
||
```sh
|
||
make relay
|
||
mkdir -p "$HOME/Library/Application Support/AnyBot/relay"
|
||
cp relay/target/release/anybot-relay "$HOME/Library/Application Support/AnyBot/relay/"
|
||
cp deploy/mac/com.anybot.relay.plist ~/Library/LaunchAgents/ # 先把裡面的網址改成你的
|
||
launchctl load ~/Library/LaunchAgents/com.anybot.relay.plist
|
||
```
|
||
2. 用 Tailscale 給它 HTTPS 網址:`tailscale serve --bg 8780`(網址像 `https://mac-mini.xxxx.ts.net`)。
|
||
3. 打開 AnyBot › 設定 › 手機與帳號,填這個網址,建立帳號並登入。這台就是大腦。
|
||
|
||
只有同一個 Tailscale 網路裡的手機和電腦連得到。
|
||
|
||
## 二、接上其他電腦
|
||
|
||
### 有視窗的電腦(螢幕)
|
||
|
||
打開 AnyBot › 設定 › 手機與帳號,登入同一個帳號,在「大腦」那一欄按某一台旁邊的「改用它當大腦」。
|
||
|
||
- 這台原本的 Bot 會留著不刪,可以按「把這台的 Bot 搬過去」複製到大腦(連同聊天、金鑰、技能和連接器;已經在大腦上的不會重複搬)。
|
||
- 隨時可以按「改回用這台自己的 Bot」。
|
||
- 選大腦時也會打開這台的「裝置連結」:大腦的 Bot 可以用這台當手腳,每個動作仍照大腦的規則先問你。
|
||
|
||
### 沒有螢幕的 Linux(手腳)
|
||
|
||
1. 在手機 AnyBot 右上「⋯ › 加一台電腦」,或電腦 AnyBot 的 設定 › 手機與帳號 › 大腦 › 加一台電腦 › 產生配對碼。
|
||
2. 會出現一行(10 分鐘內有效,只能用一次):
|
||
```sh
|
||
anybot setup https://anybot.example.com 469615
|
||
```
|
||
3. 在那台電腦裝好 AnyBot(`make install`,或發行檔 `AnyBot-<版本>-headless-x86_64.tar.gz` 裡的 `./install.sh`),再貼上這一行執行。
|
||
|
||
它會:加入帳號(不用密碼)、只讓產生配對碼的那個大腦使用、設成開機自動執行(systemd 使用者服務 `anybot`)、沒有螢幕時開一個 1440×900 的虛擬螢幕,最後確認大腦看得到它。大腦約一分鐘內就會把它列進 Bot 可以用的電腦。
|
||
|
||
想讓 Bot 看得到這台的畫面,先執行 `make hands`(裝 Xvfb、視窗管理員、輔助使用服務)。
|
||
|
||
只打 `anybot setup` 會出現一個畫面:填網址和配對碼(或改用帳號密碼)。給程式用:
|
||
|
||
```sh
|
||
ANYBOT_ACCOUNT_PASSWORD=… anybot setup --server https://… --user 帳號 [--brain-name 雲端大腦] [--no-service]
|
||
```
|
||
|
||
登出後也要繼續跑:`sudo loginctl enable-linger $USER`(完成畫面會提醒)。
|
||
|
||
### 手機
|
||
|
||
打開帳號伺服器的網址,登入。可以「加入主畫面」當 App 用、開通知。帳號裡有螢幕電腦時,手機會直接打開它們用的大腦。
|
||
|
||
## 三、連不上時
|
||
|
||
畫面上方會說是哪一段連不到:
|
||
|
||
| 看到 | 意思 | 怎麼辦 |
|
||
|---|---|---|
|
||
| 這台電腦沒有連上網路 | 這台斷網 | 檢查 Wi-Fi 或網路線 |
|
||
| 連不到帳號伺服器:伺服器沒有開 | 帳號伺服器沒在跑 | 伺服器上 `docker compose ps`;Mac 上看 `launchctl list | grep anybot` |
|
||
| 帳號伺服器暫時無法使用 | 正在重開或 HTTPS 憑證還沒好 | 等一下,會自動重連 |
|
||
| 大腦目前離線 | 大腦關機、睡眠或 AnyBot 沒開 | 打開大腦;這段時間還能看之前的對話 |
|
||
| 大腦收到了,但太久沒有回應 | 大腦太忙或網路很慢 | 稍後再試 |
|
||
| 這台電腦的帳號登入失效了 | 帳號被登出或金鑰換了 | 重新登入 |
|
||
| 這台電腦只讓大腦「…」使用 | 別台想用這台當手腳 | 正常:配對時就限定了 |
|
||
|
||
大腦連不到時:之前的對話還能看,不能傳訊息;連回來會自動恢復,不用重開。
|
||
|
||
**忘記帳號密碼**:在帳號伺服器那台,先停掉它,再執行(輸入兩次新密碼,畫面不顯示):
|
||
|
||
```sh
|
||
anybot-relay --data <資料夾> --reset-password <帳號>
|
||
```
|
||
|
||
舊的加密備份是用舊密碼鎖的,改完之後在電腦上按一次「立刻備份」。
|
||
|
||
## 四、安全
|
||
|
||
- 模型金鑰、訊息管道的 Token、連接器的密碼只在大腦上。螢幕電腦看到的是「已設定,在大腦上」,在螢幕上改設定也不會洗掉真的金鑰。
|
||
- 手腳只接受帳號裡的 AnyBot,用配對碼加入的只接受那一個大腦。
|
||
- 每個動作照大腦的規則先問你(或照你設的「一律允許」)。
|
||
- 配對碼 10 分鐘有效、只能用一次,連續猜錯會被暫停 5 分鐘。
|
||
- 技術細節見 [architecture.md](architecture.md) 和 [protocol.md](protocol.md)。
|