AnyBot/FEATURES.md

2130 lines
139 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.

# AnyBot 功能說明書(完整版)
AnyBot 是一個桌面聊天 App,介面和運作方式照 Grok Bot 重做。最大的不同是:**每個 Bot 都可以換 AI 供應商**,可以是 xAI Grok、OpenAI、Claude、Google Gemini、OpenRouter、Ollama(本機),或任何 OpenAI 相容的服務。
這份文件列出 App 目前所有的功能和細節:
- 「」裡的字是畫面上或 Bot 收到的原文。
- 數字是程式實際使用的值。
- 標「估計值」的數字是我自己定的,因為原版裡找不到那個數字。
---
## 目錄
1. 視窗與版面
2. 左側 Bot 清單(側邊欄)
3. Bot 選單(右鍵/「⋯」)
4. 聊天頂部
5. 聊天內容
6. 輸入框
7. 允許請求(卡片與彈出視窗)
8. 直接操作模式
9. Bot 設定/建立 Bot
10. 設定視窗(一般/AI 供應商/電腦/自動審核)
11. AI 供應商
12. 回覆的串流、思考與錯誤
13. 一個回合怎麼運作(步驟、插話、喚醒、結束)
14. 長對話整理成摘要
15. 自動審核
16. 許可關卡的完整順序
17. 三種電腦
18. 檔案與指令工具
19. 安全規則:哪些直接做、先問、拒絕
20. 背景指令
21. 網頁工具
22. AnyBot 自己的瀏覽器與設定檔
23. 讀取你自己的瀏覽器
24. 操作螢幕(滑鼠、鍵盤、截圖、接管、示範教學)
25. 例行任務
26. Bot 可以直接操作 App 的功能
27. 通知
28. 版本、更新與重新啟動
29. 管理員鎖定
30. 存下來的資料
31. 第一次啟動的 Bot
32. 外觀:頭像、顏色、主題、字型
33. Bot 收到的系統指示
34. 鍵盤快速鍵
35. 示範/截圖模式
36. 手機、帳號、雲端主機
37. 字型、語言、設定分類、右側面板
38. 還沒做的功能
---
## 1. 視窗與版面
- **視窗**
- 標題:「AnyBot」
- 開啟時大小:1180 × 780
- 最小寬度:664(側邊欄 240 加聊天區 424)
- 最小高度:480
- **版面**:左邊是 Bot 清單(側邊欄),右邊是目前選中 Bot 的聊天。
- **側邊欄寬度**
- 預設 280 px,拖動時可在 240 到 400 px 之間調整。
- 拖到不足 210 px,會收成 88 px 寬的「頭像直欄」。
- 收起後要拖到超過 220 px 才會再展開。中間留這段緩衝,是為了避免在邊界上一直切換。
- 怎麼拖:滑鼠移到側邊欄右緣左右 3 px 內,游標會變成左右箭頭;滑過或拖動時,右緣會出現 2 px 的分隔線。
- **聊天內容**
- 最寬 720 px,置中,兩側合計至少留 48 px。
- 聊天區最小寬度 424 px。
- **「設定」和「Bot 設定」視窗**
- 視窗上下合計保留 80 px,不會超出畫面(估計值)。
- 內容太長時可以在視窗裡捲動。
- **自動儲存**
- 有變更就存檔。
- Bot 回覆進行中時,最多每 2 秒存一次。
- 關閉 App 時,會先停掉所有進行中的回覆和背景指令,再存檔。
- **畫面更新頻率**
- 閒置時每 15 秒更新一次,讓例行任務的時鐘繼續走。
- 回覆進行中或正在抓模型清單時,每 100 毫秒更新一次。
---
## 2. 左側 Bot 清單(側邊欄)
### 展開時
- **頂列**
- 「◧」:提示「收合側邊欄」。
- 粗體「AnyBot」,15 px。
- 「+」:提示「新 Bot」。
- **搜尋**
- 灰底圓角框,左邊有「🔍」,提示文字「搜尋 Bot」。
- 比對 Bot 的名稱和描述,不分大小寫。
- 沒有符合的 Bot 時顯示「沒有相符的 Bot」。
- **分組**(小標題 12 px 灰字,空的組不顯示)
- 「主要 Bot」:只有一個。
- 「已釘選的 Bot」
- 「Bot」:其餘全部。
- **每一列 Bot**(高 46 px,圓角 10 px)
- 選中時有底色,滑過時有淡底色。
- 左邊是 28 px 頭像。
- 第一行:名稱,14 px。
- 第二行(12 px)依狀態顯示:
- Bot 工作中且在等你允許:「需要你允許」,強調色。
- Bot 工作中:「正在輸入…」
- 閒置時:最後一則訊息的第一行。沒有訊息時顯示「供應商簡稱·模型」,例如「Grok·grok-4」。
- 名稱或第二行太長時,在右側狀態點前截斷,結尾加「…」。
- 右側狀態點:
- 等你允許:強調色實心點(半徑 5.5 px)外加一圈淡色光環(半徑 8 px)。
- 有未讀訊息:強調色小點(半徑 4 px)。
- 工作中:灰色小點(半徑 4 px)。
- 點一下會切到這個 Bot,清除未讀,並把聊天捲到最底。
- 按右鍵會打開 Bot 選單(第 3 節)。
- **底部**
- 「⚙ 設定」按鈕,高 30 px。
- 最下面是「版本 YYYY-MM-DD HH:MM」,10.5 px 灰字。版本就是這份程式建好的時間;不知道時顯示「?」。
- 有新版本時多一顆強調色按鈕「⬆ 重新啟動以更新(新版本時間)」,按下立刻換成新版。
### 收合成直欄時
- 寬 88 px。
- 最上面依序是「◨」(提示「展開側邊欄」)和「+」(提示「新 Bot」)。
- 頭像依「主要 Bot、已釘選、其他」的順序排列:
- 每格 56×48 px,頭像 32 px。
- 選中或滑過時有底色,圓角 10 px。
- 右上角小點:有未讀是強調色,工作中是灰色。
- 滑過會顯示名稱;按右鍵會打開同一份 Bot 選單。
- 最下面是「⚙」(提示「設定」)。
- 收合或展開的狀態會被記住。
---
## 3. Bot 選單(右鍵選單和聊天頂部的「⋯」共用)
- 「編輯 Bot…」
- 「重新啟動這個 Bot」
- 提示文字:「卡住時用:停止它目前的工作和背景指令,聊天記錄和檔案都會保留」。
- 會停掉這個 Bot 目前的工作、待允許的請求和背景指令,並把做到一半的回覆標成「中斷」,之後可以按「重新產生」重試。
- 完成後顯示「已重新啟動「名稱」。」。有停掉背景指令時改為「已重新啟動「名稱」,也停止了 N 個背景指令。」
- 「釘選到側邊欄」或「取消釘選」
- 「設為主要 Bot」:只有不是主要 Bot 的才會出現。
- 「清除聊天記錄」:先停止工作再清空,不會跳確認。
- 分隔線
- 「刪除 Bot」:紅字,會先跳確認視窗。
- 標題「刪除 Bot?」,內文「這會刪除「名稱」和它的聊天記錄。此操作無法復原。」
- 按鈕「取消」和紅底「刪除」。
- 刪除時會先停掉它的工作。
- 刪到一個都不剩時,會自動建一個全新的初始 Bot。
- 刪掉的是主要 Bot 或目前選中的 Bot 時,改成清單第一個 Bot。
---
## 4. 聊天頂部
- **左邊**
- 30 px 頭像,提示「編輯 Bot 頭像」,點了打開 Bot 設定。
- 名稱,粗體 15 px。
- 描述,12 px 灰字。沒有描述時顯示「新增描述…」。
- **右邊**(從右到左)
- 「⋯」:打開 Bot 選單。
- 「Bot 設定」
- 「例行任務」:有例行任務時加上數量,例如「例行任務 2」。
- 依 Bot 狀態多一個標示:
- 在等你允許:強調色膠囊按鈕「● 需要你允許」,提示「打開請求視窗」,按下會重新叫出彈出視窗。
- 只是在工作:灰字「工作中…」。
- 標題列底部有 1 px 分隔線。
- 沒有選任何 Bot 時,畫面中間顯示「未選取 Bot」。
---
## 5. 聊天內容
### 還沒有任何訊息時
- 置中顯示:
- 72 px 大頭像。
- 名稱,22 px 粗體。
- 描述。
- 「使用 供應商·模型」,12 px 灰字。
- 有打開電腦工具時,多一行:「可以在「工作資料夾」裡查看、修改檔案和執行指令,動手前會先問你」。
- 這家供應商需要金鑰卻還沒設定時,顯示按鈕「設定 (供應商) 的 API 金鑰」,按下直接打開「設定 → AI 供應商」,並選好這家。
### 你的訊息
- 靠右的氣泡,圓角 18 px,左右內距 14 px,最寬佔可用寬度的 75%。只有一行時約高 36 px。
- 文字 15 px,行高 22 px。
- 氣泡顏色:
- 「強調色」選「Bot 顏色」時,用那個 Bot 的顏色配白字。
- 選「黑色」,或 Bot 本身就是黑色時,用黑色氣泡。
- 最後一則是你的訊息、而且 Bot 沒有在回覆時(例如 App 在回覆前被關掉),下方會出現小字「還沒有回覆」和小按鈕「重新傳送」。
### Bot 的回覆
- 左邊 24 px 小頭像,內容在淺灰氣泡裡,圓角 18 px。
- 支援簡單排版:
- 標題(# / ## / ###):17 px 粗體,行高 24 px。
- 項目符號(- 或 *):依縮排往內縮。
- 整行粗體(**…**)。
- 程式碼區塊(```):灰底,圓角 8 px,等寬字 13 px,行高 18 px。
- 其他行內的 ** 和 ` 符號會被拿掉。
- 出錯時用紅字,加很淡的紅底。
### 思考過程
- 還沒出現第一個字時,顯示斜體灰字「思考中…」。
- 有思考內容時,變成可以展開的「思考過程」,預設收起,13 px。
- 正在重試時,改顯示重試的狀態文字(第 12 節)。
### 工具步驟(每一步一行)
- 開頭的狀態圖示:
- 「●」等你允許,強調色。
- 「…」執行中。
- 「✓」完成。
- 「–」被拒絕或已停止。
- 「×」失敗,紅色。
- 接著是工具名稱(13 px),然後是等寬灰字的動作說明(12 px,最多 90 字)。
- 有指定電腦時,說明後面加「 ·電腦名稱」。
### 工具結果
- 緊接在那一步下面,縮排 32 px。
- 標題是「結果:第一行(最多 60 字)」,預設收起。
- 展開後是灰底等寬字,最多顯示 6,000 字。
### 摘要
- 舊對話被整理過時,會出現有框、可以展開的「📝 較早的對話已整理成摘要」。
### 回覆下方的小按鈕
- 只出現在 Bot 的最終回覆下面,不會夾在步驟中間。
- 「複製」:複製回覆文字。
- 「重新產生」:只有最後一則有。會刪掉最後一則你的訊息之後的內容,再重新回答。
- 小字「供應商·模型」,11 px,表示這則是哪個模型寫的。
### 特殊文字
- 「(已停止)」:按停止時,回覆還完全沒有內容。
- 「(沒有回應內容)」:回覆結束了,但沒有文字也沒有任何步驟。
- 「(這次的回應被中斷了,可能是 App 關閉或重新啟動。按「重新產生」再試一次。)」:App 關閉時還在回覆,下次打開時會修成這句。
### 卡住偵測
- 「模型未能及時開始回應。請重試。」:每一步開始後 120 秒內沒有任何回應(估計值)。
- 「回應中斷:模型超過 35 秒沒有送出任何內容。」:已經開始輸出後,又安靜超過 35 秒。
- 等你允許或工具在執行時,不算卡住。
### 自動捲動
- 送出訊息、切換 Bot、按「前往聊天」時,會捲到最底並停在底部。
---
## 6. 輸入框
### 外觀
- 外框圓角 20 px;正在輸入時框線變深。
- 提示文字「傳訊息給 (Bot 名稱)」。
- 從一行開始,跟著內容長高,最高 160 px,再多就在框內捲動。
- 每個 Bot 各自保留打到一半的草稿。
### 左下:模型選擇器
- 顯示「供應商簡稱·模型 ▾」。供應商簡稱有:Grok、OpenAI、Claude、Gemini、OpenRouter、Ollama、自訂。
- 打開後:
- 最上面是說明「選擇這個 Bot 用來思考的模型」。
- 每家供應商一個子選單。目前用的那家前面有「✓ 」;沒有金鑰的標「(未設定金鑰)」。
- 子選單列出模型:已經抓過清單就用抓到的,沒有就用內建的起始清單。預設模型排第一。
- 最後是「其他模型…」:換成這家的預設模型,並打開 Bot 設定讓你自己輸入。
### 右下:送出/停止按鈕(32 px 圓形)
- 有字時:「↑」,提示「傳送(Enter)」。
- Bot 工作中、輸入框是空的:「■」,提示「停止」。
- Bot 工作中、輸入框有字:「↑」,提示「補充給正在進行的工作(Enter)」。
- 沒字又沒在工作:變灰,按不下去。
### 按鍵
- Enter 送出,Shift+Enter 換行。
- 用注音、拼音等輸入法選字時按 Enter,不會誤送出。
- 送出後游標留在輸入框。
### Bot 工作中繼續打字(插話)
- 新訊息不會另開一輪,而是插進正在進行的工作,Bot 下一步就會看到。
- 這一輪剛好結束、來不及插入時,會自動變成下一輪。
- 按停止時,還沒被讀到的補充會被丟掉。
### 輸入框下方的小字(11 px 置中,擇一顯示)
- 有系統提示時:強調色提示,加「知道了」可以關掉。
- 閒置時:「Enter 傳送 · Shift+Enter 換行」。
- 工作中:「工作中也可以繼續打字,Bot 會在下一步看到 · Shift+Enter 換行」。
- 有排入的補充時:「已排入「最新一則前 30 字」,Bot 會在下一步看到」。多於一則時:「已排入「…」 等 N 則,Bot 會在下一步看到」。
---
## 7. 允許請求(聊天裡的卡片和彈出視窗內容相同)
### 標題(依情況)
- 「允許 (Bot) 使用電腦工具嗎?」:這個 Bot 的電腦工具還沒打開。
- 「允許 (Bot) 在你的電腦上執行任務嗎?」:「在這台電腦上執行」還沒打開。
- 「允許 (Bot) (動作)嗎?」或「允許 (Bot) 在 (電腦) 上(動作)嗎?」:一般動作。
### 說明文字
- 電腦工具還沒打開:「這個 Bot 的電腦工具還沒打開。它想做的事:」
- 「在這台電腦上執行」還沒打開:「「在這台電腦上執行」還沒打開,Bot 平常只在它自己的電腦上做事。它想在你的電腦上:」
- 接著是灰底等寬字框,顯示細節,例如要執行的指令。
- 有指定電腦時加一行「在:(電腦名稱)」。
### 按鈕
- 主要按鈕:「允許這一次」;一般動作則是「允許」。
- 一律允許的按鈕:
- 電腦工具還沒打開時:「一律允許這個 Bot 使用電腦」,會打開這個 Bot 的電腦工具。
- 你的電腦還沒允許時:「一律允許(打開「在這台電腦上執行」)」。
- 一般動作:「一律允許(類別)」,會記到這個 Bot 的「一律允許」清單。類別有:
- 「修改檔案」
- 「讀取瀏覽器分頁」
- 「讀取工作資料夾以外」
- 指令類直接顯示指令,例如「npm install」
- 沒有可以記住的類別時,不顯示這顆按鈕。
- 「拒絕」。
- 「⚡ 全部允許,之後直接操作(像 Grok Bot 一樣)」
- 只在「直接操作」還沒開、而且管理員沒鎖住時出現。
- 提示文字:「打開「直接操作」:Bot 可以直接使用這台電腦和瀏覽器,不再一個個問你。危險指令、密碼檔和你的「一律詢問」規則仍會擋下來。可在設定 → 電腦關掉。」
- 按下會允許這一筆,並打開直接操作(第 8 節)。
### 聊天裡的卡片
- 縮排 32 px,2 px 強調色外框,圓角 14 px。
### 彈出視窗
- 會自己跳出來,背後整個畫面變暗。淺色主題暗 70,深色主題暗 120(透明度 0–255)。
- 視窗寬 440 px,置中稍微偏上 20 px,有 2 px 強調色外框、圓角 16 px 和陰影。
- 頂部:28 px 頭像加「(Bot) 正在等你決定」。同時有多筆時再加「(還有 N 個請求)」;目前畫面上的 Bot 優先顯示。
- 底部:
- 「前往聊天」:只有請求來自別的 Bot 時才有,按下會切過去。
- 「稍後再決定」:提示「先關掉這個視窗;聊天裡的卡片還在,Bot 會一直等你」。
- 有新請求時,Dock 圖示會跳動。你不在 App 前面而且通知有開時,還會跳 macOS 通知,標題「(Bot) 需要你允許」。
---
## 8. 直接操作模式
一個開關,讓 Bot 像 Grok Bot 那樣直接做事,不再一個個問。
### 打開時會一次做完
- 打開「在這台電腦上執行」。
- 打開自動審核。
- 打開所有 Bot 的電腦工具。
- 「一律詢問」規則是空的時候,填入三條預設規則:
- 「刪除檔案或資料夾」
- 「付款、購買或轉帳」
- 「用我的帳號發文、留言,或傳訊息給別人」
- 正在進行的工作從下一步開始就不再問。
- 其他 Bot 正在等的「可以用電腦嗎」類請求會自動允許。一般動作的請求仍然要你按。
### 打開後仍然會擋下或詢問
- 內建安全檢查擋下的事一律不做,例如危險指令和密碼檔。
- 符合你的「一律詢問」規則時會停下來問,理由後面加「(符合你的「一律詢問」規則:…)」。
- 其他自動允許的動作,結果前面會標「(直接操作模式:已自動允許)」。
### 提示文字
- 打開時:「已打開「直接操作」:Bot 會直接做事,只有危險操作和你的「一律詢問」規則會停下來問你。」
- 被管理員鎖住時:「「直接操作」已由管理員關閉,沒辦法打開。」
---
## 9. Bot 設定/建立 Bot
### 標題與開法
- 新 Bot 的標題是「建立 Bot」,既有 Bot 是「Bot 設定」。寬 460 px,置中。
- 開法:
- 側邊欄「+」
- ⌘N
- 選單「編輯 Bot…」
- 頂部「Bot 設定」按鈕
- 點頂部頭像
### 新 Bot 的預設值
- 名稱「新 Bot」。
- 形狀和顏色依編號輪流分配。
- 供應商和模型跟目前選中的 Bot 一樣;沒有時用 xAI Grok 的建議模型。
- 電腦工具關閉,模型可讀長度 128K。
### 欄位
- 左上角 56 px 頭像預覽。
- 「Bot 名稱」。
- 「Bot 描述」:提示「它負責做什麼?」。
- 「頭像」:12 種形狀排成一列,每個 28 px,沒選的顯示灰色,滑過顯示名稱(第 32 節)。
- 顏色:10 個 24 px 圓點,選中的有藍色外圈。
- 「AI 供應商與模型」
- 供應商下拉選單,換供應商時模型會自動換成那家的預設模型。
- 模型名稱輸入框,提示「模型名稱」。
- 旁邊的「選擇」下拉選單,可以從清單挑模型。
- 沒有金鑰時顯示紅字:「⚠ 還沒有設定 (供應商) 的 API 金鑰(在「設定 → AI 供應商」)」。
- 「電腦操作」
- 勾選框「讓這個 Bot 查看、修改檔案和執行指令」。勾選後才會出現下面這些欄位。
- 「預設電腦」下拉選單:Bot 的電腦、你的電腦、各台 SSH 電腦。
- 你的電腦還沒在設定裡允許時,顯示「你的電腦(要先在設定裡允許)」。
- 旁邊小字:「聊天時說「在我的 Mac 上」就會換」。
- 「在你的電腦上從 [資料夾] 開始」:提示「例如 ~/Documents/專案」。空白就是家目錄。
- 說明文字:「在 Bot 的電腦上可以自由做事(看不到你的檔案);在你的電腦上,改檔案和會改變東西的指令會先問你。密碼和金鑰檔一律不碰。」
- 「已設定「一律允許」:」:每條規則是一顆「名稱 ×」按鈕,提示「移除這個允許」,按了就移除。
- 「模型可讀長度」:32K、128K、200K、400K、1000K tokens。旁邊小字:「用到 70% 時會把舊對話整理成摘要」。最小 4,000。
- 「指示(Bot 應該記得的事、說話風格…)」:3 行的輸入框,提示「例如:用繁體中文回答,簡短一點。」。
### 最下面一列
- 勾選框「釘選到側邊欄」。
- 「取消」和主要按鈕(新 Bot 是「建立 Bot」,既有 Bot 是「儲存」)。
- 名稱或模型是空的時候,主要按鈕按不下去。
- 儲存時會去掉前後空白。建好後會自動選中新 Bot。編輯期間 Bot 新收到的訊息不會因為儲存而遺失。
---
## 10. 設定視窗
- 標題「設定」,寬 560 px。用 ⌘, 或側邊欄「⚙ 設定」打開。
- 四個分頁:「一般」「AI 供應商」「電腦」「自動審核」。
- 每次打開都會重新讀取管理員的鎖定。
### 一般
- **「主題」**:「為 AnyBot 選擇淺色或深色外觀」。
- 選項:「淺色」「深色」「跟隨系統」。選跟隨系統時,會即時跟著系統切換。
- **「強調色」**:「用 Bot 的顏色為你的訊息上色,或保持黑色」。
- 選項:「Bot 顏色」「黑色」。
- **「通知」**:「Bot 完成任務或等你處理時通知你」。
- 勾選框「你不在 AnyBot 前面時,跳出 macOS 通知」,預設開。
- 說明:「視窗不在最前面,或 90 秒沒有動鍵盤滑鼠,就會通知。第一次可能要在「系統設定 → 通知」允許「工序指令編寫程式」。」
- **「時區」**:「設定 Bot 在排程和提醒中使用的時區」。
- 一個輸入框,加按鈕「用這台電腦的時區」。
- 看不懂時顯示紅字:「看不懂這個時區,請用像 Asia/Taipei 這樣的名稱」。
- **「資料」**:「聊天記錄和金鑰只存在這台電腦上」,下面用小字顯示存放位置。
- **「版本」**:「這個視窗正在用的版本(程式建置的時間)」。
- 有新版時:「有更新的版本:(時間)。按下面的「重新啟動 AnyBot」換成新版。」
- 沒有新版時:「已是最新版本」。
- 勾選框「在你離開時自動更新用戶端」,預設開。
- 說明:「螢幕鎖定或螢幕保護程式開著、10 分鐘沒動作、而且沒有 Bot 在工作時,才會自己換成新版本。」
- **「重新啟動」**:「App 不太對勁時用:先儲存,再關掉並重新打開 AnyBot。進行中的工作會停下,聊天記錄都會保留」。
- 按鈕「重新啟動 AnyBot」,進行中變成灰色「正在重新啟動…」。
- 失敗時顯示「沒辦法重新啟動:(錯誤)。請手動關掉再打開 AnyBot。」
### AI 供應商
- 左邊是供應商清單,寬 200 px(估計值)。「● 」表示已經可以用,「○ 」表示還沒設定。
- 右邊是選中的那家:
- 名稱。
- 取得金鑰的說明(第 11 節)。
- 「API 金鑰」:隱藏顯示。提示「貼上金鑰,或設定環境變數 (變數名)」。Ollama 沒有這一欄。
- 「服務網址」:提示文字是預設網址。
- 「新 Bot 預設模型」:提示文字是建議模型。
- 按鈕「測試連線並取得模型清單」:
- 進行中顯示轉圈和「正在取得模型清單…」。
- 成功:「連線成功,找到 N 個模型」,並記住這份清單。
- 失敗:顯示錯誤。
- 以前抓過清單時顯示「已記住 N 個模型」。
### 電腦
- **「⚡ 直接操作(像 Grok Bot 一樣)」**:強調色淡底框。
- 說明:「一個開關:讓 Bot 直接使用這台電腦和你的瀏覽器,不再一個個問你」。
- 勾選框「打開直接操作」。被管理員鎖住時顯示紅字「🔒 由你的管理員設定,無法變更」。
- 說明:「仍會擋下:危險指令(sudo、格式化…)、密碼和金鑰檔、AnyBot 自己的資料,以及你在「自動審核」寫的「一律詢問」規則(預設:刪除檔案、付款、用你的帳號發文或傳訊息)。macOS 第一次讓 AnyBot 控制瀏覽器時還是會自己問一次,按「好」就行。」
- **「Bot 的電腦」**:狀態、開啟畫面、啟動/休眠、在瀏覽器開啟;「快照與更新」「磁碟」「終端機與環境密鑰」「在哪裡執行」和「顯示紀錄」。細節見第 17 節。
- **「你的電腦」**:「這台 Mac。Bot 要用你的檔案、你的 App 或你的瀏覽器時才會用到。」
- **「在這台電腦上執行」**:「允許 Bot 在這台電腦上執行任務,而不只是在它自己的電腦上」。
- 勾選框「允許在「你的電腦」上執行」,可能被管理員鎖住。
- 說明:「打開後,改檔案和會改變東西的指令仍會先問你(或依自動審核規則)。密碼和金鑰資料夾一律碰不到。」
- **「macOS 權限」**:「螢幕與系統錄音」「輔助使用」各一列,已允許是綠色勾勾,還沒允許有「打開設定」按鈕(直接打開對應的系統設定面板)。下面列出「Bot 可以操作的 App」:「{Bot} 可以看到「{App}」,並在其中點擊和輸入」,每列可以「移除」。
- **「示範教學」**:見第 24 節。
- **「其他電腦」**:「透過 SSH 讓 Bot 在你的其他電腦上做事(需要先設好免密碼登入)」。
- 每台電腦一列:名稱、SSH 位址、「移除」。
- 新增時填「名稱,例如 工作站」和「me@studio.local」,按「新增」。兩欄都要填,名稱不能跟現有的重複。
- **「AnyBot 瀏覽器設定檔」**:見第 22 節。
### 自動審核
- 「自動審核」:「依照自訂規則審核 Bot 的操作」。勾選框「開啟自動審核」。
- 說明:「為每種操作寫一條簡短的自然語言規則。規則衝突時,「先詢問」優先。這些規則只對你生效。內建的安全檢查一律有效。」
- 關閉時加一行:「自動審核關閉時不會使用規則」。
- 「「無需詢問直接允許」規則」:「操作符合這些規則時,自動繼續」。
- 每條規則顯示為「• 規則」,旁邊有「刪除」。
- 輸入框提示「例如:在工作資料夾裡建立文字檔」,按鈕「新增規則」。
- 「「一律詢問」規則」:「操作符合這些規則時,停下來詢問」。輸入框提示「例如:刪除任何檔案」。
---
## 11. AI 供應商
| 顯示名稱 | 預設網址 | 建議模型 | 起始模型清單 | 金鑰 | 金鑰環境變數 | 取得金鑰說明 |
|---|---|---|---|---|---|---|
| 「xAI Grok」 | https://api.x.ai/v1 | grok-4 | grok-4、grok-4-fast、grok-3-mini | 要 | XAI_API_KEY | 「在 console.x.ai 取得 API 金鑰」 |
| 「OpenAI」 | https://api.openai.com/v1 | gpt-5 | gpt-5、gpt-5-mini、gpt-4.1 | 要 | OPENAI_API_KEY | 「在 platform.openai.com 取得 API 金鑰」 |
| 「Claude」 | https://api.anthropic.com/v1 | claude-opus-5-5 | claude-opus-5-5、claude-sonnet-5-5、claude-haiku-5-5、claude-fable-5-1 | 要 | ANTHROPIC_API_KEY | 「在 console.anthropic.com 取得 API 金鑰」 |
| 「Google Gemini」 | https://generativelanguage.googleapis.com/v1beta/openai | gemini-2.5-flash | gemini-2.5-flash、gemini-2.5-pro | 要 | GEMINI_API_KEY | 「在 aistudio.google.com 取得 API 金鑰」 |
| 「OpenRouter」 | https://openrouter.ai/api/v1 | openrouter/auto | openrouter/auto | 要 | OPENROUTER_API_KEY | 「在 openrouter.ai 取得 API 金鑰」 |
| 「Ollama(本機)」 | http://localhost:11434/v1 | llama3.2 | llama3.2、qwen2.5、gemma3 | 不用 | – | 「先安裝並開啟 Ollama,不需要金鑰」 |
| 「自訂(OpenAI 相容)」 | http://localhost:8080/v1 | local-model | (無) | 選填 | – | 「任何 OpenAI 相容的服務(LM Studio、vLLM…)」 |
- **金鑰**:先用設定裡貼上的金鑰(會去掉前後空白);沒貼的話讀環境變數。
- 需要金鑰卻沒有時,送訊息會看到:「還沒有設定 {供應商} 的 API 金鑰。請到「設定 → AI 供應商」貼上金鑰。」
- **網址**:沒填就用預設網址,結尾的「/」會自動拿掉。
- **每個 Bot 可以選不同的供應商和模型**,每則回覆下面都會標出是誰寫的。
- **連線格式**:Claude 用自己的格式;其他六家都用 OpenAI 相容格式。OpenRouter 會帶上「AnyBot」當作 App 名稱。
- **Claude 的設定**
- API 版本 2026-10-21。
- 每次回覆最多 64,000 tokens。
- 「自適應思考」(顯示思考摘要)只開給較新的模型:claude-opus-5、claude-sonnet-5、claude-haiku-5、claude-fable-5、claude-mythos-5、claude-opus-4-6/4-7/4-8、claude-sonnet-4-6 開頭的模型。
- 「伺服器端備援」只給 claude-opus-5-5、claude-opus-5、claude-fable-5-1、claude-sonnet-5-5:請求被拒時,伺服器可以換別的模型重試。
- **抓模型清單**:會排序、去掉重複,並去掉名稱前面的「models/」,然後存起來。
- 「請先貼上 API 金鑰」
- 「供應商沒有回傳任何模型」
---
## 12. 回覆的串流、思考與錯誤
### 串流與思考
- 所有供應商都是一段一段傳回,畫面邊收邊顯示。
- 思考內容會即時顯示:
- OpenAI 相容的供應商:讀取 reasoning_content 或 reasoning 欄位。
- Claude:讀取思考區塊。思考的簽章原封不動保存,下次照原樣送回去。
- 模型要用工具時,畫面上立刻出現那一步,等這一步的文字結束才真的執行。沒有編號的工具會自動編成 call_0、call_1。
### Claude 的特殊結尾
- 模型拒答時加上:「(模型拒絕回答這個要求。)」
- 回答超過長度上限時加上:「(回答太長,已達長度上限。)」
### 重試與逾時
| 項目 | 數值 |
|---|---|
| 連線逾時 | 15 秒 |
| 等第一段回應 | 120 秒(估計值) |
| 中途安靜多久算卡住 | 35 秒 |
| 最多嘗試 | 3 次(第 1 次加 2 次重試) |
| 重試前等多久 | 1 秒、2 秒(每次加倍,最多 4 秒) |
| 伺服器要求等待時 | 照伺服器說的等,最多 30 秒(估計值) |
| 等待中多久檢查一次「停止」 | 每 0.1 秒 |
- **會重試**:錯誤 429、408、529、所有 500 以上的錯誤、連不上、串流中途斷線(「連線中斷:…」)。
- **不重試**:401、403、404 等其他 400 類錯誤、對話太長、模型不支援工具、串流中途傳回錯誤。
- **畫面上已經出現文字、思考或工具時,就不再重試**,避免內容重複。
- 重試前顯示:「{錯誤}\n{N} 秒後重試(第 2 或 3 次,共 3 次)…」。
- 等待重試時按停止,會安靜結束,不顯示錯誤。
### 錯誤訊息
- 一般格式:「錯誤 {碼}:{供應商的說明}\n{提示}」。說明讀不出來時,顯示回應的前 300 字。
- 依錯誤碼附上的提示:
- 401/403:「金鑰無效或沒有權限,請到「設定 → AI 供應商」檢查。」
- 404:「找不到這個模型或網址,請檢查模型名稱。」
- 429:「模型供應商已超載或用量已達上限。通常是暫時的,請稍後再試。」
- 500–599:「模型供應商目前負載過高。通常是暫時的。」
- 對話太長:「對話太長了,超過這個模型能讀的長度。請清除聊天記錄或換一個模型。」
- 模型不支援工具:「這個模型不支援工具。請換一個支援工具的模型,或在 Bot 設定裡關掉「電腦操作」。」
- 連不上 Ollama:「連不上 Ollama:{原因}\n請先開啟 Ollama,並用 `ollama pull` 下載模型。」
- 連不上其他供應商:「連不上 {供應商}:{原因}」
- 串流中出錯但沒有說明:「未知錯誤」
---
## 13. 一個回合怎麼運作
- **一個回合**:從你送出一則訊息(或 Bot 被喚醒)開始,到模型用純文字回答、不再要求工具為止。
- 中間可以來回很多步:模型要用工具,App 執行並交回結果,模型再決定下一步。
- **步驟上限**:一個回合最多 100 步,只是防止失控的保險(Grok Bot 本身不設上限:`cloud_agent_stream_conversation_turn_window` 的 `maxTurns:null`;browser-use 預設 100)。原本的 25 步會把正常的長工作切斷(修一台伺服器的 Docker 用了 50 多條指令)。用完時會顯示:「(這次已經用了 100 個步驟,先停在這裡。要繼續的話,回覆「繼續」。)」
- 每 25 步,模型會在最新的工具結果後面看到一句提醒:方向對就繼續;最近幾步都沒進展就停下來,用一兩句話告訴你卡在哪、要你做什麼(聊天記錄裡看不到這句)。
- 鬼打牆另外有攔截:同一個畫面或網頁動作第 3 次會被警告,第 4 次起不執行。
- 系統提示要模型每一步做多一點:互不相依的工具同一步一起呼叫、查東西的指令合成一條、等待寫在同一條指令裡。
- **每一步開始前會依序做**:
1. 從第 2 步起,檢查要不要整理摘要(門檻 75%)。
2. 把你中途打的話加進去。
3. 開一個新的回覆氣泡。
- **插話**:Bot 工作時你送出的訊息,會在下一步交給模型。模型本來要結束、但還有沒讀的插話時,回合會繼續,讓它看到你的新訊息。
- **喚醒**:例行任務時間到,或別的 Bot 傳訊息過來,都會像你傳訊息一樣開始新回合。
- **回合結束有三種**:
- 成功:模型用文字回完;或用完步驟上限。
- 取消:你按停止。每一步和每個工具前後都會檢查;正在等你回答的請求一律當作拒絕;不顯示錯誤。
- 錯誤:模型呼叫失敗,而且重試完了或不能重試。
- 每次結束都會記下回合編號、結果和結束時間。
---
## 14. 長對話整理成摘要
- **可讀長度**:每個 Bot 可以設,預設 128,000 tokens(估計值)。
- **怎麼估長度**:英數約 4 個字元算 1 token,中文每個字算 1 token。每則訊息另外加 4,工具參數也算進去。
- **門檻**
- 回合開始時:用到 70% 就整理。
- 回合進行中:每一步到 75% 才整理(多 5% 的寬限)。
- **一定保留的內容**
- 最新 6 則訊息保留原文(估計值)。
- 只在某一則你的訊息之前切開,不會把工具要求和它的結果拆開。
- 7 則以下不整理;切點之前全是摘要時也不整理。
- **怎麼整理**
- 每則舊訊息最多取 2,000 字(估計值),用「使用者:」「助手:」「[使用工具 …]」「工具結果(…):」「【先前的摘要】」標出來。
- 要求寫下:使用者的目標與偏好、已經做出的決定、重要的事實與數字、提到的檔案路徑與指令結果、還沒完成的事,不能加入對話裡沒有的內容。
- **整理時畫面顯示**:「對話很長了,正在把較早的內容整理成摘要…」
- **結果**:舊訊息換成一則摘要,之後會放進給模型的開頭說明,接在「先前對話的摘要:」後面。
- 摘要是空的或被取消時不替換。
- 用的是同一個 Bot 的模型,而且不帶任何工具。
---
## 15. 自動審核
- 你可以寫兩組規則:「無需詢問直接允許」和「一律詢問」,用一般的話寫就好。
- 兩組都符合時,「一律詢問」優先。
- 由同一個 Bot 的模型來判斷(不帶工具),在內建安全檢查之後才進行。
- 判斷時只看你寫的規則,不能自己加規則,回答「允許」「詢問」或「都不符合」三種之一。
- **允許**:直接做,結果前面加「(自動審核:符合「{規則}」,直接允許)」。
- **詢問**:照常跳出請求,理由後面加「(符合你的「一律詢問」規則:{規則})」,而且不提供「一律允許」。
- **都不符合,或看不懂回覆**:照一般流程詢問。
- 兩組規則都是空的時,不會去問模型。
---
## 16. 許可關卡的完整順序
0. **不需要許可的**
- App 操作工具(第 26 節),只有「刪除例行任務」會先問。
- 讀公開網頁。
- AnyBot 自己的瀏覽器。
1. **決定在哪台電腦做**
- 操作螢幕和讀你自己的瀏覽器:一律在「你的電腦」。
- 其他工具:用 Bot 指定的電腦,沒指定就用預設電腦。
- 指定的電腦不存在:「沒有「{名稱}」這台電腦。可以用:…」
2. **直接操作有開時**:第 3 步和第 5 步自動算已開。
3. **關卡一:電腦工具還沒開**
- 詢問:「讓 {Bot} 使用電腦工具:{動作}\n(在 {電腦} 上)」
- 允許一次;或一律允許(打開這個 Bot 的電腦工具);或拒絕。
- 拒絕時 Bot 收到:「使用者沒有允許使用電腦工具。請改用文字回答,或問使用者想怎麼做。」
4. **管理員鎖住「你的電腦」**:直接拒絕,「你的管理員關閉了在「你的電腦」上執行。請改用「Bot 的電腦」。」
5. **關卡二:「在這台電腦上執行」還沒開**
- 詢問:「在你的電腦上執行任務,而不只是在它自己的電腦上:{動作}\n(在 你的電腦 上)」
- 拒絕時 Bot 收到:「使用者沒有允許在「你的電腦」上執行。可以改用「Bot 的電腦」,或問使用者。」
6. **個別動作**
- 截圖:「看你的螢幕畫面:…」,可以一律允許。
- 滑鼠和鍵盤:「操作你的滑鼠和鍵盤:…」,可以一律允許。
- 讀你瀏覽器的分頁:「讀取你瀏覽器目前分頁的內容(包含已登入的頁面):目前的分頁」,可以一律允許。單純打開連結不用問。
- 檔案和指令:照第 19 節的安全規則決定。被擋下時顯示「被安全規則擋下:{原因}」。
7. **自動審核或直接操作**:見第 15 節和第 8 節。
8. **一般請求**
- 允許一次。
- 一律允許:記到 Bot 的「一律允許」清單,例如「修改檔案」或「git commit」。
- 拒絕:Bot 收到「使用者拒絕了這個操作。請不要再試同樣的操作,改問使用者想怎麼做。」
- 等你回答時,每 0.2 秒檢查一次有沒有按停止;按停止就等於拒絕。
9. **工具狀態**:等待中、執行中、完成、被拒、失敗。結果開頭會標電腦名稱,例如「[你的電腦] …」。
---
## 17. 三種電腦
| 名稱 | 是什麼 |
|---|---|
| 「Bot 的電腦」 | 一台真的 Linux 電腦(Debian 桌面、Chromium、終端機),所有 Bot 共用,每個 Bot 有自己的資料夾 `/home/bot/bot-編號`。跑在 Docker 裡,可以是這台 Mac 或你的伺服器。預設電腦。沒有 Docker 時,退回成一個封閉的資料夾(沒有桌面)。 |
| 「你的電腦」 | 這台 Mac,從工作資料夾開始(預設是家目錄)。要先打開「在這台電腦上執行」,或每次允許。讀你的瀏覽器一定用這台。 |
| SSH 電腦 | 你自己加的其他電腦,每台有名稱、位址(例如 me@studio.local)和起始資料夾(沒填就用對方的家目錄)。 |
- 聊天時說「在我的 Mac 上」,Bot 就會換到「你的電腦」。
- 清單順序:Bot 的電腦、你的電腦、各台 SSH 電腦。
### Bot 的電腦(照原版的雲端電腦做)
原版每個帳戶有一台雲端電腦(box):Linux 容器裡的 X11 桌面,用 xdotool 操作,透過 noVNC(埠 6080)觀看。AnyBot 用同樣的做法:
- **狀態**(設定頁和畫面視窗都有狀態圓點):
- 「尚未建立」→ 第一次用到時「建立中」(第一次會先做映像檔,要幾分鐘)
- 「休眠中」→ 用到時「喚醒中」
- 「連線中」→「執行中」
- 「正在備份/正在建立/正在搬移資料/正在拆除舊電腦/正在清除資料/正在從快照還原」(更新進行中)
- 「發生問題」:下一次用到時會自動重新啟動
- **自動喚醒和休眠**:Bot 用到時自動喚醒;閒置 15 分鐘(估計值)而且沒有 Bot 在用、沒有人在看畫面,就先存快照再休眠。
- **健康檢查**:每 20 秒看一次,單次最多等 3 秒(原版 /health 的逾時)。
- **Bot 在上面的權限**:這是它自己的電腦,所以指令、改檔案、操作螢幕都不用問你;只有「一律不允許」的指令(例如格式化)還是會擋。可以 `sudo` 安裝套件。
- **開機時間**:最多等 60 秒(估計值)。
### 快照與三種更新(原版的規則)
- **儲存快照**:把整個 `/home/bot`(略過 .cache)壓縮存到這台 Mac。休眠前和「重建電腦」前會自動存。設定頁顯示「上次快照:月/日 時:分」。
- **「重建電腦」**:「你的檔案和登入資訊會保留,但已安裝的應用程式和套件會被移除。所有 Bot 會一起更新。」
- 有 Bot 正在用這台電腦時會拒絕:「有 Bot 正在用這台電腦,等它做完再重建」。按下確認時會先停掉正在工作的 Bot,聊天會保留。
- 步驟:正在備份(存快照)→ 正在建立(更新映像檔、換上新電腦)→ 正在搬移資料(確認原本的檔案還在、新電腦能連線)。
- **「從快照復原」**:「從你上次儲存的快照重新啟動它。最近的變更可能會遺失,已安裝的 App 會被移除。你的 Bot、檔案和登入資訊都是安全的。」
- 步驟:正在拆除舊電腦 → 正在建立 → 正在從快照還原;放回檔案後最多等 90 秒、每 2 秒確認一次結果(取自原版)。
- 還沒有快照時按鈕是灰的。
- **「重設電腦」**(紅色按鈕):全部清空,換一台全新的電腦。步驟:正在拆除舊電腦 → 正在清除資料 → 正在建立。
- **同時只能有一個更新**:再按會顯示「已經有一個更新在進行中」。開始後就不能取消。
- **中斷了會接續**:更新做到一半 App 被關掉,下次打開時,如果紀錄在 10 分鐘內、而且電腦不正常,就自動接續;超過 10 分鐘就清掉紀錄,電腦正常時也不重做(都取自原版)。
- 進度在設定頁用步驟列和進度條顯示。
- **新版本與排程更新**(原版:「有新映像檔就在指定的當地時間自動更新,錯過有一小時的補執行時間」):
- AnyBot 裡帶著的電腦版本比正在跑的新時,「快照與更新」最上面出現強調色框「有新版的 Bot 的電腦」和「現在更新」(打開「重建電腦」的確認)。每 30 秒檢查一次(估計值)。
- 勾選「有新版本時,自動在每天 [03:00] 更新」:到了那個時間、有新版、沒有 Bot 在用,就自動做「重建電腦」;每天最多一次。錯過時間的話一小時內還會補做,超過就等隔天。時間格式錯誤時顯示「請用 時:分,例如 03:00」。
### 磁碟
- 「檢查用量」:顯示磁碟剩餘空間和最大的幾個資料夾。
- 「請 Bot 提出清理方案」:把「檢查 Bot 的電腦的磁碟使用情況,並提出安全的清理方案供我核准」放進主要 Bot 的輸入框,由你按送出。
### 終端機與環境密鑰
- 給指令用的帳密,例如 CRM_API_TOKEN。Bot 執行指令時會變成環境變數。
- 名稱要大寫字母開頭,只能用 A–Z、0–9 和 _(原版規則);輸入時自動轉成大寫。
- 值只能寫入、不能讀出:清單只顯示名稱和「••••••••」,可以「取代」或「刪除」。
- 每個值最多 32 KB、最多 100 個(估計值)。存在這台 Mac 上,只有你的帳號能讀。
- Bot 的系統指示只會告訴它有哪些名稱,並提醒它不要把值印出來。
### 在哪裡執行
- 預設是這台 Mac 的 Docker(OrbStack 或 Docker Desktop)。
- 可以填 Docker 主機,例如 `ssh://me@server`(Tailscale 的機器名稱也行),Bot 的電腦就會在那台主機上;看畫面時 AnyBot 會自己開 SSH 通道。
- 換位置後會在新的地方重新建立;舊檔案可以先「儲存快照」,換過去再「從快照復原」。
- **「網路流量改走這台 Mac」**(原版:網路流量可以改走你的本機電腦,「僅對新連線生效」,管理員可以關掉):打開後,Bot 的電腦之後執行的指令會經過這台 Mac 上的代理伺服器出去(例如要連公司內網或 VPN 才看得到的服務)。代理只聽這台 Mac 自己(127.0.0.1),用原版的埠 8791,被占用就往後找。設定頁顯示經過的連線數。Bot 的電腦在別的主機上時不能用。管理員可以用 `defaults write com.anybot.AnyBot AllowBoxTrafficViaThisMac false` 鎖住,這時顯示「🔒 由你的管理員設定,無法變更」。
### 看畫面、取得控制權(像同事一樣看,需要時接手)
- 核心只有三件事:Bot 操作它的電腦;你像同事一樣即時看它在做什麼;它需要你(登入、驗證碼)時你接手幫忙。看和接手用 **VNC(noVNC)**:只傳畫面上變了的地方,每個滑鼠移動和按鍵即時送過去,手機可以用觸控。原版也是用 noVNC 看 box。
- **在哪裡看**:手機網頁的「看 Bot 的電腦」、需要處理卡片的「接管」,Mac 和其他電腦的「看畫面」「開啟電腦」都打開同一個網頁 `/screen`(電腦上在瀏覽器開)。
- 大腦在別台(伺服器):網頁在帳號伺服器上,VNC 經過帳號伺服器和大腦的長連線到大腦的 Bot 的電腦。電腦上的 App 會先向帳號伺服器要一個 10 分鐘有效的連結(不用在瀏覽器登入);手機網頁用自己的登入。只有擁有者和管理員能看。
- 同一個網路的手機(不經帳號伺服器):同一個網頁,連 AnyBot 自己的 `/api/vnc`。
- 這台電腦自己的 Bot 的電腦:直接開它的 noVNC。
- **網頁**:最上面是返回、電腦名稱、狀態(即時觀看/你在操作)和「接管/交還給 Bot」。預設只看,按「接管」才會把你的滑鼠鍵盤送過去;需要處理卡片的「接管」直接打開接管。接管時有「打字」:打中文或任何語言(貼進目前的視窗),還有 Enter、Esc、Tab、⌫。斷線會自己重連。
- **你在操作時 Bot 會等**:你點擊或按鍵後 8 秒內,Bot 的滑鼠鍵盤操作會收到「使用者正在自己操作這台電腦」。不用另外按什麼;停下 8 秒它就繼續。需要處理卡片的「接管」會讓 Bot 一直等,直到你按「我完成了」或「跳過」。
- **VNC 密碼不出大腦**:大腦用 Bot 的電腦自己的 VNC 密碼登入,給看的人的是「不用密碼」;能連到這裡的人已經過帳號伺服器(或手機密碼)。
- 以前的做法(每 0.45~1 秒拍一張 1 MB 的圖、解開再壓、經過帳號伺服器傳;點擊另走一條路)已經拆掉。
---
## 18. 檔案與指令工具
除了「查看背景指令」,每個工具都可以指定在哪台電腦做。
在 Bot 的電腦和 SSH 電腦上,這些工具在那台電腦裡執行;寫檔案時內容從標準輸入送過去,所以任何文字都能寫;「修改檔案」也能只換掉一段(先讀出來、確認那段只出現一次,再整個寫回)。
### 「查看資料夾」(list_dir)
- 資料夾排在前面,名稱後面加「/」;檔案排在後面,附上大小(B、KB、MB)。依名稱排序,不分大小寫。
- 最多列 2,000 項,超過時顯示「…還有 N 項」。
- 空資料夾顯示「(空資料夾)」。
- 私密檔案自動隱藏。
### 「搜尋檔案」(search)
- 參數:要找的文字(必填)、資料夾、是否只列檔名。
- 結果格式:「路徑:行號:內容」。
- 電腦有裝 ripgrep 時:
- 可以用正規表示式。
- 每行最多 300 欄。
- 略過 .git、.env、.pem、.key。
- 沒裝 ripgrep 時:
- 改用一般比對,不分大小寫。
- 略過 node_modules、target 和私密檔案。
- 最多找 25 秒、10,000 行,只回傳前 2,000 行。
- 可能看到的訊息:
- 「…結果太多,只列出前 2000 行(共 N 行以上)」
- 「…搜尋超過 25 秒,結果可能不完整」
- 「沒有找到」
- 「請給要搜尋的文字」
### 「讀取檔案」(read_file)
- 從第幾行開始(預設 1),讀幾行(預設 2,000,估計值)。每行前面加行號。
- 檔案最大 8 MB(8,388,608 位元組)。前 8,000 位元組裡出現空字元,就當作不是文字檔。
- 可能看到的訊息:
- 「…還有 N 行(用 offset=M 繼續讀)」
- 「(空檔案)」
- 「X 太大了(大小),最多讀 8 MB」
- 「X 不是文字檔」
- 「X 是資料夾,請用 list_dir」
- 「找不到 X」
### 「修改檔案」(edit_file)
- 把舊文字換成新文字,舊文字必須在檔案裡剛好出現 1 次。
- 舊文字留空時,建立新檔或整個覆寫,需要時會自動建立上層資料夾。
- 成功時:「已建立 X(N 行)」「已覆寫 X(N 行)」「已修改 X」。
- 失敗時:
- 「在 X 裡找不到要替換的文字」
- 「要替換的文字在 X 出現了 N 次,請多給一些前後文讓它只出現一次」
### 「執行指令」(shell)
- 在工作資料夾裡執行,不接受鍵盤輸入。
- 輸出:保留開頭和結尾各 6,000 字,中間顯示「…(中間省略 N 個字)…」(估計值)。總共不到 12,000 字時全部保留。
- 結果:
- 沒有輸出:「(完成,沒有輸出)」
- 失敗:「結束代碼 N」加上輸出
- 無法執行:「無法執行:…」
- 按停止:「已停止(連同它啟動的程式)」
- 預設等 30 秒(估計值,最多可設 10 分鐘)。還沒跑完時不會中斷,而是移到背景繼續跑:「指令跑了超過 N 秒,已移到背景繼續執行(背景指令 #編號)。用 read_terminal 查看進度。目前的輸出:…」
- 執行前會從環境裡拿掉 6 種 AI 金鑰,指令拿不到你的金鑰。
### 「查看背景指令」(read_terminal)
- 一律不用問。
- 顯示:
- 「背景指令 #N:指令」
- 「狀態:已結束(代碼 C)」或「還在執行:N 個程式,CPU 時間 X.X 秒,記憶體 M MB」
- 最新的輸出
- 編號不存在時:「沒有背景指令 #N」。
---
## 19. 安全規則:哪些直接做、先問、拒絕
判斷順序是:拒絕 → 私密檔案 → 允許 → 詢問。用 ; | || & && 或換行串在一起的指令,會先拆開、一段一段判斷。
### 私密檔案(Bot 不能讀也不能改)
- AnyBot 自己的資料資料夾(金鑰存在這裡)
- .git 資料夾
- .ssh、.gnupg、Library/Keychains
- .env、.env.*、.netrc、credentials
- .pem、.key 檔
- id_rsa、id_ed25519 開頭的檔案
### 在「你的電腦」上
- **讀取類工具**(查看資料夾、搜尋、讀取檔案)
- 工作資料夾裡:直接做。
- 工作資料夾外:先問「讀取工作資料夾以外的地方:路徑」,可以一律允許。
- 私密檔案:拒絕,「「路徑」是私密或系統檔案,Bot 不能讀取。」
- **修改檔案**
- 工作資料夾裡:問「修改檔案:路徑」,可以一律允許。
- 工作資料夾外:問「修改工作資料夾以外的檔案:路徑」,不能一律允許。
- 私密檔案:拒絕。
- **指令**
- 一律拒絕:sudo、su、rm -rf /、rm -rf ~、mkfs、dd、shutdown、reboot、diskutil erase、chmod -R 777 /。訊息是「「X」這類指令一律不允許。」
- 碰到私密檔案:拒絕,「指令碰到私密或系統檔案:X」。
- 含有看不出內容的子指令($( )、反引號、eval、exec、source、「.」,或引號沒關好):一律問「執行指令(含有隱藏的子指令,無法自動判斷):…」,不能一律允許。
- 不用問的 24 種唯讀指令:ls、pwd、cat、head、tail、wc、echo、rg、grep、find、file、stat、du、df、date、which、tree、sort、uniq、diff、git status、git diff、git log、git show。每一段都是唯讀或已允許、而且沒有用「>」寫入檔案,才直接執行。
- 其他指令:問「執行指令:…」。
- 一律允許會記住指令的第一個字。
- git、npm、pnpm、yarn、cargo、brew、pip、pip3、python3、docker、go 這 11 種會記住前兩個字,例如「npm install」。
### 沙盒(macOS 有提供時)
- 所有指令都在沙盒裡跑。
- 指令碰不到這些地方:AnyBot 的資料、.ssh、.gnupg、Library/Keychains、.aws、.config/gcloud。
### 在「Bot 的電腦」上
- 指令只檢查上面那 10 種一律拒絕的,其他都直接做。沙盒會把它關在自己的資料夾裡,看不到也寫不到家目錄的其他地方。
- 自己資料夾裡的檔案可以自由讀和改。
- 資料夾外:拒絕,「{Bot} 看不到這台電腦上的其他檔案(路徑)。要處理你的檔案,請用「你的電腦」。」
### 在 SSH 電腦上
- 連線不會問密碼,最多等 15 秒。有起始資料夾時會先切過去。
- 查看資料夾、讀檔、搜尋、查看背景指令:直接做。
- 修改檔案:問「修改 {電腦} 上的檔案:路徑」,而且只能整個寫入。否則會看到「在 {電腦} 上只能整個寫入檔案(old_text 留空),或用 shell 修改。」
- 指令:套用跟本機一樣的規則,問「在 {電腦} 上執行指令:…」。
---
## 20. 背景指令
- **「輸入到背景指令」(write_terminal)**:原版可以把輸入傳給執行中的指令。指令在等你回答(例如「name?」「y/n」)時,Bot 用它把文字送進去,`\n` 代表按 Enter;`close` 會結束輸入(像 Ctrl-D)。送出後等 0.4 秒,回傳最新輸出。指令已經結束時會說「背景指令 #N 已經結束了」。
- 一個指令連同它啟動的所有程式,最多追蹤 4,096 個。統計程式數量、CPU 時間和記憶體。
- 停止時從最新的程式開始,依序把整棵程式樹停掉。
- 關閉 App 時,會停掉所有背景指令。「重新啟動這個 Bot」只停那個 Bot 的背景指令,並回報停了幾個。
---
## 21. 網頁工具
### 「讀取網頁」(web_fetch)
- 讀公開頁面,不帶登入,不用許可。
- 網址:
- 沒寫 https:// 會自動補上。
- 有空白或沒有「.」時不接受:「「X」看起來不是網址」。
- 空白:「請給網址」。
- 限制:
- 最多等 20 秒。
- 最多下載 3,000,000 位元組(估計值)。
- 最多回傳 20,000 字(估計值),超過時結尾加「…(後面還有,已截斷)」。
- 會拿掉程式碼、樣式和 `<head>`(只認完整的標籤名:`<header>` 不是 head,以前會把有 header 的網站截斷成只剩選單),把段落、標題、清單、表格列分行,表格儲存格之間空一格,特殊符號轉回一般文字。
- 輸出:「網址:…」「標題:…」加內文。
- 可能看到的訊息:
- 網站回應 400 以上:「網站回應 N。如果這個頁面要登入,請改用 browser_open。」
- 文字少於 200 字:「(頁面幾乎沒有文字,可能要登入或靠程式載入。可以改用 browser_open 打開,它會等頁面載入再回傳內容。)」
### 瀏覽器工具
- 「在瀏覽器打開」(browser_open):參數是網址和設定檔。等頁面載入完成(最多 12 秒,看載入狀態、網址和文字停下來,不是固定秒數),直接回傳和 browser_read 一樣的內容(最多 12,000 字,加上可以點的編號),所以打開後不用再讀一次。
- 點擊、輸入、按鍵、選擇、捲動、上一頁之後:等頁面停下來就回來(頁面有變且穩定,或 0.5–0.9 秒內沒有開始變),最多 4 秒;以前是固定 1–2.5 秒。
- 「讀取瀏覽器分頁」(browser_read):最多讀多少字(預設 20,000,最多 40,000),加上設定檔。
- 「瀏覽器設定檔」(browser_profiles):列出、新增、切換。
### 用哪個瀏覽器
- 有裝 Chrome 類瀏覽器時,用 AnyBot 自己的瀏覽器。只有設定檔選「你的瀏覽器」時,才用你平常的瀏覽器。
- 都沒裝時,一律用你自己的瀏覽器。
### 原版「從 Chrome 複製登入」
- 原版已經拿掉這個功能,所以 AnyBot 也沒有做,Bot 也被交代不要提。
---
## 22. AnyBot 自己的瀏覽器與設定檔
### 用哪個瀏覽器
- 依序找第一個有裝的:Google Chrome、Brave Browser、Microsoft Edge、Chromium。
- 用 AnyBot 自己的資料夾打開,不會影響你平常的瀏覽器,也不用改任何瀏覽器設定。
- 略過首次使用畫面和「設為預設瀏覽器」的詢問。
### 數字
- 「預設」設定檔用本機連接埠 9333(估計值)。其他設定檔由瀏覽器自己挑空的連接埠,再由 AnyBot 讀回來。
- 等待時間:
- 等瀏覽器開好:最多 20 秒。
- 讀一頁:最多 20 秒。
- 打開網址後:等 3 秒再讀。
- 已經開著時,用新分頁打開。
### 設定檔
- 「預設」是第一個,登入狀態一直保留。
- 其他設定檔各自有資料夾和登入,例如「工作」「私人」。
- 「你的瀏覽器」代表你平常的 Chrome(第 23 節)。也聽得懂「你的 chrome」「我的 chrome」「我的瀏覽器」「my chrome」這些說法。
- 順序:「預設」排第一,其他依名稱,「你的瀏覽器」排最後。
- 「使用中」的設定檔會被記住;找不到時回到「預設」。找設定檔不分大小寫。
- 在某個設定檔打開網址,那個設定檔就會變成使用中。
### 名稱規則
- 不能空白:「請給設定檔名稱」
- 最多 30 字(估計值):「設定檔名稱最多 30 個字」
- 不能用保留名稱:「「X」是留給你自己瀏覽器的名字,請換一個」
- 不能有 / 或 :,也不能用 . 開頭:「設定檔名稱不能有 / 或 : 也不能用 . 開頭」
### 新增、切換、列出、移除
- **新增**:名稱已經存在時沿用,不重複建立。新增後自動切過去。
- 「已新增並切換到設定檔「X」(全新的,還沒登入任何網站)…」
- **切換**:「已切換到「X」,之後的 browser_open / browser_read 都用它。」
- 切到「你的瀏覽器」時補一句:「(使用者平常的瀏覽器:請使用者在那裡切到想要的 Chrome 設定檔)」
- **列出**:「AnyBot 瀏覽器的設定檔:A、B(使用中)…。每個設定檔有自己的登入。」
- **移除**:只有你能在設定裡移除,Bot 不行。
- 「預設」和「你的瀏覽器」不能移除:「「X」不能移除」。
- 視窗還開著:「「X」的視窗還開著,請先關掉它再移除。」
- 移除的是使用中的設定檔時,會回到「預設」。
- **設定檔不存在**:「AnyBot 瀏覽器沒有叫「X」的設定檔。現有:…。要新的可以用 browser_profiles 新增(action: add)。」
### 設定 → 電腦 → 「AnyBot 瀏覽器設定檔」
- 說明:「每個設定檔是一個獨立的瀏覽器視窗,有自己的登入(例如工作和私人帳號)。Bot 會用「使用中」的那個,你也可以在聊天裡叫它換。」
- 每個設定檔一列:
- 單選按鈕,使用中的那個旁邊標「使用中」。
- 「開啟視窗」:提示「打開這個設定檔的瀏覽器視窗,在裡面登入網站」。
- 開啟中:「正在打開「X」…」
- 成功:「已打開「X」的視窗。在裡面登入一次,之後會記住。」
- 已經開著時,把它的分頁帶到前面。
- 「移除」:「預設」沒有這顆。按下後變成紅字「確定移除(登入也會刪掉)」和「取消」,移除後顯示「已移除「X」。」
- 「你的瀏覽器」那列:
- 說明「你平常的 Chrome,切到哪個設定檔就讀哪個」。
- 已有權限時顯示「✓ 輔助使用已打開」;沒有時是按鈕「打開輔助使用」。
- 新增:輸入框提示「新設定檔名稱,例如 工作」,按「新增設定檔」。
- 成功:「已新增「X」並設為使用中。按「開啟視窗」登入你要的網站。」
- 沒有任何 Chrome 類瀏覽器時,只顯示:「需要 Chrome、Brave、Edge 或 Chromium 才能用 AnyBot 自己的瀏覽器。」
- 底部說明:「選「你的瀏覽器」:Bot 像 Grok Bot 一樣從畫面讀你平常的 Chrome(macOS 會請你打開一次「輔助使用」),你在 Chrome 切到哪個設定檔,它就看哪個;讀之前會先問你。其他的是 AnyBot 自己的視窗,各自登入一次就好。」
### 打開和讀取
- 打開成功:「已在 AnyBot 瀏覽器({瀏覽器},設定檔「X」)打開 {網址}。接著用 browser_read 讀內容。如果頁面要登入,請使用者在那個視窗登入一次,之後會記住。」
- 讀取的是最近用的那個一般分頁。輸出:「瀏覽器:AnyBot 瀏覽器(…,設定檔「X」)」「標題:」「網址:」加內文。
- 頁面少於 1,500 字,又有 log in、sign in 或「登入」字樣時,加上「(這頁看起來要登入。請使用者在 AnyBot 瀏覽器視窗登入一次,之後就會記住。)」
- 可能看到的錯誤:
- 「這台電腦沒有 Chrome、Brave、Edge 或 Chromium,沒辦法開 AnyBot 自己的瀏覽器。」
- 「{瀏覽器} 沒有及時打開…請再試一次。」
- 「AnyBot 瀏覽器沒有開著的分頁,請先用 browser_open 打開網址。」
- 「讀取頁面太久了」
- 「頁面拒絕讀取:…」
---
## 23. 讀取你自己的瀏覽器(「你的瀏覽器」)
### 選哪個瀏覽器
- 候選:Google Chrome、Arc、Microsoft Edge、Brave Browser、Chromium、Safari。
- 優先選畫面上看得到、而且最前面的瀏覽器視窗。
- 透明、沒有大小的視窗,以及選單列小工具都不算。
- 列出視窗最多等 10 秒。
- 沒有看得到的視窗時,用第一個正在執行的瀏覽器;都沒在執行時,有裝 Chrome 就用 Chrome,否則用 Safari。
### 打開網址
- Chrome 類瀏覽器:網址交給你平常的視窗,不會跑到 AnyBot 的視窗。
- 打開後等 4 秒(估計值)。
- 成功:「已在 {瀏覽器} 打開 {網址}。接著可以用 browser_read 讀這個分頁。」
### 讀取:先用「輔助使用」(跟原版小幫手一樣的方法)
- 不用改任何瀏覽器設定。你在 Chrome 開著哪個設定檔的視窗,就讀哪個。
- 需要 macOS 的「輔助使用」權限,macOS 會自己問。
- 沒開時,AnyBot 會打開那個設定頁並說:「macOS 還沒讓 AnyBot 使用「輔助使用」,所以看不到你的瀏覽器。我已經打開「系統設定 → 隱私權與安全性 → 輔助使用」:把 AnyBot(或「終端機」)打開,然後再叫我試一次。只要開一次。」
- 只會讀你自己的瀏覽器,不會讀到 AnyBot 自己的視窗。
- Chrome 和 Electron 類 App 的特別處理(規則取自原版):
- 怎麼判斷:App 識別碼是 com.google.Chrome、com.github.Electron,或以 com.google.Chrome. 開頭;或是 Electron 程式;或 App 裡含有 Electron Framework、Chromium Embedded Framework、Google Chrome Framework 其中之一。
- 這類 App 會先打開兩個輔助使用開關(AXManualAccessibility、AXEnhancedUserInterface),網頁文字才看得到。
- 讀的是最前面視窗裡的網頁:標題、網址,連續的文字合成一行。
- 限制(估計值):
- 最多 20,000 個元素、80 層。
- 試 5 次,每次隔 0.7 秒。
- 每次最多等 2 秒。
- 成功:「瀏覽器:{瀏覽器}(你的瀏覽器)」「標題:」「網址:」加內文。
- 可能看到的錯誤:
- 「你的瀏覽器現在沒有打開的視窗」
- 「讀不到「標題」的頁面內容」
- 「你的瀏覽器沒有開著。請先打開它(或叫我用 browser_open 打開網址)。」
### 讀不到時改用 AppleScript
- 讀最前面分頁的標題、網址和文字。最多等 90 秒,讓你有時間回答 macOS 的詢問。
- 等太久:「等瀏覽器回應太久了(macOS 可能在問你要不要允許,請看看螢幕)」
- 讀不到文字時,仍會給標題和網址,加上「(讀不到頁面文字)」和說明:
- 被擋下控制權:自動打開「自動化」設定頁,並說「macOS 擋下了 AnyBot 控制 {瀏覽器}。我已經幫你打開「系統設定 → 隱私權與安全性 → 自動化」:在 AnyBot(或「終端機」)底下打開「{瀏覽器}」,然後再叫我試一次。」
- Safari:「Safari 還沒允許讀取網頁內容:請在 Safari 選單「開發 → 允許來自 Apple 事件的 JavaScript」打開…」
- Chrome 類:「{瀏覽器} 還沒允許讀取網頁內容:請在 {瀏覽器} 選單「檢視 → 開發人員 → 允許來自 Apple 事件的 JavaScript」打開,然後再叫我試一次。」
- Bot 被交代絕對不要主動叫你去改這些選單。只有在最後的備用方法也失敗時,才會照實轉告。
---
## 24. 操作螢幕(滑鼠、鍵盤、截圖)
- 有螢幕的電腦:Bot 自己的電腦(Linux 桌面,Docker)、這台電腦、帳號裡其他開了「裝置連結」的電腦。每個螢幕工具都有 `computer` 參數;沒指定時用 Bot 的預設電腦。
- **看:截圖上每個能點的東西都框起來、標了編號。** Bot 拿到的截圖上,每個按鈕、連結、輸入框、選單項目都有編號,另外附同樣編號的清單(例如「[21] 連結「Profile」」)。編號來自系統的無障礙資訊(Mac 的 AX、Linux 的 AT-SPI;Bot 的電腦裡網頁內容也有,Chromium 開了無障礙),所以網頁上的小圖示也有編號。只有被別的視窗擋住的按鈕不給編號(Mac 上逐一檢查最上層的視窗是不是同一個 App),免得點到別的 App。
- **動手:照編號點,只有一種方式(真的滑鼠和鍵盤)。** 點編號就是點那個東西的正中央;圖上沒編號的東西才用 x、y。Mac 用 CoreGraphics,Linux 用 X11/Wayland(desk.rs),Bot 的電腦用 xdotool。(以前 Bot 看圖猜座標,曾把一塊空白當成選單項目連點十次。)
- **每個動作做完自動附上新的編號截圖**(點、打字、按鍵、捲動、拖曳、移動滑鼠、打開 App;先等 0.5 秒讓畫面穩定),Bot 不用再花一步截圖確認。拍不到畫面時(Mac 還沒開「螢幕與系統錄音」),改附最前面 App 的清單(含文字)。
- **不鬼打牆**:動作後畫面和上一步完全一樣,結果會寫「畫面和上一步完全一樣:這一步沒有點到東西」,並叫 Bot 換編號、換方法或請人幫忙。同一步(點擊座標相差不到 16 像素也算)在一個回合裡做第 3 次會加警告,第 4 次起不執行,直接叫它換方法。
- 在 Bot 的電腦上:一個動作只開一次 `docker exec`(動作、按鈕清單和之後的畫面在同一個指令裡,約 0.4 秒)。桌面是一個 TigerVNC(畫面和 VNC 合一,取代 Xvfb+x11vnc),開機就啟動無障礙服務(AT-SPI),瀏覽器一律由 `anybot-browser` 開(同一個設定檔和 CDP、網頁開放無障礙、同時開兩個不會搶設定檔;做法取自 XBot 的 box)。這台電腦比 AnyBot 舊時(第 4 版起),大腦會在沒人用一分鐘後自己更新它(檔案和登入保留),不用問你;英文一個鍵一個鍵打,中文和表情符號用剪貼簿貼上(終端機用 Shift+Insert,其他程式用 Ctrl+V),所以任何程式都打得進去;⌘ 當成 Ctrl。不用 `xdotool mousemove --sync`:滑鼠已經在那個位置時它會一直等(同一點點兩次會卡兩分鐘)。
- 需要看得懂圖片的模型;看不懂圖片時用按鈕清單。
### 原版的九個工具
computer_use_screenshot、click、mouse_move、mouse_button(按住/放開)、drag、scroll、typing、press_key、check_permissions。另外兩個:
- **(已併入截圖)「讀 App 畫面」**:按鈕清單現在就在每張截圖裡,不再是另一個工具。很長的內容(終端機的整段捲動紀錄)留開頭 160 字和結尾 400 字。
- **「打開 App」(computer_use_open_app)**:打開或叫到最前面,顯示的名字也可以(「計算機」→ Calculator)。Bot 的電腦上:chromium(瀏覽器,就是 browser_* 在用的那個,不會開第二個)、xterm(終端機)或其他程式名稱。
- **(已拿掉)「按住或放開滑鼠」**:拖曳已經涵蓋。
- **「檢查螢幕權限」(computer_use_check_permissions)**:回報「螢幕錄製:已允許/還沒允許」「輔助使用(滑鼠和鍵盤):…」,不會跳出系統視窗。Bot 的電腦上一律可以。
### 逐個 App 授權(原版:「Grok Bot 可以看到 {app},並在其中點擊和輸入」)
- 看螢幕(截圖)問一次「看你的螢幕畫面」。
- 點擊、打字、捲動、拖曳時,AnyBot 先找出會落在哪個 App:點的位置底下的視窗,打字和按鍵則是最前面的 App。第一次碰到某個 App 會問:「讓 {Bot} 看到「{App}」,並在其中點擊和輸入:{動作}」。選「一律允許」就記成這個 Bot 對這個 App 的授權;設定頁可以移除。
- 直接操作模式下不問。
### 接管與停止(你的 Mac)
- Bot 在你的 Mac 上動滑鼠或鍵盤時,螢幕最上方中間會浮出一條橫幅(永遠在最上層,不會被其他視窗蓋住):紅點「{Bot} 正在操作你的電腦」,右邊「取得控制權」和「停止」。最後一個動作後 8 秒(估計值)自動收起。
- **取得控制權**:橫幅變成「你正在操作,Bot 已暫停」,按鈕變「交還給 Bot」。這段時間 Bot 的滑鼠鍵盤動作會被擋下,它會收到「使用者正在自己操作這台電腦(已取得控制權)。請等他交還控制權後再操作」。截圖仍可以。
- **停止**:直接停掉那個 Bot 這一回合的工作。
### 示範教學(原版:「錄下你執行任務的過程。{Bot} 會學習這些步驟,之後可以自行再次執行。」)
- 在設定 → 電腦 →「示範教學」,替目前選的 Bot 輸入任務名稱(例如「匯出本月報表」),按「開始錄製」。
- 設定視窗會關掉,螢幕上方出現「{Bot} 正在觀看並學習 分:秒」(紅點閃爍),右邊「完成」「取消」。
- 照平常的方式操作。AnyBot 只「聽」點擊、打字和捲動,不會擋住或改變你的操作;點在 AnyBot 自己視窗上的不算。
- 錄製時每 0.5 秒拍一張螢幕畫面(寬 1280,需要「螢幕與系統錄音」權限),完成後用 ffmpeg 合成影片(原版也是用 ffmpeg 錄影);沒有 ffmpeg 時保留每一步的畫面。每一步都留一張「做這一步之前」的畫面。
- 示範卡片上有「播放錄影」,展開步驟後每一步有「畫面」可以打開。
- Bot 有新工具「view_demo_step」(示範名稱+第幾步),可以看那一步當時的畫面,照著找按鈕;不用問你。
- 按「完成」後整理成步驟,例如:
1. 切到「Safari」,在「Safari」點 (50, 25)
2. 在「Safari」輸入「hi」(打錯刪掉的字會一起刪掉)
3. 按 return
4. 按 cmd+c
5. 切到「備忘錄」,在「備忘錄」連點 2 下 (150, 100)(0.4 秒內同一個位置算連點,估計值)
6. 在「備忘錄」往下捲動(1.5 秒內連續的捲動算一次,估計值)
- 座標換算成截圖上的位置,Bot 可以直接用。
- 聊天上方顯示「已記下「名稱」(N 個步驟)。之後跟 Bot 說「照示範做 名稱」就可以。」
- 每個 Bot 的示範列在卡片下面,可以展開看步驟或刪除;同名的會被新的取代。
- Bot 的系統指示會附上它學過的示範,並提醒它每一步先截圖確認、畫面不同就找對應的按鈕。
- 第一次需要 macOS「輸入監控」權限:沒開時 AnyBot 會打開那個設定頁,並說「macOS 還沒讓 AnyBot 觀看你的操作。我已經打開「系統設定 → 隱私權與安全性 → 輸入監控」:把 AnyBot(或「終端機」)打開,再按一次「開始錄製」。」
### 權限
- 截圖要「螢幕與系統錄音」權限。沒開時,AnyBot 會打開那個設定頁並說:「macOS 還沒讓 AnyBot 錄製螢幕,所以看不到畫面。我已經打開「系統設定 → 隱私權與安全性 → 螢幕與系統錄音」:把 AnyBot(或「終端機」)打開,再叫我試一次。只要開一次。」
- 滑鼠和鍵盤要「輔助使用」權限,沒開時的說法類似。
- 在 AnyBot 裡:
- 第一次看螢幕會問一次(「看你的螢幕畫面」)。
- 第一次動滑鼠或鍵盤也會問一次(「操作你的滑鼠和鍵盤」)。
- 兩者都可以一律允許;直接操作模式下不問。
### 座標
- 用截圖上的像素位置。截圖的大小只看螢幕大小(長邊 1,024),所以換算不用記「上一張截圖」:還沒截圖也能點,每個 Bot、手機看到的都是同一個尺寸。
- 例如寬 1,470 點的螢幕送出寬 1,024 的圖,圖上 (512, 333) 就是螢幕上的 (735, 478)。
- 或用截圖上的編號(ref):點那個控制項的中心。那個 App 不在最前面時先把它叫到前面,免得點到蓋在上面的視窗。
- 手機網頁看螢幕時:Bot 的電腦送原尺寸畫面,這台電腦送和 Bot 一樣大小的截圖;手機點的位置照它拿到的那張畫面換算,是「你」在操作(不經過 Bot 的工具,你取得控制權時也照樣能點)。以前手機的點擊借用 Bot 上一張截圖的比例,點 Bot 的電腦會偏到右下(多 1.25 倍)或要求先截圖。
- 你自己的滑鼠和鍵盤不會被凍住。
### 「看你的螢幕」(computer_use_screenshot)
- 只拍主螢幕,沒有快門聲。
- 長邊縮到 1,024,例如 2940×1912 會變成 1024×666;短邊不小於 8。
- JPEG 品質依序試 85、70、55,取第一個小於 1 MB(1,048,576 位元組)的。這些都取自原版。
- 只把最近 3 張截圖給模型看(估計值),較早的改成「(較早的截圖已省略)」。截圖不會存到硬碟。
- 成功:「你的螢幕截圖(寬×高)。之後的座標請用這張圖上的像素位置。」
### 「點一下」(computer_use_click)
- 參數:x、y、左/右/中鍵、點幾下(1–3)、修飾鍵。
- 先移過去,按下後停 0.03 秒再放開;連點時每下隔 0.08 秒(取自原版)。
- 結果:「已點 (x, y)。」或「已點 e7(按鈕「7」)。」,加上新畫面。
### 「打字」(computer_use_typing)
- 任何語言都可以,包括中文。可以給 ref(先點那個欄位);submit=true 打完再按 return。
- 每段最多 20 個字元單位,不會把一個字切斷。每段按下後停 0.035 秒再放開,段與段之間隔 0.02 秒(取自原版)。
- 結果:「已打字(N 個字)。」
### 「按鍵」(computer_use_press_key)
- 例如 return、tab、escape、delete、up、cmd+c、cmd+shift+t、cmd+space。
- 多個鍵用空白分開,依序按,例如「cmd+a delete」。
- 每個鍵按住 0.035 秒,鍵與鍵之間隔 0.02 秒(取自原版)。可以指定按多久,最多 5 秒。
- 可用的鍵:
- return/enter、tab、space、delete/backspace、escape、forwarddelete、home、end、pageup、pagedown、方向鍵、F1–F12。
- a–z、0–9 和常見符號,也可以寫名字:slash、comma、period、semicolon、quote、minus、equal、grave、bracketleft/bracketright、backslash。
- 不是按鍵的單一字元(「@」「?」)直接打出來。
- 修飾鍵:cmd、shift、option、control(也聽得懂 command、alt、ctrl 等寫法)。
- 錯誤:「不認得「X」這個鍵」「不認得「X」這個修飾鍵」。
### 其他操作
- **「捲動」(computer_use_scroll)**
- 往上、下、左、右,預設 3 格,最多 50 格。
- 結果:「已捲動 {方向} N 格。」
- **「移動滑鼠」(computer_use_mouse_move)**
- 例如讓滑過才出現的選單顯示出來。
- 結果:「已移動滑鼠。」
- **「拖曳」(computer_use_drag)**
- 沿著一串點拖過去,第一點按下、最後一點放開,每步隔 8 毫秒(估計值)。
- 至少要兩個點。
- 結果:「已拖曳(N 個點)。」
---
### Mac 內建 App(原版的裝置工具,名稱一樣)
| 工具 | 做什麼 | 權限 |
|---|---|---|
| ios_read_reminders | 看提醒事項(可指定清單、關鍵字、是否含已完成) | 每個 App 問一次「讀取你的「提醒事項」」 |
| ios_write_reminders | 新增、修改、完成、刪除提醒事項 | 問「修改你的「提醒事項」」,可一律允許 |
| mobile_read_calendar | 看某段時間的行程 | 讀取:問一次 |
| mobile_write_calendar | 新增、修改、刪除行程(沒給結束時間就排 1 小時) | 修改:可一律允許 |
| mobile_read_contacts | 用名字、電子郵件或電話找人,最多 50 筆(原版一次 50 筆) | 讀取:問一次 |
| mac_read_notes | 搜尋備忘錄,或讀一則(最多 20,000 字,原版的上限) | 讀取:問一次 |
| mac_write_notes | 新增(要有標題)或接在某則後面(要給 id 和目前的標題;標題變了會請 Bot 重讀) | 修改:可一律允許 |
| mac_read_mail | 搜尋郵件(關鍵字、信箱、只看未讀、最近幾天),或讀一封(最多 20,000 字) | 讀取:問一次 |
| mac_draft_mail | 在「郵件」打開草稿(新信要有收件人;也可以回覆某封),由你自己按寄出 | 修改:可一律允許 |
| mac_send_mail | 直接寄出 | **每一封都問**,沒有「一律允許」,直接操作模式也一樣 |
| mac_mail_accounts | 列出郵件帳號和地址 | 讀取:問一次 |
| mac_send_message | 用「訊息」傳 iMessage/簡訊 | **每一則都問** |
- 透過 macOS 的自動化執行,第一次用到每個 App 時 macOS 會自己問一次。被拒絕時 AnyBot 會打開「系統設定 → 隱私權與安全性 → 自動化」並說明要打開哪個 App。
- 每次最多等 30 秒(原版 30 秒)。
- 搜尋郵件時最多看最近 300 封(估計值,郵件 App 的腳本很慢)。
---
### 附加檔案和圖片
- 輸入框左下角「+」:打開 Finder 選檔案(可以一次選很多個)。也可以把檔案拖到視窗上(整個視窗會變淡,顯示「放開以附加檔案」),或在輸入框按 ⌘V 貼上剪貼簿裡的圖片(例如 ⌃⇧⌘4 截的圖)。
- 等著送出的附件排在輸入框上方:圖片顯示縮圖,其他檔案顯示檔名和大小,每個都有 × 可以拿掉。只有附件、沒有文字也可以送出。
- 每個附件會複製一份到 AnyBot 的資料夾,原檔搬走也不影響聊天。最大 50 MB(估計值)。資料夾不能直接附加。
- 送給模型時:
- 圖片:縮成跟截圖一樣(長邊 1024、最大 1 MB),跟你的文字一起送(OpenAI 相容和 Claude 兩種格式都支援)。HEIC、TIFF 等先用 macOS 轉檔。
- 文字檔、程式碼:直接讀內容;Word、RTF、Pages、HTML 用 macOS 的 textutil 轉成文字;PDF 在有 pdftotext 時讀內容。每個最多 20,000 字。
- 其他檔案:告訴 Bot 檔案在哪裡,讓它用工具處理。
- 「Bot 的電腦」正在執行時,附件也會放進那個 Bot 的資料夾 `附件/`,並告訴 Bot 位置。
- 聊天裡你的訊息上方顯示附件;點一下用預設的 App 打開。
- Bot 工作中送出附件時,文字內容會補充給正在進行的工作(圖片要等下一回合)。
### 語音輸入
- 輸入框的麥克風圖示:按一下開始錄音,變成紅色閃爍的「● 分:秒 完成」;再按一下停止,顯示「轉成文字…」,完成後文字放進輸入框(接在原本的文字後面),由你檢查後送出。
- 錄音用 macOS 內建的錄音功能,不用另外安裝。第一次 macOS 會問麥克風權限;被拒絕時 AnyBot 會打開「系統設定 → 隱私權與安全性 → 麥克風」。
- 轉文字用「設定 → AI 供應商 → OpenAI」的金鑰(依序試 gpt-4o-mini-transcribe、whisper-1)。沒有金鑰時會說明要去哪裡填。
- 最長 10 分鐘(估計值),到了自動停止。
### 語音聊天(朗讀回答)
- 輸入框的喇叭圖示:打開後,這個 Bot 每次回答完都會用 macOS 內建語音唸出來(中文用台灣的「美佳」)。標題、粗體、連結會整理成好唸的文字,程式碼只說「程式碼略過」。
- 正在唸的時候按喇叭會停止這一段;開始語音輸入時也會先停。再按一次(沒在唸時)就關閉朗讀。
- 搭配語音輸入,就能用說的跟 Bot 來回對話。每個 Bot 各自記住開或關。
### 通話模式(即時語音對話)
- 聊天頂部的「通話」:開始後不用按任何鍵。AnyBot 一直聽,你講完(安靜 1.2 秒,估計值)就停止錄音、轉成文字、送給 Bot;Bot 回答後用語音唸出來,唸完再繼續聽。30 秒沒人說話就繼續等下一句。
- 頂部紅色按鈕顯示目前在做什麼:「● 正在聽… / 聽懂中… / 想一下… / 正在說… 結束通話」,按一下結束。
- Bot 要你允許某個操作時,會等你按完再繼續。轉文字用 OpenAI 的金鑰;聲音偵測用 macOS 錄音器的音量(大於 −38 dB 算有說話,估計值)。
- 原版用 xAI 的即時語音服務;AnyBot 是「聽 → 回答 → 唸」的輪流方式,不能在 Bot 說話時插話(按結束或喇叭可以打斷)。
### 分享 Bot(匯出、匯入)
- Bot 選單(右鍵或「⋯」)→「匯出 Bot(分享給別人)…」:選位置存成 `.anybot` 檔。帶走外觀、供應商和模型、指示、例行任務、示範的步驟;**不會**帶走聊天記錄、API 金鑰、Token(例行任務的 token、apiKey、secret 會清空)、你的「一律允許」授權、示範的錄影和畫面。
- 「匯入 Bot…」:選 `.anybot` 檔,變成一個新的 Bot。事件觸發的例行任務會先暫停,因為需要新主人自己的 Token;匯入後會提醒。檔案來自較新版本時會請你先更新。
### 訊息管道(Slack、Discord、Telegram)
- 設定 → 「訊息管道」。原版有 Slack、Teams、Discord 和訊息管道;它靠自己的伺服器接收訊息。AnyBot 沒有對外的網址,所以用你自己的 Bot Token 定期去看新訊息:
- Slack:每 3 秒看一次指定頻道(估計值),回覆在原訊息的討論串。提到 Bot 的「@Bot」會被拿掉。
- Discord:每 3 秒看一次指定頻道,回覆時引用原訊息;超過 2,000 字自動分段。
- Telegram:長輪詢(等 25 秒),可以只回某個聊天 ID,留空就回所有私訊;超過 4,096 字自動分段。
- 其他 Bot 的訊息和自己的訊息都不回;第一次連上時從「現在」開始,不會回覆舊訊息。
- 收到訊息時,指定的 Bot 會收到「💬 Slack「客服群」的 小明:…」並開始工作,就像你傳訊息給它;它在工作中時會插進同一回合。回合成功結束後,它最後的回答會自動傳回去;出錯時傳「抱歉,這次沒有完成,請再試一次。」;你按停止就不回。
- Bot 的系統指示會告訴它:對方不是使用者本人,要簡潔、不要透露你的私人資料,要動到你的電腦或帳號前先確認。
- 每個管道一張卡片:種類、名稱、狀態點(綠色「已連上,等待新訊息(收到 N 則)」,紅色顯示錯誤)、「開啟」勾選、「移除」,以及由哪個 Bot 回覆。
- 新增:選 Telegram/Slack/Discord,填名稱、回覆的 Bot、Token(每種都有怎麼拿 Token 的說明)、頻道或聊天 ID;「測試 Token」會顯示連上的帳號名稱。
- AnyBot 開著時才會收訊息。
- **Mac「訊息」(iMessage/簡訊)**:讀這台 Mac 的訊息資料庫看新訊息(要給 AnyBot「完全取用磁碟」權限),用「訊息」回覆;可以只回某個電話或 Apple ID。
- **郵件**:每 30 秒看「郵件」的未讀信(可以指定信箱),讀完整封後交給 Bot,回信主旨自動加「Re:」,寄回寄件人。
- **Microsoft Teams**:用你自己的 Microsoft 帳號登入,不需要公開網址。填 Entra 應用程式(用戶端)ID 和租用戶(留空 = 公司或學校帳號),按「登入 Microsoft」:AnyBot 打開微軟的登入頁並顯示代碼,你輸入代碼、登入後就完成(裝置碼登入)。之後每 5 秒看一次聊天(`chat:<聊天 ID>`)或頻道(`<團隊 ID>/<頻道 ID>`),在聊天裡回覆、在頻道裡回在討論串。Bot 以你的身分回覆;微軟換發的新登入權杖會自動保存。
---
### 連接器(MCP)
- 設定 →「連接器」。接上 Model Context Protocol 伺服器,Bot 就能用它的工具(原版的 MCP 用戶端)。
- 本機伺服器填指令(例如 `npx -y @modelcontextprotocol/server-filesystem ~/Documents`)加環境變數;遠端伺服器填網址(Streamable HTTP,JSON 或 SSE 回應都可以)加標頭。
- 每個連接器一張卡:狀態點(「已連上,N 個工具」/錯誤原因)、開啟、移除、「給 Bot 的使用說明」(原版的 MCP 自訂說明,會放進 Bot 的系統指示)。下面列出所有可以用的工具。
- 工具名稱給模型看時是 `mcp__<連接器>__<工具>`(最多 64 字;中文名稱的連接器用一段固定代碼)。
- 權限:每個連接器第一次被用時問「使用連接器「X」的工具:…」,可以一律允許;直接操作模式下不問。
- 工具回傳的文字、圖片都會交給 Bot;一次最多等 120 秒(估計值)。
### 記憶、技能、範本
- **記憶**:跟 Bot 說「記住我喜歡靠窗的座位」,它會用 remember 記下來;「忘記…」用 forget。每個 Bot 最多 200 條、每條 500 字(估計值),每次聊天都帶著。Bot 設定裡的「記得的事」可以一條條刪。
- **技能**:教 Bot 一套做法後請它「存成技能」(save_skill),所有 Bot 共用;系統指示只列名稱和一句說明,Bot 要用時先用 use_skill 讀完整做法。設定 →「連接器」頁的「技能」卡可以刪除。
- **範本**:側邊欄「+」按右鍵 →「從範本建立」:研究助理、寫作夥伴、電腦助手、客服助理、開發助手,各有角色說明、指示、頭像和顏色。Bot 也能用 create_bot 的 template 參數建立。
### 保險庫(照原版重做,2026-11-04)
- 設定 → 保險庫:「新項目」選單(登入資訊/卡/聯絡資訊/匯入)、分頁(全部/登入資訊/卡片/聯絡資訊,含數量)、搜尋保險庫、每種的空白提示和底部說明。
- **登入資訊**:網站(最多 10 個,子網域也會填)、使用者名稱、密碼、提示。檢視時密碼一律顯示成 ••••,沒有顯示或複製鈕;編輯時密碼留空就不變。
- **卡片**:卡號(檢查碼與卡別)、有效期限、安全碼、持卡人、暱稱、帳單地址(可用聯絡資訊的地址)、提示。存好後卡號鎖定,安全碼不能再看。
- **聯絡資訊**:姓名、地址、多個電話和電子郵件(可設為主要)、標籤、提示。
- **CSV 匯入**:自動辨識 1Password、Chrome/Edge、Safari、Firefox、Bitwarden、LastPass(含卡片),預覽、略過重複、只收 https、進度條可停止、匯入摘要。
- **存放**:這台電腦上的加密檔 vault.bin(AES-256-GCM),金鑰放在系統鑰匙圈(「AnyBot vault key」)。畫面和 Bot 只拿得到不含密碼、卡號、安全碼的資料。以前存在鑰匙圈的 AnyBot 登入會自動搬進來。
- **Bot 的工具**:`vault_list`(只有可看的欄位)、`browser_fill_login`、`browser_fill_card`、`browser_fill_contact`。每次填入都先問;登入用在沒存過的網站會警告「只有在它與已儲存的網站屬於同一服務時才允許。仿冒網站可能會竊取你的密碼。」且不能一律允許;卡片每次都問。付款服務框架(iframe)裡的卡號欄填不進去,會請使用者自己填。
- 還沒做:1Password 服務帳戶連線(原版的「Shared with Grok Bot」保管庫)、安全表單、刷卡相機。
### 檔案預覽、Bot 做的頁面
- Bot 用 `open_for_person` 把它做好的網頁、圖表、報告、圖片、文件在你的螢幕上打開(網址也可以)。在 Bot 的電腦上做的檔案會先複製到這台 Mac。
### 頁面(Bot 做、Bot 持續更新的報告)
- 你請 Bot 追蹤、整理、比較一件之後還會回來看的事(例如「幫我追蹤一下台灣 FSD 狀況」),它用 `write_page` 做成一頁:先寫現況,再寫細節和來源(附日期)。回答裡用「[標題](page:ID)」連到它,回答下面出現頁面卡片(標題、開頭幾行、頁面圖示、「頁面 · 更新時間」、最近一次更新了什麼),點一下打開。
- 頁面可以放表格、Mermaid 圖表(圓餅、長條、折線、時間軸…),以及頁面專用的區塊:```stats 數字卡片、```steps 進度(✓ 完成、◉ 進行中、○ 還沒到)、`> [!NOTE]`/`[!TIP]`/`[!WARNING]`/`[!IMPORTANT]` 提示框。這些區塊在聊天裡也能用。
- 要定期追蹤時,Bot 會同時設例行任務:每次先 `read_page`、查新消息,有實質進展才更新頁面並告訴你;沒有就說「沒有新消息」,頁面不動。
- 每次更新保留上一版(最多 10 版),打開頁面後下方「版本紀錄」可以看舊版。也可以複製成 Markdown、存成檔案(到「下載」)、刪除。
- 右側面板「資料庫」最上面列出這個 Bot 的頁面。手機也能看:聊天裡的卡片、頁面連結、完整頁面(圖表由 AnyBot 畫好傳過去)。
- 頁面存在大腦上,螢幕電腦和手機看到的是同一份。
### 生活卡片
- Bot 用 `show_card` 把機票、餐廳或地點、天氣、商品、活動整理成卡片顯示在聊天裡:圖示、標題、副標、最多 12 列「項目/內容」,以及「查看來源 ↗」。
### 聊天:群組、表情回應、引用、討論串、匯出、會議
- **群組聊天**:「+」按右鍵 →「群組聊天(好幾個 Bot 一起回答)」。在 Bot 設定的「群組成員」勾選成員(至少一個)。你傳一則訊息後,成員依序回答,每個用自己的模型、指示、記憶和電腦;每則回答顯示那個 Bot 的頭像。後面的成員看得到前面的回答(標成【名字】,但看不到別人的工具步驟和結果),被要求補充不同觀點、不要重複。某個成員出錯或被停止,這一輪就停下來。輸入框左下角顯示「成員:…」取代模型選單。
- **表情回應**:滑鼠移到 Bot 的回答上,可以按 👍 ❤️ 😂 🎉 🙏;回應顯示在回答下面,按一下可以拿掉;Bot 下一回合會知道你的回應。
- **引用**:回答下的「引用」:輸入框上方出現「引用:…」(左邊一條強調色),送出時引用的內容會變成 Markdown 引言放在你的訊息前面。
- **討論串**:Bot 選單 →「開始新對話」:目前的對話收起來(用第一則訊息當標題,最多保留 50 個),聊天重新開始;「過去的對話」可以切回任何一個(目前的會先收起來)。
- **匯出文字記錄**:Bot 選單 →「匯出文字記錄…」存成 Markdown(你的訊息、附件名稱、Bot 的回答、工具步驟、摘要)。
- **錄會議**:Bot 選單 →「錄會議…」:用麥克風錄音(最長 2 小時,估計值),頂部顯示紅色「● 正在錄會議 · 結束」。結束後轉成文字記錄,當作附件放進輸入框,並幫你打好「這是剛才會議的文字記錄,請整理:重點、做了哪些決定、待辦事項(誰、做什麼、什麼時候)。」,由你按送出。
## 25. 例行任務
### 每個例行任務記錄的內容
- 編號、標題
- 每次要做什麼
- 排程
- 是否暫停
- 建立時間、上次執行、下次執行
- 用哪台電腦
### 排程可以怎麼設
- 每天/每週/每月/每年,每 N 個單位(預設 1)。
- 每週要選星期幾。
- 每月可以選幾號,或「第 N 個星期幾」(1–4,或最後一個)。
- 每年選月份和日期。
- 時間用 24 小時制(例如 09:00,也接受 7:30)。
- 可以設時區;沒設就用你在設定裡選的時區。
### 自動修正與檢查
- 每 0 個單位會改成 1。
- 每月沒有指定日期:設成 1 日。
- 每年沒有指定月份:設成 1 月。
- 每週沒有指定星期幾:「每週的例行任務要指定星期幾…」
- 時間看不懂:「時間「X」看不懂,請用 24 小時制的 HH:MM,例如 09:00」
- 日期超出範圍:「每月的日期要在 1 到 31 之間」
### 畫面上的描述(照原版文字)
| 情況 | 文字 |
|---|---|
| 每天 | 「每天」 |
| 每 N 天 | 「每N 天」 |
| 每週一到週五 | 「每個工作日」 |
| 每週指定幾天 | 「每週的週一、週三」,每 N 週則為「每N 週的…」 |
| 每月幾號 | 「每月D日」,每 N 個月則為「每N 個月的D日」 |
| 每月第幾個星期幾 | 「每月的第N個星期X」或「每月的最後一個星期X」 |
| 每年 | 「每年M月D日」 |
- 描述後面接時間,例如「每個工作日 09:00」。
- 時區跟這台電腦不同時,結尾加「(時區)」。
### 下次什麼時候跑
- 一定是現在之後的時間。
- 「每 N」從建立那天開始算。
- 遇到月底:
- 31 日在只有 30 天的月份,改在最後一天跑。
- 2 月 29 日只在閏年跑。
- 依例行任務自己的時區計算,最多往後找 5 年。
- 夏令時間:
- 時間重複時,用比較早的那一次。
- 時間不存在時,那天跳過。
- 下次時間顯示成「今天 09:00」「明天 09:00」或「11月5日 09:00」。
### 怎麼觸發
- 每 1 秒檢查一次。
- Bot 忙的時候,等它閒下來再跑;每個 Bot 一次只觸發一個。
- Bot 收到的訊息是「⏰ 例行任務「標題」時間到了:要做的事」,然後像平常一樣工作。
- 如果那個 Bot 不在目前畫面上,會標成未讀。
### 例行任務視窗(頂部「例行任務」按鈕)
- 標題「(Bot) 的例行任務」,寬 480 px。
- 沒有任務時顯示:
- 「例行任務是這個 Bot 依排程重複執行的任務。請在聊天中請它設定一個。」
- 「例如:「每個工作日早上 9 點整理新聞給我」」
- 每張卡片:
- 標題(暫停中的加「已暫停」)。
- 排程,接著是「·下次 (時間)」。
- 要做的事。
- 按鈕:
- 「暫停」/「繼續」:繼續時會重新算下次時間。
- 「立即執行」:會切到這個 Bot 並開始做。
- 「刪除」:紅字。
- 刪除確認視窗:
- 標題「刪除例行任務?」
- 內文「這會刪除例行任務並停止其後續執行。此操作無法復原。」
- 視窗最下面:「要新增或修改,直接在聊天裡告訴 Bot。」
---
### 更多排程寫法(原版有的)
- 「每 N 分鐘」(最少 5 分鐘,估計值,從建立時間開始算)、「每小時」「每 N 小時的 MM 分」。
- 「僅一次」:下一次符合的時間執行一次就停。
- 「左右」(彈性時間):在指定時間前後 15 分鐘內(估計值)的某個固定時刻執行,畫面上寫「09:00左右」。
- 都是在聊天裡請 Bot 設定(create_routine 的 frequency 可以是 minutely、hourly,加上 once、flexible)。
### 事件觸發的例行任務(原版的觸發種類)
在聊天裡跟 Bot 說,例如「PR 合併時幫我寫更新紀錄」「CI 失敗就通知我並查原因」「Slack #部署 有人提到『回滾』時處理」「週會開始前 10 分鐘把議程整理好」。Bot 會用 create_routine 的 trigger 設定:
| 種類 | 怎麼知道發生了 | 可以設定 |
|---|---|---|
| GitHub | 用你的 Token 每 60 秒查存放庫事件和 CI 結果(GitHub 要求的最短間隔) | 存放庫;事件:PR 建立/更新/合併/關閉/留言、CI 通過/失敗、審查核准/要求修改/留言、討論串解決/重新開啟、議題被指派/建立、推送;限定使用者、分支、PR |
| Slack | 每 10 秒看頻道(估計值) | 任何訊息、被 @、提到某個字、有人加上某個表情回應;Token 留空時用「訊息管道」的 Slack Token |
| Linear | 每 60 秒查議題(估計值) | 議題建立、狀態變更;限定團隊 |
| Sentry | 每 60 秒查議題 | 建立、指派、解決、封存、變回未解決、有變更;限定專案 |
| PagerDuty | 每 60 秒查事故 | 觸發、確認、解決、有變更;限定服務 |
| 郵件 | 每 60 秒看「郵件」收件匣 | 寄件人包含、主旨包含 |
| Webhook | AnyBot 在這台 Mac 開一個網址 `POST http://127.0.0.1:8792/hooks/<編號>`,要帶 `Authorization: Bearer <密鑰>`(原版的驗證方式) | 每次呼叫跑一次,呼叫的內容會交給 Bot;密鑰錯誤回 401 |
| 行事曆(跟著行事曆) | 每 30 秒看「行事曆」 | 活動開始時或開始前 N 分鐘;限定行事曆、標題;活動被移到別的時間,會在新時間觸發(原版:「無論行事曆將其移到何時」) |
| 群組 | 裡面任何一個觸發就跑 | 至少兩個觸發條件(原版規則) |
- 觸發時 Bot 會收到「⚡ 例行任務「名稱」被觸發:(發生了什麼)要做的事:…」,像你傳訊息給它一樣開始工作。
- 第一次連上時只記住目前狀態,不會把以前的事件當成新的。AnyBot 開著時才會檢查。
- 「例行任務」視窗顯示「⚡ 觸發條件」和連線狀態(例如「已連上 GitHub,等待事件」或錯誤原因)。暫停的不會檢查。
## 26. Bot 可以直接操作 App 的功能
你可以跟 Bot 說「每天早上 9 點幫我…」「把你換成 Claude」「切成深色模式」,它會自己操作 App。
| 功能 | 做什麼 | 先問嗎 | 完成時說 |
|---|---|---|---|
| 「查看例行任務」 | 列出這個 Bot 的例行任務 | 不用 | 每行「#編號 「標題」:排程 · 下次…/已暫停/沒有下次」;沒有時「還沒有例行任務。」 |
| 「建立例行任務」 | 照標題、內容、排程、電腦建立 | 不用 | 「已建立例行任務 #…」 |
| 「修改例行任務」 | 改標題、內容、排程,或暫停、恢復 | 不用 | 「已更新 #…」 |
| 「刪除例行任務」 | 刪除 | **要先問** | 問:「刪除例行任務:「標題」。這會停止它之後的執行,無法復原。」 |
| 「立即執行例行任務」 | 馬上跑一次 | 不用 | 「已開始執行「標題」」 |
| 「查看 Bot」 | 列出所有 Bot | 不用 | 「「名稱」(主要 Bot)· 供應商 · 模型:描述」 |
| 「建立 Bot」 | 建新的 Bot | 不用 | 「已建立 Bot「名稱」(供應商 · 模型)」 |
| 「修改 Bot」 | 改名稱、描述、指示、供應商、模型、釘選、預設電腦 | 不用 | 「已更新「名稱」的…(現在:供應商 · 模型)」 |
| 「傳訊息給其他 Bot」 | 把工作交給另一個 Bot 並叫醒它 | 不用 | 「已交給「名稱」,它的回覆會出現在它自己的聊天裡。」對方收到「📨 來自「發送者」:內容」 |
| 「查看電腦」 | 列出能用的電腦和狀態 | 不用 | 例如「你的電腦:這台 Mac,已允許」 |
| 「修改設定」 | 改主題、強調色、時區 | 不用 | 「已更新:主題 → …」 |
- **「在這台電腦上執行」只有你能打開,Bot 不能自己打開。**
- **修改 Bot 怎麼找對象**:先找名稱完全一樣的(不分大小寫),找不到再找名稱裡有那幾個字的。只換供應商時,模型會自動改成那家的建議模型。
- **可能看到的錯誤**:
- 「找不到叫「X」的 Bot」
- 「沒有「X」這個供應商」
- 「不能傳訊息給自己」
- 「「X」不是有效的時區名稱(例如 Asia/Taipei)」
- 「沒有要改的項目」
---
## 27. 通知
- **什麼時候通知**:AnyBot 視窗不在最前面,或你 90 秒沒碰鍵盤滑鼠。每 10 秒檢查一次你在不在。
- **Bot 做完時**:標題「(Bot) 完成了」,內文是回覆的第一行(最多 80 字),有 Glass 提示音。
- **Bot 等你允許時**:標題「(Bot) 需要你允許」,Dock 圖示也會跳動。
- 通知內文最多 180 字。
- 可以在「設定 → 一般 → 通知」關掉。
- 通知只在 macOS 上有。
---
## 28. 版本、更新與重新啟動
- **版本就是程式建好的時間**,顯示在側邊欄最下面和「設定 → 一般 → 版本」。
- **偵測新版**:每 10 秒檢查一次程式有沒有換新。有新版時,側邊欄出現「⬆ 重新啟動以更新」。
- **你離開時自動更新**,要同時符合:
- 「在你離開時自動更新用戶端」有開(預設開)。
- 有新版。
- 螢幕鎖定或螢幕保護程式開著。
- 10 分鐘(600 秒)沒動作。
- 沒有 Bot 在工作,也沒有在等你允許的請求。
- **檢查時間**:啟動後 30 秒檢查第一次,之後每 1 小時再加 0–300 秒的隨機延遲。這些數字取自原版。
- **重新啟動**:
1. 先停掉所有工作和背景指令,再存檔。
2. 小幫手每 0.2 秒看一次舊的 App 關了沒,關了才打開新的,不會同時開兩個。
3. 新開的 App 一律用一般模式啟動。
- **中斷修復**:App 關閉時還在回覆的 Bot,下次打開時會改成「(這次的回應被中斷了…)」,還在執行或等待的步驟改成「–」,讓你可以重試,不會看起來一直卡住。
---
## 29. 管理員鎖定
- 公司管理員可以鎖兩個開關:
- 「直接操作」(AllowDirectMode)
- 「在這台電腦上執行」(AllowLocalExecution)
- **設定位置**:
- macOS:系統偏好設定網域 com.anybot.AnyBot,也可以用 MDM 強制。例如 `defaults write com.anybot.AnyBot AllowDirectMode false`。
- 其他系統:家目錄的 .anybot/policy.json。
- **值怎麼解讀**:
- 沒設:你可以自由開關。
- true、1、yes:允許。
- false、0、no:鎖成關閉。
- 其他看不懂的值:也鎖成關閉。
- **被鎖住時**:
- 設定裡顯示「🔒 由你的管理員設定,無法變更」。
- Bot 要用你的電腦時直接被拒,不會問你。
- 每次打開設定都會重新讀取。
---
## 30. 存下來的資料
- **存放位置**:這台電腦的應用程式資料資料夾裡的「AnyBot」資料夾,聊天和金鑰都不會上傳。
- **怎麼寫入**:先寫暫存檔再換名,避免寫到一半壞掉。
- **打不開時**:檔案壞掉或一個 Bot 都沒有時,改用第一次啟動的預設資料。
- **整體設定**(括號內是預設值):
- 主要 Bot(1 號)、選中的 Bot
- 主題(淺色)、強調色(黑色)
- 每家供應商的金鑰、網址、預設模型和抓過的模型清單
- 側邊欄收合與寬度
- 在這台電腦上執行(關)
- SSH 電腦
- 自動審核(關)和兩組規則
- 時區(這台電腦的時區,讀不到就用 Asia/Taipei)
- 通知(開)
- 直接操作(關)
- 自動更新(開)
- **每個 Bot 記錄**:
- 名稱、描述、指示
- 形狀、顏色
- 供應商、模型、釘選
- 訊息、未讀
- 電腦工具開關(預設關)、工作資料夾、一律允許清單
- 可讀長度(預設 128,000)
- 例行任務
- 上一回合的結果
- 預設電腦(預設「Bot 的電腦」)
- **每則訊息記錄**:
- 誰說的、文字、思考內容
- 哪個模型寫的、是不是錯誤
- 工具步驟
- 是不是摘要、喚醒或插話
- 截圖不存。
- **AnyBot 自己的瀏覽器**:登入資料存在同一個資料夾的 browser 和 browser-profiles 裡,使用中的設定檔記在 browser-profile.txt。
---
## 31. 第一次啟動
第一次打開時沒有任何 Bot,主畫面是「歡迎使用 AnyBot」引導:
1. **連上 AI 模型**:還沒有任何金鑰時,按「設定模型」打開模型設定;有了就打勾,寫出可以用哪一家。
2. **建立你的第一個 Bot**:打開建立 Bot 視窗,預設用剛設好金鑰的那一家。第一個建立的 Bot 就是主要 Bot。
3. **在別台電腦用過 AnyBot?**:「登入帳號」打開帳號設定。
刪掉最後一個 Bot 也會回到這個引導。伺服器(anybot --serve)裝好也是零個 Bot。舊版開過、但五個範例 Bot 從沒用過(沒聊天、沒改名、沒有例行任務和記憶)的資料,更新後會清掉範例,跟新裝一樣。手機頁沒有 Bot 時,請你到電腦上建立。
**登入後自動同步**(設定 → 帳號,按「登入」之後,不用再按別的):
- 帳號裡有另一台開著、自己思考的 AnyBot(不是手腳、不是在看別台的):改用它當大腦,那邊的 Bot 和聊天出現在這台;連上後自動把這台原本的 Bot(連同聊天)、模型金鑰、技能和連接器搬過去,大腦已經有的會略過。
- 沒有:拿帳號裡最新的備份,把這台還沒有的 Bot 加進來(同名而且聊天相同的算已經有),再把合起來的整份備份回帳號。
截圖和測試用的五個範例 Bot(State::samples):Bot、研究助理、寫作夥伴、電腦助手、本機模型。
---
## 32. 外觀:頭像、顏色、主題、字型
### 頭像
- 12 種形狀:圓角方、圓球、膠囊、蛋、六角、寶石、雲、拱門、星星、愛心、盾牌、石頭。
- 每個頭像都有兩隻斜斜的橢圓眼睛:深色身體配白眼,很淺的身體配黑眼。
### Bot 顏色(10 種)
| 名稱 | 色碼 |
|---|---|
| 黑色 | #1C1C1C |
| 紅 | #C82532 |
| 橘 | #D2550A |
| 黃 | #C2730B |
| 綠 | #0D9655 |
| 青 | #0D9381 |
| 藍 | #126FD4 |
| 紫 | #7442D1 |
| 洋紅 | #C82779 |
| 棕 | #86592E |
### 主題配色
淺色和深色都取自原版:淺色來自原版的樣式表,深色來自原版畫面程式裡的深色色票(每種半透明顏色是「文字色 × 原版指定的透明度」)。
| 用途 | 淺色 | 深色 |
|---|---|---|
| 主畫面 | #FFFFFF | #1F1F1F |
| 頂列 | #FCFCFC | #121212 |
| 側邊欄 | #F5F5F5 | #0E0E0E |
| 浮起面板 | #FFFFFF | #161616 |
| 文字 | #1C1C1C | #F5F5F5 |
| 次要文字 | #1C1C1C 約 68% | #F5F5F5 約 66% |
| 第三層文字 | #1C1C1C 約 56% | #F5F5F5 約 54% |
| 你的對話泡泡 | #1C1C1C(白字) | #F5F5F5 約 18%(淺色字,半透明) |
| Bot 對話泡泡 | #1C1C1C 約 6% | #F5F5F5 約 4% |
| 滑過/選中 | 6%/8% | 6%/8% |
| 邊框 | #1C1C1C 約 12% | #F5F5F5 約 10% |
| 焦點框 | #1E86FC | #1884FC |
| 強調色 | #1680F3 | #1884FC |
| 危險/錯誤 | #CD2834 | #FC2C3E |
| 陰影 | 有 | 深色主題沒有陰影(原版設定為 0) |
### 字型與字級(取自原版樣式)
- 原版的字級:11、12、13、14、15、17、22、26 px,對應行高 16、16、18、20、22、24、28、32 px。
- AnyBot 的用法:
- 一般文字和按鈕:14
- 小字:12
- 標題和視窗標題:17
- 程式碼:13,行高 18
- 聊天內文:15,行高 22
- 中文和英文都用**蘋方-繁**,同一套字型,所以基準線和大小對得齊。找不到時依序改用冬青黑體、華文黑體等。
- 程式碼用 **SF Mono**,沒有就用 Menlo,跟原版一樣。
- 「·」分隔號前後不加空格,因為這套字型的「·」本身已經有間距。
### 其他
- 圓角:一般視窗 14 px、選單 10 px、按鈕 8 px。
- 選取文字的底色是焦點色。連結用強調色。
---
## 33. Bot 收到的系統指示(摘要)
每次回覆前,Bot 都會先收到這些說明:
- **身分**:「你是「名稱」。」,加上它的角色描述。主要 Bot 另外知道自己是你的主要窗口,可以把工作交給其他 Bot。
- **現在的日期、時間、星期和時區。**
- **可以直接操作 App**:
- 建立、修改、暫停、刪除例行任務(時間照你的時區)。
- 換模型或供應商、建立 Bot。
- 改主題、強調色、時區。
- 把工作交給其他 Bot。
- 做完要用一句話說結果。
- **上網和瀏覽器**:
- 公開網頁直接讀。
- 要登入的網站(Threads、Instagram、Facebook、Gmail、銀行…)用 AnyBot 瀏覽器打開再讀;遇到登入頁就請你登入一次。
- 絕對不要叫你去改瀏覽器的設定或選單,也不要說可以從 Chrome 複製登入。
- 你要換 profile/設定檔/另一個帳號時,用設定檔工具;想用你平常的 Chrome,就用「你的瀏覽器」。
- **操作你的 Mac 畫面**:截圖看畫面,再點、打字、按鍵、捲動、拖曳,每一步都再截圖確認。用在檔案和網頁工具做不到的事,例如操作其他 App、在 Chrome 切換設定檔。
- **不要說「我沒有瀏覽器或工具」**,要先試。需要權限時 App 會自己跳出來問你。
- **目前的例行任務清單。**
- **能用的電腦**:Bot 的電腦、你的電腦、SSH 電腦,以及預設是哪一台。
- **工作規則**:
- 你說在哪台電腦做就換過去。
- 先看清楚再動手。
- 需要權限時直接用工具,不要叫你自己去改設定。
- 被拒絕就換個方式或問你。
- 跑很久的指令要在背景追蹤,不要重跑。
- 有工具結果證明做完了才能說做完;失敗要照實說。
- **最後是這個 Bot 自己的「指示」。**
---
## 34. 鍵盤快速鍵
| 按鍵 | 作用 |
|---|---|
| ⌘N | 建立 Bot |
| ⌘, | 打開設定 |
| Enter | 送出(Bot 工作中時是補充給它) |
| Shift+Enter | 換行 |
用輸入法選字時按 Enter,不會誤送出。
---
## 35. 示範/截圖模式
給檢查用的模式,平常不會用到。
- 啟動時加上截圖選項:畫面跑 120 格後存成圖片,然後自動關閉。
- 這個模式下:
- 用示範資料,不會存檔。
- 不發通知、不跑例行任務、不檢查更新,也不讀管理員鎖定。
- 示範內容:
- 台南兩天一夜行程的對話(先用 Grok,再換 Claude)。
- 研究助理的「AI 新聞早報」例行任務(每個工作日 09:00)。
- 電腦助手正在等你允許整理照片的指令「mkdir -p 2026-04 2026-05 2026-06 && mv IMG_04*.jpg 2026-04/」,並排入一則補充「2026-06 的照片先不要動」。
- 可以指定要拍的畫面:聊天、設定(AI 供應商)、Bot 設定、選單、收合的側邊欄、例行任務、設定(電腦)、設定(自動審核)。也可以把彈出視窗藏起來,單獨檢查每個畫面。
---
## 36. 手機、帳號、雲端主機
原版是「大腦在雲端,手機和電腦是裝置」。AnyBot 的做法如下:
- Bot 的大腦留在 AnyBot 裡,可以放在 Mac 上、一直開著的 Mac mini,或雲端主機。
- 另外有一個很小的「帳號伺服器」(薄後端),負責帳號、轉送、裝置清單、加密備份和推播。
- 架設方式見 `relay/README.md`。
### 手機網頁版
- 打開方式:
- 用帳號伺服器時,打開帳號伺服器的網址,用帳號登入;
- 在同一個網路或 Tailscale 時,打開 `http://這台電腦:8793`,用手機密碼登入。
- 可以「加入主畫面」,像 App 一樣全螢幕打開。顏色跟系統的淺色、深色走。
- Bot 清單:
- 每個 Bot 的頭像顏色、最後一句話;
- 工作中顯示狀態;
- 等你允許時顯示橘色的「等你決定」;
- 有新訊息時顯示藍點。
- 聊天:
- Bot 的回覆用 Markdown 顯示,包含程式碼、清單、連結;
- 工具步驟每步一行,有狀態符號;
- 生活卡片;
- 群組裡每則回覆標出是誰說的。
- 允許請求:卡片固定在輸入框上方,有「允許一次」「一律允許」「拒絕」三個按鈕,跟電腦版同一套規則。
- 輸入:
- Bot 工作中再傳訊息算插話;
- 輸入框空白時,送出鍵會變成停止鍵;
- 可以附加照片或檔案,最大 30 MB;
- 右上角「+」開始新對話。
- 看電腦畫面:
- 「Bot 的電腦」每秒更新一次畫面;在休眠時按「叫醒」。
- 「這台 Mac」要先在設定裡打開才會出現。
- 操作方式:點一下是左鍵;長按是右鍵;點兩下是雙擊;「右鍵:開」之後每次點都是右鍵。
- 「⌨︎ 打字」可以打中文,會打進目前的視窗;還有 Enter、Esc、Tab、⌫ 和捲動按鈕。
- 選單(右上角「⋯」):
- 開啟通知(只有用帳號登入時才有;iPhone 要先加入主畫面);
- 切換到別台 AnyBot;
- 登出這支手機。
- 畫面更新:手機問「有沒有新東西」會等最多 20 秒,有變化就立刻回來,所以不用一直刷新。
### 設定 › 手機與帳號
- **AnyBot 帳號**:
- 填帳號伺服器網址、帳號、密碼,可以順便建立新帳號(有邀請碼時要填)。
- 登入後,這台電腦會拿到自己的金鑰,之後保持連線。顯示「已連線」或錯誤原因。
- 電腦不會保存你的密碼,只保存由密碼算出的備份金鑰。
- 可以設定這台電腦在手機上顯示的名字。
- **備份**:
- 「每天自動備份到帳號」(預設開),也可以按「立刻備份」。
- 備份在這台電腦加密後才上傳,伺服器打不開。
- 「從帳號備份還原」:把這台電腦的 Bot 換成帳號裡最新的備份,這台電腦自己的手機和帳號設定不會被蓋掉。
- **同一個網路直接連**:
- 先設定手機密碼(至少 8 個字),再打開「讓手機直接連這台電腦」。
- 會列出所有可以用的網址,包含 Tailscale 的。
- 換密碼會登出所有手機。密碼錯 5 次要等 1 分鐘。
- **手機可以做什麼**(下面兩項預設關閉):
- 從手機看這台電腦的螢幕並操作;
- 裝置連結:讓帳號裡其他的 AnyBot 操作這台電腦。
- **直接連線的裝置**:列出手機和最近使用時間,可以個別登出。
- **帳號裡的電腦**:列出每台 AnyBot 在線或離線。
### 不開視窗執行(`anybot --serve`)
- Bot、例行任務、事件觸發、訊息管道和手機網頁照常運作,你用手機操作。
- 可以跑在 Mac 或 Linux。Linux 版已在 Docker 裡編譯並測試過。
- 環境變數:
- `ANYBOT_PHONE_PASSWORD`:設定手機密碼並打開直接連線;
- `ANYBOT_ACCOUNT=網址|帳號` 加上 `ANYBOT_ACCOUNT_PASSWORD`:加入帳號,失敗時每 30 秒重試;
- `ANYBOT_HOST_NAME`:在手機上顯示的名字;
- `ANYBOT_RESTORE_FROM_ACCOUNT=1`:第一次啟動時從帳號備份接手;
- `ANYBOT_DATA_DIR`:資料放哪裡;
- `XAI_API_KEY`、`ANTHROPIC_API_KEY` 等:AI 金鑰。
- 在伺服器上,Bot 的系統指示會說明「你的電腦」指的是伺服器本身。要用你的 Mac,就選帳號裡那台電腦的名字。
- 沒有視窗,所以需要你允許的事會推播到手機。
- 部署檔:
- 雲端:`deploy/server/`(帳號伺服器、Caddy、AnyBot 三合一);
- Mac mini:`deploy/mac/com.anybot.serve.plist`。
### 裝置連結(一台 AnyBot 操作另一台)
- 同一個帳號的另一台 AnyBot 打開「裝置連結」後,會出現在這台 Bot 的電腦清單裡,名字就是那台電腦的名字。
- 可以用的工具:檔案、指令、背景指令、九個螢幕工具,以及 Mac App 工具。
- 權限:
- 看螢幕和操作螢幕,第一次用時各問一次(可以一律允許);
- 指令和改檔案的規則跟 SSH 電腦一樣。
- 詢問會出現在發出動作的那台 AnyBot,也就是手機或那台電腦的視窗。原版是在被操作的那台裝置上詢問。
- 經過帳號伺服器,最多等 35 秒(原版的裝置工具等 30 秒)。
### 團隊(分享給其他帳號)
- 在「設定 › 手機與帳號 › 分享給團隊」輸入對方在帳號伺服器上的帳號,選擇成員或管理員,按「分享」。
- 對方用自己的帳號登入手機網頁版後,會看到「{電腦名稱}({你的帳號} 的)」。
- 成員可以做的事:
- 看 Bot 清單和聊天;
- 傳訊息、附加檔案。
- 成員的限制:
- 看不到電腦畫面的按鈕;
- 不能開始新對話;
- 不能停止;
- 允許請求只會顯示「等擁有者或管理員決定」。
- 管理員可以做的事:除了裝置連結以外,和擁有者一樣。
- 成員傳的訊息前面會加上「【帳號】」,Bot 知道是誰在說話。
- 需要允許時,只通知擁有者和管理員。
- 權限同時由帳號伺服器和 AnyBot 兩邊檢查:AnyBot 依帳號伺服器告訴它的角色,自己再拒絕一次。
### 發布網站
- 有登入帳號時,Bot 多一個 `publish_site` 工具,可以把一個 .html 檔,或一個有 index.html 的資料夾,發布成公開網站。
- 網址是 `帳號伺服器/s/{帳號}-{名稱}/`。
- 用同一個名稱再發布會取代舊的。
- 檔案可以在 Bot 的電腦、你的電腦,或 Bot 自己的資料夾。
- 限制:最多 500 個檔案、25 MB;會略過 `.` 開頭的檔案和 node_modules。
- 每個網站名稱第一次發布時會問你:「把 {路徑} 發布成公開網站「{名稱}」(任何知道網址的人都看得到)」,可以選一律允許。
- 安全:發布的網頁在沙盒裡執行(`Content-Security-Policy: sandbox`),讀不到同一個網址下手機版的登入資料。
- 帳號伺服器設了 `ANYBOT_RELAY_PUBLIC_URL` 時,回給 Bot 的是公開網址。
### 通知
以下情況會推播到所有打開通知的手機:
- Bot 需要你允許時;
- 你不在時 Bot 做完事。
「不在」的意思是:沒開視窗、視窗不在最前面,或 90 秒沒動作。用 `anybot --serve` 時一律推播。
推播內容只有手機解得開(Web Push 加密),點通知會直接打開那個 Bot 的聊天。
### 驗證過的
- 單元測試:手機 API 的登入和權限、帳號伺服器的註冊/登入/轉送/備份、推播加密(用手機那一端的方法解開)和簽章、密碼和加密。
- 真實測試,手機用 curl 和 Chrome(手機尺寸)模擬:
- 透過帳號伺服器傳訊息,Bot 要在電腦上執行指令時,手機核准兩次後完成,結果回到手機;
- 自動備份上傳;
- 兩台不開視窗的 AnyBot 用裝置連結,一台叫另一台執行指令並拿回結果;
- 直接連線:密碼錯被拒、看 Bot 的電腦畫面(1280×800 JPEG)、上傳附件、有變化 2 秒內通知;
- Linux 版在 Docker 裡跟帳號伺服器放在同一個 Docker 網路:帳號建立後自動加入,手機看得到 Bot 和 Bot 的電腦畫面。
- 截圖:`shots/phone.png`、`shots/phone-account.png`、`shots/remote.png`。
- 還沒在真的 iPhone 上試過推播通知(需要你的網域和 HTTPS)。
---
### 連接器市集(設定 › 連接器)
- 8 個常用連接器,按「加入」就能用:
- files:讀寫「文件」資料夾;
- memory:知識圖記憶;
- thinking:循序思考;
- fetch:抓網頁;
- git;
- time;
- playwright:瀏覽器自動化;
- github:官方遠端伺服器。
- 需要金鑰的(github)會把下面的「新增連接器」表單填好,補上 Token 再按「新增」。
- 本機的連接器要先安裝 Node.js(npx)或 uv(uvx)。
- 驗證過的:不用金鑰的 7 個都實際下載、透過 AnyBot 的連接器程式連上。
- 工具數:files 14、memory 9、thinking 1、fetch 1、git 12、time 2、playwright 25。
- 用 time 實際查了台北時間。
- 測試是 `cargo test --release -- --ignored marketplace`。
- github 要你的 Token,沒有測。
### 專屬號碼、打電話、X(設定 › 訊息管道)
- **簡訊(Twilio)**:
- 填「Account SID:Auth Token」和你的 Twilio 號碼。
- 傳到這個號碼的簡訊會交給 Bot,Bot 從同一個號碼回覆。
- 每 3 秒查一次,不需要公開網址;開始之前收到的簡訊不會回。
- **打電話、傳簡訊**:設好 Twilio 後,Bot 多出兩個工具:
- `place_call`:用你的號碼撥出,以中文語音唸兩次訊息;
- `send_sms`。
- **X**:
- 填使用者存取權杖。
- Bot 會每分鐘查一次提及你的貼文,並用回覆的方式回答,長的會接成串。
- Bot 也可以用 `post_to_x` 發文。
- 打電話、傳簡訊、發文每次都會問你,不能設成一律允許,直接操作模式也一樣:
- 「打電話給 {號碼},唸:「{內容}」」
- 「傳簡訊給…」
- 「用你的帳號在 X 發文…」
- 驗證過的:
- 用假的 Twilio 和 X 伺服器檢查要求的格式:Basic 驗證、表單編碼、TwiML 跳脫、回覆的貼文編號。
- 實際跑過一次完整流程:有人傳簡訊進來,Bot 用簡訊回覆;手機核准後 Bot 打出電話。
- 沒有用真的 Twilio 或 X 帳號試過:需要你申請,而且是付費的。
---
## 37. 字型、語言、設定分類、右側面板
### 字型
- 預設用 **粉圓體**(jf open 粉圓 2.1,SIL OFL 1.1 授權,檔案和授權在 `fonts/`),直接包進 App。
- 粉圓體沒有的字,改用系統字型(蘋方)補上。
- 設定 › 一般 › 字型可以換回「系統字型」,馬上生效。
### 語言(跟原版一樣:「選擇 Grok Bot 選單和訊息使用的語言」)
- 可選「自動偵測」(跟 Mac 的語言),或原版同一份 37 種語言清單(原版程式裡的語言表)。
- **選單**:
- 繁體中文:原文。
- 简体中文:全部由 macOS 內建轉換產生。
- English、日本語:翻譯了約 370 個常見字串(側邊欄、聊天頂部、輸入框、右側面板、整個設定頁);較少見的訊息仍是中文。
- 其他語言:選單用英文。
- **Bot 回答**:在指示最後加上「一律用 {語言} 回答」,37 種都適用。
### 設定的分類(照原版)
- 原版共 7 個分頁:一般、整合、電腦、權限、保險庫、用量與帳單、更新。
- AnyBot 用「模型」(你自己的 AI 金鑰)取代「用量與帳單」,每個分頁都有圖示:
- **一般**:
- 帳戶(手機、帳號、團隊、備份,按「管理」進去)
- 外觀(主題、強調色、字型、語言)
- 通知
- Bot(時區)
- 系統(資料位置)
- **模型**:AI 供應商和金鑰。
- **整合**:訊息管道、連接器、連接器市集、技能。
- **電腦**:
- Bot 的電腦
- 在這台電腦上執行
- macOS 權限
- 示範教學
- 其他電腦(SSH)
- 瀏覽器設定檔
- **權限**:直接操作、自動審核、「無需詢問直接允許」和「一律詢問」規則。
- **保險庫**:登入資料。
- **更新**:版本、自動更新、重新啟動。
- 每一項設定都是同一種排法:左邊是名稱加一行說明,右邊是開關或按鈕。
### 聊天頂部和右側面板(照原版實際畫面)
這部分是打開原版 Grok Bot,用 Chrome 偵錯介面截圖並量了尺寸,照著做的(比對圖:`shots/panel-vs-original.png`)。
- **頂部**:沒有標題列。
- 中間:一顆圓角膠囊,裡面是 Bot 頭像和名字,寬度跟名字一樣,高 40。點它打開或關閉「對話詳細資訊」。
- 右邊:
- 「分享」膠囊按鈕,36 高、1 px 淡邊框(匯出 Bot 檔案);
- 「⋯」圓鈕(Bot 選單);
- 有請求時多一顆「● 需要你允許」。
- **輸入框**:右邊有「發起語音聊天」圓鈕,用 Bot 的顏色加聲波圖示,通話中變成紅色停止鈕。
- **對話詳細資訊**(右側面板,寬 280):
- 從上到下:
- 右上角 36 px 圓形 ✕;
- 96 px Bot 頭像(點了編輯 Bot)和名字;
- 兩個小分頁「動態|資料庫」。
- 卡片樣式:圓角 12、1 px 淡邊框、內距 4。每列 36 高:圖示 + 文字 + 「›」。分區標題 13 px,淡色。
- **動態**:
- 進行中:只有工作中或等你允許時才出現,可以停止或打開請求。
- 建議:
- 新增至 Slack:打開 設定 › 整合;
- 建立例行工作:在輸入框預填「幫我建立一個例行任務:」;
- 加入會議:開始或結束錄會議。
- 例行任務:有的時候才出現,點了打開管理視窗。
- 電腦:
- 「Bot 的電腦」和狀態(執行中/休眠中),右邊是**它螢幕的即時縮圖**(`shots/computer-card.png`)。
- 執行中每 3 秒更新縮圖,綠點表示開著。拍縮圖不會把電腦叫醒。
- 休眠時顯示最後一張畫面(變暗),每 30 秒檢查一次。
- 點了打開「Bot 的電腦」視窗,看完整畫面,也可以取得控制權。休眠中會先叫醒。
- 成員:只有群組才有。
- 語音聊天:
- 語音:自動,或這台 Mac 上任何一個聲音,選了會試唸一句;
- 速度:0.75x–2x;
- 語言:自動偵測、中文、English 等,用來轉文字;
- 朗讀每個回答。
- 語音、速度、語言每個 Bot 各自記住,通話和朗讀都會用。
- **資料庫**:
- 列出這個對話的檔案,包括附件和 Bot 打開給你看的檔案,依時間分成「本週」「更早」。
- 每組先列 5 個,可以「展開」。
- 圖示依種類:試算表、影片、圖片、文件。
- 名字太長時保留副檔名,例如「orders_….xlsx」。
- 點了打開檔案。
### 對話內容(照原版實際畫面)
比對圖:`shots/chat-vs-original.png`。
- **Bot 的回答**:
- 灰色泡泡(深色 #212121、淺色 #F1F1F1),靠左,文字由左往右排。
- 沒有頭像、沒有模型名稱,也不列出工具步驟。每次回答是一個泡泡。
- **你的訊息**:Bot 顏色的泡泡,靠右,寬度跟著字數;換行時文字一樣由左往右。
- **日期**:兩則訊息隔 30 分鐘以上或跨天時,中間顯示「11月2日週一 上午9:50」,今天只顯示時間。
- **滑過訊息**:泡泡旁出現三個小鈕。
- Bot 的訊息:表情回應(6 個常用加 24 個更多)、回覆(引用到下一則)、⋯。
- ⋯ 裡有:複製、重新產生、顯示步驟(N)、模型名稱。
- 「顯示步驟」會展開這次回答的思考過程和每個工具步驟,滑過步驟會顯示結果。
- 你的訊息:回覆和 ⋯(複製)。
- **AI 也會按表情**:Bot 有 `react` 工具,可以在你最新的訊息按 ❤️、👍、😂、🎉、👀 等,顯示在你的泡泡下面。
- **工作中**:
- 對話最後是一個不停轉的圓環,加上一句有光掃過的狀態,文字取自原版的清單:
- 讀檔:「正在讀取檔案」
- 跑指令:「正在執行幾個指令」
- 操作 Bot 的電腦:「正在四處點擊」
- 操作你的 Mac:「正在你的電腦上工作」
- 瀏覽網頁:「正在逐頁瀏覽」
- 等你:「需要你的輸入」
- 思考時:「正在仔細思考/正在琢磨/正在整理思緒」
- 其他:「正在推進」等
- 原版的動畫時間:
- 圓環每 1.2 秒轉一圈;
- 文字上的光每 1.4 秒掃過一次;
- 新訊息 240 ms 淡入並往上浮;
- 表情回應 500 ms 彈出,帶一點回彈。
- **檔案**:
- Bot 用 `send_file` 把做好的檔案傳進聊天,你附加的檔案也一樣,顯示成檔案卡片:圖示依種類(試算表綠色、Markdown 紫色、網頁橘色、PDF 紅色、圖片、影片)、檔名(太長時保留副檔名)、大小。
- 點卡片打開預覽(`shots/file-preview.png`):
- 上面是檔名和「22 列」,右上角有「用其他 App 打開」、下載、關閉。
- Excel(xlsx/xls/ods)和 CSV:表格,有列號和標題列,欄寬跟內容走,太長的格子滑過看全文,多個工作表可以切換。
- Markdown:排好版顯示。
- 網頁:「在瀏覽器開啟」,加上網頁的文字。
- 圖片:直接顯示。
- PDF、Word:顯示文字。
- 程式碼、文字:等寬字。
- 卡片(天氣、機票等)照舊顯示在回答下面。
- 深色主題改成原版量到的顏色:聊天背景 #131313、側欄 #101010、卡片 #1F1F1F。
### 左側欄、輸入框、頭像動畫、啟動動畫(照原版)
比對圖:`shots/app-vs-original.png`。
- **左側欄**:
- 右上兩顆 36 px 圓鈕:搜尋(點了才出現搜尋框)和新 Bot(右鍵可以從範本或建群組)。
- 主要 Bot 單獨在最上面:大頭像、右下角橘色★、名字。
- 其他 Bot 照**群組**分:
- + › 新增群組,建立後馬上可以打名字。
- 把 Bot **拖**到別的群組(拖動時目標群組亮框,`shots/sidebar-drag.png`),或用 Bot 選單 › 移到群組。
- 群組標題按右鍵可以重新命名、刪除群組(裡面的 Bot 移到未分區);雙擊標題也能改名。
- 空的群組會留著,顯示「把 Bot 拖進來」;沒分群組的 Bot 在「未分區」。
- 每列 54 px、圓角 12、40 px 頭像、名字 15 px、最後一句 13 px;未讀是藍點,等你允許是強調色的點。
- 最下面是你(縮寫頭像和名字,點了打開設定),右邊是連接器市集(打開 設定 › 整合,直接捲到市集)。這一列固定在側欄底部,不會被切到。
- + 選單:新增 Bot、新增群組、群組聊天、從範本建立。
- 驗證過的:用模擬點擊確認帳號列、市集鈕、+ 選單、群組右鍵都有反應(`shots/sidebar-clicks.png`),也模擬了拖拉。
- **輸入框**:
- 一條 44 px 的膠囊:+、文字、麥克風,最右邊是 Bot 顏色的圓鈕。空白時是語音聊天,有字時變成 ↑ 送出,工作中而且沒字時是停止。
- + 選單:附加檔案、教它一項任務(直接開始錄示範),以及 AnyBot 的模型選擇。
- 下面不再有提示文字。
- **選單**(照原版,`shots/menu-vs-original.png`):
- 寬 200、圓角 16、每列 32 高、左邊 16 px 圖示、14 px 字。
- 分組之間有細線,「刪除」是紅字加垃圾桶,有下一層的列右邊有「›」。
- Bot 選單:釘選、移至 ›、標示為未讀、設為主要|編輯、開始新對話、過去的對話 ›、錄會議|分享與匯出 ›(匯出 Bot、匯出文字記錄、匯入、複製 ID)|重新啟動、清除、刪除。
- 群組選單:重新命名、上移、下移|刪除。
- 訊息 ⋯:複製、回覆、重新產生、顯示步驟。
- + 選單和模型選擇也是同一種樣式。
- **在對話裡叫 Bot 分群組**:Bot 有 create_group、move_to_group、rename_group、delete_group 工具。例如「建立文宣組,把文案企劃、網研探子、美術設計放進去」。
- **頭像動畫**(照原版頭像引擎的參數):
- 側欄、頂部名字膠囊、右側面板的頭像,都會轉向滑鼠,平滑度和原版一樣(每 1/60 秒追 14%)。
- 每 2.5–6.5 秒眨一次眼(0.18 秒)。
- 點一下 Bot 會彈一下(0.62 秒,先壓扁再拉長)。
- 每個狀態用眼睛表達:平常跟著滑鼠;工作中眼睛慢慢左右掃,像在看東西;等你允許時抬頭看你;做完點個頭(0.5 秒)。不再轉圈、不再有繞圈的小點,所以不會閃。
- 頭像只佔格子的 84%,四周留一點空間。
- **啟動動畫**(`shots/launch-animation.png`):打開 AnyBot 時,主要 Bot 的頭像在畫面中間長大、往左右看一眼、彈一下,名字淡入;1.6 秒後整個淡出到主畫面。動畫進行中點擊不會誤觸。
- **滑過訊息的選單**:表情、⋯ 打開後,即使滑鼠移到選單上,按鈕也不會消失,選單點得到了。
### 視窗大小
- 拉動視窗時,內容會跟著調整:
- 聊天欄寬度跟著視窗變化。
- 頂部的 Bot 名稱和描述太長時用「…」截掉,按鈕不會被擠掉。
- 右側面板在空間夠時並排顯示(寬 280–340 px)。不夠時改成浮在聊天上面,聊天欄不會被擠到看不見。
- 設定和其他對話框不會比視窗寬,左邊的分頁清單也會跟著變窄。
- 一排放不下的選項(例如新增管道的種類)會自動換行。
- 驗證過的:在 680×520(最小)、1000×680、1600×1000 截圖檢查。截圖在 `shots/resize.png`、`shots/narrow.png`、`shots/languages.png`、`shots/panel.png`、`shots/settings.png`。
---
## 37a. 圖示、群組、檔案預覽、跨平台
**圖示**:全部改用 Lucide 圖示(ISC 授權,`icons/lucide/*.svg`,用 resvg 畫成貼圖)。介面和手機網頁版都不再用 emoji 當圖示;只有使用者自己按的表情反應保留 emoji。
**群組**:左側欄群組可以收合(點標題),可以從「⋯」或右鍵選「重新命名 / 上移 / 下移 / 刪除」。Bot 在聊天裡也能用工具 create_group、move_to_group、rename_group、delete_group 管理群組。
**檔案預覽**:和原版一樣分成 11 類(依原版 main-core.cjs 的副檔名表 zc())。
| 類型 | 副檔名 | AnyBot 怎麼顯示 |
|---|---|---|
| 圖片 | png jpg gif webp bmp tiff ico svg(avif heic:macOS 用 sips) | 直接顯示 |
| PDF | pdf | hayro 把每一頁畫出來(最多 300 頁);Bot 讀文字用 pdftotext,沒有就用 pdf-extract |
| 表格 | csv tsv xlsx xls xlsm xlsb ods | 有列號的表格、多個工作表 |
| Word | docx | 直接讀 XML 轉成標題、清單、表格、粗體 |
| Markdown | md markdown mdx | 標題、清單、表格、引言、程式碼 |
| 網頁 | html htm | 轉成有結構的內容,加「在瀏覽器開啟」 |
| JSON | json | 排整齊的文字 |
| 文字和程式碼 | 原版那份 80 多種副檔名的清單,再加上 Dockerfile 等 | 等寬字 |
| 音訊 | mp3 m4a aac wav flac ogg aiff caf(opus:先用 ffmpeg 轉檔) | 在 AnyBot 裡播放、暫停、拖進度 |
| 影片 | mp4 mov m4v webm ogv mkv avi | 第一格畫面(用 ffmpeg 擷取)+播放鍵,用電腦的播放器播 |
| 其他 | | 「用其他 App 打開」 |
用 `ANYBOT_FIXTURES=<資料夾> cargo test --release fixtures -- --ignored --nocapture` 可以一次打開資料夾裡每個檔案,檢查有沒有哪個打不開。截圖模式可以用 `ANYBOT_SHOT_VIEW=fileview ANYBOT_SHOT_FILE=<檔案>` 預覽任何檔案。
**跨平台**:AnyBot 現在在 macOS 和 Linux 上都能完整使用,之後還要支援 Windows。
- 檔案預覽全部用純 Rust 寫,三個平台都能用:hayro、rodio、image、resvg、zip、pdf-extract。
- 打開檔案或網址統一用 `preview::system_open`;「在 Finder 中顯示」統一用 `preview::reveal`。
- 介面和 Bot 說明裡的「這台 Mac」「this Mac」,在 Linux 上會統一換成「這台電腦」(`platform::localize`)。
| 功能 | macOS | Linux |
|---|---|---|
| 看螢幕、點擊、打字、捲動、拖曳(computer_use) | CoreGraphics | 三種桌面自動判斷(`desk.rs`):<br>• X11(x11rb:GetImage 截圖、XTEST 模擬輸入;中文是暫時把字放到一個空按鍵上打出來)<br>• Wayland wlroots 系(sway、Hyprland…,`wl.rs`):wlr-screencopy 截圖、虛擬滑鼠、虛擬鍵盤(自帶鍵盤配置,中文直接打);不用另外允許<br>• Wayland GNOME / KDE(`portal.rs`):遠端桌面 portal 操作、截圖 portal 看畫面。第一次會跳出「遠端桌面」視窗,要打開「允許遠端操作」再按「分享」;GNOME 另會問一次「允許截圖」。portal 第 2 版以上會記住答案。中文經剪貼簿(wl-copy)+ Ctrl+V 貼上 |
| 錄製示範 | CGEventTap | X11 RECORD(Wayland 不讓 App 看別的 App 的輸入,所以只有 Xorg 工作階段能錄) |
| 語音輸入、通話 | AVAudioRecorder | cpal 錄成 WAV(自己判斷有沒有在說話) |
| 唸出回答 | say | espeak-ng |
| 登入資料保險庫 | 鑰匙圈(security) | 系統鑰匙圈(secret-tool:GNOME Keyring / KWallet) |
| 通知 | display notification | notify-send |
| 閒置、鎖定、螢幕保護 | ioreg、pgrep | X11 螢幕保護擴充;Wayland 用 Mutter IdleMonitor(GNOME)或 ext-idle-notify;loginctl |
| 選檔案、存檔視窗 | Finder 對話框 | zenity / kdialog |
| 貼上剪貼簿圖片 | NSPasteboard | xclip / wl-paste |
| 簡體中文介面 | CFStringTransform | zhconv |
| 系統語言、電腦名稱、網路位址 | defaults、scutil、ifconfig | LANG、hostnamectl、ip |
| AnyBot 自己的瀏覽器 | /Applications 裡的 Chrome 等 | /usr/bin、/opt、Snap、Flatpak 裡的 Chrome、Chromium、Brave、Edge |
| Bot 的電腦(Docker) | OrbStack / Docker Desktop | Docker Engine;代理伺服器只接受本機和 Docker 網路的連線 |
**Linux 還不能做的**:
- **Wayland 上錄製示範**:系統不允許,要錄請改選 Xorg 工作階段。
- **Wayland 上「哪個視窗在滑鼠下」**:Wayland 不告訴 App 其他視窗的位置,所以權限提示會寫「目前的 App」。
- **讀你自己瀏覽器的分頁**:Mac 上是透過輔助使用讀的,Linux 改用 AnyBot 自己的瀏覽器設定檔。
- **Mac App 工具**:郵件、行事曆、備忘錄、訊息,只有 Mac 有。
- **在背景點擊、不把視窗拉到前面**:Linux 上會改成一般點擊。
**安裝和測試**:
- `deploy/linux/install.sh`:安裝到 ~/.local,包括選單項目和圖示。加上 `--deps` 會順便安裝系統套件,支援 apt、dnf、pacman。
- `deploy/linux/dev/test.sh`:在 Mac 上用 Docker 裡的 Linux 和虛擬螢幕測試。會跑:
- 全部單元測試;
- 實際操作畫面和錄製示範;
- 鑰匙圈存、讀、刪;
- Wayland(無頭 sway):截圖、點擊、中文打字、快捷鍵、捲動(`wayland_live.sh`);
- 視窗截圖。
- `deploy/linux/dev/gnome/test.sh`:無頭 GNOME 43(Wayland)測 portal 路線:沒開「允許遠端操作」時的提示、英文+中文打進文字框、精準點到小按鈕。測試腳本 `op.py` 扮演使用者回答系統視窗。
- 測試用的指令:
- `anybot --tool <工具> <JSON> …`:直接跑操作電腦的工具;
- `anybot --write-icon out.png 256`:輸出 App 圖示。
## 38. 還沒做的功能
| 功能 | 為什麼 |
|---|---|
| 原版伺服器端的提示詞和模型路由 | 不在 App 裡,拆不到;AnyBot 用自己的系統指示(第 33 節) |
| 邊說邊插話的即時語音 | 原版用 xAI 即時語音服務;AnyBot 的通話模式是輪流說話 |
| 帳單、方案 | 不需要:AnyBot 用你自己的 AI 金鑰 |
| 代你購物與付款 | 刻意不做:會動到你的錢和卡片 |
| 原生 iPhone/Android App | 用手機網頁版,可加到主畫面、收推播通知 |
## 多台電腦:大腦、手腳、螢幕(2026-11-04)
- 帳號裡一台 AnyBot 當大腦(Bot、聊天、記憶、排程都在它上面),其他有視窗的電腦當螢幕(看到、改的都是大腦的 Bot),沒有螢幕的電腦當手腳;同一個帳號的電腦之間即時同步。
- 每台 AnyBot 和帳號伺服器之間保持一條長連線(WebSocket),斷了自動接回;連不到時畫面說明是哪一段。
- 「加一台電腦」給一行 `anybot setup 網址 配對碼`,新電腦不用密碼就接成那個大腦的手腳。
- 看不到圖片的模型:你帳號裡看得到圖的模型會先描述圖片(看圖小幫手)。
- 詳細說明:docs/multi-device.md;技術細節:docs/architecture.md、docs/protocol.md。
## 側邊欄:釘選與分區(照原版重做,2026-11-04)
- 釘選的 Bot 放在最上面的大頭像格子裡(主要 Bot 第一個,有星星)。右鍵「釘選/取消釘選」,或把 Bot 拖進格子(第一次拖時出現「拖曳到此處以釘選」);格子內可拖曳排序;拖到分區會取消釘選並移過去。
- 分區:Bot 右鍵「移至 ▸」列出所有分區(含未分區,✓ 目前的)和「建立分區」;還沒有分區時是「移至新分區」。新分區放最上面,名字「新增分區」並直接進入改名(Enter/點別處儲存,Esc 取消)。
- 分區標題右鍵(或 ⋯):重新命名、上移、下移、刪除;未分區只有上移/下移。刪除會先確認「其中的 Bot 會移至 未分區,不會刪除任何 Bot。」只有一個清單時,「Bot」標題右鍵可「建立分區」。
## 對話的 Markdown 與流程圖(2026-11-04)
- 以 pulldown-cmark 解析(表格、刪除線、待辦清單、數學區塊):標題 22/17 px、單一換行照樣換行、粗體(粉圓體只有一種粗細,用疊印做出粗體)、斜體、刪除線、行內程式碼、可點的連結、多層清單、待辦勾選框、引用線、表格(可橫向捲動)、分隔線。
- 程式碼區塊:圓角邊框、上色(註解、字串、數字、關鍵字)、可橫向捲動、滑過時右上角「複製程式碼」,複製後兩秒顯示勾。
- ```mermaid:用純 Rust 的 mermaid-rs-renderer 畫成圖(流程圖、時序圖、類別圖、狀態圖、ER、甘特圖、圓餅圖、心智圖、時間軸…),中文用粉圓體,跟著深淺色主題。回覆還在產生時先顯示原始碼,結束後才畫。點圖可放大檢視(縮放、拖曳、下載 PNG 到「下載項目」)。畫不出來時顯示「無法顯示此圖表」並保留原始碼。
## 其他(2026-11-04)
- **OpenCode Go 供應商**:設定 → 模型 選「OpenCode Go」,貼上 opencode.ai Console 的 Go 金鑰。依官方模型清單自動決定每個模型用 OpenAI 格式(/openai/v1)或 Anthropic 格式(/anthropic/v1);每個 Bot 的對話帶固定的 x-opencode-session。
- **看不到圖片的模型**:模型回「不能收圖片」(例如「At most 0 image(s)」)時,AnyBot 記住這個模型,立刻改成不附圖片重試,截圖的位置換成文字說明,Bot 不會再卡住。