香港大学 HKUDS 团队开源项目 CLI-Anything 旨在通过自动化 CLI 生成流水线,弥合 AI Agent 与专业桌面软件之间的操控鸿沟。
当前大语言模型(LLM)的推理能力已相当成熟,但在操控真实专业软件方面仍存在显著短板。以 Blender、GIMP、LibreOffice 等桌面应用为例,它们的核心交互逻辑围绕 GUI 构建,AI Agent 若要驱动这些软件,通常面临三条路径:
- GUI 自动化(RPA/截图点击):脆弱、不可靠,界面微调即可导致流程崩溃。
- 有限的 API 封装:覆盖面窄,往往只暴露了软件 10% 的功能。
- 功能重新实现:用 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。
CLI-Anything 的技术核心是一套经过实战验证的 7 阶段 SOP(标准操作流程),记录在项目的 HARNESS.md 中。该流水线由 AI Agent 自动执行,全程无需人工介入:
阶段 1:代码分析(Codebase Analysis)
Agent 扫描目标软件的源码,识别后端引擎(如 Shotcut 的 MLT、GIMP 的 ImageMagick),将 GUI 操作映射到 API 调用,梳理数据模型(XML/JSON/二进制),并发现已有的 CLI 工具(如 melt、ffmpeg、sox)。
阶段 2:CLI 架构设计(Architecture Design)
设计命令分组(项目管理、核心操作、导入导出、配置、会话管理),规划状态模型(REPL 内存态 + JSON 文件持久化),确定输出格式(–json 供 Agent 消费,表格格式供人类调试)。每个 CLI 同时支持有状态 REPL 和无状态子命令两种交互模式。
阶段 3:实现(Implementation)
基于 Python Click 框架构建 CLI。实现顺序为:数据层 → 探查命令 → 变更命令 → 后端集成 → 渲染/导出 → 会话管理 → REPL 界面。后端集成模块(utils/
)负责定位真实软件可执行文件、调用子进程、处理错误。所有 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-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 遵循统一的目录结构:
/ └── agent-harness/
├──
.md # 该软件的架构 SOP ├── setup.py # 包配置 └── cli_anything/ └──
/ ├── __init__.py ├── __main__.py # python -m 入口 ├──
_cli.py # Click CLI 主文件 + REPL ├── README.md ├── core/ # 核心模块(按领域拆分) │ ├── project.py │ ├── ... ├── utils/ │ ├──
_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-gimp、cli-anything-blender 等)。
以 GIMP CLI 为例,其主文件 gimp_cli.py 基于 Click 框架,定义了 project、layer、canvas、filter、media、export、session、draw 等命令组,共计 50 余个子命令,涵盖项目管理、图层操作、画布变换、滤镜应用、媒体探查、渲染导出、会话管理和绘图等完整功能。
项目维护了一个 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 覆盖范围进行差距分析,然后为识别到的差距实现新命令、测试和文档。用户可多次运行,逐步扩大功能覆盖范围。
项目文档中坦诚列出了以下局限:
- 依赖强大的基础模型:CLI-Anything 需要前沿级别的模型(如 Claude Opus 4.6、GPT-5.4)才能可靠生成 CLI。较弱的模型可能产出不完整或有误的结果。
- 依赖可用的源代码:
/cli-anything基于源码进行分析和生成。仅有编译后二进制文件的软件,生成质量会显著下降。 - 可能需要迭代优化:单次运行不一定覆盖所有功能,通常需要执行一次或多次
/refine。
CLI-Anything 提出了一个清晰且务实的技术路线:以 CLI 作为 AI Agent 与专业软件之间的桥梁,通过自动化流水线将任意有源码的软件转化为 Agent 原生工具。其核心价值在于:
- 不重新发明轮子,而是为已有软件构建结构化接口。
- 不妥协功能完整性,坚持调用真实软件后端。
- 不依赖脆弱的 GUI 自动化,而是走纯命令行路线。
- 不局限于单一 AI 平台,而是提供多平台适配层。
从工程角度看,该项目在方法论沉淀(HARNESS.md)、测试体系(多层验证 + 真实软件集成)、社区生态(CLI-Hub + registry.json)等方面展现了较高的成熟度。对于关注 AI Agent 工具链建设的开发者而言,CLI-Anything 提供了一个值得参考的范式。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/259736.html