6.1 KiB
多台電腦:大腦、手腳、螢幕
帳號裡選一台 AnyBot 當大腦,其他電腦和手機都連到它。
| 角色 | 是什麼 | 怎麼設 |
|---|---|---|
| 大腦 | 保存所有 Bot、聊天、記憶和例行任務,由它思考和排程。要一直開著 | 登入帳號就是(預設) |
| 螢幕 | 有視窗的電腦:看到的、改的都是大腦的 Bot;同時也是大腦的手腳 | 設定 › 手機與帳號 › 大腦 › 「改用它當大腦」 |
| 手腳 | 讓大腦的 Bot 操作這台:畫面、點擊打字、檔案和指令、這台的瀏覽器 | 「加一台電腦」的那一行,或 anybot setup |
| 手機 | 網頁版,打開帳號伺服器的網址 | 登入同一個帳號 |
所有電腦都透過帳號伺服器互相連絡。每台 AnyBot 主動連過去、保持一條一直開著的連線,所以電腦不用開放連接埠,也不用固定 IP。
一、架帳號伺服器和大腦
做法 A:放在伺服器上(推薦,Mac 關機時大腦也還在)
需要:一台有 Docker 的 Linux 主機,以及一個指到它的網域。
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)
- 跑帳號伺服器,並設成開機自動啟動:
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 分鐘內有效,只能用一次):
anybot setup https://anybot.example.com 469615 - 在那台電腦裝好 AnyBot(
make install,或發行檔AnyBot-<版本>-headless-x86_64.tar.gz裡的./install.sh),再貼上這一行執行。
它會:加入帳號(不用密碼)、只讓產生配對碼的那個大腦使用、設成開機自動執行(systemd 使用者服務 anybot)、沒有螢幕時開一個 1440×900 的虛擬螢幕,最後確認大腦看得到它。大腦約一分鐘內就會把它列進 Bot 可以用的電腦。
想讓 Bot 看得到這台的畫面,先執行 make hands(裝 Xvfb、視窗管理員、輔助使用服務)。
只打 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。