CLI-Anything 项目详解 — 让所有软件都能被 Agent 驱动
核心理念:今天的软件为人而生,明天的用户是 AI Agent。CLI-Anything 正是连接 AI Agent 与全世界软件的桥梁。
一、项目概述
CLI-Anything 是由香港大学数据科学实验室(HKUDS)开发的开源项目,旨在通过自动化方式为任意软件生成命令行接口(CLI),使其能够被 AI Agent 驱动和控制。
核心价值
- 零门槛接入:任何软件都能通过结构化 CLI 即刻被 Agent 操控
- 无缝集成:不需要专门的 API、不需要操控 GUI、不需要重构代码
- 面向未来:一条命令,把为人类设计的软件变成 Agent 的原生工具
二、为什么需要 CLI-Anything?
AI Agent 的困境
痛点:AI Agent 推理能力很强,但操控真实专业软件的能力很弱。现有方案存在根本性缺陷。
| 现有痛点 | CLI-Anything 如何解决 |
|---|---|
| “AI 用不了真正的专业工具” | 直接对接真实软件后端(Blender、LibreOffice、FFmpeg),完整专业能力 |
| “GUI 自动化三天两头崩” | 告别截图、点击和 RPA 的脆弱性,纯命令行操控,结构化接口 |
| “Agent 需要结构化数据” | 内置 JSON 输出供 Agent 直接消费,同时保留可读格式 |
| “定制集成太贵了” | 一个插件就能为任意代码库自动生成 CLI |
| “原型和生产差十万八千里” | 1,508+ 测试用例,全部在真实软件上验证通过 |
三、技术原理
CLI 的天然优势
CLI 是人类和 AI Agent 共通的万能接口:
- 结构化、可组合 — 文本命令天然匹配 LLM 的输入格式
- 轻量且通用 — 几乎零开销,跨平台运行
- 自描述 —
--help就能让 Agent 自动发现所有功能 - 久经验证 — Claude Code 每天通过 CLI 执行数以千计的真实任务
- Agent 友好 — 结构化 JSON 输出,无需额外解析
- 确定且可靠 — 输出稳定一致,Agent 行为可预测
7 阶段自动化流水线
CLI-Anything 的核心是一个经过验证的 7 阶段自动化流水线:
- 分析阶段:扫描源码,将 GUI 操作映射到 API
- 设计阶段:规划命令分组、状态模型、输出格式
- 实现阶段:构建 Click CLI,包含 REPL、JSON 输出、撤销/重做
- 规划测试:生成 TEST.md,涵盖单元测试和端到端测试计划
- 编写测试:实现完整测试套件
- 文档阶段:更新 TEST.md,写入测试结果
- 发布阶段:生成 setup.py,安装到 PATH
四、支持平台
CLI-Anything 设计为平台无关,支持多种主流 AI 编程工具:
| 平台 | 支持状态 | 安装方式 |
|---|---|---|
| Claude Code | ✅ 已支持 | 插件市场 |
| OpenClaw | ✅ 已支持 | Skill 安装 |
| OpenCode | ✅ 已支持 | 命令复制 |
| Codex | ✅ 已支持 | Skill 安装 |
| Qodercli | ✅ 已支持 | 脚本注册 |
| GitHub Copilot CLI | ✅ 已支持 | 插件安装 |
| Cursor | 🚧 即将支持 | — |
| Windsurf | 🚧 即将支持 | — |
无论使用哪个平台构建,生成的 CLI 使用方式完全一样。
五、安装与使用
快速安装(Claude Code)
# 添加插件市场
/plugin marketplace add HKUDS/CLI-Anything
# 安装插件
/plugin install cli-anything
# 为 GIMP 生成 CLI
/cli-anything:cli-anything ./gimp
OpenClaw 安装
# 克隆仓库
git clone https://github.com/HKUDS/CLI-Anything.git
# 安装到全局技能目录
mkdir -p ~/.openclaw/skills/cli-anything
cp CLI-Anything/openclaw-skill/SKILL.md ~/.openclaw/skills/cli-anything/SKILL.md
# 使用
@cli-anything build a CLI for ./gimp
使用方式
# 安装到 PATH
cd gimp/agent-harness && pip install -e .
# 随处可用
cli-anything-gimp --help
cli-anything-gimp project new --width 1920 --height 1080 -o poster.json
cli-anything-gimp --json layer add -n "Background" --type solid --color "#1a1a2e"
# 进入交互式 REPL
cli-anything-gimp
六、实测结果
测试覆盖
| 软件 | 领域 | 命令数 | 后端 | 测试通过 |
|---|---|---|---|---|
| 🎨 GIMP | 图像编辑 | 完整 | Pillow + GEGL/Script-Fu | ✅ 107 |
| 🧊 Blender | 3D 建模与渲染 | 完整 | bpy (Python scripting) | ✅ 208 |
| ✏️ Inkscape | 矢量图形 | 完整 | Direct SVG/XML manipulation | ✅ 202 |
| 🎵 Audacity | 音频制作 | 完整 | Python wave + sox | ✅ 161 |
| 📄 LibreOffice | 办公套件 | 完整 | ODF generation + headless LO | ✅ 158 |
| 📹 OBS Studio | 直播与录制 | 完整 | JSON scene + obs-websocket | ✅ 153 |
| 🎞️ Kdenlive | 视频剪辑 | 完整 | MLT XML + melt renderer | ✅ 155 |
| 🎬 Shotcut | 视频剪辑 | 完整 | Direct MLT XML + melt | ✅ 154 |
| 📞 Zoom | 视频会议 | 基础 | Zoom REST API (OAuth2) | ✅ 22 |
| 📐 Draw.io | 图表绘制 | 完整 | mxGraph XML + draw.io CLI | ✅ 138 |
| ✨ AnyGen | AI 内容生成 | 基础 | AnyGen REST API | ✅ 50 |
总计:1,508 项测试 100% 通过 — 1,073 项单元测试 + 435 项端到端测试
测试层级
| 测试层级 | 测试内容 | 示例 |
|---|---|---|
| 单元测试 | 每个核心函数的隔离验证,使用合成数据 | test_core.py — 项目创建、图层操作、滤镜参数 |
| 端到端测试(原生) | 项目文件的完整生成流程 | ODF ZIP 结构合法性、MLT XML 正确性、SVG 格式完整性 |
| 端到端测试(真实后端) | 调用真实软件并验证输出 | LibreOffice → 含 %PDF- 魔术字节的 PDF,Blender → 渲染后的 PNG |
| CLI 子进程测试 | 通过 subprocess.run 调用已安装命令 | cli-anything-gimp --json project new → 合法 JSON 输出 |
七、应用场景
主要应用领域
| 类别 | 典型软件 |
|---|---|
| 📂 GitHub 开源项目 | VSCodium、WordPress、Calibre、Zotero、Joplin、Logseq、Penpot |
| 🤖 AI/ML 平台 | Stable Diffusion WebUI、ComfyUI、InvokeAI、Fooocus、Kohya_ss |
| 📊 数据与分析 | JupyterLab、Apache Superset、Metabase、Redash、DBeaver |
| 💻 开发工具 | Jenkins、Gitea、Hoppscotch、Portainer、pgAdmin、SonarQube |
| 🎨 创意与媒体 | Blender、GIMP、OBS Studio、Audacity、Krita、Kdenlive、Shotcut |
| 📐 图表与可视化 | Draw.io、Mermaid、PlantUML、Excalidraw、yEd |
| 🔬 科学计算 | ImageJ、FreeCAD、QGIS、ParaView、Gephi、KiCad |
| 🏢 企业与办公 | NextCloud、GitLab、Grafana、Mattermost、LibreOffice |
| 📞 通信与协作 | Zoom、Jitsi Meet、BigBlueButton、Mattermost |
八、方法论要点
核心原则:必须用真实软件。CLI 必须调用真实应用进行渲染。
关键经验
| 经验 | 说明 |
|---|---|
| 必须用真实软件 | 不能用 Pillow 替代 GIMP,不能自己写渲染器替代 Blender。正确做法:生成合法的项目文件 → 调用真实后端 |
| 渲染鸿沟 | GUI 应用在渲染时才应用特效。如果用了简陋的导出工具,特效会被静默丢弃。正确做法:原生渲染器 → 滤镜转译 → 渲染脚本 |
| 滤镜转译 | 在不同格式间映射特效时,要注意:重复滤镜合并、交错的流排序、参数空间差异、无法映射的特效 |
| 时间码精度 | 非整数帧率(如 29.97fps)会导致累积舍入误差。用 round() 而非 int(),测试中允许 ±1 帧容差 |
| 输出验证 | 永远不要因为进程退出码为 0 就信任导出成功。要验证:魔术字节、ZIP/OOXML 结构、像素分析、音频 RMS 电平、时长检查 |
九、项目结构
CLI-Anything/
├── cli-anything-plugin/ # Claude Code 插件
│ ├── HARNESS.md # 方法论 SOP
│ ├── QUICKSTART.md # 5 分钟快速上手
│ └── commands/ # 插件命令定义
├── opencode-commands/ # OpenCode 命令
├── codex-skill/ # Codex skill 接入层
├── openclaw-skill/ # OpenClaw skill
└── <软件名>/agent-harness/ # 各软件的 Agent Harness
每个 agent-harness/ 包含:
- 可安装的 Python 包(
cli_anything.<软件名>/) - Click CLI 实现
- 核心模块和工具类
- 完整的测试套件
十、命令参考
| 命令 | 说明 |
|---|---|
/cli-anything <软件路径或仓库> |
构建完整的 CLI —— 全部 7 个阶段 |
/cli-anything:refine <软件路径> [聚焦方向] |
优化已有的 CLI —— 通过差距分析扩展覆盖面 |
/cli-anything:test <软件路径或仓库> |
运行测试并更新 TEST.md |
/cli-anything:validate <软件路径或仓库> |
按照 HARNESS.md 标准进行验证 |
/cli-anything:list |
列出所有已安装和已生成的 CLI 工具 |
十一、使用示例
Blender REPL 交互
$ cli-anything-blender
╔══════════════════════════════════════════╗
║ cli-anything-blender v1.0.0 ║
║ Blender CLI for AI Agents ║
╚══════════════════════════════════════════╝
blender> scene new --name ProductShot
✓ Created scene: ProductShot
blender[ProductShot]> object add-mesh --type cube --location 0 0 1
✓ Added mesh: Cube at (0, 0, 1)
blender[ProductShot]*> render execute --output render.png --engine CYCLES
✓ Rendered: render.png (1920×1080, 2.3 MB) via blender --background
blender[ProductShot]> exit
Goodbye! 👋
十二、局限性与注意事项
使用前请知悉以下限制:
-
依赖强大的基础模型:CLI-Anything 依赖前沿级别的模型(如 Claude Opus 4.6、Claude Sonnet 4.6、GPT-5.4)。较弱或较小的模型可能产出不完整或有误的 CLI。
-
依赖可用的源代码:
/cli-anything基于源码进行分析和生成。如果目标软件只提供编译后的二进制文件,harness 的质量和覆盖率会显著下降。 -
可能需要迭代优化:单次
/cli-anything运行不一定能完整覆盖所有功能。通常需要执行一次或多次/refine命令,才能将 CLI 推到生产级水平。
十三、项目信息
| 项目 | 信息 |
|---|---|
| 开源协议 | MIT License |
| 项目地址 | https://github.com/HKUDS/CLI-Anything |
| CLI-Hub | https://hkuds.github.io/CLI-Anything/ |
| 测试状态 | 1,508 项测试 100% 通过 |
总结:CLI-Anything 通过自动化的 7 阶段流水线,让任何有代码库的软件都能被 AI Agent 原生控制。它不是替代软件,而是为软件创建一个结构化的命令行接口,使其能够被现代 AI 系统无缝调用。目前已在 11 款复杂专业软件上验证通过,生成了 1,508 项高质量测试。