Keural Duo
在你的電腦上運作的常駐代理程式,涵蓋安裝、對話、例行工作、Telegram、電腦使用與 Mate & Morph。
Duo 是桌面應用程式在這台電腦(或已連接的 DGX Spark)上安裝的常駐代理程式。它在隔離的沙箱中運作,可從側邊欄的 Duo 或 Telegram 與它對話,並執行你設定的例行工作。以 NVIDIA NemoClaw 與 OpenClaw 為基礎。
Duo 僅適用於桌面應用程式。
安裝
在 設定 → Duo → 執行環境 中選擇模型,然後按下要執行位置那一列的 安裝。未選擇模型或磁碟空間不足時,安裝按鈕會停用。
執行位置與需求
| 執行位置 | 需求 |
|---|---|
| 這台裝置(macOS) | Apple 晶片,16GB 以上記憶體。容器執行環境由應用程式直接安裝,因此不需要 Docker Desktop、Homebrew 或系統管理員密碼。 |
| 這台裝置(Windows) | WSL 2。第一次按下 準備 Windows 會安裝所需元件。可能會要求你重新啟動電腦,或允許系統管理員權限。若虛擬化已關閉,請在 BIOS 中開啟。 |
| 遠端裝置(DGX Spark) | 請先連接 Spark並執行模型。若 Spark 防火牆已開啟,請輸入一次 Spark 帳號密碼以開啟兩個連接埠(密碼不會被儲存)。 |
安裝需要 20GB 以上磁碟空間,建議 40GB 以上。空間不足時,安裝按鈕會鎖定,並顯示「需要 {need} GB · 剩餘 {free} GB」。
模型
| 選項 | 說明 |
|---|---|
| 本機模型 | 使用已下載的本機模型中目前執行中的模型。顯示為「{model} · 與對話相同的模型」。 |
| DGX Spark | 已連接的 Spark 正在執行的模型。 |
| 雲端 | 方案內含的 Duo 模型。需登入後才會顯示。 |
| 閘道 | 使用在 設定 → 模型 → 閘道 中連接的伺服器模型。需要該伺服器的位址與 API 金鑰。 |
安裝之後,仍可在 模型 列更換模型。同一類型之間選擇「切換」即可立即更換。在本機、雲端、閘道之間更換類型時,需要重新安裝。重新安裝不會刪除例行工作。若要變更執行位置,請先刪除,再安裝到其他位置。
安裝步驟
安裝依序進行:確認這台裝置 → 準備容器執行環境 → 安裝 NemoClaw → 啟動模型(雲端或閘道則準備模型使用權限)→ 建立沙箱 → 設定 Duo → 確認運作。目前步驟會顯示在按鈕文字與進度卡片中。出現「耗時稍長,請保持應用程式開啟。」時,請勿關閉應用程式。
安裝停止時,請在安裝失敗時根據畫面提示查找原因。
其他帳號或工作區的 Duo
Duo 每台裝置只有一個,並屬於安裝時所用的帳號與工作區。若你以其他帳號登入或切換到其他工作區,設定中的 Duo 會顯示為「未安裝」,側邊欄的 Duo 與 Mate & Morph 也會隱藏。在此狀態下按下 安裝,會出現確認視窗,表示既有的 Duo 及其對話與例行工作將被刪除。按下 重新安裝 後,既有的 Duo 會被刪除並重新建立。回到原本的帳號或工作區時,既有的 Duo 會再次顯示。
若先前安裝的 Duo 仍存在,會先自動清理再進行安裝。清理失敗時,會停在「無法刪除先前的 Duo。請重新安裝。」
安裝失敗時
安裝停止時,設定 → Duo 會顯示錯誤訊息。請一併確認訊息後括號中的代碼。解決原因後,再次點選安裝。
| 畫面提示 | 原因 | 解決方法 |
|---|---|---|
磁碟空間不足,安裝已停止。請確保至少有 {need} GB 可用空間後重新安裝 | 主資料夾所在磁碟的可用空間不足 20GB。 | 釋出 20GB 以上空間(建議 40GB)。 |
| 無法準備容器執行環境。請檢查網路連線後再試一次 | 無法下載安裝檔案。公司防火牆或 Proxy 通常是原因。 | 檢查網路連線。若在公司網路中,請向 IT 人員申請允許下載來源中的位址。 |
| 無法刪除先前的 Duo。請重新安裝。 | 無法清理此裝置上殘留的舊 Duo。 | 完全結束應用程式後重新開啟,再點選安裝。仍然失敗時,請查看 macOS 分頁中的相同提示。 |
| 有其他帳號或工作區的 Duo。 | 此裝置的 Duo 屬於其他帳號或工作區。 | 按下重新安裝會刪除該 Duo 並重新安裝。若要繼續使用既有的 Duo,請切換回原帳號或工作區。 |
| 您的方案不支援 Duo 使用雲端模型。 | 目前工作區的方案不包含雲端 Duo。 | 將模型改為此裝置模型、DGX Spark 或閘道,或確認方案。 |
| 登入後即可使用雲端模型。 | 目前未登入。 | 登入後再次安裝。 |
| Duo 的模型未執行。請先啟動,然後重新套用。 | 此裝置上的模型未執行。 | 在設定 → 模型中執行模型,然後安裝。 |
| 耗時稍長,請保持應用程式開啟。 | 首次安裝需要下載的檔案較多。 | 保持應用程式開啟並等待。筆電請避免進入睡眠模式。 |
仍無法解決時,請在設定 → 支援中聯絡支援。請一併提供畫面提示、括號中的代碼與裝置類型(macOS、Windows 或 Spark)。
設定 → Duo 畫面
| 區域 | 內容 |
|---|---|
| 狀態 | 「正在 {位置} 執行」· 已停止 · 啟動中 · 未安裝 · 無伺服器(Spark 連線中斷時) |
| 執行環境 | 模型選擇、這台裝置/遠端裝置列的安裝、啟動、停止、刪除,沙箱 ID 與 NemoClaw 版本 |
| 聊天應用程式 | Telegram 連線 |
| 連線 | GitHub、網路搜尋 |
| 電腦使用 | 權限、可讀取的資料夾、行動前規則、一律允許的應用程式、Mate & Morph |
| 對話記憶 | 內容用量、對話壓縮、新對話 |
| 新功能(Windows) | Windows 電腦連線、共用資料夾、應用程式存取確認、最近工作 |
安裝、切換模型、套用聊天應用程式設定、刪除等較長的工作進行期間,其他區域會被鎖定。只有在開啟電腦使用或放寬規則時,才會出現作業系統的確認視窗。
對話
按下側邊欄的 Duo(程式碼模式下不會顯示)。連線中斷期間傳送的訊息會顯示為「{n} 則等待傳送」,連線恢復後會送達。在輸入框中傳送 /new,會詢問是否開始新對話。
開啟上方的 Duo 資訊 後,側邊面板會顯示以下卡片。
| 卡片 | 內容 |
|---|---|
| 目前工作 | 休息中或進行中的工作、經過時間、使用過的工具 |
| Duo 設定已變更 | 沙箱設定與上次 Keural 確認的內容不同時才會顯示。會列出已變更的區域(聊天應用程式與可對話的人 · 工具與權限 · 已連線的服務 · 模型連線 · 其他)。若是你自己變更的,請按下 接受變更。 |
| 沙箱 | 就緒/錯誤、模型回應正常/無回應、GPU(CUDA)使用與否、容量 |
| 模型 | 模型名稱、位置(這台裝置 · DGX Spark · 雲端)、內容用量 |
| 例行工作 | 參見下方的例行工作 |
| 連線 · Telegram | 連線摘要。按下後前往設定。 |
| 工作檔案 | Duo 在沙箱工作資料夾中建立的檔案 |
按下 背景工作 按鈕,可查看 Duo 執行中的子代理程式清單。
對話記憶
在 設定 → Duo → 對話記憶 中,可以用權杖數與百分比確認「目前使用的內容」。按下 壓縮 可縮減對話,按下 新建 可開啟新對話。現有對話會保留。若 Duo 正在工作,需等工作結束後再操作。若顯示「對話過長,模型無法處理,因此 Duo 無法回答。」,請壓縮或開始新對話。
例行工作
你可以對 Duo 說「每天早上 9 點……」之類的話,此時會顯示 要建立此例行工作嗎? 卡片(工作、排程、執行位置)。按下 建立例行工作 即可登錄。修改或刪除時,也會以同一張卡片確認。
| 項目 | 內容 |
|---|---|
| 週期 | 單次(最多 365 天後)· 每天 · 平日 · 每週 · 每 N 分鐘(5 到 1,440 分鐘) |
| 執行位置 | Keural 應用程式中的 Duo 對話,或 傳送到 Telegram |
| 數量 | 啟用 10 個,全部 50 個 |
| 到期 | 預設 7 天,最長 30 天。到期後顯示「已到期」。 |
| 錯過 | 若應用程式已關閉,導致晚於預定時間 10 分鐘以上,則不會執行,並標示為「已錯過」。 |
| 失敗 | 連續失敗 3 次後,會顯示「因失敗而暫停」。 |
在 Duo 資訊面板的 例行工作 卡片中可以開啟或關閉。按下 更多 可執行 立即執行 或 刪除。每一列會顯示下次執行時間與狀態(已傳送 · 已錯過 · 失敗 · 已暫停 · 已到期)。例行工作的結果會傳送到 Duo 對話或 Telegram,並顯示桌面通知(立即執行 不會發出通知)。例行工作只會在應用程式開啟時執行。
聊天應用程式(Telegram)
在 設定 → Duo → 聊天應用程式 → Telegram → 連線 中依照指示操作。
- 在 Telegram 中開啟 @BotFather,傳送
/newbot,然後設定機器人的名稱與使用者名稱。 - 貼上 BotFather 提供的 機器人權杖,然後按下 確認。權杖若外洩,任何人都能控制這個機器人,因此請勿公開。
- 以手機掃描 QR code 開啟機器人,然後按下 開始。若沒有回應,請將畫面上的代碼傳送給機器人。
- 出現「只有
{名稱}可以用私訊與機器人對話」時,請依序按下 新增、套用。
套用後 Duo 會重新啟動(對話與檔案保持不變)。之後從手機傳送的訊息會在 Duo 對話中以「來自 Telegram」顯示。只有連線的那一位可以用私訊與機器人對話。若要解除,請按下 中斷連線,然後按下 套用。連接 Telegram 後,例行工作的核准也會透過 Telegram 接收。
一組機器人權杖只能在一個帳號的一台裝置(Duo)上使用。要連接其他裝置,請先在原裝置解除連接,再重新登錄權杖。
應用程式操作的核准,即使對話是從 Telegram 開始的,也只能在 Keural 應用程式視窗中進行。
連線
請在 設定 → Duo → 連線 中設定。
| 服務 | 方式 |
|---|---|
| GitHub | 貼上 個人存取權杖 並確認,或按下 使用 GitHub CLI 繼續,使用這台電腦上的 gh 登入狀態。若未安裝 CLI,會顯示安裝連結;若未登入,會開啟登入視窗。連線或變更後,Duo 會重新啟動。 |
| 網路搜尋 | Duo 會沿用你在 設定 → 一般 → 網路搜尋 中選擇的方式(快速搜尋 · Keural 搜尋 · 你自己的搜尋服務中的 Tavily、Brave 或 SearXNG)。需要開啟 電腦使用。 |
電腦使用
在 設定 → Duo → 電腦使用 → 允許 Duo 使用這台電腦 開啟後,Duo 可以操作這台電腦上的應用程式、讀取你指定的資料夾,並建立例行工作。開啟時 Duo 會重新啟動約一分鐘。
| 項目 | 內容 |
|---|---|
| macOS 權限 | 輔助使用(點選與輸入)與 螢幕錄製(查看畫面)。未允許時,請按下 開啟系統設定。 |
| Duo 可讀取的資料夾 | 只能讀取透過 新增資料夾 指定的資料夾。使用者資料夾整體或系統資料夾等範圍過大的資料夾無法新增。 |
| Duo 行動前 | 每次詢問(預設)· 不詢問直接執行 · 交給您來做。切換為不詢問直接執行時,會再次確認。 |
| 一律允許的應用程式 | 在核准視窗中選擇 一律允許 的應用程式清單。按下 × 即可移除。 |
即使是 不詢問直接執行 或 一律允許,傳送、刪除、覆寫、付款、提交、登入、發布、取消等敏感步驟,以及 Enter、Backspace、⌘Q 等按鍵,仍會先詢問。
Duo 等待核准時,輸入框上方會顯示「Duo 正在等待核准」。按下 確認 開啟核准視窗,並從 拒絕 · 僅允許一次 · 一律允許 中選擇。核准只能在此視窗中進行。
Duo 只會不經核准開啟搜尋結果中的連結。Duo 自行輸入或變更的位址,核准視窗會顯示完整位址並詢問。
Mate & Morph
這是 Duo 的桌面角色。在 設定 → Duo → 電腦使用 → Mate & Morph → 在桌面上顯示 開啟後,它會出現在畫面上。接著選擇 角色(Mate · Morph · 兩者)與 大小(小 · 中 · 大)。
- 只有在 Duo 執行中且對話已準備好時才會顯示。切換到其他帳號或工作區,或方案不允許使用 Duo 時,會隱藏。
- 按一下角色會開啟輸入框,可以直接與它對話;快速按兩下則會開啟應用程式。角色旁會顯示狀態(待命中 · 工作中 · 已完成 · 受阻 · 需要輸入 · 正在等待核准),以及最後一次回答失敗的原因。
- 右鍵選單:隱藏 · 標示為已讀 · 開啟 Duo · Duo 設定。選單列(系統匣)選單中也有 顯示/隱藏 Mate & Morph。
Windows
Windows 版的 Duo 在 WSL 發行版中執行,對話、例行工作、Telegram、核准、Mate & Morph 與電腦使用的支援方式與 macOS 相同。應用程式操作使用 Windows UI 自動化,因此部分應用程式,以及密碼輸入欄、UAC、終端機等安全視窗,Duo 不會操作,而是交由你自行處理。
在 設定 → Duo → 新功能(Windows 電腦)中,可以確認 Duo 連線、共用資料夾(Duo 只會讀取你選擇的資料夾)、應用程式存取,以及 最近工作。在 Windows 上,除了應用程式操作,還可以進行 軟體安裝(僅限正確的套件 ID)與 Wi‑Fi 連線(已儲存的設定檔)。傳送、刪除、覆寫、安裝與網路變更,都會先詢問。
刪除
在 設定 → Duo → 執行環境 中,按下已安裝位置那一列的 刪除,然後在確認視窗中按下 刪除。沙箱、對話紀錄、例行工作與工作檔案都會被刪除。在 macOS 上,Duo 專用的容器 VM 也會被刪除。DGX Spark 上的 Duo 需在 Spark 連線時才能刪除。
常見提示
| 提示 | 意思 |
|---|---|
| Duo 未在執行 | 在 設定 → Duo 中按下 啟動。 |
| 需要最新版桌面應用程式 | 請更新應用程式。 |
| 模型未在執行。請先啟動模型,然後再套用。 | 本機或 Spark 模型已關閉。請先執行模型。 |
| 模型連線已中斷。請確認登入狀態。 | 雲端模型 Duo 的存取權限已中斷。請重新登入。 |
| 此工作區的方案無法使用 Duo。 | 此方案不包含雲端模型 Duo。請切換為本機模型或確認方案。 |
| 有其他帳號或其他工作區的 Duo。 | 安裝會刪除該 Duo。切換回原本的帳號或工作區即可繼續使用。 |
| 無法刪除現有的 Duo。請重新安裝。 | 先前安裝的 Duo 無法清理。請再次按下安裝。 |
IT 管理人員詳細資訊
需求
| 執行位置 | 標準 |
|---|---|
| macOS | Apple 晶片(arm64),16GB 以上記憶體。Duo 專用虛擬機(Colima,vz)使用 4 個 CPU、9GiB 記憶體與 40GiB 磁碟(依需求佔用)。 |
| Windows | WSL 2(核心 5.15 以上),x64 或 ARM64。以 Keural-Duo 名稱安裝 Ubuntu 24.04 發行版,並在其中使用 rootless Podman。不需要 Docker Desktop。 |
| DGX Spark | Docker 正在執行,剩餘磁碟 20GB,可用記憶體 8GB 以上 |
| 共通 | 使用者資料夾所在磁碟需有 20GB 以上的可用空間(建議 40GB) |
在 Windows 上,安裝時會在 %USERPROFILE%\.wslconfig 的 [wsl2] 中使用 networkingMode=nat。使用鏡像網路(mirrored)的電腦無法安裝。
安裝位置
| 執行位置 | 路徑 |
|---|---|
| macOS 執行環境 | ~/.keural-runtime/(Colima、Lima、Docker CLI、紀錄) |
| macOS 自動啟動 | ~/Library/LaunchAgents/kr.mkd.keural-duo-colima.plist、kr.mkd.keural-duo-gateway.plist、kr.mkd.keural-duo-sweeper.plist |
| NemoClaw CLI | ~/.local/bin/nemoclaw |
| Windows | WSL 發行版 Keural-Duo |
| 應用程式紀錄 | 應用程式資料夾中的 keural-duo@<伺服器>.json、keural-duo-routines@<伺服器>.json、keural-duo-rules@<伺服器>.json |
| 紀錄檔 | ~/.keural/logs/、~/.keural-runtime/colima.log、gateway.log,以及應用程式資料夾中的 keural-duo-install.log |
下載來源
請在防火牆或 Proxy 中允許以下位址。下載的檔案為固定版本,並以 SHA-256 驗證。
| 位址 | 下載內容 |
|---|---|
github.com | Colima v0.10.3、Lima v2.2.1、buildx v0.38.2(macOS),Podman 工具(Windows) |
download.docker.com | Docker CLI 29.9.3(macOS) |
www.nvidia.com | NemoClaw 安裝腳本(v0.0.134) |
ghcr.io | OpenClaw 沙箱映像檔 |
api.telegram.org | Telegram 連線 |
Keural 伺服器(api.keural.ai 等) | 雲端模型、登入 |
若使用網路搜尋或 GitHub 連線,也需允許 api.tavily.com、api.search.brave.com、api.github.com、api.githubcopilot.com。
網路與連接埠
| 位置 | 連接埠 | 用途 |
|---|---|---|
| macOS | 127.0.0.1:8080 | OpenShell 閘道 |
| macOS · Windows | 127.0.0.1:8766 | 本機模型伺服器(Windows 為 WSL 內的中繼)。若衝突則使用 8768 |
| DGX Spark | 18080 到 18099 中的空閒連接埠 | Spark 專用閘道 |
| DGX Spark | 18081 | 從沙箱到 Spark 模型(8000)的中繼 |
| DGX Spark | 22 | 應用程式的 SSH 連線 |
若 Spark 上開啟了 ufw 防火牆,安裝過程中會開啟閘道與中繼兩個連接埠。此時需要輸入一次 Spark 帳號密碼。
沙箱不會直接連到網際網路。網路搜尋與網頁讀取由應用程式處理,GitHub 以唯讀方式連線。
模型位址
| 模型 | 沙箱呼叫的位址 |
|---|---|
| 本機模型 | http://localhost:<連接埠>/v1。預設模型 qwen3-8-27b,內容 262,144 |
| DGX Spark 模型 | 經由 Spark 中繼,連到 Spark 的 127.0.0.1:8000/v1 |
| 雲端模型 | Keural 伺服器的 /core/v1/bot/v1。使用為每個 Duo 發行的權杖。 |
| 閘道 | 在 設定 → 模型 → 閘道 中連接的伺服器位址 |
閘道位址若使用 https,任何位址都可以;若使用 http,則只接受私人 IP 或內部名稱(.local、.lan、.internal、.intranet、.home.arpa,或不含點的名稱)。包含 localhost 或 user:pass@ 的位址不接受。
Telegram
- 機器人權杖透過 BotFather 的
/newbot取得,格式為數字:英數字。 - 連線代碼產生後,請在 10 分鐘內以手機開啟機器人,並在 5 分鐘內傳送第一則訊息。傳送第一則訊息的帳號會被允許。
- 群組對話不會回覆。
例行工作限制
| 項目 | 值 |
|---|---|
| 檢查間隔 | 每 30 秒尋找需要執行的例行工作。 |
| 錯過 | 晚於預定時間 10 分鐘以上,則不執行,並標示為錯過。 |
| 暫停 | 連續失敗 3 次後停止。 |
| 重複間隔 | 5 到 1,440 分鐘 |
| 單次執行 | 最多 365 天後 |
| 到期 | 預設 7 天,最長 30 天 |
| 數量 | 開啟的例行工作 10 個,全部 50 個 |
| 時區 | 建立例行工作的電腦時區 |
新增資料夾的規則
以下資料夾無法新增。
| 類別 | 資料夾 |
|---|---|
| 共通 | 磁碟根目錄、使用者資料夾本身及其上層 |
| 使用者資料夾之下 | .ssh、.aws、.gnupg、.kube、.docker、.config、Library、.Trash、AppData |
| macOS | /System、/Library、/usr、/bin、/sbin、/etc、/var、/private、/dev、/Volumes、/Applications、/opt、/cores |
| Windows | Windows、Program Files、Program Files (x86)、ProgramData |
電腦使用權限
| 作業系統 | 必要權限 |
|---|---|
| macOS | 系統設定 → 隱私權與安全性中的 輔助使用、螢幕錄製 |
| Windows | 不需要額外權限,使用 Windows UI 自動化。 |
傳送、刪除、付款、購買、提交、登入、轉帳、發布、取消等按鈕,以及 Enter、Delete、關閉視窗、結束應用程式等按鍵,都會視為敏感步驟,每次確認。
解除安裝時會刪除的內容
按下 刪除 會刪除沙箱、Duo 對話紀錄、例行工作、Telegram、GitHub 與搜尋連線,以及雲端模型權杖。若這台裝置上沒有其他 Duo,macOS 還會刪除 ~/.keural-runtime/ 與自動啟動項目。Mate & Morph 設定與 Spark 連線紀錄會保留。