从源码到 Agent 工具:CLI-Anything 是什么
痛点:Agent 很聪明,但手很短
AI Agent 的推理能力在飞速进步,但一到实际操作的时候就卡住了。想让 Agent 生成一张海报?它能写出完整的 prompt,但没法真正打开 GIMP 来处理那张图。想让 Agent 渲染一段 Blender 动画?它能给出一整套技术方案,但连 Blender 的窗口都碰不到。
这不是 Agent 的问题,是接口的问题。
现在 Agent 操控软件的方式主要有三种:
第一种:GUI 自动化。截图、看图、模拟点击。这种方法最通用,但最脆弱——分辨率一变、UI 更新一下,整个流程就断了。而且极慢,要反复截图识别,token 消耗吓人。
第二种:官方 API。稳定、可靠、结构化。但现实是,专业软件有 API 的少之又少。Blender 有 API 但需要写 Python 脚本,GIMP 的 Script-Fu 用起来像考古,LibreOffice 的 API 文档能把你劝退。
第三种:自己造轮子。给目标软件写一个专用的命令行封装。效果最好,但成本最高——每个软件都要单独开发,还要持续维护。
CLI-Anything 走的是第四条路:自动生成这条路。
思路:用 AI 给 AI 做工具
CLI-Anything 的核心思路很简单:让 AI Agent 来分析一个软件的源码,然后自动生成一套完整的命令行接口。
具体来说,你只需要执行一行命令:
/cli-anything ./gimp
然后 AI Agent 会自动完成分析源码、设计命令结构、实现 CLI、编写测试、生成文档、发布安装包的完整流程。最终你得到一个叫 cli-anything-gimp 的命令行工具,可以直接用:
# 创建项目
cli-anything-gimp project new --width 1920 --height 1080 -o poster.json
# 添加图层
cli-anything-gimp --project poster.json layer add -n "Background" --type solid --color "#1a1a2e"
# 进入交互模式
cli-anything-gimp
生成的 CLI 会通过 Pillow + GEGL/Script-Fu 来实际驱动 GIMP 的图像处理能力,不是玩具,是真的在做事情。
CLI 为什么是 Agent 的最优接口
项目作者在 README 里花了不少篇幅解释为什么选 CLI,而不是其他方案。这里有几个我觉得说得比较实在的理由:
结构化且可组合。命令行本质上是文本,可以直接塞进 LLM 的 prompt 里,也可以在 shell 里用管道串联成复杂工作流。这种格式上的天然匹配,让 Agent 理解"现在在做什么"变得非常容易。
自描述性。一个 --help 参数,Agent 就能知道这个命令支持哪些选项、哪些子命令。这比去翻 API 文档快多了。
确定性。同样的命令,同样的参数,永远得到同样的结果。Agent 不需要处理"UI 加载中"或者"截图失败"这种随机状况。
无状态或持久化都支持。既可以一条一条命令直接执行,也可以进入 REPL 模式维护一个有状态的项目上下文。
实测数据:不是玩具
CLI-Anything 已经在 11 款真实软件上生成了完整的 CLI:
| 软件 | 领域 | 测试数量 | 后端技术 |
|---|---|---|---|
| GIMP | 图像编辑 | 107 | Pillow + GEGL/Script-Fu |
| Blender | 3D 建模 | 208 | bpy (Python scripting) |
| Inkscape | 矢量图形 | 202 | SVG/XML 直接操作 |
| Audacity | 音频制作 | 161 | Python wave + sox |
| LibreOffice | 办公套件 | 158 | ODF 生成 + headless LO |
| OBS Studio | 直播录制 | 153 | JSON scene + obs-websocket |
| Kdenlive | 视频剪辑 | 155 | MLT XML + melt |
| Shotcut | 视频剪辑 | 154 | MLT XML + melt |
| Draw.io | 图表绘制 | 138 | mxGraph XML |
| Zoom | 视频会议 | 22 | Zoom REST API |
| AnyGen | AI 内容生成 | 50 | REST API |
合计 1,508 个测试,100% 通过。
每款软件生成的 CLI 都不是阉割版——保留的是真实软件的全部专业能力。
支持的 AI 编程平台
CLI-Anything 不绑定具体哪个 AI 工具,支持主流的几家:
- Claude Code:以插件市场的方式接入,一条命令完成安装
- OpenCode:以 slash command 的方式接入
- OpenClaw:提供原生 SKILL.md
- Codex:通过 skill 文件接入
- Qodercli:通过插件接入
不管用哪个平台构建,生成的 CLI 使用方式完全一致——都是标准 Python 包,装到 PATH 之后用 cli-anything-<软件名> 来调用。
快速上手
安装流程极其简短,以 Claude Code 为例:
# 添加插件市场
/plugin marketplace add HKUDS/CLI-Anything
# 安装插件
/plugin install cli-anything
# 生成 CLI
/cli-anything:cli-anything ./gimp
生成的 CLI 在 gimp/agent-harness/ 目录下,运行:
cd gimp/agent-harness && pip install -e .
之后 cli-anything-gimp 就全局可用了。
这套方案的核心设计哲学
读完整个项目之后,我觉得最重要的一点是:CLI-Anything 不替代目标软件,它是目标软件的接口层。
生成的 CLI 做的是把软件的内部能力暴露成结构化命令,而不是重新实现一套功能。Blender 的渲染还是用 Blender 的渲染引擎,LibreOffice 生成 PDF 还是调 LibreOffice 的 headless 模式。这种"零妥协"的设计保证了生成的工具能真正用于生产环境,而不是只能 demo。
第二点:生成的 CLI 是一次性的,但维护是长期的。refine 命令允许你反复对同一个软件运行增量优化,每次分析功能覆盖缺口,然后只补充缺失的部分,不破坏已有的内容。这让 CLI 可以随着使用需求逐步完善。

浙公网安备 33010602011771号