返回

CLI-Anything 教程系列:将任意软件变成 AI Agent 可用的 CLI 工具

CLI-Anything 是 HKUDS 实验室开发的开源项目,通过 7 阶段自动化流程将任何软件转换为 AI Agent 可用的 CLI 工具。本系列系统讲解从软件分析到发布的完整工作流,涵盖 16+ 生产级软件案例和 1,800+ 测试。

系列前言

如果你正在使用 Claude Code、Cursor、Codex 或其他 AI 编程助手,CLI-Anything 可能会彻底改变你与软件交互的方式。这是由 HKUDS 实验室(香港大学数据科学实验室)开发的开源项目,已有 16+ 生产级软件 CLI 实现,通过 1,800+ 测试验证。

为什么需要 CLI-Anything?

AI Agent 时代的软件困境

今天的软件都是为人类设计的图形界面(GUI):

  • 按钮、菜单、对话框 → 对 AI Agent 不友好
  • 状态隐藏在界面背后 → Agent 无法获取
  • 操作无法程序化 → Agent 无法自动化
flowchart LR
    A[AI Agent] --> B{如何操作软件?}
    B --> C[GUI 自动化<br/>❌ 脆弱不可靠]
    B --> D[人工介入<br/>❌ 效率低下]
    B --> E[API 封装<br/>✅ 结构化可靠]

    style C fill:#ffcccc
    style D fill:#ffcccc
    style E fill:#e8f5e9

CLI-Anything 的解决方案

一条命令,将任何软件变成 Agent 可用的 CLI 工具。

flowchart TD
    A[软件源代码] --> B[CLI-Anything<br/>7阶段流程]
    B --> C[完整的 CLI 工具]
    C --> D[AI Agent<br/>可直接调用]

    style B fill:#e1f5ff
    style C fill:#e8f5e9

7 阶段自动化流程

CLI-Anything 的核心是一个7 阶段管道,完全自动化:

阶段 名称 输出 核心任务
1 Analyze API 映射文档 扫描源码,映射 GUI 动作到 API
2 Design 架构设计文档 命令组、状态模型、输出格式
3 Implement 可运行的 CLI Click CLI + REPL + JSON 输出
4 Plan Tests TEST.md 单元测试 + E2E 测试计划
5 Write Tests 测试代码 完整的测试套件
6 Document 更新 TEST.md 测试结果与覆盖率
7 Publish pip 包 setup.py + 安装到 PATH
flowchart LR
    subgraph Phase1["阶段 1-2: 分析与设计"]
        A[🔍 Analyze] --> B[📐 Design]
    end

    subgraph Phase2["阶段 3: 实现"]
        B --> C[🔨 Implement]
    end

    subgraph Phase3["阶段 4-6: 测试"]
        C --> D[📋 Plan Tests]
        D --> E[🧪 Write Tests]
        E --> F[📝 Document]
    end

    subgraph Phase4["阶段 7: 发布"]
        F --> G[📦 Publish]
    end

    style Phase1 fill:#e3f2fd
    style Phase2 fill:#e8f5e9
    style Phase3 fill:#fff3e0
    style Phase4 fill:#f3e5f5

已支持的软件(16+)

CLI-Anything 已成功为以下软件生成 CLI:

软件 领域 测试数
🎨 GIMP 图像编辑 107
🧊 Blender 3D 建模 208
✏️ Inkscape 矢量图形 202
📄 LibreOffice 办公套件 158
🎬 Kdenlive 视频剪辑 155
🎬 Shotcut 视频剪辑 154
🎵 Audacity 音频编辑 161
📹 OBS Studio 直播录制 153
🎵 MuseScore 乐谱制作 56
📐 Draw.io 图表绘制 138
🎨 FreeCAD CAD 设计 258
🎨 Krita 数字绘画 -
📝 Mubu 思维导图 96
📚 Zotero 文献管理 -
📞 Zoom 视频会议 22
🌐 Browser 浏览器自动化 -

核心设计原则

CLI-Anything 遵循 5 项关键原则:

1. Authentic Software Integration(真实软件集成)

CLI 生成有效的项目文件,委托真实软件进行渲染。我们构建的是通向软件的接口,而非替代品。

# ❌ 错误:用 Pillow 替代 GIMP
from PIL import Image
img = Image.open("photo.jpg")
img.filter(ImageFilter.GaussianBlur(5))

# ✅ 正确:生成 GIMP 项目文件,调用真实 GIMP
cli-anything-gimp project new -o project.xcf
cli-anything-gimp --project project.xcf filter apply-blur --radius 5
cli-anything-gimp --project project.xcf export render output.jpg

2. Flexible Interaction Models(灵活交互模型)

每个 CLI 支持双模式:

  • REPL 模式 - 交互式会话,适合 Agent 长时间工作
  • 子命令模式 - 脚本和管道,适合自动化
# REPL 模式
$ cli-anything-blender
blender> scene new --name ProductShot
blender[ProductShot]> object add-mesh --type cube

# 子命令模式
$ cli-anything-blender scene new --name ProductShot
$ cli-anything-blender --project ProductShot object add-mesh --type cube

3. Consistent User Experience(统一用户体验)

所有生成的 CLI 共享统一的 REPL 界面:

  • 品牌 Banner
  • 样式化提示符
  • 命令历史
  • 进度指示器
  • 标准化格式

4. Agent-Native Design(Agent 原生设计)

内置 --json 标志,每个命令输出结构化数据:

$ cli-anything-libreoffice --json document info --project report.json
{
  "name": "Q1 Report",
  "type": "writer",
  "pages": 1,
  "elements": 2,
  "modified": true
}

5. Zero Compromise Dependencies(零妥协依赖)

真实软件是硬性要求——没有降级方案,没有优雅降级。

# 测试在没有后端时失败(而非跳过)
@pytest.mark.skipif(not is_gimp_installed(), reason="GIMP not installed")
# ❌ 不这样做

# ✅ 这样做:测试在没有 GIMP 时失败
# 确保功能真实有效

本系列教程结构

本系列共 10 篇 详细教程,涵盖从入门到高级的完整内容:

入门篇

  1. CLI-Anything 入门与安装 - 在各平台安装 CLI-Anything
  2. 第一阶段:软件分析 - 扫描源码,映射 GUI 到 API
  3. 第二阶段:架构设计 - 设计命令组和状态模型

核心实现篇

  1. 第三阶段:CLI 实现 - Click CLI + REPL 开发
  2. 第四阶段:测试计划 - 制定 TEST.md
  3. 第五阶段:测试编写 - 单元测试与 E2E 测试

发布与优化篇

  1. 第六阶段:文档与 SKILL.md - 完善文档和 Agent 技能定义
  2. 第七阶段:发布与优化 - PyPI 发布与迭代改进

高级应用篇

  1. 实战案例:为开源软件生成 CLI - 完整实战演示
  2. CLI-Hub 与生态建设 - 社区贡献与 CLI 发现

谁适合学习 CLI-Anything?

  • AI 编程工具用户 - 让 Claude Code、Cursor 等能操作更多软件
  • 开源软件开发者 - 为自己的软件生成 Agent 可用接口
  • 自动化工程师 - 构建软件自动化工作流
  • 技术团队负责人 - 推动团队 AI Agent 能力升级

前置要求

  • Python 3.10+
  • 基本的 CLI 使用经验
  • 了解 Click 框架(可选,教程会讲解)
  • 一个支持 CLI-Anything 的平台(Claude Code 推荐)

快速开始(5 分钟)

# 1. 添加 Marketplace(Claude Code)
/plugin marketplace add HKUDS/CLI-Anything

# 2. 安装插件
/plugin install cli-anything

# 3. 为软件生成 CLI
/cli-anything ./gimp

# 完成!生成的 CLI 位于 gimp/agent-harness/

使用场景示例

场景 1:自动化设计工作流

# 使用 cli-anything-blender 自动化 3D 渲染
/cli-anything-blender scene new --name BatchRender
/cli-anything-blender --project BatchRender import model --file product.obj
/cli-anything-blender --project BatchRender material apply --type metallic
/cli-anything-blender --project BatchRender render execute --output product.png

场景 2:批量文档处理

# 使用 cli-anything-libreoffice 批量生成报告
for data in reports/*.csv; do
  cli-anything-libreoffice document new -o temp.json
  cli-anything-libreoffice --project temp.json writer import-csv --file "$data"
  cli-anything-libreoffice --project temp.json export render "${data%.csv}.pdf"
done

场景 3:AI Agent 自主操作

User: 帮我用 GIMP 给这张图片添加模糊效果

Claude Code(使用 cli-anything-gimp):
1. 分析图片格式和尺寸
2. 创建 GIMP 项目
3. 应用高斯模糊滤镜
4. 导出处理后的图片
5. 验证输出文件

与 Superpowers 的关系

CLI-Anything 与 Superpowers 是互补关系:

Superpowers CLI-Anything
层级 AI Agent 行为规范 软件接口封装
目标 规范 AI 开发流程 让软件可被 AI 使用
触发 自动触发技能 显式调用 CLI
配合 AI 用 Superpowers 开发 CLI-Anything 生成的 CLI

最佳实践:用 Superpowers 的 TDD、规划、调试技能来开发 CLI-Anything 生成的 CLI 工具。

参考资源


系列导航:

讨论区:欢迎在评论区分享你的 CLI-Anything 使用经验或提出问题!