Computer Use 是獨立且持久的 JavaScript REPL,直接呼叫 cua_repl;無需 Code Mode。變數與綁定物件在目前 Host 程序內跨呼叫和 Turn 保留。重新啟動後 REPL 沒有歷史變數;請遵循模型請求提供的目前 Computer Use 狀態。 cua.computer.target 識別選定的桌面平台(mac、linux、windows)。WSL 預設選擇 Windows 主機;Shell 命令仍可能在 Linux 中執行。
全新 REPL 沒有綁定目標。以下入口會輸出 API 文件及清單或目標初始狀態。瀏覽器 ID 只來自已設定的提供者;未設定時,透過 getApp 操作原生瀏覽器視窗。API 不提供 start_session 等驅動程式管理操作。
入口(選擇目標時自動輸出初始狀態):
await cua.getState({emit?}):應用程式和已設定瀏覽器清單,包括清單錯誤。await cua.listApps({emit?})、await cua.listWindows({emit?})。const app = await cua.getApp("Name / bundle ID / app path") 或 getApp({windowId})。 macOS 會啟動缺少的應用程式。Windows getApp 選擇已開啟的視窗;先使用來自 cua.listApps() 的 ID 呼叫 await cua.computer.launch_app({app: appId}),再重新整理清單並選擇確切視窗。啟動前會重新核對原生清單中的 ID,不接受任意可執行檔路徑。名稱有歧義時選擇確切視窗。Linux 要求應用程式已開啟。await cua.listBrowsers({emit?})、await cua.listTabs({browser?, emit?})。const browser = await cua.getBrowser({id? , url?}):只選擇,不開啟分頁。const tab = await cua.getTab("tab ID", {browser?}) 或 getTab({url}, {browser?})。await cua.createBrowserTab(browserId, url?):在已設定的設定檔中開啟。無法使用的提供者、分頁提及和不支援的建立選項會擲出錯誤。App 和 Tab 觀察:
getAXState({emit?, disableDiffing?}) 傳回文字。分頁和 macOS 應用程式預設傳回差異;Windows 和 Linux 應用程式傳回完整狀態。getScreenshot({emit?}) 傳回 Uint8Array 並輸出影像。getAXStateAndScreenshot(options?) 傳回 {state, screenshot} 並輸出兩者。 探索、選擇和觀察會自動輸出結果,直接呼叫即可。用 nodeRepl.emitImage() 包裝 getScreenshot() 或用 nodeRepl.write() 包裝 getAXState() 會重複輸出。自行處理結果時使用 {emit:false};清單錯誤仍會顯示。同一次呼叫內相同影像只交付一次;之後的呼叫可以再次輸出相同影像。 觀察包含短暫 UI 更新的有限穩定等待(分頁 200 ms,應用程式 400 ms),不會等待任意非同步工作,持續動畫不會延長視窗。之後的更新需重新觀察。僅擷取畫面的觀察會清除輔助使用索引。 若應用程式忙碌導致原生 AX 觀察失敗,待應用程式恢復後重新整理同一綁定物件。失敗的觀察會使舊索引和座標失效。App 和 Tab 操作:
moveCursor(index | [x,y]) 用合成游標指示已觀察的位置。座標與 click 使用同一張目前擷取畫面,指示不會消耗畫面。傳回的可見性是顯示回饋,不證明輸入效果。click(index | [x,y], {mouseButton?, clickCount?})、drag([x,y], [x,y])。scroll(index | [x,y], "up" | "down" | "left" | "right", pages?)。setValue(index, string)。selectText(index, text, {prefix?, suffix?, selectionType?}),selectionType 為 text、cursor_before 或 cursor_after。原生選取僅支援 macOS。text_not_found 表示文字或指定上下文不存在,請重新讀取目前狀態。ambiguous_text 需要更具體的 prefix/suffix。performSecondaryAction(index, action):使用原生 AX 觀察中列出的確切操作。CDP 不提供次要操作,會拒絕此方法。App 輸入:typeText(text)、paste(text, {format?})、pressKey(key)。 Tab 輸入:typeText(index|null, text)、paste(index|null, text, {format?})、pressKey(index|null, key)。指定索引會先聚焦已觀察的欄位,null 表示目前焦點。按鍵範例:Return、Tab、super+a、shift+Left。 貼上格式:text(預設)、md(將 Markdown 原始碼作為純文字)和 html。原生 HTML 貼上僅支援 macOS,需要可讀的可編輯值和選取範圍;它會暫時啟用確切視窗、保留選取範圍,並還原原剪貼簿,除非使用者已複製更新的內容。值未改變會回報為不確定。瀏覽器 HTML 貼上需要已觀察的 contenteditable 元素。
Tab 導覽:goto(url)、back()、forward()、reload()、close()。導覽支援 HTTP(S) 和 about:blank,並等待可觀察的文件。涵蓋主要 CDP 目標;跨程序 iframe 輔助使用支援尚不完整。 原生捲動接受頁數。macOS 和 CDP 也接受 {pixels:500} 輸入增量;應用程式可能限制、動畫化或轉換增量。Windows/Linux 原生配接器目前拒絕像素單位輸入。macOS/Windows 索引捲動保留選定的輔助使用目標。原生索引點擊支援一次語義點擊;需要多次點擊時使用擷取畫面座標。
輸入派發成功不代表已經確定應用程式的結果狀態。 座標屬於最新擷取畫面。移動/縮放、導覽、捲動或任何操作都會消耗或使映射失效;再次按座標操作前重新擷取畫面。原生語義操作使用保留的輔助使用元素。應用程式選單僅限所屬程序和確切綁定視窗,關閉選單的內容不會顯示。選單互動可能啟用綁定視窗,並在選單開啟時保持啟用。 macOS/Windows 座標和鍵盤輸入透過確切視窗的前景路徑交付;macOS 在支援時還原先前應用程式。Linux 保持背景交付。座標輸入可能移動系統指標。未驗證的輸入效果會在呼叫輸出中回報。沒有公開的 delivery_mode 選項,也不會自動重播。
nodeRepl.write(value) 輸出文字/JSON。await nodeRepl.emitImage(bytes | dataUrl | {bytes, mimeType}) 輸出影像。不提供檔案/HTTP 影像 URL、Node、任意檔案系統和網路 API。cua.rewriteDocumentation() 重新輸出此參考文件。
每次操作都使用目前 Host 權限;JS 物件不保留授權。Ask 模式下,Computer Use 核准在 REPL 執行逾時計時開始前完成。macOS 原生操作在螢幕鎖定時回報 desktop_locked;已連線 CDP 提供者和純 REPL 計算仍可獨立使用。 每個 Session 有獨立的 Maka 游標。輸入操作自動顯示游標;僅指示而不操作時才呼叫 moveCursor。cua.cursor.configure({label?, color?, enabled?, reducedMotion?}) 修改此 Session 的顯示。顏色為 blue、mint、violet、amber、rose、cyan;標籤最多 48 個字元。cua.cursor.getState() 回報設定及原生/瀏覽器可見性。處於 idle 的原生繪製器在首次原生指示時啟動;unavailable 表示顯示主機缺少或失敗。重新設定可重試失敗的繪製器。閒置游標保留至停用或清理。游標不共享輸入權限,也不移動系統指標。多個游標不能隔離實體鍵盤、應用程式焦點或輸入法。 REPL 被取消、逾時或耗盡堆積記憶體後,需要 cua_reset 並重新綁定目標。已接納的原生工作會在傳回前結算;重設不會撤銷已派發的輸入。重設僅清除此 Session 的 REPL 和綁定,使用者應用程式和分頁保持開啟。