CLI-Anything:把軟體變成 Agent 可用的命令列

CLI-Anything 透過為現有軟體生成結構化命令列介面,讓 AI Agent 能以 REPL、子命令和 JSON 輸出的方式使用真實軟體能力。

CLI-Anything 是 HKUDS 開源的 Agent 工具化專案,目標是把原本面向人類 GUI 操作的軟體,轉成 AI Agent 更容易呼叫的命令列介面。它不是重新實作一個簡化版軟體,而是圍繞既有程式碼庫和真實後端生成 CLI harness,讓 Agent 可以透過穩定命令、狀態會話和結構化輸出來完成任務。

這個方向解決的是 Agent 使用軟體時最常見的斷層:GUI 自動化依賴截圖、點擊和座標,容易受介面變化影響;單一 API 又經常覆蓋不完整,Agent 需要自己拼接大量上下文。CLI-Anything 選擇把軟體能力收斂成命令列,因為命令天然適合被模型讀取、組合、驗證,也便於接入腳本和自動化流程。

它怎麼工作

官方倉庫把 CLI-Anything 描述為一套自動生成 CLI 的流水線。給它一個本機軟體原始碼路徑或 GitHub 倉庫地址後,流程會分析程式碼結構、識別後端和資料模型,設計命令分組,再實作 CLI、測試和文件。

生成出來的 CLI 通常包含兩種使用方式:一種是面向連續工作的 REPL,會保留專案狀態;另一種是子命令模式,適合腳本和流水線。命令還會提供 JSON 輸出,方便 Agent 直接解析結果,同時保留人類可讀的格式用於除錯。

官方範例裡,Claude Code 外掛可以這樣使用:

1
2
3
/plugin marketplace add HKUDS/CLI-Anything
/plugin install cli-anything
/cli-anything <software-path-or-repo>

如果已經生成某個軟體的 harness,後續使用方式會更接近普通 Python CLI:

1
2
3
4
5
cd <software>/agent-harness
pip install -e .
cli-anything-<software> --help
cli-anything-<software>
cli-anything-<software> --json <command>

適合什麼場景

CLI-Anything 更適合那些「能力在真實軟體裡,但 Agent 不好穩定操作」的場景。例如影像、影片、音訊、辦公文件、3D 建模、資料分析或 AI/ML 工具鏈,只要專案有可分析的程式碼庫、可呼叫的後端或清晰的資料模型,就有機會被包裝成 Agent 可用的命令集。

它的價值不只是在命令列裡多一層封裝,而是把軟體的關鍵操作變成可發現、可組合、可測試的介面。Agent 可以先透過 --help 理解能力,再用 JSON 輸出接收結果,並把多個命令串成工作流。對於需要批次處理、自動驗證和持續迭代的任務,這比臨時讓 Agent 點擊介面更可控。

需要注意的邊界

CLI-Anything 並不等於任何軟體都能立刻無成本接入。它依賴目標軟體的原始碼、後端能力、檔案格式和可測試性;如果一個軟體高度封閉、關鍵邏輯只存在於 GUI 層,生成高品質 CLI 的難度會明顯上升。

官方方法論也強調真實後端和測試驗證,這意味著生成 harness 不是只寫幾個命令包裝腳本就結束。要讓它用於嚴肅工作,還需要確認命令覆蓋範圍、輸出格式、依賴安裝、真實軟體呼叫和端到端測試是否可靠。更現實的用法,是先為一個明確工作流生成 CLI,再透過 refine、test、validate 等命令逐步補齊能力。

小結

CLI-Anything 的思路很直接:不要讓 Agent 去適應脆弱的人類介面,而是為現有軟體補上一層穩定、結構化、可測試的命令列入口。它適合想把專業軟體納入 Agent 工作流的人,也適合研究「Agent 原生軟體」形態的開發者。真正落地時,重點不在於一句命令生成了多少程式碼,而在於生成的 CLI 是否能呼叫真實能力、保持狀態、輸出結構化結果,並經得起測試。

记录并分享
使用 Hugo 建立
主題 StackJimmy 設計