一天一个开源项目(第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.md 和 SKILL.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 代理与传统软件之间的最后一公里问题AI 代理的能力边界没有 CLI-Anything: ✅ 调用 REST API ✅ 执行 SQL 查询 ✅ 运行 Shell 命令 ✅ 读写文件 ❌ 控制 GIMP 处理图片 ❌ 让 Blender 渲染场景 ❌ 操作 LibreOffice 生成报表 ❌ 调用 FreeCAD 的 CAD 功能 AI 代理的能力边界有了 CLI-Anything: 以上全部 ✅使用场景创意软件自动化让 AI 代理批量处理图片GIMP 裁剪 调色 导出一行命令完成本来需要手动操作几十次的工作。3D 内容生产流水线AI 代理调用 Blender CLI从脚本到渲染输出整个 3D 内容生产流程全自动化。文档批量生成LibreOffice 的 CLI 封装让 AI 代理能批量生成、填写、格式化办公文档。游戏开发自动化Godot 引擎的 CLI 封装让 AI 代理参与游戏资产管理和构建流程。专业领域工具接入FreeCAD机械 CAD、分子建模软件、GIS 地图工具——这些专业软件通过 CLI-Anything 都能被 AI 代理调用。快速开始在 Claude Code 中使用最快路径# 1. 安装插件/plugin marketplaceaddHKUDS/CLI-Anything /plugininstallcli-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--inputphoto.jpg--width800--height600--outputresized.jpg gimp-cli image convert--inputphoto.png--formatjpg--quality85--outputphoto.jpg gimp-cli batch process --input-dir ./raw/ --output-dir ./processed/--operationsresize,sharpen通过 CLI-Hub 包管理器安装现有 Harness# 安装 CLI-Hubpipinstallcli-anything-hub# 查看可用的 Harness 列表cli-hub list# 安装特定软件的 Harness已有社区贡献版本cli-hubinstallgimp cli-hubinstallblender cli-hubinstalllibreoffice cli-hubinstallgodot cli-hubinstallfreecad# 搜索cli-hub search3d modeling# 更新所有已安装的 Harnesscli-hub update--all扩展已有 Harness添加新功能# 在 Claude Code 中扩展现有的 GIMP Harness/cli-anything:refine ./gimp-harness添加批量水印功能和 EXIF 数据处理在其他 AI 代理中使用# Pi Coding Agentbash.pi-extension/cli-anything/install.sh# 然后cli-anything ./blender# OpenCodeopencode cli-anything ./inkscape# 手动 Python 开发模式pipinstallcli-anything python-mcli_anything generate ./target-app核心特性7 阶段方法论这是 CLI-Anything 的核心技术一个把软件变成CLI的完整自动化流水线Phase 1 — Analyze分析输入: 目标软件路径 ./gimp ↓ 自动扫描: - 可执行文件结构 - 命令行参数--help 输出 - Python/脚本 API如果有 - 插件系统如果有 - 文档man page、README ↓ 输出: 功能映射表GUI 操作 → 可程序化的接口Phase 2 — Design设计输入: 功能映射表 ↓ 架构设计: - 命令分组gimp-cli image / gimp-cli batch / gimp-cli script - 状态模型会话管理、REPL 模式 - 输出格式JSON 结构定义 - 错误处理规范 ↓ 输出: CLI 架构设计文档Phase 3 — Implement实现基于 Click 框架Python实现: - 主 CLI 命令组 - 子命令和参数 - JSON 输出格式化 - REPL 交互模式含 undo/redo - 会话状态管理 - 错误处理Phase 4 — Plan Tests测试规划生成 TEST.md包含: - 单元测试策略每个命令的参数边界 - E2E 测试场景完整工作流测试 - 异常场景测试无效输入、文件不存在等 - 性能测试基线Phase 5 — Write Tests编写测试自动生成 pytest 测试套件: - tests/unit/ ← 单元测试 - tests/e2e/ ← 端到端测试 - tests/fixtures/ ← 测试数据 目标: 100% 关键路径覆盖Phase 6 — Document文档自动生成两种文档服务两类受众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发布生成 setup.py → pip install -e . → 安装到系统 PATH → 工具立即可用: $ gimp-cli --help → 注册到 CLI-Hub可选便于社区共享支持的 80 应用精选类别代表应用图像处理GIMP、Inkscape、Krita、ImageMagick3D 建模/渲染Blender、FreeCAD、OpenSCAD视频编辑Shotcut、OpenShot、Kdenlive音频处理Audacity、Ardour办公套件LibreOffice Writer/Calc/Impress游戏开发Godot Engine笔记/知识库Obsidian、Zotero科学计算OctaveMATLAB 兼容GIS 地图QGIS分子建模Avogadro、PyMOL区块链Ethereum 质押工具项目优势对比项CLI-Anything视觉 GUI 代理UI-TARS传统 RPAUiPath输出可靠性✅ 确定性 JSON⚠️ 视觉判断有不确定性⚠️ 坐标依赖脆弱可测试性✅ 完整测试套件❌ 难以自动化测试⚠️ 有限速度✅ 直接调用 CLI⚠️ 截图-思考-操作循环⚠️ 模拟操作慢对 API 的依赖无需 API包装 CLI无需视觉操控无需坐标操控开源✅ Apache-2.0✅❌ 商业软件可复用性✅ CLI-Hub 生态共享❌ 任务相关⚠️ 工作流相关项目详细剖析1. SKILL.mdAI 代理的软件使用说明书这是 CLI-Anything 最有前瞻性的设计。传统软件只有给人看的文档README、man page而 SKILL.md 是专门给 AI 代理看的# 一个完整 SKILL.md 示例Blender CLI---name:blender-cliversion:1.0.0description:Blender 3D software CLI for AI agent automationauthor:HKUDS/CLI-Anythingtriggers:-render 3d scene-create animation-blender-3d modelingcommands:render:description:Render a Blender scene to image or animationusage:blender-cli render--scene file--output path[options]parameters:-name:--scenetype:file_pathrequired:truedescription:Path to .blend file-name:--outputtype:directory_pathrequired:truedescription:Output directory for renders-name:--frame-starttype:integerdefault:1-name:--frame-endtype:integerdefault:1-name:--enginetype:enumvalues:[CYCLES,EEVEE,WORKBENCH]default:EEVEEoutput_format:jsonexample:|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创建者: 为 GIMP 生成 Harness → 发布到 CLI-Hub 使用者: cli-hub install gimp → 一键安装 → AI 代理立即可用 这与 npm、pip、brew 的逻辑完全一致 - 有人贡献高质量的 Harness - 社区可以直接复用不需要每个人重新生成 - 通过版本管理持续改进这个设计让 CLI-Anything 从单人使用的工具变成了社区共同维护的 AI 软件接口标准库。3. 与 HKUDS OpenHarness 的关系这两个来自同一团队的项目形成了自然的技术栈OpenHarness第96篇 ← 代理运行时基础设施 ← 工具调用引擎、记忆管理、权限治理 ← 提供 代理的骨架 CLI-Anything第104篇 ← 工具层扩展 ← 把各种软件封装成 OpenHarness 可调用的工具 ← 提供 代理的手臂延伸 组合使用: OpenHarness 代理 → 通过 CLI-Anything 生成的 CLI → 控制 Blender/GIMP/LibreOffice项目地址与资源官方资源GitHub: https://github.com/HKUDS/CLI-AnythingCLI-Hub 包管理器:pip install cli-anything-hub社区: 飞书 / 微信开发者社区见 GitHub README贡献软件愿望清单: GitHub Issues wishlist 模板适用人群AI 代理开发者需要让代理控制没有 API 的桌面软件自动化工程师希望用程序化方式驱动图形软件GIMP、Blender 等开源贡献者为 CLI-Hub 贡献新软件的 Harness扩展生态企业自动化团队需要把遗留图形软件接入现代 AI 工作流总结与展望核心要点回顾7 阶段方法论分析 → 设计 → 实现 → 测试规划 → 测试 → 文档 → 发布完整的自动化 CLI 生成流水线SKILL.mdAI 代理的软件使用说明书实现代理自动发现和使用任何工具的标准格式80 软件支持GIMP、Blender、LibreOffice、Godot、FreeCAD 等横跨创意、办公、工程领域CLI-Hub 包管理让 Harness 成为可共享的社区资产而非重复劳动HKUDS 出品35.7k Stars与 OpenHarness 形成代理基础设施 工具接口的完整技术栈一句话评价CLI-Anything 做的事情极其务实但意义深远它不等软件厂商为 AI 设计接口而是自己动手把整个现有软件生态变成 AI 代理的工具箱。欢迎来我的个人主页找到更多有用的知识和有趣的产品