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 阶段自动化流水线:

  1. 分析阶段:扫描源码,将 GUI 操作映射到 API
  2. 设计阶段:规划命令分组、状态模型、输出格式
  3. 实现阶段:构建 Click CLI,包含 REPL、JSON 输出、撤销/重做
  4. 规划测试:生成 TEST.md,涵盖单元测试和端到端测试计划
  5. 编写测试:实现完整测试套件
  6. 文档阶段:更新 TEST.md,写入测试结果
  7. 发布阶段:生成 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! 👋

十二、局限性与注意事项

使用前请知悉以下限制

  1. 依赖强大的基础模型:CLI-Anything 依赖前沿级别的模型(如 Claude Opus 4.6、Claude Sonnet 4.6、GPT-5.4)。较弱或较小的模型可能产出不完整或有误的 CLI。

  2. 依赖可用的源代码/cli-anything 基于源码进行分析和生成。如果目标软件只提供编译后的二进制文件,harness 的质量和覆盖率会显著下降。

  3. 可能需要迭代优化:单次 /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 项高质量测试。


本站由 时空 使用 Stellar 搭建。