AnyBot/README.md

176 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<p align="center">
<img src="icons/anybot.svg" alt="AnyBot" width="120">
</p>
<h1 align="center">AnyBot</h1>
<p align="center">
<b>跑在你自己電腦上的 AI 助理。</b><br>
會聊天,也會做事:整理檔案、跑指令、看網頁、操作螢幕、到點自己排。
</p>
<p align="center">
中文 · <a href="README.en.md">English</a>
</p>
<p align="center">
<a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-blue" alt="Apache-2.0"></a>
<img src="https://img.shields.io/badge/macOS%20%C2%B7%20Linux%20%C2%B7%20Windows-1c1c1c" alt="macOS, Linux, Windows">
<img src="https://img.shields.io/badge/Rust%201.95-orange" alt="Rust 1.95">
<img src="https://img.shields.io/badge/self--hosted-green" alt="self-hosted">
</p>
<p align="center">
<img src="shots/readme/chat.png" alt="左邊是不同的 Bot,右邊是跟其中一個聊天" width="960">
</p>
模型用你自己的金鑰:xAI、OpenAI、Claude、Gemini、OpenRouter、OpenCode Go、家裡的 Ollama,或任何講 OpenAI 那套介面的服務。聊天記錄、檔案、密碼留在你的機器上,不會先存進別人的帳號伺服器。左邊每一行都是一個 Bot:研究、寫作、管電腦,可以各用各的模型。
---
## 30 秒裝好
打開終端機,貼一行。
```sh
# macOS、Linux(不限 Ubuntu:apt、dnf、yum、pacman、zypper、apk、xbps 都認得)
curl -fsSL https://code.30cm.net/daniel.w/AnyBot/raw/branch/main/install.sh | sh
```
```powershell
# Windows 10/11(x64、arm64)
irm https://code.30cm.net/daniel.w/AnyBot/raw/branch/main/install.ps1 | iex
```
它會自己裝好需要的東西、問你要裝哪一種,然後做第一次設定。第一次編譯 5–15 分鐘,之後更新 1–2 分鐘;裝在你的使用者資料夾,不需要系統管理員。
裝好打開 AnyBot(Mac 第一次要對圖示按右鍵 › 打開),「設定 › 模型」貼上 API 金鑰,建一個 Bot 就能開始聊。沒有金鑰可以選 Ollama,在你自己的電腦上跑。
**帳號伺服器 + 大腦**(任何有 Docker 的 Linux,2 GB 以上;只問網址、帳號、密碼,HTTPS 它自己處理):
```sh
curl -fsSL https://code.30cm.net/daniel.w/AnyBot/raw/branch/main/install.sh | sh -s -- server
```
**無頭手腳**(給 Bot 操控的電腦,沒螢幕也行)。網址和配對碼在 AnyBot 按「加一台電腦」就會看到:
```sh
curl -fsSL https://code.30cm.net/daniel.w/AnyBot/raw/branch/main/install.sh \
| sh -s -- hands https://你的網址 482913
```
```powershell
# Windows 手腳
$env:ANYBOT_MODE='hands'
$env:ANYBOT_PAIR_URL='https://你的網址'
$env:ANYBOT_PAIR_CODE='482913'
irm https://code.30cm.net/daniel.w/AnyBot/raw/branch/main/install.ps1 | iex
```
給代理程式跑、不要出現問句:`sh install.sh --print` 先問這台適合什麼,再用環境變數,見 [install/AGENT.md](install/AGENT.md)。
---
## 它會先問你,再動手
你說「在我的電腦上做」,它不會默默執行。畫面上出現要做的事,你按允許才繼續。付款、寄出、刪除這類動作,每次都會再問一次,即使你關掉了別的詢問。
<p align="center">
<img src="shots/readme/computer-phone.png" alt="左:Bot 要在你的電腦上執行指令前,先跳出允許一次、一律允許或拒絕。右:手機瀏覽器打開你的網址,先登入" width="960">
</p>
- **整理檔案、跑指令** — 做之前先問。也可以只讓它用「它自己的電腦」,一個跟你隔開的小桌面。
- **看網頁、填表** — 用它自己的瀏覽器。密碼和卡號由程式直接填,不會先念給模型聽。
- **操作你正在用的畫面** — 看截圖上的按鈕再點。點不到,或是要你登入時,把畫面交給你。
- **到點自己做** — 「每個工作日早上 9 點整理三則新聞」變成例行任務。
- **手機隨時插手** — 瀏覽器打開你的網址、登入,就是同一個聊天,在外面也能看它做到哪。
<p align="center">
<img src="shots/readme/routines.png" alt="跟 Bot 說每個工作日早上九點整理新聞,它就排好例行任務" width="960">
</p>
---
## 一台想,幾台被用
一台負責想和記(**大腦**),其他電腦負責被操作(**手腳**),手機只是一個視窗。它們都連到你自己的**帳號伺服器**,所以家裡的電腦不用開連接埠、也不用固定 IP。
```
你在手機上說話 你在筆電上說話 沒螢幕的電腦也行
\ | /
└──────── 帳號伺服器(只負責把大家接起來)────────┘
|
大腦:Bot、聊天、記憶、例行任務在這裡
|
手腳:大腦叫它看畫面、點擊、讀檔、開瀏覽器
```
| 角色 | 你要做的 |
|---|---|
| 大腦 | 架一次伺服器,或先用一台常開的 Mac |
| 螢幕 | 裝桌面 App,登入同一個帳號 |
| 手腳 | 按「加一台電腦」,把那一行貼過去 |
| 手機 | 瀏覽器打開你的網址,加入主畫面 |
沒有伺服器也可以先拿一台 Mac 當大腦,見 [docs/multi-device.md](docs/multi-device.md) 的做法 B。
---
## 一句話進去之後
```mermaid
flowchart TD
you[你:桌面 App 或手機]
relay[帳號伺服器<br/>只轉送,不保存聊天]
brain[大腦上的 AnyBot]
model[你選的模型]
ask[要動電腦?先問你]
box[Bot 自己的電腦<br/>Docker 裡的小桌面]
hands[某一台手腳<br/>你的 Mac、Linux 或 Windows]
you --> relay --> brain
brain --> model
brain --> ask
ask --> box
ask --> hands
```
1. 你在桌面或手機送出訊息。手機不自己想,它看的是大腦上的同一份聊天。
2. 大腦把這句話、這個 Bot 的指示、它能用的工具,交給你選的模型。
3. 模型只要回答就直接寫回來;要讀檔、開網頁、點畫面,就提出一個動作。
4. 這個動作先過 AnyBot 自己的規則,不讓模型決定能不能做。
5. 你允許之後,動作在**你指定的那台電腦**上做:隔離桌面、你正在用的這台,或一台配對過的手腳。
6. 結果回到聊天。手機、筆電看到同一份,因為都在看大腦。
三支程式就夠了,沒有資料庫伺服器:`anybot`(桌面、背景 `anybot --serve`、終端機設定 `anybot setup` 都這一支)、`anybot-relay`(帳號伺服器,電腦主動連過去)、手機網頁(一個檔案,做在程式裡)。實作細節在 [docs/architecture.md](docs/architecture.md)。
---
## 文件
| 你想… | 看 |
|---|---|
| 手機、大腦、手腳、連不上 | [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) |
英文摘要在 `docs/en/`。
## 一起改
```sh
git clone https://code.30cm.net/daniel.w/AnyBot.git
cd AnyBot
make deps && make && make install
```
`make run` 直接打開,`make test` 跑測試,`make help` 看全部。
## 授權
Apache-2.0,見 [LICENSE](LICENSE)。