AnyBot/docs/multi-device.md

7.2 KiB
Raw Blame History

多台電腦:大腦、手腳、螢幕

帳號裡選一台 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 憑證自動申請。
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)

  1. 跑帳號伺服器,並設成開機自動啟動:
    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 分鐘內有效,只能用一次):
    curl -fsSL https://code.30cm.net/daniel.w/AnyBot/raw/branch/main/install.sh | sh -s -- hands https://anybot.example.com 469615
    
  3. 在那台電腦的終端機貼上這一行執行。

它會:還沒裝 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。