香港大学 HKUDS 团队开源项目 CLI-Anything 旨在通过自动化 CLI 生成流水线,弥合 AI Agent 与专业桌面软件之间的操控鸿沟。


一、问题背景:AI Agent 的"最后一公里"困境

当前大语言模型(LLM)的推理能力已相当成熟,但在操控真实专业软件方面仍存在显著短板。以 Blender、GIMP、LibreOffice 等桌面应用为例,它们的核心交互逻辑围绕 GUI 构建,AI Agent 若要驱动这些软件,通常面临三条路径:

  1. GUI 自动化(RPA/截图点击):脆弱、不可靠,界面微调即可导致流程崩溃。
  2. 有限的 API 封装:覆盖面窄,往往只暴露了软件 10% 的功能。
  3. 功能重新实现:用 Python 库(如 Pillow)替代 GIMP 的渲染引擎,本质上是"玩具级"方案,无法处理真实工作负载。

CLI-Anything 项目的核心主张是:CLI 是人类与 AI Agent 共通的万能接口。文本命令天然匹配 LLM 的输入格式,--help 即可自描述,JSON 输出可被 Agent 直接消费,且 CLI 具备结构化、可组合、跨平台、确定性强等特性。该项目正是基于这一洞察,构建了一套从源码分析到 CLI 发布的全自动化流水线。


二、项目概览

CLI-Anything 由香港大学数据科学实验室(HKUDS)主导开发,采用 Apache 2.0 协议开源,托管于 GitHub(HKUDS/CLI-Anything)。截至 2026 年 3 月,该项目已为 20 余款专业软件生成了生产级 CLI 接口,累计通过 1,858 项测试(含 1,355 项单元测试、484 项端到端测试、19 项 Node.js 测试),通过率 100%。

项目支持的 AI 编程工具包括 Claude Code、OpenClaw、OpenCode、Codex、Qodercli、GitHub Copilot CLI 等,用户只需一行命令即可为任意有源码的软件生成完整的 Agent 可用 CLI。


三、核心架构:7 阶段全自动流水线

CLI-Anything 的技术核心是一套经过实战验证的 7 阶段 SOP(标准操作流程),记录在项目的 HARNESS.md 中。该流水线由 AI Agent 自动执行,全程无需人工介入:

阶段 1:代码分析(Codebase Analysis)

Agent 扫描目标软件的源码,识别后端引擎(如 Shotcut 的 MLT、GIMP 的 ImageMagick),将 GUI 操作映射到 API 调用,梳理数据模型(XML/JSON/二进制),并发现已有的 CLI 工具(如 meltffmpegsox)。

阶段 2:CLI 架构设计(Architecture Design)

设计命令分组(项目管理、核心操作、导入导出、配置、会话管理),规划状态模型(REPL 内存态 + JSON 文件持久化),确定输出格式(--json 供 Agent 消费,表格格式供人类调试)。每个 CLI 同时支持有状态 REPL 和无状态子命令两种交互模式。

阶段 3:实现(Implementation)

基于 Python Click 框架构建 CLI。实现顺序为:数据层 → 探查命令 → 变更命令 → 后端集成 → 渲染/导出 → 会话管理 → REPL 界面。后端集成模块(utils/<software>_backend.py)负责定位真实软件可执行文件、调用子进程、处理错误。所有 CLI 共享统一的 REPL 皮肤(ReplSkin),提供一致的交互体验。

阶段 4:测试规划(Test Planning)

在编写测试代码之前,先生成 TEST.md 文档,列出测试清单、单元测试计划、端到端测试计划和真实工作流场景。

阶段 5:测试实现(Test Implementation)

实现多层测试:

  • 单元测试(test_core.py):合成数据,隔离验证每个核心函数。
  • 端到端测试(test_full_e2e.py):验证中间文件结构(ODF ZIP、MLT XML、SVG),并调用真实软件生成最终产物(PDF、PNG、MP4 等),通过魔术字节、文件结构、像素分析等手段验证输出正确性。
  • CLI 子进程测试:通过 subprocess.run 调用已安装命令,模拟真实 Agent 使用场景。

阶段 6:测试文档(Test Documentation)

将测试结果追加到 TEST.md,形成完整的测试计划 + 结果记录。

阶段 6.5:SKILL.md 生成

为每个 CLI 生成 AI 可发现的技能定义文件,包含 YAML 元数据、命令分组、使用示例和 Agent 专用指南。该文件随 pip install 一同安装,REPL 启动时自动展示路径。

阶段 7:发布(Publish)

生成 setup.py,通过 pip install -e . 安装到 PATH,Agent 通过 which 命令即可发现工具。


四、关键设计决策与工程经验

HARNESS.md 中沉淀了大量来自 20 余款软件实战的工程经验,以下是几个值得关注的要点:

4.1 必须使用真实软件,禁止重新实现

这是该项目的第一原则。CLI 必须调用真实应用进行渲染和导出,而非用 Python 库替代。例如,LibreOffice CLI 的导出流程是:先用 XML 构建器生成合法的 ODF 文件,再调用 libreoffice --headless --convert-to pdf 完成转换。Blender CLI 则通过 blender --background --python script.py 执行渲染。

这一决策的理由很明确:CLI 是软件的结构化接口,而非替代品。如果用 Pillow 替代 GIMP 的渲染引擎,产出的只是一个无法处理真实工作负载的玩具。

4.2 渲染鸿沟(The Rendering Gap)

大多数 GUI 应用在渲染时才应用特效。如果 CLI 操作了项目文件但使用了简陋的导出工具,特效会被静默丢弃。项目提出的解决方案优先级为:原生渲染器(如 melt)→ 滤镜转译层(如 MLT 滤镜 → ffmpeg -filter_complex)→ 手动渲染脚本。

4.3 滤镜转译的陷阱

在不同格式间映射特效时,需要注意:重复滤镜合并(ffmpeg 不允许同一滤镜出现两次)、流排序约束(ffmpeg concat 要求交错排列 [v0][a0][v1][a1])、参数空间差异(MLT 亮度 1.15 = +15%,ffmpeg eq=brightness=0.06 在 -1…1 区间)、以及无法映射的特效处理。

4.4 时间码精度

非整数帧率(如 29.97fps = 30000/1001)会导致累积舍入误差。项目要求使用 round() 而非 int() 进行帧转换,显示时使用整数运算,测试中允许 ±1 帧容差。

4.5 输出验证方法论

项目明确要求"永远不要因为进程退出码为 0 就信任导出成功"。验证手段包括:魔术字节检查、ZIP/OOXML 结构验证、像素级分析、音频 RMS 电平检测、时长校验等。


五、已支持软件矩阵

CLI-Anything 的覆盖范围横跨创意、生产力、通信、图表、AI 生成等多个领域:

软件 领域 CLI 命令 后端技术 测试数
GIMP 图像编辑 cli-anything-gimp Pillow + GEGL/Script-Fu 107
Blender 3D 建模与渲染 cli-anything-blender bpy (Python scripting) 208
Inkscape 矢量图形 cli-anything-inkscape SVG/XML 直接操作 202
Audacity 音频制作 cli-anything-audacity Python wave + sox 161
LibreOffice 办公套件 cli-anything-libreoffice ODF 生成 + headless 模式 158
OBS Studio 直播与录制 cli-anything-obs-studio JSON scene + obs-websocket 153
Kdenlive 视频剪辑 cli-anything-kdenlive MLT XML + melt 155
Shotcut 视频剪辑 cli-anything-shotcut MLT XML + melt 154
ComfyUI AI 图像生成 cli-anything-comfyui ComfyUI REST API 70
Ollama 本地 LLM 推理 cli-anything-ollama Ollama REST API 98
Draw.io 图表绘制 cli-anything-drawio mxGraph XML + draw.io CLI 138
Zoom 视频会议 cli-anything-zoom Zoom REST API (OAuth2) 22
MuseScore 乐谱编辑 cli-anything-musescore mscore CLI 56
Sketch UI 设计 sketch-cli sketch-constructor (Node.js) 19
其他 Browser、Mubu、Mermaid、AnyGen、NotebookLM、AdGuardHome、Krita、Novita、iTerm2 等

全部 1,858 项测试 100% 通过。


六、代码结构与包架构

每个生成的 CLI 遵循统一的目录结构:

<software>/
└── agent-harness/
    ├── <SOFTWARE>.md              # 该软件的架构 SOP
    ├── setup.py                   # 包配置
    └── cli_anything/
        └── <software>/
            ├── __init__.py
            ├── __main__.py        # python -m 入口
            ├── <software>_cli.py  # Click CLI 主文件 + REPL
            ├── README.md
            ├── core/              # 核心模块(按领域拆分)
            │   ├── project.py
            │   ├── ...
            ├── utils/
            │   ├── <software>_backend.py  # 真实软件后端封装
            │   └── repl_skin.py           # 统一 REPL 皮肤
            ├── skills/
            │   └── SKILL.md               # AI 可发现的技能定义
            └── tests/
                ├── TEST.md
                ├── test_core.py
                └── test_full_e2e.py

所有 CLI 统一在 cli_anything.* 命名空间下,无冲突、可 pip 安装,命名规范一致(cli-anything-gimpcli-anything-blender 等)。

以 GIMP CLI 为例,其主文件 gimp_cli.py 基于 Click 框架,定义了 projectlayercanvasfiltermediaexportsessiondraw 等命令组,共计 50 余个子命令,涵盖项目管理、图层操作、画布变换、滤镜应用、媒体探查、渲染导出、会话管理和绘图等完整功能。


七、CLI-Hub:社区驱动的 CLI 注册中心

项目维护了一个 registry.json 注册表,记录所有可用 CLI 的元数据(名称、版本、描述、依赖、安装命令、入口点、分类、贡献者等)。基于此注册表,项目搭建了 CLI-Hub 网站(https://hkuds.github.io/CLI-Anything/),用户可一站式浏览、搜索和安装社区贡献的 CLI。

更进一步,项目还发布了 CLI-Hub 元技能(meta-skill),使 AI Agent 能够自主发现和安装所需的 CLI,实现零人工干预的工具获取流程。


八、多平台接入策略

CLI-Anything 的设计是平台无关的,通过不同的接入层适配多种 AI 编程工具:

  • Claude Code:以插件市场形式分发,/plugin install cli-anything 即可使用。
  • OpenCode:通过命令文件(.md)+ HARNESS.md 方法论规范接入。
  • OpenClaw:通过原生 SKILL.md 技能文件接入。
  • Codex:通过 skill 安装脚本接入。
  • Qodercli:通过插件注册脚本接入。
  • GitHub Copilot CLI:通过 copilot plugin install 接入。

无论使用哪个平台构建,生成的 CLI 使用方式完全一致。


九、迭代优化机制

单次 /cli-anything 运行不一定能完整覆盖目标软件的所有功能。项目提供了 /refine 命令,支持增量式、非破坏性的功能扩展:

# 全面优化 — Agent 分析所有功能的覆盖差距
/cli-anything:refine ./gimp

# 定向优化 — 指定特定功能领域
/cli-anything:refine ./gimp "批处理和滤镜"

该命令会对软件的完整功能与当前 CLI 覆盖范围进行差距分析,然后为识别到的差距实现新命令、测试和文档。用户可多次运行,逐步扩大功能覆盖范围。


十、已知局限

项目文档中坦诚列出了以下局限:

  1. 依赖强大的基础模型:CLI-Anything 需要前沿级别的模型(如 Claude Opus 4.6、GPT-5.4)才能可靠生成 CLI。较弱的模型可能产出不完整或有误的结果。
  2. 依赖可用的源代码:/cli-anything 基于源码进行分析和生成。仅有编译后二进制文件的软件,生成质量会显著下降。
  3. 可能需要迭代优化:单次运行不一定覆盖所有功能,通常需要执行一次或多次 /refine

十一、总结与展望

CLI-Anything 提出了一个清晰且务实的技术路线:以 CLI 作为 AI Agent 与专业软件之间的桥梁,通过自动化流水线将任意有源码的软件转化为 Agent 原生工具。其核心价值在于:

  • 不重新发明轮子,而是为已有软件构建结构化接口。
  • 不妥协功能完整性,坚持调用真实软件后端。
  • 不依赖脆弱的 GUI 自动化,而是走纯命令行路线。
  • 不局限于单一 AI 平台,而是提供多平台适配层。

从工程角度看,该项目在方法论沉淀(HARNESS.md)、测试体系(多层验证 + 真实软件集成)、社区生态(CLI-Hub + registry.json)等方面展现了较高的成熟度。对于关注 AI Agent 工具链建设的开发者而言,CLI-Anything 提供了一个值得参考的范式。


项目地址:https://github.com/HKUDS/CLI-Anything
CLI-Hub:https://hkuds.github.io/CLI-Anything/
协议:Apache 2.0

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐