CLI-Anything:让所有软件变成 Agent 原生工具
"今天的软件服务人类👨💻,明天的用户将是 Agent🤖"
一、项目概览
CLI-Anything是由香港大学数据科学实验室(HKUDS)开源的一个革命性项目,GitHub 星标已达36.6K,Fork 数3.6K。它的核心理念极其简洁却极具野心——一键将任何软件转化为 AI Agent 可直接操控的命令行工具。
项目地址:https://github.com/HKUDS/CLI-Anything
CLI-Hub:https://clianything.cc/
一句话概括:给定任何软件的源代码仓库,CLI-Anything 能自动分析、设计、实现一套完整的 CLI 接口,让 AI Agent 可以像人类操作 GUI 一样,通过结构化命令来驱动这些专业软件。
二、解决什么问题?
2.1 Agent 与软件之间的鸿沟
当前 AI Agent 在文本推理方面表现出色,但在使用真实的专业软件时面临巨大障碍:
- UI 自动化脆弱:基于截图识别和模拟点击的方案(RPA)极不稳定,界面微小变化即可导致失败
- API 覆盖有限:大多数专业软件没有完整的 API,或者 API 只暴露了一小部分功能
- 重新实现不现实:为 Agent 从头实现一个简化版软件,会丢失 90% 的专业能力
2.2 CLI-Anything 的方案
CLI-Anything 选择了一条优雅的中间路线:
不改造软件本身,而是自动生成一层CLI(命令行接口)封装,将软件的全部能力通过结构化的命令暴露给 Agent。
CLI 是 Agent 与软件之间最自然的桥梁:
- 结构化:文本命令天然匹配 LLM 的输入输出格式
- 可组合:命令可以链式串联,完成复杂工作流
- 自描述:
--help参数提供 Agent 可自动发现的文档 - 确定性:相同输入产生相同输出,Agent 行为可预测
- 轻量通用:无额外依赖,跨平台可用
三、核心架构与工作原理
3.1 自动化 7 阶段流水线
CLI-Anything 的核心是一个全自动的 7 阶段生成流水线,从源码分析到发布一条龙:
| 阶段 | 功能 | 说明 |
|---|---|---|
| 🔍Phase 1: Analyze | 源码扫描 | 分析目标软件源代码,将 GUI 操作映射到底层 API |
| 📐Phase 2: Design | 架构设计 | 规划命令分组、状态模型、输出格式 |
| 🔨Phase 3: Implement | 代码实现 | 基于 Python Click 框架构建 CLI,含 REPL、JSON 输出、undo/redo |
| 📋Phase 4: Plan Tests | 测试规划 | 创建 TEST.md,规划单元测试和端到端测试 |
| 🧪Phase 5: Write Tests | 测试实现 | 编写全面的测试套件 |
| 📝Phase 6: Document | 文档编写 | 更新测试结果和文档 |
| 📦Phase 7: Publish | 打包发布 | 创建setup.py,安装到系统 PATH |
整个过程完全自动化——只需要一条命令:
/cli-anything /path/to/software
3.2 真实软件集成——零妥协
这是 CLI-Anything 最关键的架构决策:生成的 CLI 必须调用真实软件。
它不是用 Pillow 替代 GIMP,也不是用自定义渲染器替代 Blender。CLI-Anything 的做法是:
- 生成有效的项目文件(ODF、MLT XML、SVG 等原生格式)
- 调用真实软件的 headless 模式进行渲染和导出
- 验证输出结果的正确性(magic bytes 检查、文件结构验证等)
这意味着 Agent 获得的是100% 的专业能力,没有任何缩水。
3.3 双模式交互
每个生成的 CLI 都支持两种使用模式:
REPL 交互模式(适合 Agent 长会话):
$ cli-anything-blender
╔══════════════════════════════════════════╗
║ cli-anything-blender v1.0.0 ║
║ Blender CLI for AI Agents ║
╚══════════════════════════════════════════╝
blender> scene new --name ProductShot
✓ Created scene: ProductShot
blender[ProductShot]> object add-mesh --type cube --location 0 0 1
✓ Added mesh: Cube at (0, 0, 1)
blender[ProductShot]*> render execute --output render.png --engine CYCLES
✓ Rendered: render.png (1920×1080, 2.3 MB) via blender --background
子命令模式(适合脚本和流水线):
cli-anything-gimp --json layer add -n "Background" --type solid --color "#1a1a2e"
--json标志让每条命令都输出结构化 JSON 数据,Agent 可以精确解析结果。
3.4 统一的 REPL 框架(ReplSkin)
所有生成的 CLI 共享一个统一的 REPL 界面框架repl_skin.py,提供:
- 品牌化启动 Banner
- 样式化提示符(显示当前项目/上下文状态)
- 命令历史记录
- 进度指示器
- 标准化输出格式
四、覆盖范围——已支持 60+ 软件
截至目前,CLI-Anything 已经覆盖了极其广泛的应用领域:
🎨 创意与媒体
- Blender(3D 建模/渲染,208 测试)、GIMP(图像编辑,107 测试)、Inkscape(矢量图形,202 测试)
- Audacity(音频编辑,161 测试)、Kdenlive(视频编辑,155 测试)、Shotcut(视频编辑,154 测试)
- Krita(数字绘画)、MuseScore(乐谱编辑)
🏢 办公与生产力
- LibreOffice(文档处理,158 测试)、Draw.io(图表绘制,138 测试)
- Obsidian(知识管理)、Zotero(文献管理)
🔬 科学与工程
- FreeCAD(3D CAD,258 命令)、QGIS(GIS 分析)、ParaView(科学可视化)
- CloudCompare(点云处理,88 测试)
🎮 游戏开发
- Godot Engine(游戏引擎)、s&box(游戏开发框架,244 测试)
🔧 开发与调试
- RenderDoc(GPU 调试)、LLDB(代码调试)、Unreal Insights(性能分析)
- Ollama(本地 LLM 推理,98 测试)、ComfyUI(AI 图像生成,70 测试)
🌐 网络与自动化
- AdGuard Home(网络管理)、n8n(工作流自动化)、WireMock(API 测试)
全部2,280 项测试 100% 通过率——包括 1,682 个单元测试 + 579 个端到端测试 + 19 个 Node.js 测试。
五、多平台 Agent 支持
CLI-Anything 不绑定单一 AI Agent 平台,已适配多种主流 Agent 框架:
| 平台 | 集成方式 | 状态 |
|---|---|---|
| Claude Code | Plugin Marketplace 一键安装 | ✅ 官方支持 |
| Pi Coding Agent | 全局扩展安装 | ✅ 官方支持 |
| OpenCode | 命令文件复制 | 🔬 实验性 |
| OpenClaw | SKILL.md 技能文件 | ✅ 社区支持 |
| Codex | 技能安装脚本 | 🔬 实验性 |
| GitHub Copilot CLI | 插件安装 | ✅ 社区支持 |
| Qodercli | 注册脚本 | ✅ 社区支持 |
| Goose | 通过 CLI Provider | 🔬 实验性 |
以 Claude Code 为例,只需两步:
/plugin marketplace add HKUDS/CLI-Anything
/plugin install cli-anything
之后即可使用/cli-anything <软件路径>自动生成 CLI。
六、CLI-Hub——Agent 自主发现与安装
CLI-Hub 是 CLI-Anything 的生态系统核心,提供:
🌐 在线注册中心:https://clianything.cc/
- 浏览 60+ 个社区构建的 CLI
- 按类别筛选(3D、AI、音频、视频、设计、科学等 28 个分类)
- 一键安装命令
📦 包管理器:
pip install cli-anything-hub
cli-hub install <name>
🤖 Meta-Skill 自主发现:
这是最令人兴奋的特性——Agent 可以自主在 CLI-Hub 中搜索、选择并安装所需工具:
# 安装 meta-skill
openclaw skills install cli-anything-hub
# 然后只需告诉 Agent
"在 CLI-Hub 中找到合适的 CLI 软件来完成任务:<你的任务>"
Agent 会自动浏览目录、选择匹配的 CLI、安装并使用——全程无需人类干预。
七、SKILL.md——Agent 技能发现机制
每个生成的 CLI 都附带一个SKILL.md文件,这是 CLI-Anything 的 Agent 技能发现机制:
- YAML 前置信息:名称和描述,用于 Agent 自动发现
- 命令组文档:所有可用子命令的完整说明
- 使用示例:常见工作流的使用方式
- Agent 指南:JSON 输出、错误处理、编程使用的最佳实践
SKILL.md 在流水线的 Phase 6.5 自动生成,从 Click 装饰器、setup.py 和 README 中提取元数据。
八、测试方法论
CLI-Anything 的测试体系分为四个层次,确保生产级可靠性:
| 层次 | 测试内容 | 示例 |
|---|---|---|
| 单元测试 | 用合成数据隔离测试每个核心函数 | 项目创建、图层操作、滤镜参数 |
| E2E(原生) | 项目文件生成流水线 | 有效的 ODF ZIP 结构、正确的 MLT XML |
| E2E(真实后端) | 调用真实软件 + 输出验证 | LibreOffice → PDF(检查%PDF-magic bytes)、Blender → 渲染 PNG |
| CLI 子进程测试 | 已安装命令的 subprocess 验证 | cli-anything-gimp --json project new→ 有效 JSON |
一个关键原则:当后端软件缺失时,测试会 FAIL 而不是 SKIP。这确保了功能是真实的,不存在虚假的覆盖率。
九、关键经验教训
从 18+ 个生产级 CLI 的构建过程中,项目团队总结了几条核心经验:
- 必须使用真实软件:CLI 必须调用实际应用进行渲染,不能用替代方案
- 渲染差距(Rendering Gap):GUI 应用在渲染时才应用效果。如果 CLI 只操作项目文件但使用简易导出工具,效果会被静默丢弃
- 滤镜翻译:在不同格式间映射效果时,需注意重复滤镜合并、交错流排序、参数空间差异
- 时间码精度:非整数帧率(如 29.97fps)会导致累积舍入误差
- 输出验证:永远不要因为退出码为 0 就认为导出成功——必须验证 magic bytes、文件结构、像素内容
这些经验被编入HARNESS.md,作为方法论的标准操作手册。
十、Iterative Refinement——持续迭代改进
初始生成后,CLI-Anything 还提供了refine命令进行迭代改进:
# 广泛改进——Agent 分析所有功能的覆盖缺口
/cli-anything:refine ./gimp
# 聚焦改进——针对特定功能领域
/cli-anything:refine ./shotcut "视频合成和画中画效果"
Refine 命令会执行缺口分析,对比软件的完整能力与当前 CLI 的覆盖范围,然后自动实现新的命令、测试和文档。可以多次运行,每次都是增量的、非破坏性的。
十一、实际应用演示
项目提供了多个令人印象深刻的真实演示:
📐 FreeCAD — 好奇号火星车建模
Agent 通过 Preview + Live Preview + Trajectory 机制,逐步构建出一个好奇号风格的火星车模型。每个阶段都推送真实的 FreeCAD 预览包,可实时观察建模进度。
🧊 Blender — 轨道中继无人机
Agent 使用 Blender harness 构建硬表面风格的轨道中继无人机,通过预览循环实时追踪每一步的视觉状态。
📊 Draw.io — HTTPS 握手时序图
Agent 从零开始创建完整的 HTTPS 连接生命周期图——TCP 三次握手、TLS 协商、加密数据交换、TCP 四次终止。
🎮 Slay the Spire II — 游戏自动化
Agent 通过 CLI 读取游戏状态、选择卡牌、选择路径并做出实时策略决策,完成一整局游戏。
🎬 VideoCaptioner — 自动字幕生成
Agent 自动为视频生成并叠加样式化字幕,支持双语文本渲染和自定义格式。
十二、局限性与未来方向
当前局限:
- 需要强大的基础模型(如 Claude Opus 4.6、GPT-5.4)才能可靠生成,弱模型可能产生不完整的 CLI
- 依赖源代码可用性,仅有编译二进制文件时质量会下降
- 单次运行可能无法完全覆盖所有功能,通常需要多次 refine
未来路线图:
- [ ] 支持更多应用类别(CAD、DAW、IDE、EDA、科学工具)
- [ ] Agent 任务完成率基准测试套件
- [ ] 社区贡献的 CLI harnesses
- [ ] 更多 Agent 框架集成
- [ ] 支持将闭源软件和 Web 服务的 API 封装为 CLI
- [x] SKILL.md 自动生成(已完成)
十三、总结
CLI-Anything 代表了 AI Agent 生态系统中一个关键的基础设施层。它解决的不是 "Agent 如何思考" 的问题,而是"Agent 如何行动"的问题。
通过将任意软件自动转化为结构化的 CLI 接口,CLI-Anything 让 Agent 从 "只能对话" 进化到 "能操作真实工具"。这不仅是技术上的创新——自动化的 7 阶段流水线、真实软件集成、多层测试体系——更是一种新的软件交互范式的开始。
当所有软件都变成 Agent 原生工具,Agent 的能力边界将不再受限于 API 的多寡,而是仅受限于 Agent 自身的推理能力。
项目信息
- 开源协议:Apache License 2.0
- 开发语言:Python(≥3.10)
- Star 数:36.6K(截至 2026 年 5 月)
- 测试覆盖:2,280 项测试,100% 通过率
- 社区规模:60+ 个 CLI,60+ 个已注册软件
夜雨聆风