-
buo4 技术教程组 用户
别再让 AI 学着点鼠标了:港大这个项目,要把所有软件改造成"一句话生成"的命令行
让 AI Agent 帮你干活,你大概率遇到过这种憋屈场面:你说"用 Blender 把这个模型渲染出来",它对着屏幕截图纸看了半天,找不到渲染按钮在哪;你说"把 Zotero 里这个文件夹的文献批量导出",它一个菜单一个菜单地试探,点错了退回去重来。不是模型笨,是路走歪了。
现在让 Agent 操作软件的主流做法叫 computer-use:截屏、识别界面元素、模拟鼠标点击。这套方案的问题很直观——图形界面是给人设计的,不是给模型设计的。人眼扫一眼就知道"保存"在哪,模型却要在几十上百个像素块里猜;人点错一步顺手撤销,Agent 点错一步可能整条任务链崩掉。更要命的是又慢又贵:每步操作都是一轮截图加推理,token 哗哗地烧,成功率还看运气。
港大 HKUDS 数据智能实验室——就是做出 LightRAG 的那拨人——换了个思路:别点界面了,直接给软件造一套命令行。
这个项目叫 CLI-Anything,口号喊得很直白:今天的软件服务于人类,明天的用户将是 Agent。它要做的事,就是用一条命令,把任意软件、任意代码库,自动改造成 Agent 能直接调用的命令行工具。

为什么命令行才是 Agent 的母语?
在讲项目之前,得先说说这个选择的逻辑,因为它决定了整个项目的设计。
大模型本质上是文本进、文本出,命令行恰好是纯文本界面:一条命令就是一行结构化文本,跟模型的输出格式天然对齐;--help 自带说明书,Agent 跑一次就知道有哪些子命令;--json 一开,输出直接是结构化数据,省掉了解析界面元素的中间层。还有两个隐性优势:命令可以像积木一样串成管道和脚本;同样一个操作,走命令行的开销和走截图点击完全不在一个量级。
这不是拍脑袋的理论。Claude Code 这类编程 Agent 每天就在靠命令行跑成千上万的真实工作流——装依赖、跑测试、操作 git、处理文件。这条路早就被验证过,只是此前没人系统地把它推向"所有软件"。
CLI-Anything 赌的就是这个:与其教 Agent 看懂人类的界面,不如让软件学会说 Agent 的语言。
一条命令,七个阶段,CLI 自己长出来
项目的核心用法简单到有点粗暴。在 Claude Code 里装好插件后,敲一条:
/cli-anything ./gimp
Agent 就会自动跑完一条七阶段流水线:
- 代码分析——扫描源码,把 GUI 动作映射到底层 API
- 设计——规划命令分组、状态模型、输出格式
- 实现——生成带 REPL 和 JSON 输出的 Click 命令行
- 测试规划——产出单元测试加端到端测试计划
- 写测试——实现完整的测试套件
- 补文档——把测试结果写回文档
- 发布——生成
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,两条路互不干扰。

按官方 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"从口号变成日常,早点让自己的工具说命令行语言,总比等着被截图点击折磨要强。
相关资源:
- 项目仓库:HKUDS/CLI-Anything(Apache-2.0 协议)
- CLI-Hub 在线市场:hkuds.github.io/CLI-Anything
- 技术报告:arXiv:2606.03854
- 贡献与 CLI 申请:见仓库内 CONTRIBUTING.md