
CLI-Anything 把 AI coding agent 變成舊 app 的命令列介面
AI coding agent 未必只能寫程式。XDA Developers 的實驗顯示,開源工具 CLI-Anything 可為原本沒有 AI 整合、MCP server 或插件的 app 建立命令列「harness」,讓 agent 從同一個 terminal 發出操作指令,再讀回結果。
不過,這類工作流的限制同樣直接:harness 並非令 AI 憑空控制所有軟件。它要依賴 app 已有的原始碼、API 或 scripting interface;相容性取決於這些入口是否存在,以及可暴露多少控制功能。更重要的是,當 agent 可讀取筆記、操作播放軟件甚至透過訊息 app 發信,權限範圍已由「協助寫 code」延伸至個人資料與對外行動。
把 app 功能翻譯成 agent 可用的指令
CLI-Anything 的做法,是讓 AI coding agent 先判斷可如何控制目標 app,然後把可用能力包裝為命令,補上測試及使用說明。app 本身仍負責執行工作;harness 的角色是把 agent 的要求轉成具體操作,並把結果帶回對話。
這與原生插件或 MCP server 的使用體驗有相似之處,但適用對象不同:當軟件沒有現成 AI 連接器時,使用者可先採用社群已建立的 harness,或要求 agent 按方法自行建立一個。XDA 作者以 Claude Code 測試,指出 CLI-Anything 亦列出支援多個 AI coding agent。
作者先使用 NotebookLM 的現成 harness。完成瀏覽器登入後,Claude Code 能列出其 notebook、讀取來源,並把對某個 notebook 的提問結果連同來源引用帶回 terminal。這個例子反映的實際價值,不在於取代 NotebookLM 的回答能力,而是減少在 terminal、瀏覽器和不同視窗之間切換。
真正的門檻是現有自動化入口
在自訂 harness 的測試中,作者要求 Claude 為 Apple Music、Apple Notes 和 Spotify 建立命令列工具。Claude 利用 macOS 已提供的 scripting interface 建立控制命令,之後可按自然語言要求播放或暫停 Spotify、建立及搜尋 Apple Notes。
最需要審慎看待的是訊息操作:作者再要求發送一則訊息,Claude 找到聯絡人後經 Messages app 發出訊息。這證明工作流可把多個 app 串接,例如先擷取筆記內容再傳送;同時也說明 agent 一旦取得相關存取權,便可能執行具外部後果的動作。
因此,CLI-Anything 的意義較像一層「適配器」:它可把零散的腳本、API 或既有控制接口,統一成 agent 可調用的命令列工具。對經常在 terminal 工作、又要反覆查資料、記錄想法或操作常用 app 的人,這可減少中斷;但對沒有公開控制接口的 app,工具未必能建立有效 harness,亦不能把有限接口變成完整功能。
自動化愈深,權限界線愈要清楚
從這次實驗可合理推論,部署這類 harness 前,使用者應先區分「讀取」與「寫入/發送」能力。讀取 notebook 或筆記已有資料,與建立筆記、控制播放,或代表使用者傳訊息,風險層級不同。尤其自訂 harness 會接觸登入狀態、app 腳本權限或 API,應只賦予完成任務所需的最小權限,並先以低風險、可驗證的指令測試。
另一個取捨是可審核性。現成 harness 或由 agent 生成的命令,表面上讓操作變得像一句 prompt 般簡單;但使用者仍需要理解它實際會呼叫甚麼接口、可讀寫哪些資料,以及是否會觸發對外行動。來源中的案例已顯示,從查找筆記到發送訊息,可以在同一個對話流程中串連,幾方便,但也不能完全交給 agent 自行判斷。
下一步值得觀察的,是更多桌面 app 是否保留並清楚記錄可供這類工具調用的 scripting 或 API 能力,以及 AI coding agent 會否提供更細緻的確認與權限控制,讓自動化不致因為方便而越過使用者原本的操作界線。
延伸閱讀
AI 輔助說明: 本文由 AI 協助整理,並經兩輪獨立自動品質審核;資料及連結仍以原始來源為準。
參考來源
- XDA Developers — I used Claude Code to control apps that weren't built for AI, and it opens up a whole new workflow — original report
本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。





