用Claude Code、Codex或Cursor超过一周的人大概都撞过同一堵墙:智能体在终端里如鱼得水,出了终端就寸步难行。让它重构一个Python模块,它干得漂亮;让它去Shotcut里剪段视频、在GIMP里加个图层、从Draw.io导出一张图,事情就开始散架。

常见的绕法是GUI自动化:截屏、猜按钮在哪、点击、再截屏,循环往复。慢,烧token,而且对话框一挪位置就崩。

香港大学数据智能实验室(HKUDS)的CLI-Anything走了另一条路。它不教智能体用图形界面,而是给软件补上一个正经的命令行接口,让智能体直接调用。

核心思路:界面底下都有引擎

大多数所谓图形界面应用,本质是坐在一个引擎之上的用户界面。Blender有bpy,LibreOffice能无头运行,Shotcut和Kdenlive通过MLT和melt渲染,Inkscape围绕SVG工作。

CLI-Anything分析应用的代码库,找到底下那个引擎,生成一套基于Click的Python命令行,把真实功能暴露成命令。每个生成的命令行都支持--json输出给智能体用,也有人类可读模式、交互式REPL,以及带撤销/重做的项目状态。

于是智能体不再点菜单,而是执行类似这样的东西:

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

结构化输入,结构化输出,没有截屏。

两条使用路径

项目有两个不同的入口,动手前先想清楚要哪个。多数开发者应该从第一个开始。

路径一:用CLI-Hub装现成的。需要Python 3.10或更新版本。先pip install cli-anything-hub,然后用cli-hub list看有什么、cli-hub search image搜、cli-hub install gimp装、cli-hub info gimp查、cli-hub launch gimp启动。

一个容易绊倒人的点:这些命令行包装的是真实软件。装了Blender的命令行,机器上仍然得装着Blender。命令行是接口,不是应用的替代品。

如果智能体支持skills(Claude Code、Codex、OpenClaw等),可以装一个“元技能”,教它自己去CLI-Hub搜索、安装所需工具、读用法文档。之后只需描述任务,比如让它找出CLI-Hub里合适的软件,把./reports下所有.docx转成PDF并合并成一个文件。每个生成的命令行还附带一份SKILL.md,用智能体看得懂的格式描述命令,不用你写提示词。

路径二:给新软件生成命令行。这是项目更有野心的部分。把插件指向一个代码库(本地文件夹或GitHub地址),编码智能体跑一条七阶段流水线:分析源码、把界面动作映射到后端API;设计命令组、状态模型和输出格式;实现带REPL、JSON输出和撤销/重做的Click命令行;在TEST.md里规划测试;写单元测试和针对真实软件的端到端测试;记录结果;发布setup.py让命令行装进PATH。

在Claude Code里,配置是这样:先加插件市场,再装插件,然后对./gimp跑一遍。也可以直接传仓库地址。第一遍跑完后,refine命令会去找软件能做而命令行没覆盖的缺口,补上命令和测试。之后像普通Python包一样安装使用,不带参数运行就进REPL。

插件支持Claude Code、Cursor、Codex、OpenCode、GitHub Copilot CLI、Pi、Qodercli、OpenClaw、Hermes和Reasonix。其中几个标注为实验性或社区维护,Claude Code这条路打磨得最完整。Windows用户注意:Claude Code通过bash跑shell命令,得装Git for Windows或用WSL,否则会撞上cygpath: command not found。

真正好用的地方

  • 媒体与文档流水线。用LibreOffice批量转文档、在Blender里渲染场景、剪视频加字幕。这些任务以前智能体根本做不稳。
  • 包装杂乱的API。把API文档或SDK喂给生成器,得到一个有状态的命令行,而不是几十个裸HTTP调用。工具调用少了,token和错误通常也少。
  • 内部工具。团队有个代码库像样但没有API的内部应用,这是让它对智能体和人都可脚本化的快路子。
  • 测试与基准。软件有了命令行,就能用代码生成智能体任务和评估器,不必靠录屏。

仓库里的演示值得一看。一个演示里,智能体纯靠命令在Draw.io里搭出完整的HTTPS握手图;另一个演示里,智能体在FreeCAD里组装漫游车模型,每一步都有实时预览更新。

该说清楚的坑

项目很火(撰写时超过51k星),迭代也快,但预期要放现实。

生成不是免费的。七阶段流水线是一次长跑:读大代码库、写实现、再写测试并运行。在Blender这种大项目上,token和时间都烧得厉害。把产出当成一份需要你审阅的扎实初稿,而不是成品。

覆盖率取决于暴露了什么。命令行的好坏只等于它拥有的命令。任务需要的东西没被暴露时,智能体没法像GUI智能体那样退回去“点一下”。这是实打实的取舍:结构化接口在覆盖任务时更可靠,覆盖不到时更脆。refine命令能帮忙,但不是魔法。

注册表里质量参差。核心那批(GIMP、Blender、LibreOffice、Inkscape、Audacity等)有大量测试套件,仓库称整体有2000多个测试通过。较新的社区贡献则单薄些。依赖某一个之前,先看测试数量和最后更新时间。

真实软件还是得装。这是特性——你拿到的是真实渲染,不是玩具级重实现——但也意味着安装上游应用,有时还得配置,比如API密钥或本地服务器。

装什么要留神。和任何社区注册表一样,给智能体运行权限之前先看看这个命令行干什么,尤其是碰凭证、文件系统或远程服务的那些。维护者在修路径注入和不安全XML解析这类问题,这是好信号,但也说明攻击面是真实存在的。

值不值得试

值得,但范围要清楚。

如果你的智能体工作涉及代码编辑器之外的东西——文档、媒体、图表,或团队依赖的某个桌面应用——CLI-Hub是低成本的收益。一次pip install,一次cli-hub install,智能体就能做它以前根本做不了的事。评估成本大约十分钟。

生成器适合你有一个明确想让智能体控制的工具,并且愿意审阅和打磨产出。只想随便玩玩的话,吸引力就小些,因为完整生成一轮的token和时间成本是实打实的。

项目背后更大的想法也值得留意:与其让智能体更擅长在屏幕前假装人类,不如一开始就给软件一个为智能体设计的接口。不管CLI-Anything会不会成为这件事的标准做法,它今天已经是一个能跑通的实例。

一个不错的首次实验:装好hub,搜office,装libreoffice,然后让智能体转换并合并一个文件夹里的文档,再和GUI自动化那条路比比手感。