软件操作自动生成 Skill:最近很火的开源项目 CLI-Anything

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 个阶段:

  1. 分析源码,理解软件能力和可操作对象

  2. 设计命令结构、状态模型和输出格式

  3. 生成可用的 CLI 和交互式 REPL

  4. 规划测试

  5. 生成测试

  6. 补文档

  7. 打包成可安装工具

最后产物不是一个演示脚本,而是一个能安装、能跑、能测试、能继续迭代 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 后端。也就是说,这套东西不是假的演示壳子。它真要工作,还是要落到真实软件本身。

所以如果从使用者视角总结,实验大概是这样的:

  1. 先装一个 builder skill,让 agent 知道怎么造 harness。

  2. 对某个具体软件,再装它对应的 cli-anything-<software>。(也可以自己构建)

  3. 本机还得有这个软件自己的后端或可执行程序。

  4. 最后 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 可调用的能力。真正容易被重构的,是那些输入输出明确、但中间过程本身没那么重要的软件。

反过来说,社交软件、视频软件,或者那些和硬件、实时反馈、内容生态强相关的软件,短期内都很难被这样替代。它们的价值不只是功能本身,也在关系、分发、交互过程和设备能力里。

相关推荐
我科绝伦(Huanhuan Zhou)1 小时前
分享一个自己写的智能巡检系统
运维·人工智能·自动化
iiiiii112 小时前
【理论推导】指数族分布的核心性质:对数配分函数的梯度为什么是充分统计量的期望?
人工智能·笔记·深度学习·数学·机器学习·概率论·指数族分布
狒狒热知识2 小时前
全媒体资源整合时代:软文营销推广迈入精准高效新征程构建传播新生态
人工智能·百度·营销
波动几何2 小时前
System-Controller完整能力手册
人工智能
DeepModel2 小时前
机器学习降维核心:奇异值分解 SVD
人工智能·python·机器学习
十铭忘2 小时前
认知循环架构与现有智能体:区别和联系
人工智能·架构
tang777892 小时前
OpenClaw数据采集实战:隧道代理实测测评
大数据·人工智能·爬虫·网络协议·tcp/ip·数据挖掘·opencllaw
蚂蚁数据AntData2 小时前
DB-GPT V0.8.0 版本更新|范式跃迁:AI + Data 驱动的数据分析交互体验升级
大数据·数据库·人工智能·数据分析·开源
Agent产品评测局2 小时前
能源行业自动化解决方案选型,安全与降本双提升:2026企业级智能体选型指南
运维·人工智能·安全·ai·chatgpt·自动化