AI Agent 的能力边界正从对话生成向工具调用延伸,但一个核心矛盾始终存在:Agent 擅长推理却难以驾驭真实软件。现有方案要么依赖脆弱的 UI 自动化(截图、点击、OCR),要么受限于有限的 API 覆盖,要么只能使用功能缩水的替代实现。CLI-Anything 项目提出了一种系统性解法 —— 通过七阶段全自动流水线,将任意 CLI 工具封装为 Agent-Native 接口,让 AI Agent 能够以自然语言驱动专业软件完成复杂任务。
问题本质:Agent 与软件的能力鸿沟
当前 AI Agent 在调用外部工具时面临三重困境。UI 自动化方案(如 RPA)基于截图和像素定位,界面微调即可导致流程断裂,维护成本极高。API 集成方案受限于软件厂商的开放程度,多数专业软件(如 Blender、GIMP、LibreOffice)仅提供部分 API 或根本没有 API。自研替代方案虽然可控,但往往只能实现原软件 10% 的功能,无法支撑生产环境需求。
CLI-Anything 的核心洞察在于:CLI 是同时适合人类和 AI Agent 的通用接口。命令行具有结构化、可组合、自描述的特性,与 LLM 的文本生成能力天然匹配。更重要的是,现代专业软件普遍提供命令行调用能力或脚本接口,这为 Agent 直接操控真实软件提供了技术基础。
七阶段流水线:从代码到 Agent-Native CLI
CLI-Anything 采用七阶段全自动流水线实现 CLI 生成,整个过程通过 Claude Code、Pi、OpenClaw 等 Agent 平台一键触发:
阶段 1:分析(Analyze)—— 扫描目标软件源代码,映射 GUI 操作到底层 API 调用路径,识别可自动化的功能边界。
阶段 2:设计(Design)—— 基于 Click 框架架构命令分组,设计状态模型(项目 / 会话 / 资源),规划输出格式(人类可读表格 + 机器可读 JSON)。
阶段 3:实现(Implement)—— 生成完整 CLI 实现,包含 REPL 交互界面、子命令体系、JSON 输出模式、撤销 / 重做机制。
阶段 4-5:测试(Plan & Write Tests)—— 创建 TEST.md 测试计划并实施,覆盖单元测试(合成数据)、端到端测试(真实文件与软件)、CLI 子进程验证。
阶段 6:文档(Document)—— 更新 TEST.md 记录测试结果,生成 SKILL.md 供 Agent 自主发现。
阶段 7:发布(Publish)—— 创建 setup.py,安装到 PATH,使 Agent 可通过标准 which 命令发现工具。
整个流程的核心约束是 "真实软件集成" 原则:CLI 必须调用实际应用程序进行渲染,禁止用 Pillow 替代 GIMP、禁止用自定义渲染器替代 Blender。CLI-Anything 构建的是 "通向软件的接口",而非软件的替代品。
Agent-Native 接口的工程要素
统一 REPL 体验
所有生成的 CLI 共享统一的 REPL 界面(基于 repl_skin.py),提供品牌化横幅、样式化提示符、命令历史、进度指示器和标准化格式。Agent 进入 REPL 后可保持会话状态,执行多步操作序列,并通过 undo/redo 机制安全试错。
结构化输出模式
每个命令支持 --json 标志,输出结构化数据供 Agent 消费。以 LibreOffice CLI 为例:
cli-anything-libreoffice --json document info --project report.json
返回机器可解析的 JSON,包含文档元数据、元素计数、修改状态等字段,Agent 无需解析人类可读文本即可获取精确信息。
SKILL.md 自描述机制
每个生成的 CLI 包含 SKILL.md 文件,采用 YAML frontmatter 描述命令分组、使用示例、Agent 专用指引(JSON 输出、错误处理、程序化调用)。这使得 Agent 可通过 npx skills 机制自主发现 CLI 能力,无需人工编写集成代码。
生产级验证策略
CLI-Anything 采用四层测试体系确保可靠性:
| 测试层级 | 验证内容 | 示例 |
|---|---|---|
| 单元测试 | 核心函数隔离测试(合成数据) | test_core.py — 项目创建、图层操作、滤镜参数 |
| E2E 测试(原生) | 项目文件生成管道验证 | ODF ZIP 结构合法性、MLT XML 格式正确性 |
| E2E 测试(真实后端) | 真实软件调用 + 输出验证 | LibreOffice → PDF(验证 %PDF- 魔数)、Blender → PNG(像素分析) |
| CLI 子进程测试 | 已安装命令通过 subprocess.run 验证 |
cli-anything-gimp --json project new → 有效 JSON 输出 |
截至当前版本,CLI-Anything 已在 18 款专业软件上累计通过 2,280 项测试,覆盖图像编辑(GIMP、Krita)、3D 建模(Blender、FreeCAD)、视频剪辑(Kdenlive、Shotcut)、办公套件(LibreOffice)、游戏引擎(Godot、s&box)等多个领域,实现 100% 通过率。
CLI-Hub:Agent 自主发现与安装
CLI-Hub 是 CLI-Anything 的中央注册表,提供两种消费方式:
人工驱动:通过 pip install cli-anything-hub 安装后,使用 cli-hub list、cli-hub search、cli-hub install 等命令浏览和安装社区 CLI。
Agent 自主:通过 npx skills add HKUDS/CLI-Anything --skill cli-hub-meta-skill 安装 meta-skill 后,Agent 可自主浏览注册表、识别任务所需 CLI、执行安装并调用。提示词示例:"Find appropriate CLI software in CLI-Hub and complete the task: convert this video to GIF with subtitles"。
可落地参数与最佳实践
基于 CLI-Anything 的实践经验,将现有工具封装为 Agent-Native 接口时应关注以下要点:
模型选择:流水线生成依赖前沿大模型(Claude Opus 4.6、GPT-5.4 等级别),弱模型可能产生不完整 CLI 需要大量人工修正。
源代码可用性:七阶段流水线基于源代码分析生成 harness,纯二进制软件需反编译时生成质量显著下降。
迭代精化:单次 /cli-anything 运行可能无法覆盖全部功能,需通过 /cli-anything:refine 进行多轮 gap analysis,逐步扩展 CLI 能力边界。
输出验证:永远不要仅依赖进程退出码判断操作成功,应验证魔数字节、文件结构、像素 / 音频特征等实际输出属性。
状态管理:为复杂软件设计项目文件抽象,支持会话持久化、状态序列化、跨命令状态传递,使 Agent 能够执行多步骤工作流。
CLI-Anything 代表了 AI Agent 工具集成的演进方向 —— 不是为 Agent 重写软件,而是为软件构建 Agent 可理解的接口。随着 CLI-Hub 生态的扩展,Agent 自主发现、安装、调用专业软件的能力将持续增强,为自动化复杂知识工作铺平道路。
参考来源
- CLI-Anything GitHub 仓库: https://github.com/HKUDS/CLI-Anything
- CLI-Hub 官网: https://clianything.cc/
内容声明:本文无广告投放、无付费植入。
如有事实性问题,欢迎发送勘误至 i@hotdrydog.com。