别再让 AI 学着点鼠标了:港大这个项目,要把所有软件改造成"一句话生成"的命令行

让 AI Agent 帮你干活,你大概率遇到过这种憋屈场面:你说"用 Blender 把这个模型渲染出来",它对着屏幕截图纸看了半天,找不到渲染按钮在哪;你说"把 Zotero 里这个文件夹的文献批量导出",它一个菜单一个菜单地试探,点错了退回去重来。不是模型笨,是路走歪了。

现在让 Agent 操作软件的主流做法叫 computer-use:截屏、识别界面元素、模拟鼠标点击。这套方案的问题很直观——图形界面是给人设计的,不是给模型设计的。人眼扫一眼就知道"保存"在哪,模型却要在几十上百个像素块里猜;人点错一步顺手撤销,Agent 点错一步可能整条任务链崩掉。更要命的是又慢又贵:每步操作都是一轮截图加推理,token 哗哗地烧,成功率还看运气。

港大 HKUDS 数据智能实验室——就是做出 LightRAG 的那拨人——换了个思路:别点界面了,直接给软件造一套命令行。

这个项目叫 CLI-Anything,口号喊得很直白:今天的软件服务于人类,明天的用户将是 Agent。它要做的事,就是用一条命令,把任意软件、任意代码库,自动改造成 Agent 能直接调用的命令行工具。

CLI-Anything 三联漫画:从软件太多的困境,到发现 CLI-Anything,再到万物 Agent 原生


为什么命令行才是 Agent 的母语?

在讲项目之前,得先说说这个选择的逻辑,因为它决定了整个项目的设计。

大模型本质上是文本进、文本出,命令行恰好是纯文本界面:一条命令就是一行结构化文本,跟模型的输出格式天然对齐;--help 自带说明书,Agent 跑一次就知道有哪些子命令;--json 一开,输出直接是结构化数据,省掉了解析界面元素的中间层。还有两个隐性优势:命令可以像积木一样串成管道和脚本;同样一个操作,走命令行的开销和走截图点击完全不在一个量级。

这不是拍脑袋的理论。Claude Code 这类编程 Agent 每天就在靠命令行跑成千上万的真实工作流——装依赖、跑测试、操作 git、处理文件。这条路早就被验证过,只是此前没人系统地把它推向"所有软件"。

CLI-Anything 赌的就是这个:与其教 Agent 看懂人类的界面,不如让软件学会说 Agent 的语言。


一条命令,七个阶段,CLI 自己长出来

项目的核心用法简单到有点粗暴。在 Claude Code 里装好插件后,敲一条:

/cli-anything ./gimp

Agent 就会自动跑完一条七阶段流水线:

  1. 代码分析——扫描源码,把 GUI 动作映射到底层 API
  2. 设计——规划命令分组、状态模型、输出格式
  3. 实现——生成带 REPL 和 JSON 输出的 Click 命令行
  4. 测试规划——产出单元测试加端到端测试计划
  5. 写测试——实现完整的测试套件
  6. 补文档——把测试结果写回文档
  7. 发布——生成 setup.py,安装到 PATH

跑完之后,你就有了一个叫 cli-anything-gimp 的命令,可以直接用:

cli-anything-gimp --help
cli-anything-gimp project new --width 1920 --height 1080 -o poster.json
cli-anything-gimp --json layer add -n "Background" --type solid --color "#1a1a2e"

注意最后那条的 --json——这是给 Agent 准备的。同一个 CLI,人用 REPL 交互,Agent 用子命令加 JSON,两条路互不干扰。

CLI-Anything 七阶段流水线架构图

按官方 README 的说法(这是官方数据):项目已在 18 个真实应用上完成验证,累计 2,461 项测试全部通过,其中包含 1,732 个单元测试、579 个端到端测试和 19 个 Node.js 测试。覆盖的领域从 Blender、GIMP、LibreOffice、OBS Studio 这类创意和办公软件,到 ComfyUI、Ollama 这类 AI 工具,再到 FreeCAD、QGIS、RenderDoc、LLDB 这类专业工程软件。团队还为此发了 arXiv 技术报告(arXiv:2606.03854),不是拍脑袋的玩具项目。


不想自己生成?CLI-Hub 里直接装现成的

生成只是半边天,另一边是生态。CLI-Anything 配套了一个叫 CLI-Hub 的"应用商店",不想自己动手的人直接装现成的:

pip install cli-anything-hub
cli-hub list          # 浏览社区做好的 CLI
cli-hub search image  # 按关键词搜
cli-hub install gimp  # 装上就能用

库里已经有 Blender、GIMP、Krita、FreeCAD、QGIS、Zotero、Obsidian、Calibre、MuseScore、Kdenlive、Zoom、n8n 等一大批软件的 CLI 封装,而且社区提交新 CLI 走 PR 流程,合入后 Hub 即时更新。

还有一个容易被忽略但很关键的细节:每个生成的 CLI 都自带一份 SKILL.md。这是给 Agent 看的技能描述文件,用 YAML 声明命令分组、用法示例和 JSON 输出的注意事项。装好之后,Agent 自己能发现自己"多了什么本事、该怎么调",不需要你再写一份人类阅读的操作手册。项目还提供了一个 meta-skill,一条命令给你的 Agent 装上"自己去 Hub 里找工具"的能力:

npx skills add HKUDS/CLI-Anything --skill cli-hub-meta-skill -g -y

然后你直接下任务就行:"在 CLI-Hub 里找合适的 CLI,把文件夹里 30 张图批量转成黑白。"剩下的检索、安装、读文档、逐条执行,Agent 自己闭环。


几个我觉得挺聪明的设计取舍

翻完 README,有几个细节比"一句话生成"这个卖点更有意思。

第一,它死活不造替代品。 这是项目写在设计原则第一条的:Authentic Software Integration。CLI-Anything 生成的是"通往真实软件的结构化接口",不是另一个玩具实现。GIMP CLI 底层真的在调 GEGL/Script-Fu,Blender CLI 真的在调 bpy,LibreOffice CLI 生成的是真 ODF 文件、由 LibreOffice 无头模式转出真 PDF。代价是:本机得先装好上游软件。用 GIMP CLI 就得先有 GIMP,跑 Blender CLI 就得先有 Blender。这听起来是废话,但对比那些"看起来能跑、其实输出全是占位符"的 AI 生成工具,这种克制反而是靠谱的证明。

第二,缺了后端,测试直接失败,不跳过。 官方管这叫 Zero Compromise Dependencies——测试套件里没有"环境没有就 skip"这种和稀肿的设计,后端不在,测试就 fail。对一个自动生成代码的项目来说,这条规矩是在保底线:宁可让 CI 红着,也不让一个调不动真实软件的 CLI 蒙混过关。

第三,官方明说"一次生成不可能全覆盖",所以有了 refine。 /cli-anything:refine 命令会对软件全部能力和现有 CLI 做差距分析,增量补命令、补测试,而且明确保证非破坏性——每次只加东西,不动已有成果。这种"承认第一版不完美、把迭代路径做出来"的设计,比那些宣称"一键完美"的诚实得多。实际用下来,生成质量确实很看模型能力,一个复杂软件往往要多轮 refine 才能把覆盖面堆上去。

第四,REPL 和子命令双模式,外加一套统一的皮肤。 所有生成的 CLI 共享同一个 REPL 界面(repl_skin.py):统一的横幅、提示符、命令历史、进度指示。光脚敲命令进入交互模式,适合 Agent 做多轮有状态的任务;带子命令跑,适合脚本和流水线。一套代码两副面孔,人和机器各取所需。


安装与上手

分两种路径,看你的需求。

路径一:只用现成生态,五分钟。

pip install cli-anything-hub
cli-hub list
cli-hub install gimp

路径二:给自己的软件或内部工具生成 CLI。 以 Claude Code 为例:

# 添加插件市场
/plugin marketplace add HKUDS/CLI-Anything

# 安装插件
/plugin install cli-anything

# 生成 CLI
/cli-anything ./your-software

生成后装到 PATH 即可使用。需要说明的是,生成器本身依赖 Python 3.10+ 和 Click 8.0+,且需要一个受支持的 AI 编程 Agent 来驱动七阶段流水线,目前已支持 Claude Code、Cursor、Codex、OpenClaw、OpenCode、Pi、GitHub Copilot CLI、Goose 等平台。

两个已知的坑,提前说: 一是 Windows 用户注意,Claude Code 在 Windows 上通过 bash 执行命令,如果没有 Git for Windows 或 WSL,插件里的 shell 命令会报 cygpath: command not found;二是前面提过的,包装类 CLI 依赖本机上游软件,没装就是跑不起来。


适合谁用

按我的观察,这几类人最能吃到红利:

内容创作者。 批量修图、剪视频、做 3D 场景,这类工作的共性是"步骤重复、软件重型"。GIMP、Blender、Kdenlive、Shotcut 的 CLI 都齐了,Agent 一条命令处理 30 张图和人手动点 30 次,效率差着量级呢。

要把内部系统接进 Agent 工作流的开发者。 公司内部的工具、自研系统没有 API 或者 API 不全,扔给 /cli-anything 生成一套 CLI,比手写 wrapper 快得多。README 里还提到一个思路:把散乱的 Web 服务 API 文档喂给它,生成一个把多个端点整合成命令组的"有状态 CLI",省 token 还统一了口径。

科研党和知识管理重度用户。 Zotero、Calibre、Obsidian、Joplin 这些文献和笔记主力都有现成 CLI。写论文时"把某文件夹文献按引用格式批量导出""把本周笔记整理成综述提纲",Agent 直接干。

设计和 GIS 等专业软件的效率玩家。 QGIS、FreeCAD、Inkscape、Draw.io 这类工具专业度高、操作链路长,恰恰是命令行自动化最能发挥的地方——前提是你真的受够了重复劳动。


最后说两句

CLI-Anything 真正的野心,我觉得不是"又一个 AI 工具集合",而是在给 Agent 时代的软件定接口标准。它的逻辑很朴素:当软件的用户从人变成 Agent,每款软件都得回答一个问题——你的命令行在哪?

有 arXiv 论文背书、两千四百多项测试、覆盖十几个真实软件、还自带分发生态,这个项目把口号往"基础设施"的方向做实了。当然它也有明显的边界:生成质量吃模型能力、依赖本机装上游软件、覆盖率靠 refine 一轮轮堆。但方向这事,有时候比完美更重要。

当"明天的用户是 Agent"从口号变成日常,早点让自己的工具说命令行语言,总比等着被截图点击折磨要强。


相关资源: