# 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 執行並交回結果,模型再決定下一步。 - **步驟上限**:一個回合最多 25 步(估計值)。用完時會顯示:「(這次已經用了 25 個步驟,先停在這裡。要繼續的話,回覆「繼續」。)」 - **每一步開始前會依序做**: 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 字(估計值),超過時結尾加「…(後面還有,已截斷)」。 - 會拿掉程式碼、樣式和頁首,把段落、標題、清單、表格列分行,特殊符號轉回一般文字。 - 輸出:「網址:…」「標題:…」加內文。 - 可能看到的訊息: - 網站回應 400 以上:「網站回應 N。如果這個頁面要登入,請改用 browser_open + browser_read。」 - 文字少於 200 字:「(頁面幾乎沒有文字,可能要登入或靠程式載入。可以改用 browser_open 打開,再用 browser_read 讀。)」 ### 瀏覽器工具 - 「在瀏覽器打開」(browser_open):參數是網址和設定檔。 - 「讀取瀏覽器分頁」(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`):
• X11(x11rb:GetImage 截圖、XTEST 模擬輸入;中文是暫時把字放到一個空按鍵上打出來)
• Wayland wlroots 系(sway、Hyprland…,`wl.rs`):wlr-screencopy 截圖、虛擬滑鼠、虛擬鍵盤(自帶鍵盤配置,中文直接打);不用另外允許
• 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 <工具> …`:直接跑操作電腦的工具; - `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 不會再卡住。