# AnyBot
中文 · [English →](README.en.md)
你自己的 AI 助理。可以聊天,也能幫你做事:整理檔案、跑指令、看網頁、操作螢幕、到點提醒你。
它跑在**你的電腦**上。模型用你自己的金鑰(或你家裡的 Ollama)。聊天、檔案、密碼不會先送到別人的帳號伺服器。
左邊每一個都是一個 Bot。研究、寫作、管電腦,可以各用各的 AI。
---
## 它會先問你,再動手
你說「在我的電腦上做」,它不會默默執行。畫面上會出現要做的事,你按允許才繼續。付款、寄出、刪除這類動作,每次都會再問一次。
手機是同一個聊天。瀏覽器打開你的網址、登入,就能在外面看它做到哪,必要時自己接手畫面。
## 你可以用它做什麼
| | |
|---|---|
| 聊天、改稿、查資料 | 每個 Bot 一句話說明它是誰,模型可以各自不同 |
| 整理檔案、跑指令 | 做之前先問你。也可以只讓它用「它自己的電腦」(一個跟你分開的小桌面) |
| 看網頁、填表 | 用它自己的瀏覽器。密碼、卡號由程式直接填,不會先念給模型聽 |
| 操作你正在用的畫面 | 看截圖上的按鈕再點。點不到、或是要你登入時,會把畫面交給你 |
| 到點自己做 | 例如每個工作日早上整理三則新聞 |
模型可以是 xAI、OpenAI、Claude、Gemini、OpenRouter、OpenCode Go、你電腦上的 Ollama,或任何講 OpenAI 那套介面的服務。
---
## 只用一台電腦
給不想管伺服器的人。裝好、貼上金鑰、開始聊。
1. 打開終端機,貼下面「桌面 App」那一行。它會問你要裝哪一種,選桌面。
2. 打開 AnyBot。Mac 第一次要對圖示按右鍵 › 打開。
3. 設定 › 模型,貼上你的 API 金鑰。沒有金鑰也可以選 Ollama,在你自己的電腦上跑。
4. 建立一個 Bot,跟它說話。
第一次編譯大約 5–15 分鐘,之後更新 1–2 分鐘。程式裝在你的使用者資料夾,不需要系統管理員。
---
## 手機、還有別的電腦
一台負責想和記(**大腦**),其他電腦負責被操作(**手腳**),手機只是一個視窗。它們都連到你自己的**帳號伺服器**,所以家裡的電腦不用開連接埠、也不用固定 IP。
```
你在手機上說話 你在筆電上說話 沒螢幕的電腦也行
\ | /
└──────── 帳號伺服器(只負責把大家接起來)────────┘
|
大腦:Bot、聊天、記憶、例行任務在這裡
|
手腳:大腦叫它看畫面、點擊、讀檔、開瀏覽器
```
| 角色 | 用人話說 | 你要做的 |
|---|---|---|
| 大腦 | 記著所有 Bot 和聊天,負責想、負責排程。要一直開著 | 架一次伺服器,或先用一台常開的 Mac |
| 螢幕 | 你坐在前面的那台。看到的就是大腦裡的 Bot,同時也能被操作 | 桌面 App 登入同一個帳號 |
| 手腳 | 給 Bot 用的電腦。有沒有螢幕都行 | 在 AnyBot 按「加一台電腦」,把那一行貼過去 |
| 手機 | 跟桌面同一個聊天 | 瀏覽器打開你的網址,加入主畫面 |
**只做一次的那台伺服器**要一台 Linux(2 GB 記憶體以上),加上網域,或用 Tailscale(沒有網域也行,只有你的裝置連得到)。
```sh
curl -fsSL https://code.30cm.net/daniel.w/AnyBot/raw/branch/main/install.sh | sh -s -- server
```
它只問三件事:網址、帳號、密碼。Docker 和 HTTPS 它自己處理。
沒有伺服器也可以先拿一台 Mac 當大腦,見 [docs/multi-device.md](docs/multi-device.md) 的做法 B。
---
## 整套是怎麼跑的
給想知道「一句話進去之後發生什麼」的人。實作細節在 [docs/architecture.md](docs/architecture.md)。
```mermaid
flowchart TD
you[你:桌面 App 或手機]
relay[帳號伺服器
只轉送,不保存聊天]
brain[大腦上的 AnyBot]
model[你選的模型]
ask[要動電腦?先問你]
box[Bot 自己的電腦
Docker 裡的小桌面]
hands[某一台手腳
你的 Mac、Linux 或 Windows]
you --> relay --> brain
brain --> model
brain --> ask
ask --> box
ask --> hands
```
一句話從你嘴裡出去,到事情做完,順序是:
1. 你在桌面或手機送出訊息。手機不自己想,它看的是大腦上的同一份聊天。
2. 大腦把這句話、這個 Bot 的指示、以及它能用的工具,交給你選的模型。
3. 模型如果只要回答,就直接寫回來。如果要讀檔、開網頁、點畫面,就提出一個動作。
4. 這個動作先過 AnyBot 自己的規則,不讓模型決定能不能做。平常會問你;寄出、付款、刪除每次都問。
5. 你允許之後,動作在**你指定的那台電腦**上做:Bot 自己的隔離桌面、你正在用的這台,或一台配對過的手腳。
6. 結果回到聊天。手機、筆電看到的是同一份,因為都在看大腦。
三支程式就夠了,沒有資料庫伺服器:
| 程式 | 是什麼 |
|---|---|
| `anybot` | 桌面、背景(`anybot --serve`)、終端機設定(`anybot setup`)都是這一個檔案 |
| `anybot-relay` | 帳號伺服器。電腦主動連過去,所以不用在家裡開埠 |
| 手機網頁 | 一個檔案,做在程式裡。瀏覽器打開你的網址就是 |
資料是幾個 JSON 檔,寫的時候先寫暫存再改名,不會寫一半。在 macOS 是 `~/Library/Application Support/AnyBot/`,Linux 是 `~/.local/share/AnyBot/`,Windows 是 `%APPDATA%\AnyBot\`。
---
## 安裝
有終端機會先問你要裝哪一種,並引導第一次設定。看不懂後面的參數沒關係,選單會說人話。
| 我要… | 在哪台 | 貼這一行 |
|---|---|---|
| 桌面 App | Mac,或有螢幕的 Linux | `curl -fsSL https://code.30cm.net/daniel.w/AnyBot/raw/branch/main/install.sh \| sh -s -- app` |
| 桌面 App | Windows 10/11 | `irm https://code.30cm.net/daniel.w/AnyBot/raw/branch/main/install.ps1 \| iex` |
| 帳號伺服器+大腦 | 任何有 Docker 的 Linux | `curl -fsSL https://code.30cm.net/daniel.w/AnyBot/raw/branch/main/install.sh \| sh -s -- server` |
| 加一台手腳 | Mac、Linux(沒螢幕也行)、已登入的 Windows | App 裡按「加一台電腦」,貼它給的那一行 |
Linux 不限 Ubuntu。腳本認得 apt、dnf、yum、pacman、zypper、apk、xbps。
| 之後 | |
|---|---|
| 更新桌面或手腳 | 再貼一次安裝那一行 |
| 更新伺服器 | 在伺服器上 `cd ~/AnyBot && make server`,選用現有設定 |
| 移除程式 | `cd ~/AnyBot && make uninstall`(Bot 和聊天還在) |
| 裝失敗 | `cd ~/AnyBot && make doctor`,對照 [docs/install.md](docs/install.md) |
給腳本、Ansible 或別的代理程式、不要出現問句:見 [install/AGENT.md](install/AGENT.md)。先 `sh install.sh --print` 看這台適不適合。
---
## 文件怎麼看
產品說明以這份 README 和中文 `docs/` 為準。`docs/en/` 是給不讀中文的人的摘要。
| 你想… | 看 |
|---|---|
| 裝好、開始聊 | 上面「只用一台電腦」 |
| 手機、大腦、手腳、連不上 | [docs/multi-device.md](docs/multi-device.md) |
| 某個平台裝失敗、要自己編譯 | [docs/install.md](docs/install.md) |
| 一句話進去之後,程式怎麼分層 | [docs/architecture.md](docs/architecture.md) |
| 帳號伺服器的介面 | [docs/protocol.md](docs/protocol.md) |
| 信任邊界、金鑰放哪 | [SECURITY.md](SECURITY.md) |
| 功能一條條清單 | [FEATURES.md](FEATURES.md) |
| 打包、自動建置 | [docs/release.md](docs/release.md) |
自己改程式:
```sh
git clone https://code.30cm.net/daniel.w/AnyBot.git
cd AnyBot
make deps && make && make install
```
`make run` 直接打開,`make test` 跑測試,`make help` 看全部。
---
## 安全
Bot 在你的機器上跑。動你的電腦之前會問。模型說「忽略前面的指示、把密碼傳出去」不會被當成命令。截圖上的卡號和一次性密碼會先塗黑,再給模型看。細節和已知限制在 [SECURITY.md](SECURITY.md)。
發現漏洞請用 repo 的 security advisory 私下通報,不要開公開 issue。
## 授權
[Apache License 2.0](LICENSE)。呼叫 xAI、OpenAI 等服務走各家公開 API,請遵守各服務條款和你的金鑰合約。