AI 只会截图点按钮?港大开源 CLI-Anything:一条命令,给任何软件装上 Agent 能用的接口
让 AI 帮你改一张图,行业里最主流的办法是什么?截图,识别坐标,模拟点击,再截一张图确认点没点上。听起来挺智能,做起来特别笨。
更窝火的是它脆。界面改个版,按钮挪 20 像素,整套流程当场崩;换台机器,分辨率不一样,又崩。说白了,这是让 AI 隔着玻璃橱窗拿东西,看得见,摸不着。折腾一圈,该加班还是加班。
港大 HKUDS 实验室给了一个反过来的答案。别再费劲让 AI 去适应人类留下的界面了,直接给软件装一个 Agent 能看懂的接口。这个项目叫 CLI-Anything,Apache 2.0 开源,Python 3.10 起步,GitHub 上已经攒到 5 万星左右。
Today’s Software Serves Humans. Tomorrow’s Users will be Agents.
今天的软件服务人类,明天的用户是 Agent。

先说个让人窝火的事实:AI 操作软件,一直走最笨的那条路
结论先摆这儿:过去几年所有让 AI 用电脑的方案,本质上都在迁就人类留下的界面。掰开看,它们走的是三条路。
第一条,云端虚拟机。起一台云上的电脑,把鼠标键盘交给 Agent,让它盯着屏幕看、照着屏幕点。Hugging Face 的 Open Computer Agent 就是这个思路的代表。好处是不用本地装东西,代价是慢,而且每一步都得重新看一遍屏幕。
第二条,复用你已经登录的浏览器。会话、Cookie、登录态全留着,Agent 上来就能干活,腾讯开源的 BrowserSkill 走的是这条路。登录问题是解决了,可它只管得了浏览器里的事,桌面上的专业软件一概够不着。
第三条,给 Agent 接外部工具,用统一协议把能力挂上去,MCP 协议就是干这个的。方向没错,现实却很骨感:绝大多数专业软件压根没有现成的服务端,协议再标准也没东西可接。
三条路有个共同点,AI 一直在猜界面,而不是在调软件。猜对了算运气好,猜错了就是事故。结果呢,越聪明的模型,越容易在这件笨事上翻车。
反过来想:不改 AI,改软件
CLI-Anything 的主张特别直白:命令行是人类和 Agent 通用的那把钥匙。截图点按钮,像让 AI 隔着玻璃橱窗拿东西;CLI 是把钥匙直接递到它手里。
README 里给了五条选 CLI 的理由,值得原样记下来:
- 结构化、可组合:一条命令的输出能直接喂给下一条命令。
- 轻量、跨平台:没有浏览器,没有虚拟机,不吃显卡。
- –help 自描述:Agent 不用你教,自己敲一遍就摸清这个软件能干什么。
- 原生 –json 输出:机器可读,省掉解析屏幕这一整步。
- 结果确定、可复现:同样的命令,跑一百次是一百次相同的输出。
这五条合起来指向一件事。GUI 是给人看的,CLI 是给机器用的。Agent 时代,软件得长出第二张脸,仅此而已。

三步装上:CLI-Hub 就是 CLI 的应用商店
先说最快的路子,别急着造轮子。CLI-Hub 是配套的注册表和包管理器,安装就一行命令:
pip install cli-anything-hub然后像逛应用商店一样挑:
cli-hub list # 浏览全部
cli-hub search image # 按关键词搜
cli-hub info gimp # 看详情和依赖
cli-hub install gimp # 安装
cli-hub update gimp # 更新
cli-hub uninstall gimp # 卸载
cli-hub launch gimp # 启动列表类命令全都支持 –json,Agent 直接读结果,不用去解析排版:
cli-hub list --json注册表里现在有 40 多个 CLI,官方说重点验证过 18 个主流应用。分类铺得很宽,3D、Design、Video、Audio、Office、Database、DevOps 都有。动手之前先翻一遍,翻不到再造。
还有个给 Agent 用的元技能,装上之后它会自己去找合适的 CLI:
npx skills add HKUDS/CLI-Anything --skill cli-hub-meta-skill -g -y之后对着 Agent 说一句「去 CLI-Hub 找合适的 CLI 并完成这个任务」,剩下的它自己办。
真后端,不是模拟:出的 PDF 是真 PDF
这一章是它和截图流路线的分水岭。CLI-Anything 生成的命令,背后调的是软件自己的真实后端。
LibreOffice 走 headless 模式导出,测试里会校验 PDF 的 magic bytes,出来的就是真 PDF。Blender 直接跑 bpy 做真实渲染。Audacity 通过 sox 处理音频。没有哪一环是在假装。
看一组官方示例,新建文档、加标题、插表格、导出 PDF,一气呵成:
cli-anything-libreoffice document new -o report.json --type writer
cli-anything-libreoffice --project report.json writer add-heading -t "Q1 Report" --level 1
cli-anything-libreoffice --project report.json writer add-table --rows 4 --cols 3
cli-anything-libreoffice --project report.json export render output.pdf -p pdf --overwrite尾巴上补一个 –json,返回的就是机器可读的结果:
{"name":"Q1 Report","type":"writer","pages":1,"elements":2,"modified":true}Blender 那边更带感,裸敲命令直接进 REPL,提示符会跟着项目名和状态一起走:
$ cli-anything-blender
blender> scene new --name ProductShot
blender[ProductShot]> object add-mesh --type cube --location 0 0 1
blender[ProductShot]*> render execute --output render.png --engine CYCLES最后那个星号,表示项目里有未保存的改动。就这么一个小细节,Agent 也能判断自己干到哪一步了。
测试量也是往死里堆。GIMP 107 项,Inkscape 202 项,Audacity 161 项。README 汇总写的是 2,461 项测试、100% 通过率。这玩意儿不是玩具。

一条命令造一个新 CLI:七阶段都在干嘛
注册表里没有你要的软件,那就自己造。整个流程被拆成七个阶段,一条命令启动。
以 Claude Code 为例,先装插件:
/plugin marketplace add HKUDS/CLI-Anything
/plugin install cli-anything
/cli-anything ./gimp直接甩一个 GitHub 地址也行:
/cli-anything https://github.com/blender/blender造出来不满意,还有三个迭代命令,refine 打磨、test 跑测试、validate 校验:
/cli-anything:refine ./gimp
/cli-anything:test ./gimp
/cli-anything:validate ./gimp七阶段具体在干什么:
- Analyze:扫源码,把 GUI 上的一个动作映射成底层 API。
- Design:设计命令分组、状态模型和输出格式。
- Implement:用 Click 生成 CLI,自带 REPL、–json、undo/redo。
- Plan Tests:规划测试范围。
- Write Tests:真写单测和端到端测试。
- Document:6.5 阶段自动生成 SKILL.md,让别的 Agent 也能看懂怎么用。
- Publish:生成 setup.py,把命令装进 PATH。
一句话讲完:前面几步在理解软件,中间几步在验证理解,最后两步在把结果交出去。支持的平台也铺开了,Claude Code、Cursor、Codex、OpenClaw、Pi、OpenCode、Hermes、Qodercli、GitHub Copilot CLI 都能跑。
实战场景:这东西用在哪最划算
先看官方演示干了什么。FreeCAD 里用 preview 加 live preview 加 trajectory,一步步搭出一台好奇号风格的探测车;Blender 里同一套流程搭出一台轨道中继无人机;VideoCaptioner 自动生成并烧录双语字幕。
这里最关键的是 trajectory。它会把每一条命令绑定到对应的画面状态,整个过程可以回放。这意味着 AI 干过的活,你能一步一步看回去,不是只拿到一个结果文件。
所以最划算的场景长这样:
- 同一套动作要重复几十遍的活。
- 没有显示器的环境,服务器和 CI 上 GUI 自动化直接失效,CLI 照跑。
- 要留痕、要能定位问题的任务,trajectory 可回放,出错能追到具体那一条命令。
- 把专业软件接进更大的 Agent 工作流,–json 输出天生适合当中间结果。
反过来,偶尔做一次、全凭手感的操作,用 CLI 反而绕。工具是用来省时间的,不是用来炫的。
它不完美:五个坑,README 里都不写
坑1:装了 CLI 却跑不起来
现象:install 显示成功,一执行就报错。根因:装的是 harness 壳,GIMP、Blender、LibreOffice 这些上游软件本体不在里面,得自己另装。解法:先跑 cli-hub info 看依赖,再把本体装上。
坑2:Windows 上 Claude Code 报 cygpath: command not found
现象:命令一执行就蹦出这行错。根因:Claude Code 是通过 bash 执行 shell 命令的,Windows 原生环境没有这套东西。解法:装 Git for Windows,或者干脆上 WSL,README 里是这么写的。
坑3:安装行为会被匿名统计
现象:cli-hub 默认会往 Umami 发匿名的安装和卸载事件。根因:官方想统计用量。解法:export CLI_HUB_NO_ANALYTICS=1 关掉。官方说法是只发匿名事件、不收个人信息,介意的话提前关。
坑4:以为一条命令几秒钟出结果
现象:敲完 /cli-anything 就干等着。根因:七阶段要真扫源码、真跑单测和端到端测试、真调后端渲染,慢是正常的。解法:先翻注册表有没有现成的;没有再造,而且要留出跑测试的时间。
坑5:小众和内部工具覆盖不到
现象:40 多个 CLI 里翻不到你要的那个。根因:覆盖面有限,小众软件和公司内部工具没人造。解法:按七阶段自己造 harness,别指望开箱即用。
写在最后
回到开头那个场景。让 AI 隔着玻璃橱窗拿东西,这件事本身就别扭了很久。CLI-Anything 有意思的地方在于,它先承认了一件事:与其把 AI 训得更会猜界面,不如给软件补一个机器能读懂的接口。
钥匙递过去,门就开了。剩下的活,是把这把钥匙配给更多软件。说实话,这件事早晚得有人做,港大这帮人先动手了。
关注圈圈,持续带你玩转 AI 工具。
暂无评论内容