Web interfaces

控制介面

Control UI 是由閘道提供的小型 Vite + Lit 單頁應用程式:

  • 預設:http://<host>:18789/
  • 選用前綴:設定 gateway.controlUi.basePath(例如 /openclaw

它會在同一個連接埠上直接連線至閘道 WebSocket

當你查看執行中的工作階段時,閘道可以使用該代理程式的工具模型,產生精簡的狀態摘要。聊天介面會將其顯示為單行狀態膠囊,展開後則呈現包含評估、計畫進度、PR 與經過時間的卡片。當執行陷入停滯或需要輸入時,卡片可以自動展開一次;/btw 側邊聊天的優先順序高於展開的卡片。

展開的卡片也接受有關該次執行的簡短問題。回答只會使用觀察器目前的摘要與經過清理且有界限的備註,會在該工作階段期間保留於瀏覽器中,且絕不會進入或中斷主要代理程式的執行。如果觀察內容不包含答案,觀察器會表示無法得知。

第一份摘要抵達後,它會取代啟發式即時活動,成為該次執行的側邊欄副標題。最終的完成或失敗摘要會在工作階段仍為未讀時持續顯示,之後該列會恢復為正常的工作副標題。

工作階段觀察預設為啟用。在 Settings > Appearance > Sidebar 中,你可以在整個閘道範圍內將其關閉、檢查解析後的小型模型及其來源,或選擇自動路由、停用工具工作,或選取明確的 agents.defaults.utilityModel。對應的設定控制項為 gateway.controlUi.sessionObserver: falseagents.defaults.utilityModel: ""

快速開啟(本機)

如果閘道正在同一台電腦上執行,請開啟 http://127.0.0.1:18789/(或 http://localhost:18789/)。

如果頁面無法載入,請先啟動閘道:openclaw gateway

認證會在 WebSocket 交握期間透過下列方式提供:

  • connect.params.auth.token
  • connect.params.auth.password
  • gateway.auth.allowTailscale: true 時使用 Tailscale Serve 身分標頭
  • gateway.auth.mode: "trusted-proxy" 時使用受信任 Proxy 身分標頭

閘道認證會在裝置配對之前執行。直接的回送連線不會略過權杖或密碼認證。儀表板設定面板會針對目前的瀏覽器分頁工作階段與所選閘道 URL 保留權杖;密碼不會持久保存。配對後,瀏覽器可以在後續連線中使用已儲存的個別裝置權杖。

初始設定通常會設定閘道權杖以進行共用祕密認證。如果閘道以權杖模式啟動,但未設定權杖,則會改為為該程序產生暫時性的執行階段權杖。執行階段權杖不會寫入設定,因此 openclaw config get gateway.auth.token 無法擷取它,而沒有該權杖的回送瀏覽器會遭到拒絕。請執行 openclaw doctor --generate-gateway-token、重新啟動閘道,然後將設定的權杖貼到 Control UI 設定中。當 gateway.auth.mode"password" 時,也可以改用密碼認證。

裝置配對(首次連線)

閘道認證成功後,從新的瀏覽器或裝置連線通常需要一次性的配對核准,顯示為 disconnected (1008): pairing required

  • 列出待處理的要求

    bash
    openclaw devices list
  • 依要求 ID 核准

    bash
    openclaw devices approve <requestId>
  • 如果瀏覽器使用已變更的認證詳細資料(角色/範圍/公開金鑰)重試配對,先前待處理的要求會被取代,並建立新的 requestId;請在核准前重新執行 openclaw devices list

    將已配對的遠端瀏覽器從讀取存取權切換為寫入/管理員存取權時,會視為核准升級,而不是無提示重新連線:OpenClaw 會維持舊核准有效、封鎖權限較廣的重新連線,並要求你明確核准新的範圍集合。符合條件的直接回送 Control UI 連線可在完成認證後自動核准升級。

    核准後,系統會記住該裝置,除非你使用 openclaw devices revoke --device <id> --role <role> 撤銷,否則無須再次核准。關於權杖輪替、撤銷,以及 Paperclip / openclaw_gateway 首次執行核准流程,請參閱裝置命令列介面

    配對行動裝置

    已配對的管理員無須開啟終端機,即可建立 iOS/Android 連線 QR Code:

  • 開啟行動裝置配對

    選取 Devices,然後按一下 Devices 卡片中的 Pair mobile device

  • 連線手機

    在 OpenClaw 行動應用程式中,開啟 SettingsGateway 並掃描 QR Code。你也可以改為複製並貼上設定代碼。

  • 確認連線

    官方 iOS/Android 應用程式會自動連線。如果 Pending approval 顯示要求,請先檢視其角色與範圍再予以核准。

  • 建立設定代碼需要 operator.admin;沒有此權限的工作階段會停用該按鈕。設定代碼包含短效啟動認證資訊,因此在 QR Code 與複製的代碼有效期間,請像密碼一樣保護它們。進行遠端配對時,閘道必須解析為 wss://(例如透過 Tailscale Serve/Funnel);純 ws:// 僅限回送與私人 LAN 位址。完整的安全性與備援詳細資訊,請參閱配對

    個人身分(瀏覽器本機)

    Control UI 支援附加至外送訊息的個別瀏覽器個人身分(顯示名稱與頭像),用於共用工作階段中的歸屬標示。它位於瀏覽器儲存空間中,範圍限定於目前的瀏覽器設定檔,不會同步至其他裝置;除了你所傳送訊息上的一般對話記錄作者中繼資料之外,也不會持久保存於伺服器端。清除網站資料或切換瀏覽器會將其重設為空白。

    助理頭像覆寫遵循相同的瀏覽器本機模式:上傳的覆寫會在本機覆蓋閘道解析的身分,且絕不會透過 config.patch 往返傳輸。共用的 ui.assistant.avatar 設定欄位仍可供直接寫入該欄位的非 UI 用戶端使用。

    執行階段設定端點

    Control UI 會從 /control-ui-config.json 擷取執行階段設定,該位置是相對於閘道的 Control UI 基底路徑解析(例如基底路徑 /__openclaw__/ 下的 /__openclaw__/control-ui-config.json)。該端點受與其餘 HTTP 介面相同的閘道認證保護:未經認證的瀏覽器無法擷取,而成功擷取需要有效的閘道權杖/密碼、Tailscale Serve 身分或受信任 Proxy 身分。

    閘道主機狀態

    開啟 Settings → General,即可查看 Gateway Host 卡片,其中包含閘道機器、LAN 位址、作業系統、執行階段、運作時間、CPU 負載、記憶體,以及狀態磁碟區的磁碟空間。卡片顯示時會每 10 秒透過 system.info 閘道 RPC 重新整理,此 RPC 需要 operator.read 範圍。較舊的閘道以及沒有該範圍的連線會省略此卡片。

    語言支援

    Control UI 會在首次載入時根據你的瀏覽器語言地區進行本地化。若要稍後覆寫,請開啟 Settings -> General -> Language(選擇器位於 General 頁面,而非 Appearance 下方)。

    • 支援的語言地區:enardeesfafrhiiditja-JPkonlplpt-BRruthtrukvizh-CNzh-TW
    • 非英文翻譯會在瀏覽器中延遲載入。
    • 所選語言地區會儲存在瀏覽器儲存空間中,並於日後造訪時重複使用。
    • 缺少的翻譯鍵會回退至英文。

    文件翻譯會針對相同的非英文語言地區集合產生,但文件網站內建的 Mintlify 語言選擇器只會列出 Mintlify 接受的語言地區代碼。泰文(th)和波斯文(fa)文件仍會在發布儲存庫中產生;在 Mintlify 支援這些代碼之前,它們可能不會出現在該選擇器中。

    外觀佈景主題

    Appearance 面板內建 Claw、Knot 和 Dash 佈景主題(預設為 Claw),另有一個僅限瀏覽器本機的 tweakcn 匯入插槽。若要匯入佈景主題,請開啟 tweakcn 編輯器,選擇或建立佈景主題,按一下 Share,再將複製的連結貼到 Appearance。匯入工具也接受 https://tweakcn.com/r/themes/<id> 登錄 URL、如 https://tweakcn.com/editor/theme?theme=amethyst-haze 的編輯器 URL、相對 /themes/<id> 路徑、原始佈景主題 ID,以及如 amethyst-haze 的預設佈景主題名稱。

    匯入的佈景主題只會儲存在目前的瀏覽器設定檔中;不會寫入閘道設定,也不會跨裝置同步。替換匯入的佈景主題會更新該本機插槽;如果當時使用的是匯入的佈景主題,清除後會切換回 Claw。

    Appearance 也有 Text size 設定。它會套用至聊天文字、撰寫器文字、工具卡片與聊天側邊欄,並確保文字輸入至少為 16px,避免行動版 Safari 在聚焦時自動縮放。

    主題、主題模式、文字大小、語言和聊天顯示偏好會透過閘道設定 (ui.prefs) 同步,因此這些設定會隨你跨裝置套用,代理程式也能透過核准閘門變更它們——已連線的用戶端會經由閘道的 config.changed 通知即時套用變更。每個瀏覽器都會保留本機鏡像,以便立即啟動;無法寫入設定的用戶端(檢視者範圍、離線)則僅在該裝置上保留變更。請參閱設定參考

    OpenClaw 系統維護

    開啟 Settings → Ask OpenClaw,與系統設定及修復代理程式交談。在新手引導之外,此頁面每次造訪最多顯示一個可關閉的事件標籤。對於例行的閘道流量,它會保持靜默,僅在健康情況快照回報設定重新載入器已停用、已設定的頻道中斷連線或效能降低、頻道探測失敗,或頻道認證資訊無法使用時作出反應。只有嚴重程度更高的新事件才會取代待處理的標籤;關閉或使用標籤後,本次造訪期間將不再顯示事件提示。按一下標籤會將其診斷問題以真正的 openclaw.chat 訊息傳送,因此逐字記錄會保留該要求,並由 OpenClaw 執行診斷。新手引導期間絕不會顯示這些事件標籤。

    管理外掛

    開啟側邊欄中的 外掛,或使用相對於已設定 Control UI 基底路徑的 /settings/plugins,即可在不離開 Control UI 的情況下瀏覽及管理外掛。 例如,基底路徑為 /openclaw 時,會使用 /openclaw/settings/plugins。即使所有選用外掛都已停用,此頁面仍一律可用。

    外掛是一個包含四個分頁的中心:已安裝探索用於管理 /settings/plugins 中的外掛程式碼,Skills/skills 提供各代理程式的技能管理器,而工作坊則在 /skills/workshop 提供 Skill Workshop 提案審查。每個分頁都會保留自己的 URL,而側邊欄則以單一的外掛項目代表所有分頁。

    已安裝分頁會依類別分組顯示完整的本機清單,並提供總覽計數。 每一列都可開啟詳細資料檢視;其溢位 () 選單可啟用 或停用外掛,並為外部安裝的外掛提供移除選項。 其中也會列出已設定的 MCP 伺服器,並支援直接新增、停用及 移除。相同的伺服器控制項也位於 Settings → MCP探索分頁就是商店:其中包含隨 OpenClaw 提供的精選外掛、 官方外部外掛,以及熱門服務的一鍵式 MCP 連接器。 在搜尋框中輸入內容會直接查詢 ClawHub,並附加來自 ClawHub 區段,其中包含下載次數和來源驗證徽章。深層連結可透過 /settings/plugins?tab=discover 直接指向商店。

    Skills 分頁會保留技能狀態報告、啟用/停用切換開關、API 金鑰輸入,以及內嵌的 ClawHub 技能搜尋,範圍限定於所選代理程式。 工作坊分頁會保留 Skill Workshop 看板和今日的 技能提案審查流程。尋找技能構想會從最新到最舊, 審查一段有限範圍內的重要工作階段,並將任何結果保留為待處理提案。 面板會顯示累計涵蓋範圍;掃描較早的工作會從已保存的游標繼續, 在較舊的歷史記錄耗盡後則變為掃描新工作。即使自主自我學習已停用, 仍可手動審查歷史記錄,並會使用所選代理程式已設定的模型。

    隨附的外掛已存在於閘道上,並會顯示啟用停用,而非安裝。 例如,Workboard 隨 OpenClaw 提供但預設為停用,因此其動作為啟用。 隨附的外掛無法移除,只能停用。

    讀取目錄及搜尋 ClawHub 需要 operator.read。安裝、 啟用、停用或移除外掛,以及變更 MCP 伺服器,則需要 operator.admin;唯讀操作員無法使用這些動作。

    ClawHub 安裝會透過閘道執行,並採用與其他閘道媒介安裝相同的信任、完整性 及外掛安裝原則檢查。安裝或移除外掛程式碼需要重新啟動閘道。若外掛和目前的 閘道執行階段支援,啟用或停用已安裝的外掛可在不重新啟動的情況下套用; 否則 UI 會回報需要重新啟動。新增由 OAuth 支援的 MCP 連接器後, 需要從命令列介面執行一次 openclaw mcp login <name>

    此頁面刻意聚焦於清單、探索、安裝、啟用和移除。若要使用任意 npm、git 或本機路徑來源、進行更新及進階外掛設定,請使用 openclaw plugins

    應用程式與擴充功能

    從側邊欄的 More 選單、命令選擇區或側邊欄代理程式選單 (Get the apps) 開啟應用程式,或使用相對於已設定 Control UI 基底路徑的 /apps。此頁面彙整每個 OpenClaw 伴隨介面的安裝連結: iOSAndroid 應用程式、 與其一同隨附的 Apple Watch 和 Wear OS 伴隨程式、 macOSWindowsLinux 桌面應用程式、 Chrome 擴充功能、包含 ClawHub 的應用程式內外掛中心,以及 Discord 社群和文件。

    側邊欄導覽

    側邊欄以代理程式為中心組織所有內容。頂端的身分列是作用中的代理程式;其下方的頁面區段以首頁開始——這是代理程式持續更新的主要工作階段,並以徽章顯示其未讀或執行中狀態——後面接著釘選的目的地(預設為自動化外掛)。頁面標題上的自訂控制項會開啟包含其他所有目的地的選單,其中包括使用量、外掛提供的分頁,以及編輯釘選項目;在導覽區域按一下滑鼠右鍵可直接開啟釘選編輯器。下方的工作階段清單分為數個區域:討論串用於代理程式的聊天工作階段(主要工作階段保留在首頁後方;由它產生的工作階段會在此顯示為頂層討論串,而具名討論串不會顯示類型前綴)、群組用於群組和聊天室對話,以及程式設計用於繫結至受管理工作樹或執行節點的工作階段(各列會顯示 repo ⎇ branch 行及節點主機)、由 ACP 支援的測試工具工作階段,以及 Codex/Claude 命令列介面目錄。程式設計區域在首次執行時預設收合,並會記住你的選擇;收合後的標題仍會保留實際計數,且所含工作階段執行時會顯示執行中指示器。自訂群組(工作階段的 category)和已釘選列位於討論串上方,而將工作階段指派至自訂群組,一律優先於自動區域分類。討論串標題包含排序控制項(建立時間或上次更新時間、分組依據,以及可保存的狀態篩選器,可選作用中、已封存或全部)和用來開啟新工作階段頁面的 +。已封存的列仍會以暗色顯示在原處,並帶有封存圖示;它們不會計入未讀或需要注意的狀態,也不會參與譜系提升。開啟工作階段只會移動選取醒目提示,不會重新排列各列。近期有子項執行的父工作階段會顯示展開控制項和子項計數;展開後即可在不離開側邊欄的情況下,檢查巢狀子工作階段、即時或終止狀態,以及執行階段。選取子項會開啟其聊天,並自動顯示其祖先路徑。子項列不會參與根層級分組、釘選、拖曳、多重選取及分頁;收合的區域不會占用可見頁面額度。自上次讀取後有新活動的工作階段會顯示未讀圓點,開啟後即標示為已讀。代理程式也能發布一行短暫有效的狀態,並可選擇以精選的琥珀色圖示要求注意;當你開啟工作階段、傳送下一則訊息、明確清除狀態,或其 TTL 到期時,此宣告便會清除。雲端工作者的生命週期狀態使用地球徽章;本機和已收回的工作階段不顯示位置徽章,因為本機執行是預設值。每個根工作階段列都有快顯選單(三點按鈕或按一下滑鼠右鍵),其中包含釘選/取消釘選、標示為未讀/已讀、重新命名、分支、移至群組(包括新增群組和從群組移除)、封存或取消封存,以及刪除;觸控版面會讓直接釘選和選單控制項保持可見。按住 Cmd/Ctrl 並按一下可切換根列的多重選取狀態,按住 Shift 並按一下則會依可見順序延伸選取範圍;接著在所選列上開啟選單時,會提供批次動作(將 N 個標示為未讀/已讀、將 N 個移至群組、封存 N 個、刪除 N 個),並套用至所有選取的工作階段,而批次刪除只需確認一次。將根工作階段拖曳至已釘選即可釘選,或拖曳至自訂群組即可移動。自訂群組標題可以收合、展開或拖曳以重新排序;群組名稱及其順序儲存在閘道 (sessions.groups.*) 中,因此會隨你跨瀏覽器套用,而收合狀態則保留在瀏覽器設定檔中。群組標題也有選單(三點按鈕或按一下滑鼠右鍵),其中包含重新命名群組、新增群組和刪除群組;重新命名或刪除群組時,會在伺服器端更新每個成員工作階段,包括已封存的工作階段,而刪除群組會保留其中的工作階段,並將其移回討論串。

    新工作階段頁面

    側邊欄工作階段清單標題中的 + 會在 /new 開啟整頁草稿:在你傳送第一則訊息前,不會建立任何項目。統一的位置選擇器可選擇工作資料夾,且管理員操作員還能選擇執行目的地:閘道 · 本機、公開 system.run 的已配對節點,或可用的雲端設定檔。資料夾預設為代理程式工作區;其他絕對閘道路徑需要 operator.admin,但即使不是 Git 簽出,也能直接執行。若所選閘道資料夾是 Git 簽出,同一選擇器會提供選用的工作樹隔離功能,並搭配由 worktrees.branches 支援的基底分支選擇器(不執行擷取)及選用的工作樹名稱(分支會變為 openclaw/<name>)。雲端工作者必須使用該受管理的工作樹路徑;已配對節點絕不會公開此選項。編輯器頁尾可選擇新工作階段的模型和推理層級。其無痕切換開關會建立僅限網頁的討論串,其工作階段項目、逐字記錄和壓縮狀態都會保留在記憶體中,直到閘道重新啟動;OpenClaw 也會略過其自動記憶清理。代理程式仍保有一般工具,因此明確的儲存要求或工具驅動的檔案寫入仍可將資料保存下來。模型提供者仍會處理訊息,且不含內容的稽核中繼資料仍會被記錄。雲端啟動會先保存模型和推理選擇,再將工作階段分派給其工作者。

    在多使用者閘道上,只有具管理員範圍的連線可以建立或檢視無痕討論串,其他工作階段也無法透過代理程式工作階段工具或逐字記錄搜尋存取它們。無痕模式可防止資料被儲存或被其他透過閘道操作的使用者存取,但無法防範閘道擁有者或程序操作員,因為他們始終可以觀察即時工作階段。

    瀏覽資料夾會開啟位置選擇器的內嵌目錄瀏覽器,此功能由僅限管理員的 fs.listDir 方法支援,且範圍限定於所選閘道或節點。閘道和具備瀏覽功能的節點會列出其檔案系統;具備執行功能但沒有 fs.listDir 的節點,仍可接受手動輸入的絕對路徑。最近使用的位置可以一併還原資料夾及其所屬節點,而不會跨主機沿用路徑。提交時會使用第一則訊息呼叫 sessions.create,因此執行會在同一次往返中開始,UI 也會跳至新工作階段的聊天。若閘道已建立工作階段,但拒絕第一次傳送,聊天會在重新載入後保留提示和錯誤;重試會透過已建立的工作階段傳送,而不會再建立另一個工作階段。

    Settings 中,專用側邊欄包含 Ask OpenClaw,並以搜尋設定欄位開頭,方便快速尋找設定區段。

    在桌面版網頁中,內容區域左上角有一組固定控制項,對應 macOS 的標題列控制帶,其中包含收合側邊欄切換按鈕(⌘B)和命令選擇區搜尋按鈕(⌘K)。按一下側邊欄頂端的代理程式身分列,即可開啟代理程式選單;首頁會開啟主要工作階段。當有項目需要處理時(例如失敗或逾期的排程工作、即將到期或已到期的模型驗證),側邊欄頁尾上方會顯示精簡的注意事項籤,按一下即可前往負責該項目的頁面。身分列會顯示代理程式的頭像(身分圖片或表情符號)、名稱、連線狀態圓點,以及即時副標題。其代理程式範圍選單包含內嵌代理程式切換器(多代理程式設定)、新增代理程式、“這個代理程式能做什麼?”和代理程式設定。代理程式清單超過十個時,會顯示篩選欄位,並優先列出已釘選的代理程式;你可以在代理程式設定頁面釘選或取消釘選代理程式,釘選集合會儲存在瀏覽器設定檔中。選擇代理程式後,聊天、用量、自動化、任務、工作看板和工作階段都會限定於該代理程式。每個限定範圍的頁面都會提供代理程式控制項,並可選擇所有代理程式來退出限定範圍;這會擴大共用頁面的範圍,而不會變更實際聊天使用的代理程式,直接工作階段連結仍會開啟其目標。代理程式設定頁面會保留自己的 ?agent= 選取項目,不會跟隨共用頁面範圍。頁尾是一張全寬身分卡,即使離線也仍可使用,並會在最後已知的帳戶名稱下方顯示正在重新連線…。它會開啟應用程式/帳戶選單,其中的設定檔身分標頭後依序提供設定用量、行動裝置配對、取得應用程式說明(說明、Discord、文件和變更記錄)、需要時顯示的離線重試動作、版本/組建標籤,以及色彩模式切換按鈕。組建標籤會開啟「關於」頁面。當閘道從來源簽出執行,且所在分支不是 main 時,頁尾也會以紅色顯示該分支名稱,讓人一眼就能辨識這是非發行版閘道(發行版安裝永遠不會顯示此資訊)。在 Apple 平台上按 Shift-Command-Comma,或在其他平台上按 Ctrl-Shift-Comma,即可開啟設定,且不會覆寫瀏覽器原有的 Command-Comma 快速鍵。收合側邊欄(按 ⌘B 或控制項組中的切換按鈕)會將其完全隱藏,以提供全寬工作區;收合時,左上角控制項組會保留展開切換按鈕和搜尋功能,並新增討論串按鈕,對應 macOS 應用程式原生置於標題列中的功能。側邊欄是桌面版唯一的導覽介面,不另設頂端列。較窄的檢視區會以滑出式抽屜取代側邊欄,並在精簡標頭列中放置抽屜切換按鈕、品牌標誌和命令選擇區搜尋;在手機上,聊天會將該導覽列整合到標題列中,並在工作階段標題旁顯示選單和搜尋控制項。在 macOS 應用程式中,獨立的標頭列會將標題列的預留空間整合成視窗控制項旁的一條精簡控制帶。導覽會使用一般瀏覽器記錄,因此可透過瀏覽器的上一頁/下一頁按鈕瀏覽;macOS 應用程式還會在視窗控制項旁新增原生側邊欄切換按鈕和觸控式軌跡板滑動手勢,側邊欄展開時會在其右側邊緣顯示上一頁/下一頁按鈕,收合時則顯示原生搜尋(命令選擇區)和新增工作階段按鈕。

    待核准項目也會在側邊欄頁尾上方顯示注意事項籤; 選取該標籤即可開啟負責該項目的核准頁面。

    目前可執行的功能

    聊天與語音交談
    • 透過閘道 WS 與模型聊天(chat.historychat.sendchat.abortchat.inject)。已封存的工作階段會停用輸入區,並顯示含有取消封存動作的橫幅,必須先執行該動作才能繼續對話。
    • 重新整理聊天記錄時,會要求取得有限的近期範圍,並限制每則訊息的文字量,因此大型工作階段不會迫使瀏覽器在聊天可用之前先轉譯完整的逐字記錄承載資料。
    • 將滑鼠移到公開的 GitHub 議題或 PR 連結上,或使用鍵盤將焦點移至該連結時,會顯示其狀態、標題、作者、近期活動、留言和變更統計資料。已連線的閘道會擷取並快取公開中繼資料,而不變更連結目標,即使使用者介面使用遠端閘道時也是如此。閘道會在確認儲存庫為公開後,優先使用可用的 GH_TOKENGITHUB_TOKEN;否則會使用 GitHub 的匿名 API,並採用較長的快取時間。
    • 透過瀏覽器即時工作階段進行語音交談。OpenAI 使用直接 WebRTC,Google Live 透過 WebSocket 使用受限的單次瀏覽器權杖,而僅限後端的即時語音外掛則使用閘道轉送傳輸。支援視訊的瀏覽器工作階段可以在設定中選擇裝置本機攝影機,或從即時預覽切換攝影機;瀏覽器會擷取 JPEG 畫面供即時提供者使用,而不會透過閘道串流攝影機影片。由用戶端擁有的提供者工作階段會以 talk.client.create 啟動;閘道轉送工作階段則以 talk.session.create 啟動。轉送機制會將提供者認證資訊保留在閘道上,同時讓瀏覽器透過 talk.session.appendAudio 串流麥克風 PCM,透過 talk.client.toolCall 轉送 openclaw_agent_consult 提供者工具呼叫,以套用閘道政策及使用已設定的較大型 OpenClaw 模型,並透過 talk.client.steertalk.session.steer 路由執行中作業的語音引導。
    • 在聊天中串流工具呼叫和即時工具輸出卡片(代理程式事件)。工具活動會依類型轉譯成不同的資料列:Shell 命令會顯示經語法醒目提示的命令與終端機樣式輸出;支援的編輯和寫入呼叫會顯示有限範圍的內嵌差異、可用時顯示行號,以及 +added -removed 統計資料;連續呼叫則會收合成摘要,例如“執行了 13 個命令、讀取了 6 個檔案、編輯了 9 個檔案”。作業執行期間,最新執行中的呼叫名稱會成為群組標頭。展開資料列即可檢查其餘引數和原始輸出。
    • 複雜工具呼叫(長 Shell 命令、引數眾多的外掛工具)可選用 AI 目的標題,透過 gateway.controlUi.toolTitles: true 啟用(預設關閉)。標題由批次 chat.toolTitles 方法透過標準公用模型路由產生,也就是使用明確指定的 utilityModel(由操作員選擇的提供者,與其他公用任務相同),否則使用工作階段提供者宣告的預設小型模型,並由閘道依代理程式進行快取。未選擇加入此功能或沒有可用的低成本模型時,資料列會保留其確定性標籤,而且不會呼叫模型。
    • 啟動或略過模型建議的暫時性後續任務;接受建議後,會使用建議的提示詞開啟全新的受管理工作樹工作階段。
    • 「活動」分頁會根據現有的 session.tool/工具事件傳遞,在瀏覽器本機提供優先遮蔽敏感資訊的即時工具活動摘要。
    頻道、工作階段與記憶
    • 頻道:內建及隨附/外部外掛頻道的狀態、QR 登入和各頻道設定(channels.statusweb.login.*config.patch)。
    • 頻道探測重新整理會在較慢的提供者檢查完成前持續顯示先前的快照,並在探測或稽核超過使用者介面時間預算時標示部分完成的快照。
    • 討論串(位於 /sessions 的工作區頁面,旁邊另有工作樹分頁):預設列出已設定代理程式的工作階段、釘選常用工作階段、重新命名、封存或還原非使用中的工作階段、在未設定代理程式的過時工作階段金鑰失效時採用替代處理,並套用各工作階段的模型/思考/快速/詳細/追蹤/推理覆寫(sessions.listsessions.patch)。三向的使用中/已封存/全部篩選器會同時控制此頁面和側邊欄;「全部」會淡化已封存資料列,並明確加上標籤。已封存的工作階段會保留逐字記錄、永遠不會自動刪除,且會持續擱置,直到明確取消封存或刪除為止。若使用中的工作階段在上次讀取後有新活動,資料列會顯示未讀圓點,並提供標示為未讀/標示為已讀的動作(sessions.patch { unread }),以及將逐字記錄分支成新工作階段的「分支」動作(sessions.create { parentSessionKey, fork: true })。表格上方的概覽圖塊會摘要已載入的清單(工作階段數量、即時作業、未讀工作階段、權杖總數,以及可用時的已封存數量);每個資料列都有表示類型的字符圖示,並以圓點標示即時作業;狀態會顯示為一般圓點加標籤;當工作階段回報權杖和內容脈絡大小時,「權杖」欄會顯示內容脈絡視窗用量計。資料列管理動作位於各資料列的選單中(三點按鈕或按一下滑鼠右鍵),與側邊欄的工作階段選單相互對應;資料列抽屜則會在其他工作階段詳細資料旁顯示代理程式執行階段和作業持續時間。
    • 原生 Claude 和 Codex 側邊欄目錄一次串流一台主機,然後在節點連線狀態變更後、頁面取得焦點時,以及頁面可見期間最多每 30 秒重新協調一次。目錄變更會觸發速度更快的後續處理,因此在原生工具中建立的工作階段無須重新載入控制使用者介面即可顯示。Claude Desktop 資料列也會保留其本機自訂群組標籤(如果存在);OpenClaw 會從 Desktop 的本機儲存空間讀取該對應關係,但絕不寫入。
    • 工作階段分組:「分組依據」控制項可依自訂群組、頻道、類型、代理程式或日期,將工作階段表格整理成不同區段。自訂群組會透過 sessions.patchcategory)依工作階段保留,因此從訊息頻道(Discord、Telegram、WhatsApp 等)啟動的工作階段也能分類;你可以將資料列拖曳到區段上,或使用各資料列的群組選擇器來指派群組,並透過「新增群組」動作建立群組。
    • 記憶(代理程式頁面上的分頁,範圍限定於所選代理程式):夢境整理狀態、啟用/停用切換按鈕和夢境日記閱讀器(doctor.memory.statusdoctor.memory.dreamDiaryconfig.patch)。
    • 匯入記憶(/memory-import,從代理程式頁面的「記憶」分頁進入):預覽本機 Claude Code 自動記憶、Codex 彙整記憶或 Hermes 記憶檔案,並將其複製到所選代理程式工作區(migrations.memory.planmigrations.memory.apply)。
    • 初始設定記憶提議:控制使用者介面以初始設定模式開啟時(?onboarding=1,由 Linux 隨附應用程式在首次執行安裝後使用),單頁對話方塊會提供以相同規劃/套用流程匯入偵測到的記憶;略過後,仍可日後從設定頁面進入此功能。
    排程、任務、外掛、Skills、裝置、執行核准
    • 自動化(排程工作):在「自動化/執行記錄」分頁切換器上方顯示統計卡片(自動化數量、失敗數量、排程器狀態、下次喚醒時間);「自動化」分頁會在可篩選的表格中列出工作(全部/啟用中/已暫停、搜尋、排程與上次執行篩選器、每列動作選單),下方提供入門建議,而「執行記錄」分頁則顯示所有自動化最近的執行記錄(cron.*)。
    • 任務:即時顯示進行中及最近的背景任務紀錄,並提供連結的工作階段與取消功能(tasks.*)。聊天的「背景任務」側欄會將執行中和已完成的工作分組;選取一列即可檢查其範圍受限的提示詞與輸出或錯誤摘要。
    • 外掛:瀏覽已安裝清單與精選商店、搜尋 ClawHub、安裝及移除外掛程式碼,以及啟用或停用已安裝的外掛(plugins.*);MCP 伺服器列會透過設定方法編輯 mcp.servers
    • Skills:狀態、啟用/停用、安裝、API 金鑰更新(skills.*)。
    • 裝置:單一清單整合已配對裝置記錄、節點目錄和即時上線狀態(device.pair.listnode.listsystem-presence)。閘道主機固定顯示在最前面;已配對的用戶端會顯示連線狀態、角色、權杖、功能與命令。重複配對會合併成可展開的群組,而 清理 N 個過期項目 會批次移除經管理員確認為離線的重複項目,這些項目可能是自動核准的(靜默本機、受信任的 CIDR 或經 SSH 驗證),或建立於核准來源追蹤之前。可移除項目(node.pair.removedevice.pair.remove),並可直接處理裝置配對與節點重新核准(device.pair.*node.pair.approve/reject),也可從同一張卡片建立行動裝置設定碼。
    • 執行核准:編輯閘道或節點的允許清單,以及 exec host=gateway/node 的詢問原則(exec.approvals.*)。
    設定
    • 檢視/編輯 ~/.openclaw/openclaw.jsonconfig.getconfig.set)。
    • 設定導覽從「詢問 OpenClaw」開始,接著依關注面向將頁面分組:頂端為「一般」、「外觀」和「通知」;「連線」(連線、頻道、通訊、裝置);「代理程式與工具」(代理程式、AI 與代理程式、模型供應商、MCP、自動化、實驗室);「隱私權與安全性」(安全性、核准);以及「系統」(基礎架構、進階、偵錯、記錄、關於)。「一般」是精簡的中樞,包含模型預設值、語言和閘道主機統計資料;其他每項設定都只位於一個頁面中。
    • 隱私權與安全性:在由結構描述支援的 security/approvals 區段上方,提供閘道驗證、執行原則、瀏覽器啟用、工具設定檔、裝置驗證和行動裝置配對的精選列。
    • 「核准」包含依最新優先排序的 30 天歷史記錄,涵蓋已解決的執行、外掛和系統代理程式要求。可依類型篩選或翻閱較舊的列,以檢視閘道所記錄的決定、原因、來源工作階段和處理者歸屬資訊。
    • 「實驗室」顯示已隨產品提供的實驗性開關。目前的項目為「程式碼模式」與「群集」,並會立即儲存 tools.codeMode.enabledtools.swarm.enabled;尚未發布的實驗不會顯示,也不會寫入推測性的設定鍵。
    • 通知:瀏覽器網頁推播狀態、訂閱/取消訂閱,以及測試傳送。
    • 進階:所有沒有精選首頁的設定區段,加上原始 JSON5 編輯器(先前位於「一般」頁面的「進階」模式)。
    • 模型設定(/settings/model-setup)是「模型供應商」的子頁面,可從其頁首開啟。
    • 代理程式:設定頁面(設定 → 代理程式/settings/agents),包含各代理程式的分頁(概觀、檔案、工具、Skills、頻道、自動化、記憶)。「概觀」分頁可編輯代理程式的身分識別資訊——顯示名稱、表情符號,以及在 agents.update 前由瀏覽器縮小並限制大小的頭像圖片。儲存時會保存已設定的身分識別欄位,並將其同步至工作區 IDENTITY.md;設定值優先於對同一檔案欄位的手動編輯。
    • 設定檔:顯示預設代理程式身分識別資訊的設定頁面,並附有完整使用統計資料——終身權杖數、使用高峰日、最長工作階段、活動連續天數、全年權杖熱圖、最常用工具和頻道重點(usage.costsessions.usage)。
    • MCP 有專用的設定頁面,包含伺服器列(傳輸方式、啟用狀態、OAuth/篩選器/平行處理摘要)、直接新增/啟用/停用/移除控制項、常用操作命令,以及限定範圍的 mcp 設定編輯器。「外掛」頁面仍是一鍵連接器與探索功能的首頁。
    • 模型供應商:設定頁面會列出每個已設定的模型供應商,包含其品牌圖示、驗證狀態(models.authStatus)、模型可用性(models.list)、供應商有回報時的即時方案/配額/帳務資料(usage.status),以及最近 30 天的本機工作階段花費(sessions.usage)。「重新整理」動作會重新讀取認證資訊狀態和供應商用量。
    • 連線:「連線」群組下的設定頁面,負責儀表板本身的閘道連結——WebSocket URL、閘道權杖、密碼和預設工作階段金鑰——以及最新的交握快照(狀態、運作時間、計時週期、上次頻道重新整理時間)。離線登入閘門會處理中斷連線的情況;此頁面則用於在已連線時編輯連線。
    • 套用並在驗證後重新啟動(config.apply),接著喚醒最後一個作用中的工作階段。
    • 寫入操作包含基礎雜湊防護,以避免覆寫同時進行的編輯。
    • 寫入操作(config.set/config.apply/config.patch)會預先檢查所提交設定承載資料中參照項目的作用中 SecretRef 解析;若提交的作用中參照無法解析,會在寫入前遭拒絕。
    • 表單儲存會捨棄無法從已儲存設定還原的過期遮蔽預留位置,同時保留仍對應至已儲存密鑰的遮蔽值。
    • 結構描述和表單呈現來自 config.schema / config.schema.lookup,包括欄位 title/description、相符的 UI 提示、直接子項摘要、巢狀物件/萬用字元/陣列/組合節點上的文件中繼資料,以及可用時的外掛與頻道結構描述。只有當快照能安全地進行原始內容來回轉換時,才能使用原始 JSON 編輯器;否則控制介面會強制使用「表單」模式。
    • 原始 JSON 編輯器的「重設為已儲存內容」會保留原始編寫的形狀(格式、註解、$include 配置),而不會重新呈現扁平化快照,因此當快照能安全地來回轉換時,外部編輯可在重設後保留。
    • 結構化 SecretRef 物件值在表單文字輸入欄位中會以唯讀方式呈現,以防止意外將物件損毀成字串。
    用量
    • 源自工作階段的權杖和預估成本分析會與供應商帳務分開。
    • 供應商卡片會呼叫 usage.status,並顯示已設定供應商外掛所回報的即時方案名稱、配額週期、餘額、花費和預算。
    • 供應商用量查詢失敗不會阻擋工作階段/成本儀表板;無法使用的供應商卡片會顯示各自的錯誤狀態。
    偵錯、記錄、更新
    • 偵錯:狀態/健康情況/模型快照、事件記錄和手動 RPC 呼叫(statushealthmodels.list)。
    • 事件記錄包含控制介面重新整理/RPC 計時、緩慢的聊天/設定呈現計時,以及當瀏覽器公開這些 PerformanceObserver 項目類型時,長動畫影格或長時間任務的瀏覽器回應性項目。
    • 記錄:即時追蹤閘道檔案記錄,並提供篩選/匯出功能(logs.tail)。
    • 更新:執行套件/git 更新並重新啟動(update.run),同時提供重新啟動報告;重新連線後再輪詢 update.status,以驗證執行中的閘道版本。
    自動化面板附註
    • 選取一列會開啟全頁詳細資料檢視,頁首包含「啟用中/已暫停」開關和「立即執行」(其選單中另有到期才執行、複製和移除);「設定」分頁可直接編輯自動化(提示詞、詳細資料、頻率、進階覆寫),而「執行記錄」分頁則顯示該自動化的執行記錄。
    • 表格下方的入門自動化會使用可編輯的提示詞和排程預先填入建立表單。
    • 對於隔離任務,傳送方式預設為公告摘要;若僅供內部執行,請切換為無。
    • 選取公告時會顯示頻道/目標欄位。
    • 網路鉤子模式使用 delivery.mode = "webhook",且須將 delivery.to 設為有效的 HTTP(S) 網路鉤子 URL。
    • 對於主要工作階段任務,可使用網路鉤子和無傳送模式。
    • 進階編輯控制項包含執行後刪除、清除代理程式覆寫、排程精確/錯開選項、代理程式模型/思考覆寫,以及盡力傳送開關。
    • 表單驗證會直接顯示欄位層級的錯誤;修正前,無效值會停用儲存按鈕。
    • 設定 cron.webhookToken 以傳送專用的 bearer 權杖;若省略,傳送網路鉤子時不會包含驗證標頭。
    • cron.webhook 是已淘汰的舊版備援,目前的設定驗證會拒絕它。執行 openclaw doctor --fix,將仍使用 notify: true 的已儲存工作遷移至明確的逐工作網路鉤子或完成傳送,並移除舊鍵。

    匯入助理記憶

    開啟 設定匯入記憶,將本機 Codex 或 Claude Code 記憶 匯入 OpenClaw 代理程式。閘道會自行探索其所在 主機上支援的本機記憶,因此遠端控制介面會從閘道電腦匯入,而非從 瀏覽器電腦匯入。

    1. 選擇目的代理程式。
    2. 檢閱偵測到的來源集合與 Markdown 檔名。檔案內容 不會在規劃回應中傳送,也不會顯示於頁面中。
    3. 選取要匯入的集合並確認。套用會在 寫入前重新建立規劃,讓過期的選取項目安全地失敗。
    4. 若檔案已存在,請啟用 取代現有匯入項目、重新整理 預覽,然後確認取代。

    Codex 僅匯入其整合後的 MEMORY.mdmemory_summary.md。Claude Code 會從專案自動記憶目錄和已設定的 autoMemoryDirectory 匯入 Markdown;它不會透過此頁面匯入工作階段、設定、指示或 認證資訊。檔案會複製到所選工作區中的 memory/imports/ 之下,作用中的記憶外掛可在該處為其建立索引。來源 絕不會被變更。

    規劃與套用需要 operator.admin。每次套用都會在有狀態資料時建立經驗證的 OpenClaw 備份、寫入已遮蔽的遷移報告,並在取代現有目的檔案前保留 項目層級的備份。如需路徑和 回想行為,請參閱記憶概觀

    MCP 頁面

    專用 MCP 頁面是供操作者檢視 OpenClaw 所管理之 MCP 伺服器的介面,這些伺服器位於 mcp.servers 之下。它本身不會啟動 MCP 傳輸;請使用此頁面檢查及編輯已儲存的設定,並在需要即時伺服器驗證時使用 openclaw mcp doctor --probe

    一般工作流程:

    1. 從側邊欄開啟 MCP
    2. 查看摘要卡片中的伺服器總數、已啟用、OAuth 與已篩選數量。
    3. 檢查每個伺服器列的傳輸方式、啟用狀態、驗證、篩選器、逾時與命令提示。
    4. 直接在 MCP 頁面新增、啟用、停用或移除伺服器。明確選擇 Streamable HTTP、SSE 或 stdio;stdio 命令列接受引號括住的引數,例如包含空格的路徑。使用 Plugins 頁面進行一鍵連接與探索。
    5. 編輯限定範圍的 mcp 設定區段,以設定環境變數、工作目錄、標頭、TLS/mTLS 路徑、OAuth 中繼資料、工具篩選器與 Codex 投影中繼資料等進階伺服器欄位。
    6. 使用 Save 寫入設定;若要讓執行中的閘道套用變更後的設定,則使用 Save & Publish
    7. 從終端機執行 openclaw mcp status --verboseopenclaw mcp doctor --probeopenclaw mcp reload,以進行靜態診斷、即時驗證或清除快取的執行階段。

    此頁面會在算繪前遮蔽含認證資訊且類似 URL 的值,並在命令片段中以引號括住伺服器名稱,讓複製的命令即使包含空格或 shell 中繼字元仍可正常運作。完整的命令列介面與設定參考:MCP

    活動分頁

    活動分頁位於 Settings › System,在 Logs 和 Debug 旁邊。它是暫時性的瀏覽器本機即時工具活動觀察器,資料來自支援聊天工具卡片的同一個閘道 session.tool/工具事件串流。它不會新增其他閘道事件系列、端點、持久活動儲存區、指標動態消息或外部觀察器串流。

    活動項目只會保留經過清理的摘要,以及經遮蔽與截斷的輸出預覽。工具引數值不會儲存在活動狀態中;使用者介面會顯示引數已隱藏,且只記錄引數欄位數量。記憶體內的清單跟隨目前的瀏覽器分頁,在控制介面內導覽時會保留,並在重新載入頁面、切換工作階段或按下 Clear 時重設。

    操作員終端機

    可停駐的操作員終端機預設為停用。若要啟用,請設定 gateway.terminal.enabled: true 並重新啟動閘道。終端機需要 operator.admin 連線,並在目前作用中代理程式的工作區內開啟主機 PTY。新分頁會跟隨目前選取的聊天代理程式。

    使用 Ctrl + backtick 切換停駐面板。版面配置支援停駐於底部或右側、隨瀏覽器檢視區調整大小,並保留多個 shell 分頁。關於 gateway.terminal.enabled 與選用的 gateway.terminal.shell 覆寫值,請參閱閘道設定

    經擁有者授權且未受沙箱限制的代理程式,可使用 terminal 工具處理需要操作員監看的長時間或互動式工作。每次工具呼叫都可以開啟、讀取、寫入、調整大小、關閉代理程式自己的閘道 PTY,或列出這些 PTY。新工作階段預設會開啟共同連接的控制介面分頁,讓代理程式與操作員共用輸出,且雙方皆可輸入或調整大小。代理程式存取權限精確限定於工作階段:代理程式無法讀取或控制操作員建立的終端機,或由其他代理程式工作階段開啟的終端機。

    將一或多個檔案拖曳到作用中的終端機,或使用迴紋針按鈕選擇檔案。OpenClaw 會在擁有該 PTY 的機器上暫存每個檔案,並在游標位置貼上經 shell 引號處理的絕對路徑;它絕不會按下 Enter 或執行輸入。精簡的批次指示器會顯示目前檔案與已完成數量。取消會停止剩餘批次而不貼上路徑;傳輸失敗的檔案會保持顯示,讓你可從該檔案重試,而無須重新上傳已完成的檔案。接受圖片、PDF、封存檔與其他檔案類型,每個檔案上限為 16 MiB。暫存檔案在 POSIX 主機上會使用私有的系統暫存目錄(目錄模式 0700、檔案模式 0600),在 Windows 上則使用位於使用者設定檔 ACL 邊界內的目錄,並設有 24 小時清理計時器,因此請移動或複製任何需要保留的檔案。

    路徑插入支援 PowerShell、cmd.exe 與可辨識的 POSIX shell(sh、Bash、Dash、Ash、Ksh、Zsh 和 Fish),包括 Windows 上的 Git Bash。系統會拒絕其他 shell 覆寫,因為無法安全推斷其引號規則;若要使用原生 WSL 終端機與 Linux 上傳路徑,請在 WSL 內執行閘道。系統也會拒絕包含 %!cmd.exe 路徑,因為該 shell 即使在雙引號內仍會展開這些字元。

    在工作階段側邊欄中找到的 Codex 與 Claude Code 工作階段,可以在同一個終端機面板內以其原生命令列介面開啟。在 Settings › Chat 中,將 Open Codex/Claude threads in 設為 Terminal,即可讓一般的列點擊開啟 codex resumeclaude --resume;預設仍為唯讀的 OpenClaw 檢視器。對列按一下滑鼠右鍵或開啟其三點選單時,永遠都會提供這兩個選項;符合資格的工作階段,其檢視器標頭也會包含 Open in terminal

    資格會依工作階段和主機分別判定。閘道本機工作階段會在閘道主機上啟動由提供者擁有的繼續執行命令。配對節點工作階段會在所屬節點上啟動允許清單中的提供者命令,且只轉送該 PTY 的輸出、輸入與調整大小事件;這不會公開一般節點 shell,也不接受瀏覽器提供的命令。檔案上傳使用獨立且有大小限制的 terminal.upload 節點命令,並持續繫結至已開啟的終端機工作階段。該命令首次出現時,請核准節點配對升級。未公告相符終端機繼續執行命令的節點(包括不具雙向串流的內嵌工作程式橋接器)仍可使用檢視器,但會顯示無法開啟終端機;舊版節點仍可執行終端機,但無法接收拖曳的檔案。

    連線所擁有的工作階段會在中斷連線後繼續存活:頁面重新載入、筆電休眠或網路短暫中斷時,工作階段會在閘道上中斷連接而非終止;重新連線後,同一個瀏覽器分頁會重新連接,並重播近期輸出。已中斷連接且由連線擁有的工作階段會在 gateway.terminal.detachedSessionTimeoutSeconds 後終止(預設為 300 秒;0 會恢復中斷連線即終止)。連接至其中一個工作階段時,仍會採用類似 tmux 的接管方式。

    代理程式所擁有的工作階段不會繫結至瀏覽器連線。terminal.attach 會將每個瀏覽器新增為檢視者而不取得擁有權,關閉檢視器分頁只會中斷該瀏覽器的連接。PTY 會一直保留,直到擁有它的代理程式將其關閉、其處理程序結束、政策將其停用,或閘道關閉為止。terminal.list 會將每個項目標示為由連線或代理程式擁有,terminal.text 則可讓管理員連線在不連接的情況下讀取近期純文字輸出。

    終端機也提供位於 /?view=terminal 的全螢幕純終端機文件。iOS 與 Android 應用程式會在其終端機畫面中嵌入此頁面,重複使用已儲存的閘道認證資訊;可用性遵循相同的 gateway.terminal.enabledoperator.admin 閘門,且當連線的閘道未提供終端機時,頁面會顯示通知。

    瀏覽器面板

    控制介面隨附可停駐的瀏覽器面板,可在任何一般網頁瀏覽器中呈現由閘道控制的瀏覽器(也就是代理程式透過瀏覽器工具操作的同一個瀏覽器),無須原生 WebView。當連線的閘道向 operator.admin 連線公告 browser.request 時,此面板便會出現;討論串工作區軌道中的地球按鈕可切換面板。面板會顯示即時頁面快照,並提供分頁、可編輯的 URL 列、上一頁/下一頁/重新載入和在你的瀏覽器中開啟等功能;可停駐於右側或底部,並將點擊、滾輪捲動與基本輸入轉送至遠端頁面。

    兩種擷取模式可為代理程式封裝頁面情境:

    • 註記(鉛筆):在頁面上繪製徒手標記。傳送至聊天會將筆畫合成到螢幕截圖中、把圖片附加至作用中的聊天編輯器,並預先填入描述頁面 URL、標題與每個標記區域的提示,讓代理程式確切知道你圈選的位置。
    • 檢查(指標):將游標停留在元素上,以查看游標下方的元素(選取器、無障礙名稱、角色、大小);按一下即可透過相同的編輯器流程傳送該元素的詳細資料與醒目標示的螢幕截圖。檢查、滾輪捲動與上一頁/下一頁需要 browser.evaluateEnabled(預設開啟)。

    macOS 應用程式會為在儀表板中點擊的連結保留其原生連結瀏覽器側邊欄;瀏覽器面板在其中也可運作,且是在所有其他平台上註記頁面的方式。

    聊天行為

    Send and history semantics
    • chat.send非阻塞:它會立即以 { runId, status: "started" } 確認,回應則透過 chat 事件串流傳送。受信任的控制 UI 用戶端也可能收到選用的確認時間中繼資料,以供本機診斷。
    • 聊天上傳支援圖片及非影片檔案。圖片會保留原生圖片路徑;其他檔案則儲存為受管理媒體,並在記錄中顯示為附件連結。
    • 執行期間以相同的 idempotencyKey 重新傳送會傳回 { status: "in_flight" },完成後則傳回 { status: "ok" }
    • 為確保 UI 安全,chat.history 回應設有大小限制。當對話記錄項目過大時,閘道可能截斷過長的文字欄位、省略龐大的中繼資料區塊,並以預留位置取代超大訊息([chat.history omitted: message too large])。
    • chat.history 中可見的助理訊息遭到截斷時,側邊閱讀器可視需要透過 chat.message.get,依據 sessionKey、必要時的作用中 agentId,以及對話記錄 messageId,隨選擷取完整且經顯示正規化的對話記錄項目。如果閘道仍無法傳回更多內容,閱讀器會顯示明確的無法使用狀態,而非悄悄重複遭截斷的預覽。
    • 助理產生的圖片會持久儲存為受管理媒體參照,並透過經驗證的閘道媒體 URL 提供,因此重新載入時不必依賴原始 base64 圖片承載內容持續保留在聊天記錄回應中。
    • 呈現 chat.history 時,控制 UI 會從可見的助理文字中移除僅供顯示的行內指示標籤(例如 [[reply_to_*]][[audio_as_voice]])、純文字工具呼叫 XML 承載內容(包括 <tool_call>...</tool_call><function_call>...</function_call><tool_calls>...</tool_calls><function_calls>...</function_calls> 及遭截斷的工具呼叫區塊),以及外洩的 ASCII/全形模型控制權杖。如果助理項目的全部可見文字僅包含完全相符的靜默權杖 NO_REPLYno_reply 或心跳偵測確認權杖 HEARTBEAT_OK,則會省略該項目。
    • 在傳送進行中及最終重新整理記錄時,如果 chat.history 短暫傳回較舊的快照,聊天檢視仍會保留本機樂觀顯示的使用者/助理訊息;閘道記錄追上後,標準對話記錄便會取代這些本機訊息。
    • 即時 chat 事件代表傳遞狀態,而 chat.history 則由持久工作階段對話記錄重建。工具最終事件結束後,控制 UI 會重新載入記錄,且僅合併一小段樂觀顯示的尾端內容;對話記錄邊界記載於 WebChat
    • chat.inject 會將助理備註附加至工作階段對話記錄,並廣播 chat 事件以進行僅限 UI 的更新(不執行代理程式,也不傳遞至頻道)。
    • 側邊欄會依代理程式區段,以及已釘選/頻道/工作/自訂/聊天分類列出所有已載入的作用中工作階段,並提供單一的「新增工作階段」動作以開啟草稿對話方塊。開啟可見的資料列只會移動醒目標示。可將工作階段拖放至「已釘選」以釘選,或拖放至自訂群組或「聊天」以移動;自訂群組可收合及拖曳重新排序,群組名稱與順序會透過閘道同步,收合狀態則保留在瀏覽器中。新的儀表板工作階段會以第一則非命令訊息非同步產生簡潔標題;明確名稱與已驗證的傳送者身分會保持分離,因此絕不會使用帳戶名稱作為產生的標題。設定 agents.defaults.utilityModel(或 agents.entries.*.utilityModel)可將這次獨立的模型呼叫路由至成本較低的模型;如果該不同模型失敗,標題產生作業會使用主要模型重試一次。展開其他代理程式區段時,無須離開目前開啟的聊天即可瀏覽該代理程式的工作階段。
    • 對話串搜尋位於命令選擇區中(⌘K,或左上角控制項群組中的搜尋按鈕):輸入查詢後,系統會跨代理程式搜尋數量受限的相符頁面、篩除內部子項/排程資料列,並在導覽命令旁列出可見的相符結果。「對話串」頁面仍保留完整且可篩選的搜尋清單。
    • 每個側邊欄資料列都保留直接釘選功能,並提供完整的內容選單,用於未讀狀態、重新命名、分支、分組、封存及刪除。多選的資料列(Cmd/Ctrl-點按,使用 Shift-點按選取範圍)會顯示批次選單,涵蓋未讀狀態、分組、封存及刪除;除非所有選取的工作階段皆可封存,否則批次封存/刪除會維持停用。作用中的執行作業及代理程式的主要工作階段無法封存。封存或刪除目前選取的工作階段後,「聊天」會切換回該代理程式的主要工作階段。
    • 在 macOS App 中,OpenClaw 標誌會使用視窗控制項旁原本空白的原生標題列區帶,而不占用側邊欄資料列。
    • 在桌面寬度下,聊天控制項會保持在單一精簡資料列中,並於向下捲動對話記錄時收合;向上捲動、返回頂端或到達底部時,控制項會恢復顯示。
    • 當其他人正在檢視相同工作階段時,工作階段標頭會在工作區標記旁顯示一小組重疊頭像;其中最多列出四位檢視者的頭像及溢出人數,當只有你一人時便會消失。
    • 連續重複的純文字訊息會呈現為單一訊息泡泡,並附上數量徽章。包含圖片、附件、工具輸出或畫布預覽的訊息不會收合。
    • 使用者訊息泡泡包含對話記錄動作:游標停留時顯示的倒帶按鈕(確認彈出式視窗含有「不要再詢問」選項),以及按右鍵顯示的倒帶至此處從此處建立分支。倒帶會將工作階段重新指向該訊息之前的狀態,並將其文字送回輸入框以供編輯及重新傳送(sessions.rewindoperator.admin);建立分支會從該訊息之前的作用中路徑前綴建立新工作階段、開啟該工作階段,並在其輸入框中填入相同文字(sessions.forkoperator.write)。代理程式運作期間,這兩項動作都會停用並顯示說明工具提示;它們僅適用於已持久儲存的使用者訊息,而且對話由外部代理程式框架擁有的工作階段會拒絕這些動作。倒帶只會移動聊天情境,不會還原檔案及其他工具的副作用,而倒帶前的對話記錄仍會保留在僅附加的工作階段儲存區中。當該儲存區包含多個對話記錄分支時,聊天標題列會顯示分支選單,其中包含各分支的最新訊息、訊息數量及最近活動時間;選取非作用中分支會將目前工作階段切換回該保留路徑(sessions.branches.listoperator.readsessions.branches.switchoperator.admin)。代理程式運作期間也無法切換分支,而選取已處於作用中的分支會在 RPC 邊界產生具型別的無操作錯誤。使用者訊息泡泡上的獨立隱藏動作只會在目前瀏覽器中隱藏訊息;該訊息仍保留在對話記錄中,代理程式也仍可看見。
    • 當工作階段的簽出項目位於 GitHub 儲存庫的非預設分支時,聊天檢視會在輸入框上方釘選 PR 標記:PR 編號、儲存庫、分支、差異數量、CI 狀態標記,以及草稿/已合併/已關閉狀態,每個標記皆連結至該 PR。此列最多顯示兩個標記,優先顯示即時(開放/草稿)PR,並可按下「顯示更多」按鈕展開已收合的已合併/已關閉記錄。CI 狀態標記會開啟小型 CI 監控彈出式視窗,其中包含通過/失敗/執行中/已略過的檢查數量,以及前往 PR 檢查頁面的連結。偵測作業會透過 controlUi.sessionPullRequests 在伺服器端執行,並在已設定時重複使用閘道的 GH_TOKENGITHUB_TOKEN。達到 GitHub API 速率限制時,標記會保留最後已知狀態,並顯示狀態可能已過時的警告;關閉標記會在目前瀏覽器設定檔中針對該工作階段隱藏它。在任何 PR 存在之前,此列會顯示分支本身,包括儲存庫、分支名稱,以及相對於預設分支合併基準的差異 +/− 大小(已提交及未提交的工作)。當已推送的分支具有可比較的提交後,此列會加入「建立 PR」按鈕,以開啟 GitHub 的新 PR 頁面;在此之前,只要工作階段中有變更的檔案(已提交、未提交或未追蹤),仍會顯示此列,但不包含該按鈕。當存在開放或草稿 PR 時,此列會自行隱藏。分支列僅來自本機 git,因此即使 GitHub 受到速率限制,仍可使用,且會顯示相同的狀態過時警告,因為在限制重設之前,無法信任「找不到 PR」的結果。
    • 工作階段差異面板會顯示工作階段簽出項目實際進行的變更:工作區側欄或聊天標題列中的分支按鈕會開啟詳細資料面板,依檔案顯示分支、未提交及未追蹤工作相對於簽出項目預設分支合併基準的差異,包括狀態點、重新命名箭頭、各檔案 +/− 數量、可收合檔案,以及差異區塊之間的「N 行未修改」標記。差異會透過 sessions.diff 閘道方法(operator.read 範圍)在伺服器端計算;二進位及超大檔案會降級為僅含統計資料的項目,而且只有在連線的閘道宣告 sessions.diff 時才會顯示該按鈕。
    • 每個「聊天」窗格都有標題列。按一下工作階段標題即可重新命名;工作區標記可複製簽出路徑或分支,並可在主機檔案管理員中顯示本機閘道工作區。遠端及執行節點工作階段會保留複製動作,但隱藏顯示動作。
    • 每個「聊天」窗格中的對話串工作區側欄會列出對話串檔案、專案檔案及成品。預設會停駐於窗格右側;拖曳其標頭(或使用停駐按鈕)可將它移至底部,此選擇會儲存在目前的瀏覽器設定檔中。收合的側欄完全不占空間:使用 ⇧⌘B 或標題列中的檔案切換按鈕重新開啟,該按鈕會顯示變更檔案數量徽章。獨立的檔案、工具及畫布詳細資料面板不受影響。
    • 按一下聊天中的檔案參照、展開的讀取/編輯/寫入工具卡片中的檔案路徑,或工作區側欄中的檔案資料列,會開啟檔案詳細資料面板:這是基於 CodeMirror 的程式碼檢視,提供語法醒目提示、行號、跳至指定行、檔案內搜尋、複製動作,以及使用外部編輯器開啟的選單。當閘道向 operator.admin 連線宣告 sessions.files.set 時,面板會加入具有變更追蹤及 Cmd/Ctrl-S 儲存功能的「編輯」模式;未儲存的草稿會在目前瀏覽器分頁中跨檔案、面板及工作階段導覽保留,直到明確儲存或捨棄為止。儲存作業會依 sessions.files.get 傳回的內容雜湊進行比較後交換:如果檔案自載入後已在磁碟上變更(例如代理程式持續運作),面板會顯示衝突通知,並提供「重新載入」(採用最新內容)及「覆寫」(保留本機編輯)動作。寫入作業會使用與讀取相同的檔案系統安全工作區防護,包括路徑範圍限制、拒絕符號連結/硬式連結,以及 256 KB UTF-8 上限,而且只能覆寫現有檔案;編輯器絕不會建立或刪除檔案。
    • 每個「聊天」窗格中的背景工作側欄會列出目前代理程式的背景工作及子代理程式(tasks.list 依代理程式限定範圍,並由 task 事件保持即時更新):執行中的工作會顯示即時經過時間計時器、工具使用次數、目前使用中的工具及停止控制項;可收合的已完成區段會加入執行持續時間;「檢視對話記錄」連結則會在窗格中開啟該工作的子工作階段。可使用標題列的活動切換按鈕開啟;工作快照會預先載入,因此即使尚未開啟側欄,也會顯示執行中數量徽章。「工作」頁面仍是跨代理程式的完整記錄。
    • 工作區側欄、背景工作側欄和詳細資料面板會依各窗格本身的寬度調整,而非視窗寬度:在窄窗格或精簡視窗中,兩個側欄都會顯示為底部橫條(側邊停駐控制項會隱藏,直到窗格變寬;只有足以容納一欄時,工作區側欄會優先占用側邊位置),而詳細資料面板會堆疊在線程下方,並提供水平調整大小控點,而非與線程共用同一列。手機大小的檢視區仍會以全螢幕開啟詳細資料面板。
    • 聊天標頭中的模型與思考模式選擇器會透過 sessions.patch 立即修補使用中的工作階段;它們是持續生效的工作階段覆寫,而非僅適用於單次傳送的選項。
    • 分割檢視: 從聊天標題列開啟(位於線程差異、背景工作和線程檔案切換控制項旁),然後將使用中的窗格向右或向下分割,直到容納所需數量的窗格。每個窗格都有自己的線程、對話記錄、編輯器和工具串流。
    • 具有 screen 工具的代理程式,可在具備相應功能的控制介面連線時,要求進行相同的窗格、側邊欄、終端機、瀏覽器、焦點和導覽變更。協定 v1 會將命令套用至每個已連線且具備相應功能的控制介面;請參閱畫面
    • 將工作階段從側邊欄拖曳至聊天區,即可在窗格中開啟。動畫式放置預覽會在各區域間滑動並標示結果——在新窗格將占用的確切半區上顯示「分割」,在整個窗格上顯示「在此開啟」——而且在單一窗格模式下也能放置。
    • 使用中的分割窗格會控制側邊欄選取項目和 URL。其標題列會加入分割和關閉控制項;分隔線可調整欄與堆疊窗格的大小,而瀏覽器會在本機儲存版面配置,重新載入後仍會保留。
    • 在窄螢幕上,分割檢視會保留版面配置,但只呈現使用中的窗格,包括其含有關閉控制項的標頭。
    • 如果在同一工作階段的模型選擇器變更仍在儲存時傳送訊息,編輯器會先等待該工作階段修補完成,再呼叫 chat.send,以確保傳送時使用所選模型。
    • 輸入 /new 會建立並切換至與「新增聊天」相同的全新儀表板工作階段;但如果已設定 session.dmScope: "main",且目前的父工作階段是代理程式的主要工作階段,則會直接重設該主要工作階段。輸入 /reset 會保留閘道針對目前工作階段明確執行的原地重設行為。
    • 聊天模型選擇器會向閘道要求已設定的模型檢視。如果 agents.defaults.modelPolicy.allow 非空值,該原則會控制選擇器,包括可讓依供應商範圍限定的目錄維持動態的 provider/* 項目。否則,選擇器會顯示已設定的項目,以及具有可用驗證的供應商;agents.defaults.models 下的別名和設定不會限制選擇器。完整目錄仍可透過偵錯用的 models.list RPC 搭配 view: "all" 取得。
    • 當閘道最新的工作階段用量報告包含目前的上下文權杖數時,聊天編輯器工具列會顯示一個小型上下文用量環,並標示已使用百分比。開啟此用量環可查看目前的上下文視窗、最近一次執行的權杖數和估算總成本、供應商/模型識別資訊,以及最近一次供應商回應所回報的輸入/輸出/快取成本明細。當上下文壓力偏高時,用量環會切換為警告樣式;達到建議的壓縮程度時,則會顯示一個精簡按鈕,用來執行一般的工作階段壓縮流程。過時的權杖快照會隱藏,直到閘道再次回報最新用量。
    對話模式(瀏覽器即時通訊)

    對話模式使用已註冊的即時語音供應商。若要設定 OpenAI,請使用 talk.realtime.provider: "openai" 搭配 openai API 金鑰設定檔、talk.realtime.providers.openai.apiKeyOPENAI_API_KEY。OpenAI Realtime 使用公開的 Platform API,並且需要 Platform API 金鑰;Codex OAuth 登入不符合此介面的要求。若要設定 Google,請使用 talk.realtime.provider: "google" 搭配 talk.realtime.providers.google.apiKey。瀏覽器絕不會收到標準供應商 API 金鑰:OpenAI 會收到用於 WebRTC 的暫時性 Realtime 用戶端密鑰,而 Google Live 會收到用於瀏覽器 WebSocket 工作階段、僅限單次使用且受限的 Live API 驗證權杖,其中的指示與工具宣告由閘道鎖定在權杖內。僅提供後端即時橋接的供應商會透過閘道中繼傳輸執行,因此認證資訊與供應商通訊端會留在伺服器端,而瀏覽器音訊則透過已驗證的閘道 RPC 傳輸。Realtime 工作階段提示詞由閘道組合;talk.client.create 不接受呼叫端提供的指示覆寫。

    永久保存的供應商、模型、語音、傳輸、推理強度、精確 VAD 閾值、靜音持續時間與前綴填補預設值位於 Settings → Communications → Talk;變更這些設定需要 operator.admin 存取權。設定閘道中繼會強制使用後端中繼路徑;設定 WebRTC 則會讓工作階段由用戶端掌控,若供應商無法建立瀏覽器工作階段,將直接失敗,而不會無聲地回退到中繼。

    對話控制項就是撰寫工具列中的麥克風按鈕。其插入號會列出 System default 及瀏覽器公開的每個麥克風,包括 USB、Bluetooth 與虛擬輸入裝置。選取的裝置 ID 僅保留在瀏覽器本機,絕不會傳送至閘道;如果該裝置消失,對話模式會要求你選擇其他輸入裝置,而不會無聲地改用不同的麥克風錄音。對話模式啟用時,麥克風按鈕會變成顯示即時輸入音量計的膠囊按鈕;按一下可停止語音輸入,將游標停留其上則會顯示停止圖示。當即時工具呼叫透過 talk.client.toolCall 諮詢已設定的較大型模型時,螢幕閱讀器會讀出 Connecting voice input...Listening...Asking OpenClaw...。停止執行中的代理程式回應仍使用膠囊按鈕旁獨立的方形 Stop 控制項。

    視訊對話 適用於 OpenAI Realtime WebRTC 與 Google Live 瀏覽器工作階段。按一下相機按鈕、允許存取相機與麥克風,然後確認本機預覽。當 describe_view 要求視覺情境時,OpenAI 會透過其瀏覽器資料通道傳送一個受限大小的 JPEG 影格。Google Live 會以支援的每秒最多一個影格速率,直接將受限大小的 JPEG 影格從瀏覽器傳送至供應商,並使用攝影機串流狀態回應 describe_view 函式呼叫。攝影機影格絕不會通過閘道。停止對話模式會關閉預覽並釋放兩條媒體軌。供應商的線路合約請參閱 Google 的 Live API 功能函式呼叫指南

    維護者即時冒煙測試:OPENAI_API_KEY=... GEMINI_API_KEY=... node --import tsx scripts/dev/realtime-talk-live-smoke.ts 會驗證 OpenAI 後端 WebSocket 橋接、OpenAI 瀏覽器 WebRTC SDP 交換、包含 JPEG 影格與 describe_view 函式往返的 Google Live 受限權杖瀏覽器設定,以及搭配模擬麥克風媒體的閘道中繼瀏覽器介面卡。此命令僅列印供應商狀態,不會記錄密鑰。

    停止與中止
    • 按一下 Stop。具有確切本機執行 ID 的執行會呼叫 chat.abort;當所選工作階段狀態回報有進行中的工作,但控制介面沒有本機執行 ID 時,則改為呼叫 sessions.abort。對於非全域工作階段,該所選工作階段路徑也會捨棄已排入佇列的後續訊息,使其無法在停止後重新啟動工作。
    • 執行進行期間,一般後續訊息會使用閘道的有效 messages.queue 模式。steer 會注入執行中的回合;其他模式則保留瀏覽器的持久佇列傳遞。轉向遭拒時也會回退至該佇列。按一下佇列訊息上的 Steer 可手動注入。
    • Settings → Appearance → Chat → Follow-ups while the agent is working 可針對目前瀏覽器覆寫該伺服器預設值。頁面會明確標示覆寫,並提供 Reset to server defaultSteer into the active run 會立即傳送後續訊息,而 Queue until the run ends 則會保留至執行完成。
    • 輸入 /stop(或獨立的中止詞句,例如 stopstop actionstop runstop openclawplease stop)可透過頻帶外方式中止。
    • chat.abort 支援使用 { sessionKey }(不含 runId)中止該工作階段的所有進行中執行。當控制介面沒有本機執行 ID 時,會使用 sessions.abort
    保留中止時的部分內容
    • 執行遭中止時,部分助理文字仍可顯示在介面中。
    • 若存在已緩衝的輸出,閘道會將中止時的部分助理文字持久保存至文字記錄歷程。
    • 持久保存的項目包含中止中繼資料,讓文字記錄取用端能區分中止時的部分內容與正常完成輸出。

    連線中斷與重新連線

    工作階段建立後,閘道連線中斷不會將你登出。儀表板 仍會顯示,頂端列下方會浮現琥珀色的「閘道連線已中斷 — 正在重新連線…」膠囊提示, 同時用戶端會以退避機制自動重試(從 800 毫秒至最長 15 秒)。即時更新與 即時/工作階段動作會暫停,直到連線恢復;膠囊提示中的 Retry now 會強制 立即嘗試。聊天內容仍可編輯:一般文字與附件傳送會保存在 目前分頁依閘道/工作階段限定範圍的瀏覽器儲存空間中,顯示為等待重新連線,並在 閘道恢復後自動傳送。離線期間,即時控制項與斜線命令仍無法使用, 但 Stop 可將確切本機執行 ID 排入佇列以供重播。僅針對工作階段的停止 不會重播,因為連線恢復前,該工作階段中可能已開始較新的工作。

    當此瀏覽器已有認證資訊(已設定的權杖/密碼或已核准的裝置 權杖)時,首次開啟與重新載入會在連線建立期間顯示小型動畫 OpenClaw 標誌, 而不會短暫顯示登入閘門。只有尚未儲存認證資訊,或閘道主動拒絕認證資訊 (錯誤的權杖/密碼、已撤銷的配對)時,才會顯示登入閘門—— 這些狀態需要你提供輸入,而不是等待。

    安裝 PWA 與 Web Push

    控制介面隨附 manifest.webmanifest 與服務工作站,因此現代瀏覽器可將其安裝為獨立 PWA。Web Push 可讓閘道以通知喚醒已安裝的 PWA,即使分頁或瀏覽器視窗未開啟亦然。

    在 macOS 應用程式內,「通知」設定頁面會顯示應用程式的原生通知權限,而非瀏覽器推播,因為應用程式會以原生方式傳送通知。

    如果頁面在 OpenClaw 更新後立即顯示 Protocol mismatch,請先使用 openclaw dashboard 重新開啟儀表板並執行強制重新整理。如果仍然失敗,請清除儀表板來源的網站資料,或在私密瀏覽器視窗中測試;舊分頁或瀏覽器服務工作站快取可能會繼續執行更新前的控制介面套件,並連線至較新的閘道。

    介面 功能
    ui/public/manifest.webmanifest PWA 資訊清單。瀏覽器可存取後便會提供「Install app」。
    ui/public/sw.js 處理 push 事件與通知點擊的服務工作站。
    state/openclaw.sqliteweb_push_vapid_keys 自動產生的 VAPID 金鑰組,用於簽署 Web Push 承載資料。
    state/openclaw.sqliteweb_push_subscriptions 持久保存的瀏覽器訂閱端點、金鑰與註冊時間戳記。

    從已淘汰的 push/vapid-keys.jsonpush/web-push-subscriptions.json 儲存區升級時,其資料會由 openclaw doctor --fix 匯入。執行該修復前請停止閘道,以免舊程序在匯入期間重新建立已淘汰的狀態。升級後使用 Web Push 前請先執行修復;只要任一已淘汰的來源或中斷的 Doctor 宣告仍然存在,註冊、傳遞、刪除與金鑰解析都會拒絕繼續執行。閘道執行階段僅讀寫 SQLite。

    若要固定金鑰(多主機部署、密鑰輪替或測試),可透過閘道程序的環境變數覆寫 VAPID 金鑰組:

    • OPENCLAW_VAPID_PUBLIC_KEY
    • OPENCLAW_VAPID_PRIVATE_KEY
    • OPENCLAW_VAPID_SUBJECT(預設為 https://openclaw.ai

    控制介面使用以下具範圍閘門的閘道方法,註冊及測試瀏覽器訂閱:

    • push.web.vapidPublicKey 會擷取使用中的 VAPID 公開金鑰。
    • push.web.subscribe 會註冊 endpoint 以及 keys.p256dh/keys.auth
    • push.web.unsubscribe 會移除已註冊的端點。
    • push.web.test 會將測試通知傳送至呼叫端的訂閱。

    託管嵌入內容

    助理訊息可使用 [embed ...] 短代碼,在行內呈現託管的網頁內容。iframe 沙箱原則由 gateway.controlUi.embedSandbox 控制:

    核心 show_widget 工具可直接從工具呼叫呈現獨立完備的 SVG 或 HTML。瀏覽器與支援的原生聊天用戶端會公布 inline-widgets 閘道功能,聊天歷程重新載入後,產生的 Canvas 文件仍可使用。Discord Activities 會在 Discord 上提供相同的工具名稱;來自其他頻道的執行不會收到此工具。

    嚴格

    停用託管嵌入內容內的指令碼執行。

    指令碼(預設)

    允許互動式嵌入內容,同時維持來源隔離;通常足以支援獨立完備的瀏覽器遊戲/小工具。

    受信任

    allow-scripts 之上加入 allow-same-origin,供有意需要更高權限的同站台文件使用。

    json5
    {  gateway: {    controlUi: {      embedSandbox: "scripts",    },  },}

    預設仍會封鎖絕對外部 http(s) 嵌入網址。若要允許 [embed url="https://..."] 載入第三方頁面,請設定 gateway.controlUi.allowExternalEmbedUrls: true

    聊天文字記錄版面配置

    聊天記錄使用與輸入框對齊、置中且易於閱讀的框架。助理與工具輸出在該框架內維持靠左對齊,而你自己的訊息維持靠右對齊。在多使用者工作階段中(例如從頻道外掛轉送的群組聊天),其他具署名參與者的訊息會靠左顯示,並附上作者的頭像、名稱,以及每個身分固定使用的顏色,因此只有已登入檢視者的訊息會被視為「我的」。當有兩位以上具署名的參與者時,助理回覆會帶有一個小型的「正在回覆名稱」標記,指出是哪位參與者的訊息觸發了該輪對話。本機斜線命令輸出等系統項目會顯示為不含頭像的置中通知列。

    聊天訊息寬度

    寬螢幕使用者可在 設定 → 聊天 → 訊息寬度 下覆寫聊天記錄寬度。此偏好設定會保留在該瀏覽器的本機儲存空間中。支援的 格式包括一般長度與百分比,例如 960px82%,以及 受限的 min(...)max(...)clamp(...)calc(...)fit-content(...) 寬度運算式。

    Tailnet 存取(建議)

    整合式 Tailscale Serve(偏好)

    讓閘道維持在迴送介面上,並由 Tailscale Serve 透過 HTTPS 代理:

    bash
    openclaw gateway --tailscale serve

    開啟 https://<magicdns>/(或你設定的 gateway.controlUi.basePath)。

    根據預設,當 gateway.auth.allowTailscaletrue 時,控制介面/WebSocket Serve 請求可透過 Tailscale 身分標頭(tailscale-user-login)進行驗證。OpenClaw 會使用 tailscale whois 解析 x-forwarded-for 位址,並將結果與標頭比對以驗證身分;只有在請求透過迴送介面送達,且包含 Tailscale 的 x-forwarded-* 標頭時,才會接受這些身分。對於具有瀏覽器裝置身分的控制介面操作員工作階段,這條已驗證的 Serve 路徑也會略過裝置配對往返流程;無裝置身分的瀏覽器與節點角色連線仍會遵循一般裝置檢查。如果你希望即使是 Serve 流量也必須提供明確的共享祕密認證資訊,請設定 gateway.auth.allowTailscale: false,然後使用 gateway.auth.mode: "token""password"

    對於這條非同步 Serve 身分驗證路徑,來自相同用戶端 IP 與驗證範圍的失敗驗證嘗試,會在寫入速率限制資料前依序處理。因此,同一瀏覽器並行發出的錯誤重試,第二個請求可能會顯示 retry later,而不是讓兩次單純的不相符結果平行競速。

    繫結至 Tailnet + 權杖

    bash
    openclaw gateway --bind tailnet --token "$(openssl rand -hex 32)"

    開啟 http://<tailscale-ip>:18789/(或你設定的 gateway.controlUi.basePath)。

    將相符的共享祕密貼到介面設定中(以 connect.params.auth.tokenconnect.params.auth.password 傳送)。

    不安全的 HTTP

    如果你透過一般 HTTP(http://<lan-ip>http://<tailscale-ip>)開啟儀表板,瀏覽器會在非安全內容環境中執行並封鎖 WebCrypto。根據預設,OpenClaw 會封鎖沒有裝置身分的控制介面連線。

    支援的無裝置身分例外,是透過 gateway.auth.mode: "trusted-proxy" 成功完成操作員控制介面驗證。不存在可停用裝置身分的 永久設定開關。

    **建議的修正方式:**使用 HTTPS(Tailscale Serve),或在本機的 https://<magicdns>/(Serve)或 http://127.0.0.1:18789/(位於閘道主機上)開啟介面。

    受信任代理伺服器注意事項
    • 成功的受信任代理伺服器驗證可允許沒有裝置身分的操作員控制介面工作階段。
    • 不會延伸至節點角色的控制介面工作階段。
    • 同一主機上的迴送反向代理伺服器仍不符合受信任代理伺服器驗證的條件;請參閱受信任代理伺服器驗證

    如需 HTTPS 設定指引,請參閱 Tailscale

    內容安全政策

    控制介面隨附嚴格的 img-src 政策:僅允許同源資產、data: URL,以及本機產生的 blob: URL。遠端 http(s) 與通訊協定相對圖片 URL 會遭瀏覽器拒絕,且絕不會發出網路擷取請求。

    實際上:

    • 透過相對路徑提供的頭像與圖片(例如 /avatars/<id>)仍會正常呈現,包括介面擷取並轉換成本機 blob: URL 的已驗證頭像路由。
    • 行內 data:image/... URL 仍會正常呈現。
    • 由控制介面建立的本機 blob: URL 仍會正常呈現。
    • GitHub 連結預覽頭像由閘道從 GitHub 固定的頭像主機擷取,並以有界限的 data: URL 傳回;操作員瀏覽器絕不會連絡遠端頭像主機。
    • 頻道中繼資料所輸出的遠端頭像 URL,會在控制介面的頭像輔助函式中被移除並替換為內建標誌/徽章,因此遭入侵或惡意的頻道無法迫使操作員瀏覽器任意擷取遠端圖片。

    此功能永遠啟用,且無法設定。

    頭像路由驗證

    設定閘道驗證後,控制介面的頭像端點會要求使用與其餘 API 相同的閘道權杖:

    • GET /avatar/<agentId> 僅向已驗證的呼叫端傳回頭像圖片。GET /avatar/<agentId>?meta=1 依相同規則傳回頭像中繼資料。
    • 對任一路由提出的未驗證請求都會遭拒絕(與同層的助理媒體路由一致),因此頭像路由不會在其他部分均受保護的主機上洩漏代理程式身分。
    • 控制介面在擷取頭像時會將閘道權杖作為持有人標頭轉送,並使用已驗證的 blob URL,讓圖片仍能在儀表板中呈現。

    如果你停用閘道驗證(不建議在共用主機上這麼做),頭像路由也會與閘道的其他部分一致,變成不需要驗證。

    助理媒體路由驗證

    設定閘道驗證後,助理本機媒體預覽會使用兩階段路由:

    • GET /__openclaw__/assistant-media?meta=1&source=<path> 需要一般的控制介面操作員驗證;瀏覽器在檢查可用性時,會將閘道權杖作為持有人標頭傳送。
    • 成功的中繼資料回應會包含短期有效的 mediaTicket,其範圍限定於該確切來源路徑。
    • 由瀏覽器呈現的圖片、音訊、影片與文件 URL 會使用 mediaTicket=<ticket>,而不是有效中的閘道權杖或密碼。該票證會很快到期,且無法授權其他來源。

    這能在不將可重複使用的閘道認證資訊放入可見媒體 URL 的情況下,讓媒體呈現與瀏覽器原生媒體元素相容。

    核准連結

    操作員核准通知可以深層連結至保留的 ${controlUiBasePath}/approve/{approvalId} 命名空間下所提供的獨立核准文件(例如 /approve/<approvalId>,或在設定基礎路徑時使用 /openclaw/approve/<approvalId>)。該 URL 在核准的生命週期內保持穩定,可安全轉寄至你自己的裝置:它只會識別核准,絕不會授權核准。

    • 單區段的 /approve/<approvalId> 命名空間由閘道保留,其優先順序高於外掛 HTTP 路由,並適用於所有 HTTP 方法,因此外掛路由絕不可能遮蔽或攔截核准文件。
    • 開啟核准文件時,需要使用與控制介面其餘部分相同的閘道驗證(權杖/密碼、Tailscale Serve 身分或受信任代理伺服器身分);認證資訊絕不會成為核准 URL 的一部分。
    • 停用控制介面服務時,對該命名空間提出的請求會傳回 404,而不會繼續交由外掛處理常式處理。
    • 在核准文件上登入僅對該頁面暫時有效:它不會覆寫同一瀏覽器中由完整控制介面儲存的閘道選擇或設定。

    閘道從 dist/control-ui 提供靜態檔案:

    bash
    pnpm ui:build

    選用的絕對基底(固定資產 URL):

    bash
    OPENCLAW_CONTROL_UI_BASE_PATH=/openclaw/ pnpm ui:build

    本機開發(獨立開發伺服器):

    bash
    pnpm ui:dev

    接著將介面指向你的閘道 WS URL(例如 ws://127.0.0.1:18789)。

    空白的控制介面頁面

    如果瀏覽器載入空白儀表板,且開發人員工具未顯示有用的錯誤,可能是擴充功能或提早執行的內容指令碼阻止 JavaScript 模組應用程式進行求值。靜態頁面包含純 HTML 復原面板,當啟動後未註冊 <openclaw-app> 時便會顯示。

    變更瀏覽器環境後,請使用面板中的 Try again 動作,或在完成下列檢查後手動重新載入:

    • 停用會插入所有頁面的擴充功能,尤其是具有 <all_urls> 內容指令碼的擴充功能。
    • 嘗試使用私密視窗、全新的瀏覽器設定檔或其他瀏覽器。
    • 讓閘道持續執行,並在變更瀏覽器後驗證相同的儀表板 URL。

    偵錯/測試:開發伺服器 + 遠端閘道

    控制介面由靜態檔案組成;WebSocket 目標可設定,且可以不同於 HTTP 來源。當你想在本機使用 Vite 開發伺服器,但閘道在其他位置執行時,這會很方便。

  • 啟動介面開發伺服器

    bash
    pnpm ui:dev
  • 使用 gatewayUrl 開啟

    text
    http://localhost:5173/?gatewayUrl=ws%3A%2F%2F<gateway-host>%3A18789

    選用的一次性驗證(如有需要):

    text
    http://localhost:5173/?gatewayUrl=wss%3A%2F%2F<gateway-host>%3A18789#token=<gateway-token>
  • 注意事項
    • gatewayUrl 會在載入後儲存在 localStorage 中,並從 URL 移除。
    • 如果你透過 gatewayUrl 傳入完整的 ws://wss:// 端點,請對該值進行 URL 編碼,讓瀏覽器能正確剖析查詢字串。
    • 只要可能,token 應透過 URL 片段(#token=...)傳入。片段不會傳送至伺服器,可避免在請求記錄與 Referer 中洩漏。為了相容性,舊版 ?token= 查詢參數仍會匯入一次,但僅作為備援,且會在啟動程序後立即移除。
    • password 僅保留在記憶體中。
    • 設定 gatewayUrl 時,介面不會退回使用設定或環境認證資訊。請明確提供 token(或 password);缺少明確認證資訊會視為錯誤。
    • 當閘道位於 TLS(Tailscale Serve、HTTPS 代理伺服器等)後方時,請使用 wss://
    • gatewayUrl 僅在頂層視窗(非嵌入式)中接受,以防止點擊劫持。
    • 公開且非迴送的控制介面部署必須明確設定 gateway.controlUi.allowedOrigins(完整來源)。來自迴送位址、RFC1918/連結本機、.local.ts.net 或 Tailscale CGNAT 主機的私有同源 LAN/Tailnet 載入,不必啟用 Host 標頭備援即可接受。
    • 閘道啟動時,可能會根據有效的執行階段繫結與連接埠預先加入 http://localhost:<port>http://127.0.0.1:<port> 等本機來源,但遠端瀏覽器來源仍需明確加入。
    • 除非是受到嚴格控管的本機測試,否則請勿使用 gateway.controlUi.allowedOrigins: ["*"];它表示允許任何瀏覽器來源,而不是「比對我正在使用的任何主機」。
    • gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=true 會啟用 Host 標頭來源備援模式,但這是一種危險的安全模式。
    json5
    {  gateway: {    controlUi: {      allowedOrigins: ["http://localhost:5173"],    },  },}

    遠端存取設定詳細資訊:遠端存取

    相關內容

    Was this useful?
    On this page

    On this page