8.2 KiB
多台電腦:大腦、手腳、螢幕
帳號裡選一台 AnyBot 當大腦,其他電腦和手機都連到它。
| 角色 | 是什麼 | 怎麼設 |
|---|---|---|
| 大腦 | 保存所有 Bot、聊天、記憶和例行任務,由它思考和排程。要一直開著 | 登入帳號就是(預設) |
| 螢幕 | 有視窗的電腦:看到的、改的都是大腦的 Bot;同時也是大腦的手腳 | 設定 › 一般 › 手機與帳號 › 大腦 › 「改用它當大腦」 |
| 手腳 | 讓大腦的 Bot 操作這台:畫面、點擊打字、檔案和指令、這台的瀏覽器 | 「加一台電腦」的那一行,或 anybot setup |
| 手機 | 網頁版,打開帳號伺服器的網址 | 登入同一個帳號 |
所有電腦都透過帳號伺服器互相連絡。每台 AnyBot 主動連過去、保持一條一直開著的連線,所以電腦不用開放連接埠,也不用固定 IP。
一、架帳號伺服器和大腦
做法 A:放在伺服器上(推薦,Mac 關機時大腦也還在)
需要:一台 Linux 主機(2 GB 以上記憶體;更小的請先加 swap,見 install.md 的常見問題),以及下面其中一種網址。Docker 沒裝會自動裝。
- Tailscale(不用網域):那台裝好 Tailscale,並在 Tailscale 管理頁打開 HTTPS(DNS › HTTPS Certificates)。設定時會出現「用 Tailscale:https://那台.xxx.ts.net」,選它就好;只有你 Tailscale 裡的手機和電腦連得到,不用開任何埠。
- 自己的網域:A 紀錄指到這台,打開 80 和 443 埠,HTTPS 憑證自動申請。
- 區網 IP(不用網域,例如
https://10.0.0.25):憑證由這台伺服器自己簽、自己更新,只有同一個區網連得到。可以單獨用,也可以和 Tailscale 一起用(在家用 IP、出門用 Tailscale)。這台的 IP 要固定(在路由器設成固定 IP)。 每台手機和電腦要先信任這張憑證一次,之後瀏覽器和 AnyBot 都不會再警告:- 用瀏覽器打開
http://那台的IP/anybot-ca.crt下載。 - iPhone:安裝描述檔,再到「設定 › 一般 › 關於本機 › 憑證信任設定」打開它。
- Android:設定 › 安全性 › 加密與憑證 › 安裝憑證 › CA 憑證。
- Mac:打開下載的檔案加進「鑰匙圈存取」,點兩下憑證,「信任」設成「永遠信任」。
- Windows:點兩下 › 安裝憑證 › 放進「受信任的根憑證授權單位」。
- Linux(手腳電腦):
sudo cp anybot-ca.crt /usr/local/share/ca-certificates/ && sudo update-ca-certificates。
- 用瀏覽器打開
curl -fsSL https://code.30cm.net/daniel.w/AnyBot/raw/branch/main/install.sh | sh -s -- server
只問三件事:網域、帳號、密碼。會自動申請 HTTPS 憑證、建立帳號、啟動大腦。完成畫面會告訴你手機和電腦怎麼連。之後在伺服器上執行 cd ~/AnyBot && make server,可以選「用現有設定,更新並重新啟動」。
有發行檔時(推 v* tag 後由 Gitea Actions 產生,見 release.md),也可以不在伺服器上編譯:下載 AnyBot-<版本>-server-<架構>.tar.gz,解開後 cd deploy/server && ./setup.sh。
做法 B:先用一台 Mac 當大腦(家裡用 Tailscale)
- 跑帳號伺服器,並設成開機自動啟動:
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 - 用 Tailscale 給它 HTTPS 網址:
tailscale serve --bg 8780(網址像https://mac-mini.xxxx.ts.net)。 - 打開 AnyBot › 設定 › 一般 › 手機與帳號,填這個網址,建立帳號並登入。這台就是大腦。
只有同一個 Tailscale 網路裡的手機和電腦連得到。
二、接上其他電腦
有視窗的電腦(螢幕)
打開 AnyBot › 設定 › 一般 › 手機與帳號,登入同一個帳號,在「大腦」那一欄按某一台旁邊的「改用它當大腦」。
- 這台原本的 Bot 會留著不刪,可以按「把這台的 Bot 搬過去」複製到大腦(連同聊天、金鑰、技能和連接器;已經在大腦上的不會重複搬)。
- 隨時可以按「改回用這台自己的 Bot」。
- 選大腦時也會打開這台的「裝置連結」:大腦的 Bot 可以用這台當手腳,每個動作仍照大腦的規則先問你。
沒有螢幕的 Linux(手腳)
- 在手機 AnyBot 右上「⋯ › 加一台電腦」,或電腦 AnyBot 的 設定 › 一般 › 手機與帳號 › 大腦 › 加一台電腦 › 產生配對碼。
- 會出現一行(10 分鐘內有效,只能用一次):
curl -fsSL https://code.30cm.net/daniel.w/AnyBot/raw/branch/main/install.sh | sh -s -- hands https://anybot.example.com 469615 - 在那台電腦的終端機貼上這一行執行。
它會:還沒裝 AnyBot 就先裝好(系統套件、Rust、編譯,第一次約 5–15 分鐘;已經裝好就直接下一步)、加入帳號(不用密碼)、只讓產生配對碼的那個大腦使用、設成開機自動執行(systemd 使用者服務 anybot)、沒有螢幕時開一個 1440×900 的虛擬螢幕,最後確認大腦看得到它。大腦約一分鐘內就會把它列進 Bot 可以用的電腦。
虛擬螢幕(Xvfb)、視窗管理員和輔助使用服務會一起裝好,Bot 看得到這台的畫面。
這台登入了桌面(例如 GNOME)也一樣:Bot 用的是 AnyBot 自己開的虛擬螢幕,不會動到你的桌面,也不用有人在那台前面按「允許分享螢幕」。想讓 Bot 操作那台登入中的桌面,加 --real-screen。
更新:在那台再執行一次安裝的那一行(或 cd ~/AnyBot && ./install.sh hands),會換成新版並重新啟動,不用再配對。
只打 anybot setup 會出現一個畫面:填網址和配對碼(或改用帳號密碼)。給程式用:
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 |
| 帳號伺服器暫時無法使用 | 正在重開或 HTTPS 憑證還沒好 | 等一下,會自動重連 |
| 大腦目前離線 | 大腦關機、睡眠或 AnyBot 沒開 | 打開大腦;這段時間還能看之前的對話 |
| 大腦收到了,但太久沒有回應 | 大腦太忙或網路很慢 | 稍後再試 |
| 這台電腦的帳號登入失效了 | 帳號被登出或金鑰換了 | 重新登入 |
| 這台電腦只讓大腦「…」使用 | 別台想用這台當手腳 | 正常:配對時就限定了 |
大腦連不到時:之前的對話還能看,不能傳訊息;連回來會自動恢復,不用重開。
忘記帳號密碼:在帳號伺服器那台,先停掉它,再執行(輸入兩次新密碼,畫面不顯示):
anybot-relay --data <資料夾> --reset-password <帳號>
舊的加密備份是用舊密碼鎖的,改完之後在電腦上按一次「立刻備份」。
四、安全
- 模型金鑰、訊息管道的 Token、連接器的密碼只在大腦上。螢幕電腦看到的是「已設定,在大腦上」,在螢幕上改設定也不會洗掉真的金鑰。
- 手腳只接受帳號裡的 AnyBot,用配對碼加入的只接受那一個大腦。
- 每個動作照大腦的規則先問你(或照你設的「一律允許」)。
- 配對碼 10 分鐘有效、只能用一次,連續猜錯會被暫停 5 分鐘。
- 技術細節見 architecture.md 和 protocol.md。