一天一个开源项目(第104篇):CLI-Anything - 让所有软件变成 AI 代理可调用的命令行接口

引言

"Making ALL Software Agent-Native."

这是"一天一个开源项目"系列的第104篇文章。今天带你了解的项目是 CLI-Anything

同样来自香港大学 HKUDS 团队(上一次我们介绍了他们的 OpenHarness ),这次他们解决的是一个更基础但同样关键的问题:AI 代理怎么控制那些没有 API 的软件?

你的 AI 代理能调用 GitHub API、操作数据库、发送 HTTP 请求------但如果你让它打开 GIMP 处理一张图片呢?让它用 Blender 渲染一个 3D 场景?让它在 LibreOffice Calc 里生成一份报表?这些软件没有为 AI 设计的接口,它们只有 GUI。

CLI-Anything 的答案是:用 7 阶段自动化方法论,把任何软件包装成一个结构化的 CLI------输出确定性的 JSON,有完整的测试覆盖,带自动生成的 SKILL.md 让 AI 代理能"读懂"如何使用它。35.7k Stars、3.5k Forks,支持 80+ 应用,来自同一个团队的第二个重量级开源项目。

你将学到什么

  • 7 阶段方法论(分析 → 设计 → 实现 → 测试规划 → 测试 → 文档 → 发布)的完整流程
  • HARNESS.mdSKILL.md 的设计哲学------让 AI 代理能"读懂"任何软件
  • CLI-Hub 包管理器如何构建可共享的 CLI 生态
  • 为什么"确定性 CLI 输出"比"模拟 GUI 操作"更适合 AI 代理
  • 如何在 Claude Code 中一条命令为 GIMP 或 Blender 生成完整的 CLI 封装

前置知识

  • 了解命令行基础(什么是 CLI)
  • 有 Python 环境(pip 安装)
  • 使用过 Claude Code 或其他 AI 代理工具(有助于理解应用场景)

项目背景

项目简介

CLI-Anything 是一个让"所有软件变成 Agent 原生"的开源框架。它的核心能力是:给定任意一个桌面或 Web 应用的路径,自动分析其功能,生成一套结构化的 CLI 封装,让 AI 代理能像调用函数一样控制这个软件。

这与之前介绍的 UI-TARS-Desktop(第98篇,视觉感知 + 模拟鼠标操作)走的是截然不同的技术路线:

  • UI-TARS 方式:看截图 → 判断点哪里 → 模拟鼠标点击(视觉理解,适应性强,但不确定性高)
  • CLI-Anything 方式:分析软件 → 生成 CLI → JSON 输出(结构化,确定性,可测试)

两种方式各有适用场景,CLI-Anything 更适合需要可靠、可重复执行的自动化工作流。

作者/团队介绍

  • 团队:HKUDS(香港大学数据科学实验室)
  • 同一团队出品:OpenHarness(第96篇)------AI 代理基础设施框架
  • 学术 + 工程:HKUDS 的项目一贯具备学术严谨性和工程实用性的双重特征
  • 社区活跃度:有飞书和微信社区,贡献者通过 Issue 模板参与,每日更新 Changelog

项目数据

  • ⭐ GitHub Stars: 35,700+
  • 🍴 Forks: 3,500+
  • 🧪 测试覆盖: 2,600+ 通过的测试用例(跨所有 Harness)
  • 🔧 支持软件: 80+ 桌面/Web 应用
  • 📄 License: Apache-2.0
  • 🌐 仓库: HKUDS/CLI-Anything

主要功能

核心作用

CLI-Anything 做的事情可以用一句话概括:把"只有 GUI"的软件,变成 AI 代理能程序化调用的工具

它解决了 AI 代理与传统软件之间的"最后一公里"问题:

objectivec 复制代码
AI 代理的能力边界(没有 CLI-Anything):
  ✅ 调用 REST API
  ✅ 执行 SQL 查询
  ✅ 运行 Shell 命令
  ✅ 读写文件
  ❌ 控制 GIMP 处理图片
  ❌ 让 Blender 渲染场景
  ❌ 操作 LibreOffice 生成报表
  ❌ 调用 FreeCAD 的 CAD 功能

AI 代理的能力边界(有了 CLI-Anything):
  以上全部 ✅

使用场景

  1. 创意软件自动化

    • 让 AI 代理批量处理图片(GIMP 裁剪 + 调色 + 导出),一行命令完成本来需要手动操作几十次的工作。
  2. 3D 内容生产流水线

    • AI 代理调用 Blender CLI,从脚本到渲染输出,整个 3D 内容生产流程全自动化。
  3. 文档批量生成

    • LibreOffice 的 CLI 封装让 AI 代理能批量生成、填写、格式化办公文档。
  4. 游戏开发自动化

    • Godot 引擎的 CLI 封装让 AI 代理参与游戏资产管理和构建流程。
  5. 专业领域工具接入

    • FreeCAD(机械 CAD)、分子建模软件、GIS 地图工具------这些专业软件通过 CLI-Anything 都能被 AI 代理调用。

快速开始

在 Claude Code 中使用(最快路径)

bash 复制代码
# 1. 安装插件
/plugin marketplace add HKUDS/CLI-Anything
/plugin install cli-anything

# 2. 为目标软件生成 CLI(以 GIMP 为例)
/cli-anything ./gimp

# CLI-Anything 自动执行 7 阶段流程,约 2-5 分钟后完成
# 生成的文件结构:
# gimp-harness/
# ├── gimp_cli.py      ← 主 CLI 文件
# ├── HARNESS.md       ← 详细使用指南
# ├── SKILL.md         ← AI 代理可读的技能描述
# ├── TEST.md          ← 测试计划和结果
# ├── tests/           ← 单元测试 + E2E 测试
# └── setup.py         ← 安装配置

# 3. 生成后直接使用
gimp-cli image resize --input photo.jpg --width 800 --height 600 --output resized.jpg
gimp-cli image convert --input photo.png --format jpg --quality 85 --output photo.jpg
gimp-cli batch process --input-dir ./raw/ --output-dir ./processed/ --operations "resize,sharpen"

通过 CLI-Hub 包管理器安装现有 Harness

bash 复制代码
# 安装 CLI-Hub
pip install cli-anything-hub

# 查看可用的 Harness 列表
cli-hub list

# 安装特定软件的 Harness(已有社区贡献版本)
cli-hub install gimp
cli-hub install blender
cli-hub install libreoffice
cli-hub install godot
cli-hub install freecad

# 搜索
cli-hub search "3d modeling"

# 更新所有已安装的 Harness
cli-hub update --all

扩展已有 Harness(添加新功能)

bash 复制代码
# 在 Claude Code 中扩展现有的 GIMP Harness
/cli-anything:refine ./gimp-harness "添加批量水印功能和 EXIF 数据处理"

在其他 AI 代理中使用

bash 复制代码
# Pi Coding Agent
bash .pi-extension/cli-anything/install.sh
# 然后:@cli-anything ./blender

# OpenCode
opencode cli-anything ./inkscape

# 手动 Python 开发模式
pip install cli-anything
python -m cli_anything generate ./target-app

核心特性(7 阶段方法论)

这是 CLI-Anything 的核心技术,一个把"软件"变成"CLI"的完整自动化流水线:

Phase 1 --- Analyze(分析)

makefile 复制代码
输入: 目标软件路径 ./gimp
    ↓
自动扫描:
  - 可执行文件结构
  - 命令行参数(--help 输出)
  - Python/脚本 API(如果有)
  - 插件系统(如果有)
  - 文档(man page、README)
    ↓
输出: 功能映射表(GUI 操作 → 可程序化的接口)

Phase 2 --- Design(设计)

makefile 复制代码
输入: 功能映射表
    ↓
架构设计:
  - 命令分组(gimp-cli image / gimp-cli batch / gimp-cli script)
  - 状态模型(会话管理、REPL 模式)
  - 输出格式(JSON 结构定义)
  - 错误处理规范
    ↓
输出: CLI 架构设计文档

Phase 3 --- Implement(实现)

markdown 复制代码
基于 Click 框架(Python)实现:
  - 主 CLI 命令组
  - 子命令和参数
  - JSON 输出格式化
  - REPL 交互模式(含 undo/redo)
  - 会话状态管理
  - 错误处理

Phase 4 --- Plan Tests(测试规划)

markdown 复制代码
生成 TEST.md,包含:
  - 单元测试策略(每个命令的参数边界)
  - E2E 测试场景(完整工作流测试)
  - 异常场景测试(无效输入、文件不存在等)
  - 性能测试基线

Phase 5 --- Write Tests(编写测试)

bash 复制代码
自动生成 pytest 测试套件:
  - tests/unit/     ← 单元测试
  - tests/e2e/      ← 端到端测试
  - tests/fixtures/ ← 测试数据
  
目标: 100% 关键路径覆盖

Phase 6 --- Document(文档)

自动生成两种文档,服务两类受众:

yaml 复制代码
HARNESS.md(面向人类):
  - 完整的使用指南
  - 所有命令和参数说明
  - 示例工作流
  - 故障排查指南

SKILL.md(面向 AI 代理):
  ---
  name: gimp-cli
  description: GIMP image manipulation CLI for AI agents
  triggers:
    - "process image"
    - "resize photo"
    - "batch images"
  commands:
    - name: image resize
      description: Resize an image to specified dimensions
      parameters:
        - name: --input
          type: file_path
          required: true
        - name: --width
          type: integer
        ...
  output_format: json
  ---

SKILL.md 是整个项目最有设计感的部分------它定义了一种让 AI 代理能自动发现和使用任何 CLI 工具的标准格式。

Phase 7 --- Publish(发布)

arduino 复制代码
生成 setup.py → pip install -e . → 安装到系统 PATH
→ 工具立即可用: $ gimp-cli --help
→ 注册到 CLI-Hub(可选,便于社区共享)

支持的 80+ 应用(精选)

类别 代表应用
图像处理 GIMP、Inkscape、Krita、ImageMagick
3D 建模/渲染 Blender、FreeCAD、OpenSCAD
视频编辑 Shotcut、OpenShot、Kdenlive
音频处理 Audacity、Ardour
办公套件 LibreOffice Writer/Calc/Impress
游戏开发 Godot Engine
笔记/知识库 Obsidian、Zotero
科学计算 Octave(MATLAB 兼容)
GIS 地图 QGIS
分子建模 Avogadro、PyMOL
区块链 Ethereum 质押工具

项目优势

对比项 CLI-Anything 视觉 GUI 代理(UI-TARS) 传统 RPA(UiPath)
输出可靠性 ✅ 确定性 JSON ⚠️ 视觉判断,有不确定性 ⚠️ 坐标依赖,脆弱
可测试性 ✅ 完整测试套件 ❌ 难以自动化测试 ⚠️ 有限
速度 ✅ 直接调用 CLI ⚠️ 截图-思考-操作循环 ⚠️ 模拟操作慢
对 API 的依赖 无需 API(包装 CLI) 无需(视觉操控) 无需(坐标操控)
开源 ✅ Apache-2.0 ❌ 商业软件
可复用性 ✅ CLI-Hub 生态共享 ❌ 任务相关 ⚠️ 工作流相关

项目详细剖析

1. SKILL.md:AI 代理的软件使用说明书

这是 CLI-Anything 最有前瞻性的设计。传统软件只有给人看的文档(README、man page),而 SKILL.md 是专门给 AI 代理看的:

yaml 复制代码
# 一个完整 SKILL.md 示例(Blender CLI)
---
name: blender-cli
version: 1.0.0
description: Blender 3D software CLI for AI agent automation
author: HKUDS/CLI-Anything
triggers:
  - "render 3d scene"
  - "create animation"
  - "blender"
  - "3d modeling"

commands:
  render:
    description: Render a Blender scene to image or animation
    usage: blender-cli render --scene <file> --output <path> [options]
    parameters:
      - name: --scene
        type: file_path
        required: true
        description: Path to .blend file
      - name: --output
        type: directory_path
        required: true
        description: Output directory for renders
      - name: --frame-start
        type: integer
        default: 1
      - name: --frame-end
        type: integer
        default: 1
      - name: --engine
        type: enum
        values: [CYCLES, EEVEE, WORKBENCH]
        default: EEVEE
    output_format: json
    example: |
      blender-cli render --scene scene.blend --output ./renders
      # Output: {"status": "success", "frames": 1, "output_path": "./renders/render0001.png"}

  export:
    description: Export 3D model to different formats
    ...

有了这种格式,AI 代理(如 Claude Code)在遇到"渲染这个 3D 场景"的需求时,可以直接加载对应的 SKILL.md,知道该调用什么命令、传什么参数、期望什么格式的输出------无需任何人工配置

2. CLI-Hub:构建可共享的 CLI 生态

CLI-Anything 不只是一个生成工具,还包含一个包管理生态------CLI-Hub:

markdown 复制代码
创建者: 为 GIMP 生成 Harness → 发布到 CLI-Hub
使用者: cli-hub install gimp → 一键安装 → AI 代理立即可用

这与 npm、pip、brew 的逻辑完全一致:
  - 有人贡献高质量的 Harness
  - 社区可以直接复用,不需要每个人重新生成
  - 通过版本管理持续改进

这个设计让 CLI-Anything 从"单人使用的工具"变成了"社区共同维护的 AI 软件接口标准库"。

3. 与 HKUDS OpenHarness 的关系

这两个来自同一团队的项目形成了自然的技术栈:

objectivec 复制代码
OpenHarness(第96篇)
    ← 代理运行时基础设施
    ← 工具调用引擎、记忆管理、权限治理
    ← 提供 "代理的骨架"

CLI-Anything(第104篇)
    ← 工具层扩展
    ← 把各种软件封装成 OpenHarness 可调用的工具
    ← 提供 "代理的手臂延伸"

组合使用:
  OpenHarness 代理 → 通过 CLI-Anything 生成的 CLI → 控制 Blender/GIMP/LibreOffice

项目地址与资源

官方资源

  • 🌟 GitHub : github.com/HKUDS/CLI-A...
  • 📦 CLI-Hub 包管理器 : pip install cli-anything-hub
  • 🤝 社区: 飞书 / 微信开发者社区(见 GitHub README)
  • 🐛 贡献软件愿望清单: GitHub Issues wishlist 模板

适用人群

  • AI 代理开发者:需要让代理控制没有 API 的桌面软件
  • 自动化工程师:希望用程序化方式驱动图形软件(GIMP、Blender 等)
  • 开源贡献者:为 CLI-Hub 贡献新软件的 Harness,扩展生态
  • 企业自动化团队:需要把遗留图形软件接入现代 AI 工作流

总结与展望

核心要点回顾

  1. 7 阶段方法论:分析 → 设计 → 实现 → 测试规划 → 测试 → 文档 → 发布,完整的自动化 CLI 生成流水线
  2. SKILL.md:AI 代理的软件使用说明书,实现"代理自动发现和使用任何工具"的标准格式
  3. 80+ 软件支持:GIMP、Blender、LibreOffice、Godot、FreeCAD 等,横跨创意、办公、工程领域
  4. CLI-Hub 包管理:让 Harness 成为可共享的社区资产,而非重复劳动
  5. HKUDS 出品:35.7k Stars,与 OpenHarness 形成"代理基础设施 + 工具接口"的完整技术栈

一句话评价

CLI-Anything 做的事情极其务实但意义深远:它不等软件厂商为 AI 设计接口,而是自己动手,把整个现有软件生态变成 AI 代理的工具箱。


欢迎来我的个人主页找到更多有用的知识和有趣的产品

相关推荐
冬奇Lab1 小时前
RAG 系列(十九):增量更新——知识库如何保持新鲜
人工智能·llm
浪里行舟1 小时前
你的品牌正在被AI“遗忘”?用BuildSOM找回搜索的下一个风口
人工智能·python·程序员
jkyy20141 小时前
轻量化AI营养师,如何适配多业态快速落地健康服务升级?
人工智能
blackorbird2 小时前
M4 MacBook Air外接RTX 5090实现3A游戏与AI加速
人工智能·游戏
knight_9___2 小时前
大模型project面试8
人工智能
学习论之费曼学习法2 小时前
Agent工具调用:让AI拥有超能力
人工智能
小豆包的小朋友02172 小时前
【无标题】
人工智能
IT_陈寒3 小时前
React性能优化踩的坑,这个错你可能也会犯
前端·人工智能·后端