AI

CLI-Anything:港大團隊讓所有軟體都「Agent 原生」,自動為 GIMP、Blender、LibreOffice 生成 CLI

本內容僅供參考,詳細使用規則與工具安全性與否,建議要進行相關安全性測試與評估

讓 AI Agent 操作桌面軟體,目前大致有兩條路:一是 Computer Use,讓 Agent 看螢幕、點滑鼠,彈性高但又慢又容易出錯;二是 API 或 MCP,穩定但大多數軟體根本沒有。CLI-Anything(HKUDS/CLI-Anything)提出第三條路:為每一個軟體自動產生一個給 Agent 用的命令列介面——Agent 最擅長的就是下指令、讀輸出。這個專案來自 10 月初介紹過的 nanobot 同一個團隊(香港大學 HKUDS),目前約 56.3k stars,在 10 月 20 日的 AI 開源趨勢報告中單日新增約 600 顆星。


1. 專案背景與定位

CLI-Anything 採 Apache-2.0 授權,以 Python(3.10+)與 Click 框架開發,標語是「Making ALL Software Agent-Native」。它的核心原則是不重新實作軟體:產生的 CLI 會呼叫真正的後端——要轉 PDF 就用 LibreOffice headless、要渲染就呼叫 Blender、要處理 Audacity 的音訊就用 sox。

專案有兩個面向:一是產生器——在 Claude Code 等 Agent 中執行 /cli-anything ./gimp,自動為一個軟體建立 CLI;二是 CLI-Hub——一個 CLI 的註冊中心與套件管理器(pip install cli-anything-hub),可以直接安裝社群已經做好的 CLI。

2. 技術架構與核心設計

  • 七階段生成管線:分析 → 設計 → 實作 → 規劃測試 → 撰寫測試 → 撰寫文件 → 發佈,並在 6.5 階段額外產生 SKILL.md,讓 Agent 知道怎麼用這個 CLI。
  • 雙重介面:每個 CLI 都同時支援有狀態的 REPL(不帶參數執行),以及可加 --json 輸出的子指令——前者適合互動,後者適合 Agent 解析。
  • 共用元件:統一的 REPL 外觀(repl_skin.py),以及支援 undo/redo 的持久化專案狀態。
  • 迭代補強:/cli-anything:refine ./gimp "<focus>" 會做差距分析,逐步補上缺少的指令。
  • CLI-Hub 套件管理:cli-hub list / search / install / update / uninstall / launch,安裝後以 cli-anything-<軟體名> 指令使用。
  • 涵蓋的軟體:
    • 創作:GIMP、Blender、Inkscape、Audacity、Krita、Kdenlive、Shotcut、OBS Studio、MuseScore
    • 辦公與知識管理:LibreOffice、OpenRefine、Joplin、Zotero、Calibre、Obsidian
    • 圖表:Draw.io、Mermaid
    • 遊戲與引擎:Godot 等
    • 科學與 GIS:FreeCAD、QGIS、ArcGIS Pro(另一個 repo,僅限 Windows 且需商業授權)
    • 基礎設施與 AI:n8n、ComfyUI、Ollama、Zoom、Mailchimp、LLDB、RenderDoc 等
  • 支援的 Agent:Claude Code、Cursor、Codex、Hermes、OpenClaw、GitHub Copilot CLI、Pi 等完整支援;OpenCode、Goose 為實驗性支援。

3. 社群熱度與生態採用

約 56.3k stars、5.1k forks、893 commits。README 宣稱有約 2,400 多個測試且全數通過(不過頁面上各處的測試總數不太一致:2,461、2,464、「2,280+」都有出現),每個 harness 也有各自的測試,例如 Blender 208 個、Inkscape 202 個、GIMP 107 個。新聞區顯示社群持續貢獻新的 CLI,例如 Calibre、Rekordbox、Obsidian、Joplin 等。

4. 局限性與潛在風險

  • CLI 等於把軟體的完整能力交給 Agent:一個能操作 Zoom、Mailchimp、n8n 的 CLI,也就能代表你開會、寄出行銷信、觸發自動化流程。安裝前要清楚每個 CLI 會做什麼,並以最小權限的帳號與 token 執行。
  • 已修補過的安全問題提醒了攻擊面:新聞區記錄了 GIMP Script-Fu 路徑注入、Sketch CLI 的路徑穿越與 symlink 逃逸、Zoom token 權限等修補,並全面改用 defusedxml 解析 XML 類格式——這些都說明「把軟體包成 CLI」會引入新的注入與檔案存取風險。
  • CLI-Hub 是新的供應鏈:從社群註冊中心安裝 CLI,等於執行第三方程式碼;建議固定版本、閱讀原始碼,並優先使用已合併進官方 repo 的 CLI。
  • AI 生成的 CLI 品質不一:產生器產出的介面與測試由模型撰寫,覆蓋範圍可能不完整,需要 refine 與人工驗證。
  • 測試數據不一致:README 中的測試總數多處對不上,部分測試在缺少後端時會被跳過,「100% 通過」需要保留解讀空間。
  • 相依原始軟體:許多 CLI 需要另外安裝對應的桌面軟體;Windows 上的 Claude Code 還需要 Git for Windows 或 WSL。

5. 應用價值與適用場景

最適合需要讓 Agent 處理「傳統軟體工作」的情境:批次轉檔與排版(LibreOffice、Calibre)、影像與音訊處理(GIMP、Audacity)、3D 渲染(Blender)、研究文獻管理(Zotero)、GIS 分析(QGIS)。相較於 Computer Use,CLI 的執行更快、結果更穩定,也更容易寫進可重複的自動化流程。

對企業內部的老舊系統,CLI-Anything 的生成管線也提供了一個思路:與其等待廠商推出 API,不如自己為它產生一個 Agent 可用的介面。

Monday 的觀點與架構建議

  • CLI-Anything 點出了一個被低估的事實:對 Agent 來說,CLI 往往比 GUI 甚至 API 更好用——結構化輸入、--json 輸出、可組合、可腳本化。「讓軟體 Agent 原生」最務實的第一步,可能就是一個好的 CLI。
  • 「呼叫真實後端而非重新實作」是正確的設計選擇,既保留了原軟體的完整能力,也避免了行為不一致。
  • 安全建議:把 CLI 執行放在容器或專用使用者帳號中,限制可存取的目錄,並對有外部副作用的 CLI(寄信、開會、觸發工作流程)加上人工確認。
  • 與 Orca 的 Computer Use、Agent-Reach 的能力路由相比,可以看到 Agent 與外部世界互動的三種模式正在並行發展:看螢幕操作、借用身分讀取、以及結構化的 CLI。長期來看,結構化介面勝出的機率最高,因為它最可稽核、最可測試。

參考來源