Loading

从源码到 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 可以随着使用需求逐步完善。

posted @ 2026-03-22 12:00  饭勺oO  阅读(3128)  评论(0)    收藏  举报