我想让AI帮我用Blender渲染一个3D场景。
就一句话,帮我渲染一个金色的小球放在蓝色背景前。
结果呢,AI要么跟我说抱歉我无法直接操控Blender,要么给我一个Python脚本让我自己跑,跑完还经常报错。
这种感觉挺不爽。
AI的推理能力已经很强了,操控真实专业软件的能力还是不太行。GUI自动化脆弱得像纸糊的,API方案覆盖的功能又只有十分之一,剩下的要么是玩具级别的demo,要么是价格贵到离谱的定制集成。
然后我发现了CLI-Anything。

一句话就能把GIMP、Blender、QGIS、LibreOffice这些东西变成AI可以操控的工具。没用截图那一套,也不是点击像素,它是真的在调用软件后端,完整的功能,一点都不打折。
问题的本质
Agent很强,但它能操控的东西还挺弱。
你想让Agent帮你做点专业的事,比如用Blender渲染、用QGIS画张地图、用LibreOffice处理个文档,它基本只能给你返回一个臣妾做不到。
现有的解法都有硬伤。GUI自动化靠截图和点击,稍微动一下界面就废了。API集成倒是有可能,但要么软件本身没有API,要么有API但只暴露了十分之一的功能,剩下的都在GUI里。真要完整集成一个软件,光API对接的成本就够你招一个全职工程师了。
所以现在的Agent,本质上只能在文本世界里打转。写写代码可以,帮你操控真实世界的软件?洗洗睡吧。
CLI-Anything给出了一个完全不同的思路。
它的核心理念就一句话:Making ALL Software Agent-Native。没用给每个软件单独写API那一套,也没走RPA那种脆弱的路子,它是把任何一个有代码库的软件自动转化成Agent能用的CLI工具。
CLI的优势太适合Agent了。结构化、可组合、自描述、输出稳定,这些东西天然就匹配LLM的输入格式。一个--help就能让Agent发现所有功能,JSON输出让Agent直接消费,不需要任何额外的解析层。
说实话,这思路简单到有点反直觉。但越想越觉得有道理。
70+个harness,一个命令生成
CLI-Anything目前支持70多个软件,涵盖的领域让我有点震惊。
创意工具这块,Blender、 GIMP、Inkscape、Krita、Audacity、Kdenlive、Shotcut、OBS Studio、LibreOffice,全都是专业级的东西。Blender有208个测试用例覆盖,GIMP有107个,这些可不是玩具demo,是真的能在生产环境用的CLI。
科学和工程领域也没落下。QGIS做地理信息的,FreeCAD做机械设计的,ImageJ做图像分析的,ParaView做可视化的,KiCad做电路设计的。这些软件在各自领域都是头部工具,但从来没人想过怎么让AI来操控它们。
知识管理这块我特别关注。Obsidian和Zotero都有CLI了,这意味着什么?意味着你的第二大脑可以被AI访问了。你可以让AI帮你搜笔记、整理文献、创建新文档,全都可以用自然语言完成。
还有开发工具链。Jenkins、Portainer、pgAdmin、SonarQube这些DevOps必备的东西,以后都可以交给Agent去管理了。你可以让Agent帮你部署服务、看日志、调配置,它不需要理解每个按钮在哪,它只需要会调用CLI就行。
GitHub开源这块也很夸张。VSCodium、WordPress、Calibre、Zotero、Joplin、Logseq、Penpen这些东西,只要有代码库,CLI-Anything就能给它生成一套CLI。开源社区那么多好软件,以前只有人类能用,现在Agent也能用了。
整个生态覆盖了13个领域,70多款软件,而且这个数字还在快速增长。
它是怎么工作的
整个过程只需要一条命令。
你对着Agent说,帮我给Blender生成CLI,Agent就会自动执行7个阶段的流水线。
第一阶段,分析。它会扫描Blender的源码,把所有GUI操作映射到底层的API。这一步要理解软件的架构,知道每个菜单背后对应什么函数。
第二阶段,设计。规划命令的分组、状态模型、输出格式。它要设计成逻辑清晰、符合用户心智的CLI。
第三阶段,实现。用 Click构建完整的Python CLI,包含REPL交互界面、JSON输出模式、撤销重做支持。这一步生成的代码是要能投产的,不是写个demo糊弄人。
第四阶段,规划测试。生成TEST.md文档,包含单元测试和端到端测试的计划。测试是CLI-Anything非常重视的部分,每一条生成的CLI都必须有完整的测试覆盖。
第五阶段,编写测试。实现完整的测试套件,它要在真实软件上验证通过。
第六阶段,文档。更新测试文档,写入测试结果。CLI-Anything对文档的要求很高,每个harness都必须有清晰的说明。
第七阶段,发布。生成setup.py,把CLI安装到PATH里。安装完之后,这个工具就像系统原生的命令一样可以直接调用。
整个过程全自动,不需要你写一行代码。你只需要扔给它一个软件,它还你一个完整的、经过测试的、可投产的CLI。
这就是CLI-Anything最让我震惊的地方:它在做的是一套生产级别的工具链,不是一个玩具项目。1700多个测试用例,13款主流应用的完整验证,这些数字说明它是真的在认真做事情。

这可能是基础设施
我想稍微往宏观走一点,聊一个问题:为什么我觉得CLI-Anything的意义可能比看起来更大。
我们正在进入AI Agent时代,能够自主决策、自主执行、自主完成复杂任务的AI系统。
Agent要完成复杂任务,它就需要操控真实世界的软件。你让它帮你处理文档,它要能打开LibreOffice。你让它帮你做设计,它要能调用Blender。你让它帮你管文献,它要能操作Zotero。
问题是,真实世界的软件都是为人设计的。GUI、菜单、按钮这些东西,对人类友好,对Agent来说却是完全的黑盒。
所以问题就变成了:怎么让为人类设计的软件变成Agent也能用的东西?
CLI-Anything给出的答案是CLI。CLI是人类和AI共通的万能接口。不管是GIMP还是Blender还是QGIS,它们都有命令行界面,都有可编程的能力,只是之前没有人把这些能力以一种Agent能理解的方式暴露出来。
CLI-Anything做的事情,是在构建Agent时代的基础设施。说白了,它在一个生态层面解决问题,不是一个应用层面。一旦这个基础设施成熟了,理论上任何软件都可以被Agent操控。
这种级别的项目,通常只有大厂或者有深厚积累的团队才能做出来。但CLI-Anything是HKUDS这个学术团队在做,而且已经跑了688个commit,覆盖了70多款软件,1700多个测试用例。
地缘政治的因素在这里也很有意思。美国有OpenAI、Anthropic这些头部AI公司,在模型层占据优势。但在应用层、在基础设施层,在怎么让AI真正操控真实世界软件这件事上,我觉得开源社区正在给出答案。关键还不在于谁先谁后,而在于整个生态系统的玩法完全不同。
怎么上手
说点具体的。
你用Claude Code的话,安装只需要两步。第一步添加插件市场,第二步安装插件。两行命令搞定。
/plugin marketplace add HKUDS/CLI-Anything/plugin install cli-anything然后你就可以直接用命令了。
/cli-anything ./blender这会自动为Blender生成完整的CLI,包括所有功能的命令映射、测试套件、文档。生成完之后你可以这样用。
cli-anything-blender scene create --name my_scenecli-anything-blender object add --type cube --material goldcli-anything-blender render --output ./result.pngOpenClaw、OpenCode、Hermes这些平台也都支持,安装方式略有不同,但都是一条命令的事情。
如果你用的平台还没支持,CLI-Anything的设计是平台无关的,理论上可以接入任何AI编程工具。贡献一个平台支持也不难,参考opencode-commands目录的实现就行。
CLI-Hub是另一个我觉得很酷的东西。它是一个网页,你可以在上面浏览社区已经构建好的所有CLI。想给某个软件添加Agent能力?先去CLI-Hub看看有没有现成的,有的话直接安装,没有的话再自己用CLI-Anything生成。
pip install cli-anything-hubcli-hub install blender一条命令,Blender的CLI就装好了。
刚刚开始
CLI-Anything现在能支持70多个软件,但世界上有多少软件?可能有几百万个。每一个有代码库的软件,理论上都可以被CLI-Anything处理。每一个能被CLI化的软件,理论上都可以被Agent操控。
重点其实在这里。想象一下,五年之后,当CLI-Anything支持了1000款软件、10000款软件的时候,会发生什么?那个时候任何一个软件都可以被AI访问,任何一个工具都可以被Agent驱动。你不需要学习某个软件的复杂界面,你只需要告诉AI你想做什么,它会帮你操作所有软件。
这成了一个关于人机交互范式的事。
从键盘鼠标到触屏,从触屏到语音,我们一直在寻找更自然的人机交互方式。下一个范式会是Agent:你告诉AI你想做什么,AI操控所有软件帮你完成。
CLI-Anything在做的事情,就是给这个未来铺路。
让今天的软件,为明天的Agent做好准备。
相关链接:https://github.com/HKUDS/CLI-Anything
夜雨聆风