
1 最近很火的 CLI-Anything
项目地址:https://github.com/HKUDS/CLI-Anything
CLI-Anything 想做的事很直接:把一个现有软件,或者一个现成代码仓库,变成 AI agent 能稳定调用的命令行工具。
我最近也在做这件事。我之前有一个前后端都有的工具,最开始是先让 Agent 去控浏览器,走前端页面,登录、点按钮、一步一步把流程跑通。后来我又把前后端代码直接给它,让它把功能往外抽,边写边测。最后做出来的效果其实挺好,主要功能都能正常用。
所以我看到这个项目时,第一反应不是"这个想法挺新",而是"终于有人把这一套动作抽象出来了"。这个项目是 3 月 9 号开源的,到 3 月 27 号已经拿到了两万多 Star,传播速度非常快。下面就来看看:它到底把哪些东西做成了通用能力。
它不是再造一个简化版软件,也不是靠点点点的 UI 自动化去糊。它的思路是把真实软件的能力,包装成结构化 CLI,让 agent 用命令、参数和 JSON 输出去调用。这比截图识别、按钮点击那套稳定很多,也更适合长链路自动化。
2 解决什么问题
现在的大模型很会推理,但真让它去操作复杂软件,经常还是两条路:
-
要么走 GUI 自动化,容易脆
-
要么依赖零散 API,能力不完整
-
要么重写一套简化工具,但很多真实能力会丢
CLI-Anything 的做法是把"软件能力"转成"agent 可调用的 CLI 能力"。这样 agent 不需要理解界面,也不用拼很多分散接口,而是直接调用统一命令。
3 怎么工作
项目里最核心的是一条自动化流水线。你把一个本地代码仓库,或者一个 GitHub 仓库路径,交给它,它会按一套固定流程去生成 CLI。
大致分成 7 个阶段:
-
分析源码,理解软件能力和可操作对象
-
设计命令结构、状态模型和输出格式
-
生成可用的 CLI 和交互式 REPL
-
规划测试
-
生成测试
-
补文档
-
打包成可安装工具
最后产物不是一个演示脚本,而是一个能安装、能跑、能测试、能继续迭代 refine 的 CLI harness。
3.1 CLI harness 是什么
这里先补一个背景:CLI harness 可以理解成"软件和 agent 之间的一层命令行中间层"。
很多复杂软件不是写一个 SKILL.md 就能直接控制的。因为真实操作里往往有多步流程、上下文切换、状态保存、参数组合,甚至还要真的去调后端程序执行。只靠一份说明文档,agent 知道怎么说,但并不等于软件真的能被稳定调用。
CLI-Anything 做的事,就是先用 Python 把这层中间层做出来。它会把软件能力整理成一个真正可执行的命令行程序,通常长这样:cli-anything-<software>。这个程序负责命令设计、状态管理、JSON 输出、REPL,以及和真实后端对接。然后它再配一份 SKILL.md,告诉 agent 这层 CLI 怎么用。
所以顺序其实是:先有可执行的 CLI harness,再有描述这个 harness 的 SKILL.md。前者负责真正干活,后者负责让 agent 看懂怎么调用。
4 几个亮点
4.1 不是玩具 CLI,而是给 agent 用的 CLI
它生成的 CLI 不只是能跑命令,还会尽量统一这些能力:
-
支持子命令结构
-
支持 JSON 输出,方便 agent 消费
-
支持 REPL,适合连续任务
-
支持状态管理、逐步操作
-
带测试和文档
这件事很重要。因为 agent 真正需要的不是"能调用一下",而是"能稳定接到工作流里"。
4.2 强调调用真实软件,而不是替身
README 里反复强调一件事:不要为了省事,用假的渲染器或简化实现去替代真实软件。
比如对 Blender、LibreOffice、GIMP 这类工具,CLI-Anything 更看重的是生成正确项目文件,再调用真实后端去执行。这样保留下来的才是原软件真正的能力,而不是一个缩水版本。
4.3 很重视测试
这个项目不是停留在"看起来能跑"的层面。README 里给了大量测试数据,覆盖单元测试、端到端测试、以及安装后命令级别的验证。
它已经拿很多不同类型的软件做了演示,包括:
-
GIMP、Blender、Inkscape、Audacity
-
LibreOffice、OBS Studio、Shotcut、Kdenlive
-
Draw.io、Mermaid、Zoom
-
ComfyUI、Ollama、NotebookLM 等
这说明它不是只适合某一类软件,而是在验证一套更通用的方法。
4.4 对 agent 生态比较友好
它不只支持单一平台,README 里已经覆盖了 Claude Code、OpenCode、OpenClaw、Codex、GitHub Copilot CLI 等入口。
另外它还强调了 SKILL.md 的生成。也就是说,生成出来的不只是一个 CLI,还会带一份 agent 可发现、可理解的 skill 描述。这一点对 agent 自动发现工具、自动调用工具很关键。
5 适合什么场景
从 README 的示例看,这个项目比较适合几类场景:
-
你手里有一个开源项目,想让 agent 直接操作它
-
你有一套零散 API,想整理成统一 CLI
-
你不想继续依赖脆弱的 GUI 自动化
-
你想把"软件能力"接进 agent workflow,而不是只做聊天
如果你本来就在做 agent 工具链、技能系统、自动化工作流,这个项目会很值得看。
6 怎么上手
README 里的上手方式不复杂。核心前提是:
-
需要 Python 3.10+
-
目标软件本身要可用
-
需要一个支持它的 agent 平台
最典型的用法,是把仓库路径丢给它,让它生成 CLI。生成后可以像普通命令行工具一样安装、查看 help、跑子命令,也可以进 REPL 模式持续操作。
如果第一次生成得不够完整,它还支持 refine,继续补能力,而不是一次生成后就结束。
6.1 具体实验:以 Blender 为例
这里我自己实际试了一下,更容易理解它到底在干什么。
一开始我把 cli-anything 这个 skill 装进本地时,目录里其实只有一个很简单的 SKILL.md。我当时也有点困惑,觉得这是不是太简单了。后来再看源码仓库才发现,这个文件本身不是成果,它更像是"构建器入口"。它的作用是告诉 agent:如果用户要把某个软件变成 agent 可调用工具,就按 CLI-Anything 这套方法去做。
真正的成果都在源码仓库每个软件自己的 agent-harness 目录里。比如 Blender 对应的是一整套现成的中间层:
-
有
setup.py -
有
cli_anything/blender/blender_cli.py -
有
core/、utils/、tests/ -
也有它自己的
skills/SKILL.md
也就是说,Blender 不是只有一份说明文档,而是已经被做成了一个可执行的 Python CLI 包,名字叫 cli-anything-blender。
我后面又把这个 Blender 的 harness 单独装了。装完之后,本地会多出一个命令:cli-anything-blender。这时候整个结构就很清楚了:
-
cli-anything这个 skill,是"教 agent 怎么生成 harness"
-
cli-anything-blender,才是"真正拿来控制 Blender 的中间层"
它和我之前用过的 Blender MCP,在角色上其实有点像,都是在 agent 和 Blender 之间加一层适配层。区别是这里走的是命令行中间层:把 Blender 能力整理成命令、状态和 JSON 输出,再让 agent 去调。
两者各有侧重。Blender MCP 的方式是在 Blender 里装一个插件,agent 可以直接连上正在运行的那个 GUI 实例,操作实时可见;缺点是功能受限于插件暴露了多少。cli-anything-blender 则是每次把场景写成 JSON,再起一个新的后台 Blender 进程去执行脚本,和已经打开的界面是脱节的,agent 反复调试的成本也更高。但好处是不依赖插件生态,理论上任何能跑命令行的软件都能照这个套路来。
cli-anything-blender 虽然装上了,但本机如果没有 blender 命令,它还是没法真正去执行 Blender 后端。也就是说,这套东西不是假的演示壳子。它真要工作,还是要落到真实软件本身。
所以如果从使用者视角总结,实验大概是这样的:
-
先装一个 builder skill,让 agent 知道怎么造 harness。
-
对某个具体软件,再装它对应的
cli-anything-<software>。(也可以自己构建) -
本机还得有这个软件自己的后端或可执行程序。
-
最后 agent 调的,其实不是 GUI,也不是那份
SKILL.md,而是这个可执行的 CLI harness。
7 我对这个项目的理解
我觉得 CLI-Anything 真正有意思的地方,不只是"自动生成 CLI"。更重要的是它在试一件更大的事:
把今天原本只服务人类的软件,改造成能被 agent 稳定调用的基础设施。
如果这条路走通,很多今天必须靠网页点选、桌面点击、人工串接口的事情,都会慢慢变成"agent 调命令完成"。从这个角度看,CLI-Anything 不只是一个工具项目,更像是在补 AI agent 和现实软件世界之间的那层接口。
一句话总结:CLI-Anything 可以理解成一个"把任意软件变成 agent 原生工具"的自动化工厂。它最打动人的地方,不是概念新,而是它在认真解决可用性、真实性和测试这几个最容易被忽略的问题。
8 延伸思考
如果顺着这个方向再往前看一步,我觉得可以说,CLI 对 MCP 有很强的替代性。尤其在开源软件场景里,很多能力其实没必要先包一层 MCP,再让 Agent 去调。直接把能力抽成 CLI,再配上 SKILL,路径会更短,也更自然。
但这不等于软件会消失。更准确的说法是,软件正在后端化。一部分软件以后还在,只是不再主要通过界面给人操作,而是先变成 Agent 可调用的能力。真正容易被重构的,是那些输入输出明确、但中间过程本身没那么重要的软件。
反过来说,社交软件、视频软件,或者那些和硬件、实时反馈、内容生态强相关的软件,短期内都很难被这样替代。它们的价值不只是功能本身,也在关系、分发、交互过程和设备能力里。