CLI-Anything:别再教 agent 点按钮了,直接给它生成一个命令行
Agent 用不好专业软件,这事大家心照不宣,然后用三种都不太行的办法绕过去。用视觉去操 GUI,按钮一挪就崩。用现成的公开 API,覆盖面大概只有软件本身能力的五分之一。或者干脆重写一个玩具版本,假装那是同一个东西。HKUDS 把这三条路看了一遍,选了第四条:对着真正的后端生成一个真正的命令行。项目在 https://github.com/HKUDS/CLI-Anything ,47.3k star,Apache 2.0。
口号就写在那儿:Making ALL Software Agent-Native。它读源码或者文档,跑一条七阶段流水线——分析、设计、实现、测试规划、写测试、文档、发布——最后吐出一个可安装的 Python 包。生成的 CLI 基于 Click,支持 JSON 输出,每个都带两种模式:给 agent 会话用的交互式 REPL,和给脚本调用的普通子命令。这个双模式不是装饰。一个正在干活的 agent 和一个 cron 任务,对同一个工具想要的人机工程学是相反的。
让人信服的数字是:18 个以上应用、2464 个测试全绿,而且是对着真软件跑出来的,不是 mock。最近新增了 Obsidian、Joplin、Calibre、QGIS 的 CLI,还做了安全加固和 CLI-Hub 注册表。贡献者名单横跨 Claude Code、Codex、OpenClaw、Pi 等等,说明大家是在自己本来就在用的 harness 里跑这套东西。
聪明的地方在于选了什么当目标。所有做 agent-计算机接口层的人,要么伸手去抓浏览器,要么去抓 MCP 这类协议。CLI-Anything 抓的是我们手里最老的那个接口,而且论据很硬:CLI 本来就是文本,本来就可组合,本来就有结构化输出的约定,而且跟 GUI 不一样——它的表面是可枚举的。agent 跑一下 help 就知道有什么。它盯着一张截图是不可能知道有什么的。
老实说的局限是:生成的 CLI 完整度上限就是源码或文档的完整度,后端没暴露的东西它也变不出来。这玩意儿不凭空造能力。但对于那一大类"引擎很强、门只有 GUI 一扇"的桌面软件,这是目前有人展示过的、把它变成 agent 可操作的最直的一条路。
← 返回所有文章
口号就写在那儿:Making ALL Software Agent-Native。它读源码或者文档,跑一条七阶段流水线——分析、设计、实现、测试规划、写测试、文档、发布——最后吐出一个可安装的 Python 包。生成的 CLI 基于 Click,支持 JSON 输出,每个都带两种模式:给 agent 会话用的交互式 REPL,和给脚本调用的普通子命令。这个双模式不是装饰。一个正在干活的 agent 和一个 cron 任务,对同一个工具想要的人机工程学是相反的。
让人信服的数字是:18 个以上应用、2464 个测试全绿,而且是对着真软件跑出来的,不是 mock。最近新增了 Obsidian、Joplin、Calibre、QGIS 的 CLI,还做了安全加固和 CLI-Hub 注册表。贡献者名单横跨 Claude Code、Codex、OpenClaw、Pi 等等,说明大家是在自己本来就在用的 harness 里跑这套东西。
聪明的地方在于选了什么当目标。所有做 agent-计算机接口层的人,要么伸手去抓浏览器,要么去抓 MCP 这类协议。CLI-Anything 抓的是我们手里最老的那个接口,而且论据很硬:CLI 本来就是文本,本来就可组合,本来就有结构化输出的约定,而且跟 GUI 不一样——它的表面是可枚举的。agent 跑一下 help 就知道有什么。它盯着一张截图是不可能知道有什么的。
老实说的局限是:生成的 CLI 完整度上限就是源码或文档的完整度,后端没暴露的东西它也变不出来。这玩意儿不凭空造能力。但对于那一大类"引擎很强、门只有 GUI 一扇"的桌面软件,这是目前有人展示过的、把它变成 agent 可操作的最直的一条路。
评论