HKUDS/CLI-Anything

GitHub: HKUDS/CLI-Anything

一个能够为任意软件自动生成 Agent 可控 CLI 接口的 Claude Code 插件,通过七阶段流水线将 GUI 应用转化为结构化命令行工具,解决了 AI Agent 无法直接操作专业软件的难题。

Stars: 1029 | Forks: 103

  CLI-Anything: Making ALL Software Agent-Native

今天的软件服务于人类👨‍💻。明天的用户将是智能体🤖。
CLI-Anything:弥合 AI Agent 与世界软件之间的鸿沟

Quick Start Demos Tests License

Python Click Pytest Coverage Output Feishu WeChat

**一条命令行**:让任何软件为 OpenClaw、nanobot、Cursor、Claude Code 等做好 Agent 准备。  [**中文文档**](README_CN.md)

CLI-Anything typing demo

CLI-Anything Teaser

## 🤔 为什么选择 CLI? CLI 是人类和 AI Agent 的通用接口: • **结构化且可组合** - 文本命令匹配 LLM 格式,并可链接成复杂的工作流 • **轻量且通用** - 开销极小,无需依赖即可在所有系统上运行 • **自我描述** - --help 标志提供 Agent 可以发现的自动文档 • **经过验证的成功** - Claude Code 每天通过 CLI 运行数千个真实工作流 • **Agent 优先设计** - 结构化的 JSON 输出消除了解析的复杂性 • **确定且可靠** - 一致的结果实现可预测的 Agent 行为 ## 🚀 快速开始 ### 前置条件 - **Claude Code**(支持插件) - **Python 3.10+** - 已安装目标软件(例如 GIMP、Blender、LibreOffice 或您自己的应用程序) ### 第 1 步:添加市场 CLI-Anything 作为托管在 GitHub 上的 Claude Code 插件市场分发。 ``` # 添加 CLI-Anything marketplace /plugin marketplace add HKUDS/CLI-Anything ``` ### 第 2 步:安装插件 ``` # 从 marketplace 安装 cli-anything 插件 /plugin install cli-anything ``` 就是这样。该插件现在已可在您的 Claude Code 会话中使用。 ### 第 3 步:用一条命令构建 CLI ``` # /cli-anything <软件路径或仓库> # 为 GIMP 生成完整 CLI(全部 7 个阶段) /cli-anything ./gimp ``` 这将运行完整的流水线: 1. 🔍 **分析** — 扫描源代码,将 GUI 操作映射到 API 2. 📐 **设计** — 架构命令组、状态模型、输出格式 3. 🔨 **实现** — 构建 Click CLI,包含 REPL、JSON 输出、撤销/重做 4. 📋 **规划测试** — 创建包含单元和 E2E 测试计划的 TEST.md 5. 🧪 **编写测试** — 实现全面的测试套件 6. 📝 **文档** — 更新 TEST.md 记录结果 7. 📦 **发布** — 创建 `setup.py`,安装到 PATH ### 第 4 步:使用 CLI ``` # 安装到 PATH cd gimp/agent-harness && pip install -e . # 从任意位置使用 cli-anything-gimp --help cli-anything-gimp project new --width 1920 --height 1080 -o poster.json cli-anything-gimp --json layer add -n "Background" --type solid --color "#1a1a2e" # 进入交互式 REPL cli-anything-gimp ```
替代方案:手动安装 如果您不想使用市场: ``` # Clone 仓库 git clone https://github.com/HKUDS/CLI-Anything.git # 复制插件到 Claude Code 插件目录 cp -r CLI-Anything/cli-anything-plugin ~/.claude/plugins/cli-anything # 重新加载插件 /reload-plugins ```
## 💡 CLI-Anything 的愿景:构建 Agent-Native 软件 • 🌐 **通用访问** - 每个软件通过结构化 CLI 即刻变得可被 Agent 控制。 • 🔗 **无缝集成** - Agent 无需 API、GUI、重构或复杂的包装器即可控制任何应用程序。 • 🚀 **面向未来的生态系统** - 用一条命令将人类设计的软件转化为 Agent-Native 工具。 ## 🔧 何时使用 CLI-Anything | 类别 | 如何成为 Agent-Native | 著名示例 | |----------|----------------------|----------| | **📂 GitHub 仓库** | 通过自动生成 CLI,将任何开源项目转化为 Agent 可控工具 | VSCodium, WordPress, Calibre, Zotero, Joplin, Logseq, Penpot, Super Productivity | | **🤖 AI/ML 平台** | 通过结构化命令自动化模型训练、推理流水线和超参数调优 | Stable Diffusion WebUI, ComfyUI, InvokeAI, Text-generation-webui, Open WebUI, Fooocus, Kohya_ss, AnythingLLM, SillyTavern | | **📊 数据与分析** | 实现可编程的数据处理、可视化和统计分析工作流 | JupyterLab, Apache Superset, Metabase, Redash, DBeaver, KNIME, Orange, OpenSearch Dashboards, Lightdash | | **💻 开发工具** | 通过命令接口简化代码编辑、构建、测试和部署流程 | Jenkins, Gitea, Hoppscotch, Portainer, pgAdmin, SonarQube, ArgoCD, OpenLens, Insomnia, Beekeeper Studio | | **🎨 创意与媒体** | 以编程方式控制内容创建、编辑和渲染工作流 | Blender, GIMP, OBS Studio, Audacity, Krita, Kdenlive, Shotcut, Inkscape, Darktable, LMMS, Ardour | | **🔬 科学计算** | 自动化研究工作流、模拟和复杂计算 | ImageJ, FreeCAD, QGIS, ParaView, Gephi, LibreCAD, Stellarium, KiCad, JASP, Jamovi | | **🏢 企业与办公** | 将业务应用程序和生产力工具转化为 Agent 可访问的系统 | NextCloud, GitLab, Grafana, Mattermost, LibreOffice, AppFlowy, NocoDB, Odoo (Community), Plane, ERPNext | | **📐 绘图与可视化** | 以编程方式创建和操作图表、流程图、架构图和可视化文档 | Draw.io (diagrams.net), Mermaid, PlantUML, Excalidraw, yEd | | **✨ AI 内容生成** | 通过 AI 驱动的云 API 生成专业交付物(幻灯片、文档、图表、网站、研究报告) | [AnyGen](https://www.anygen.io), Gamma, Beautiful.ai, Tome | ## CLI-Anything 的主要特性 ### Agent-软件鸿沟 AI Agent 擅长推理,但在使用真正的专业软件方面表现糟糕。目前的解决方案是脆弱的 UI 自动化、有限的 API,或者是去除了 90% 功能的简化重实现。 **CLI-Anything 的解决方案**:将任何专业软件转化为 Agent-Native 工具,且不丢失功能。 | **当前的痛点** | **CLI-Anything 的解决方案** | |----------|----------------------| | 🤖 “AI 无法使用真正的工具” | 直接集成实际软件后端(Blender, LibreOffice, FFmpeg)——完整的专业能力,零妥协 | | 💸 “UI 自动化经常中断” | 没有截图,没有点击,没有 RPA 的脆弱性。纯命令行的可靠性与结构化接口 | | 📊 “Agent 需要结构化数据” | 内置 JSON 输出供 Agent 无缝使用 + 人类可读格式用于调试 | | 🔧 “自定义集成成本高昂” | 一个 Claude 插件通过经过验证的 7 阶段流水线为任何代码库自动生成 CLI | | ⚡ “原型与生产的差距” | 1,436+ 个测试经过真实软件验证。在 9 个主要应用程序中经过实战检验 | ## 🎯 你可以用 CLI-Anything 做什么?
### 🛠️ 让 Agent 接管您的工作流 专业的或日常的——只需将代码库扔给 `/cli-anything`。GIMP、Blender、Shotcut 用于创意工作。LibreOffice、OBS Studio 用于日常任务。没有源代码?找一个开源替代品扔进去。您将立即获得一个 Agent 可以使用的完整 CLI。 ### 🔗 将分散的 API 统一为一个 CLI 厌倦了摆弄分散的 Web 服务 API?将文档或 SDK 手册提供给 `/cli-anything`,您的 Agent 将获得一个**强大的、有状态的 CLI**,将那些独立的端点封装成连贯的命令组。一个工具代替几十个原始 API 调用——更强的能力同时节省 Token。 ### 🚀 替换或增强 GUI Agent CLI-Anything 可以彻底**取代基于 GUI 的 Agent 方法**——不再有截图,不再有脆弱的像素点击。但有趣的是:一旦您对 GUI 软件使用 `/cli-anything`,您就可以完全通过代码和终端**合成 Agent 任务、评估器和基准测试**——完全自动化,可迭代优化,效率大幅提升。
## ✨ ⚙️ CLI-Anything 如何工作
### 🏗️ 全自动 7 阶段流水线 从代码库分析到 PyPI 发布——插件完全自动处理架构设计、实现、测试规划、测试编写和文档。 ### 🎯 真实软件集成 直接调用真实应用程序进行实际渲染。LibreOffice 生成 PDF,Blender 渲染 3D 场景,Audacity 通过 sox 处理音频。**零妥协**,**零玩具实现**。
### 🔁 智能会话管理 具有撤销/重做功能的持久项目状态,加上统一的 REPL 接口(ReplSkin),在所有 CLI 中提供一致的交互体验。 ### 📦 零配置安装 简单的 pip install -e . 将 cli-anything- 直接放到 PATH 上。Agent 通过标准的 which 命令发现工具。无需设置,无需包装器。
### 🧪 生产级测试 多层验证:使用合成数据的单元测试、使用真实文件和软件的端到端测试,以及已安装命令的 CLI 子进程验证。 ### 🐍 整洁的包架构 所有 CLI 都组织在 cli_anything.* 命名空间下——无冲突,可通过 pip 安装,命名一致:cli-anything-gimp、cli-anything-blender 等。
## 🎬 演示 ### 🎯 通用性 CLI-Anything 适用于任何有代码库的软件——没有领域限制或架构限制。 ### 🏭 专业级测试 在 9 个跨越创意、生产力和绘图领域的多样化、复杂开源应用程序中进行了测试,这些领域以前是 AI Agent 无法访问的。 ### 🎨 多样化领域覆盖 从创意工作流(图像编辑、3D 建模、矢量图形)到制作工具(音频、办公、直播、视频编辑)。 ### ✅ 完整的 CLI 生成 每个应用程序都获得了完整的、生产就绪的 CLI 接口——不是演示,而是保留全部功能的全面工具访问。
软件 领域 CLI 命令 后端 测试
🎨 GIMP 图像编辑 cli-anything-gimp Pillow + GEGL/Script-Fu ✅ 107
🧊 Blender 3D 建模与渲染 cli-anything-blender bpy (Python scripting) ✅ 208
✏️ Inkscape 矢量图形 cli-anything-inkscape Direct SVG/XML manipulation ✅ 202
🎵 Audacity 音频制作 cli-anything-audacity Python wave + sox ✅ 161
📄 LibreOffice 办公套件 (Writer, Calc, Impress) cli-anything-libreoffice ODF generation + headless LO ✅ 158
📹 OBS Studio 直播与录制 cli-anything-obs-studio JSON scene + obs-websocket ✅ 153
🎞️ Kdenlive 视频编辑 cli-anything-kdenlive MLT XML + melt renderer ✅ 155
🎬 Shotcut 视频编辑 cli-anything-shotcut Direct MLT XML + melt ✅ 154
📐 Draw.io 绘图 cli-anything-drawio mxGraph XML + draw.io CLI ✅ 138
总计 ✅ 1,436
## 📊 测试结果 每个 CLI harness 都经过严格的多层测试以确保生产可靠性: | 层级 | 测试内容 | 示例 | |-------|---------------|---------| | **单元测试** | 使用合成数据隔离测试每个核心功能 | `test_core.py` —创建、图层操作、滤镜参数 | | **E2E 测试(原生)** | 项目文件生成流水线 | 有效的 ODF ZIP 结构、正确的 MLT XML、SVG 格式良好性 | | **E2E 测试(真实后端)** | 真实软件调用 + 输出验证 | LibreOffice → 带有 `%PDF-` 魔术字节的 PDF,Blender → 渲染的 PNG | | **CLI 子进程测试** | 通过 `subprocess.run` 测试已安装命令 | `cli-anything-gimp --json project new` → 有效的 JSON 输出 | ``` ================================ Test Summary ================================ gimp 107 passed ✅ (64 unit + 43 e2e) blender 208 passed ✅ (150 unit + 58 e2e) inkscape 202 passed ✅ (148 unit + 54 e2e) audacity 161 passed ✅ (107 unit + 54 e2e) libreoffice 158 passed ✅ (89 unit + 69 e2e) obs-studio 153 passed ✅ (116 unit + 37 e2e) kdenlive 155 passed ✅ (111 unit + 44 e2e) shotcut 154 passed ✅ (110 unit + 44 e2e) drawio 138 passed ✅ (116 unit + 22 e2e) ────────────────────────────────────────────────────────────────────────────── TOTAL 1,436 passed ✅ 100% pass rate ``` ## 🏗️ CLI-Anything 的架构

CLI-Anything Architecture

### 🎯 核心设计原则 1. **真实软件集成** — CLI 生成有效的项目文件(ODF, MLT XML, SVG)并委托给真实应用程序进行渲染。**我们构建通往软件的结构化接口,而不是替代品**。 2. **灵活的交互模型** — 每个 CLI 都在双模式下运行:用于交互式 Agent 会话的有状态 REPL + 用于脚本/流水线的子命令接口。**运行裸命令 → 进入 REPL 模式**。 3. **一致的用户体验** — 所有生成的 CLI 共享统一的 REPL 接口(repl_skin.py),具有品牌化的 banner、样式化的提示符、命令历史、进度指示器和标准化的格式。 4. **Agent-Native 设计** — 每个命令上内置的 --json 标志为机器使用提供结构化数据,而人类可读的表格服务于交互式使用。**Agent 通过标准的 --help 和 which 命令发现能力**。 5. **零妥协依赖** — 真实软件是硬性要求——没有回退,没有优雅降级。**当后端缺失时测试会失败(而非跳过),确保真实的功能**。 ## 📂 项目结构 ``` cli-anything/ ├── 📄 README.md # You are here ├── 📁 assets/ # Images and media │ ├── icon.png # Project icon │ └── teaser.png # Teaser figure │ ├── 🔌 cli-anything-plugin/ # The Claude Code plugin │ ├── HARNESS.md # Methodology SOP (source of truth) │ ├── README.md # Plugin documentation │ ├── QUICKSTART.md # 5-minute getting started │ ├── PUBLISHING.md # Distribution guide │ ├── repl_skin.py # Unified REPL interface │ ├── commands/ # Plugin command definitions │ │ ├── cli-anything.md # Main build command │ │ ├── refine.md # Expand existing harness coverage │ │ ├── test.md # Test runner │ │ └── validate.md # Standards validation │ └── scripts/ │ └── setup-cli-anything.sh # Setup script │ ├── 🎨 gimp/agent-harness/ # GIMP CLI (107 tests) ├── 🧊 blender/agent-harness/ # Blender CLI (208 tests) ├── ✏️ inkscape/agent-harness/ # Inkscape CLI (202 tests) ├── 🎵 audacity/agent-harness/ # Audacity CLI (161 tests) ├── 📄 libreoffice/agent-harness/ # LibreOffice CLI (158 tests) ├── 📹 obs-studio/agent-harness/ # OBS Studio CLI (153 tests) ├── 🎞️ kdenlive/agent-harness/ # Kdenlive CLI (155 tests) ├── 🎬 shotcut/agent-harness/ # Shotcut CLI (154 tests) └── 📐 drawio/agent-harness/ # Draw.io CLI (138 tests) ``` 每个 `agent-harness/` 都包含一个可安装的 Python 包,位于 `cli_anything./` 下,具有 Click CLI、核心模块、工具(包括 `repl_skin.py` 和后端包装器)以及全面的测试。 ## 🎯 插件命令 | 命令 | 描述 | |---------|-------------| | `/cli-anything ` | 构建完整的 CLI harness — 全部 7 个阶段 | | `/cli-anything:refine [focus]` | 优化现有的 harness — 通过差距分析扩展覆盖范围 | | `/cli-anything:test ` | 运行测试并更新 TEST.md 记录结果 | | `/cli-anything:validate ` | 根据 HARNESS.md 标准进行验证 | ### 示例 ``` # 从本地源码为 GIMP 构建完整 CLI /cli-anything /home/user/gimp # 从 GitHub repo 构建 /cli-anything https://github.com/blender/blender # 优化现有 harness — 广义差距分析 /cli-anything:refine /home/user/gimp # 针对特定焦点领域进行优化 /cli-anything:refine /home/user/shotcut "vid-in-vid and picture-in-picture compositing" # 运行测试并更新 TEST.md /cli-anything:test /home/user/inkscape # 根据 HARNESS.md 标准进行验证 /cli-anything:validate /home/user/audacity ``` ## 🎮 演示:使用生成的 CLI 以下是 Agent 可以使用 `cli-anything-libreoffice` 做的事情: ``` # 创建新的 Writer 文档 $ cli-anything-libreoffice document new -o report.json --type writer ✓ Created Writer document: report.json # 添加内容 $ cli-anything-libreoffice --project report.json writer add-heading -t "Q1 Report" --level 1 ✓ Added heading: "Q1 Report" $ cli-anything-libreoffice --project report.json writer add-table --rows 4 --cols 3 ✓ Added 4×3 table # 通过 LibreOffice headless 导出到真实 PDF $ cli-anything-libreoffice --project report.json export render output.pdf -p pdf --overwrite ✓ Exported: output.pdf (42,831 bytes) via libreoffice-headless # 用于 agent 消费的 JSON 模式 $ cli-anything-libreoffice --json document info --project report.json { "name": "Q1 Report", "type": "writer", "pages": 1, "elements": 2, "modified": true } ``` ### REPL 模式 ``` $ 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 blender[ProductShot]> exit Goodbye! 👋 ``` ## 📖 标准手册:HARNESS.md HARNESS.md 是我们通过自动化 CLI 生成使任何软件可被 Agent 访问的确定性 SOP。 它编码了通过自动化生成流程提炼出的经过验证的模式和方法论。 该手册提炼了成功构建所有 8 个多样化、生产就绪的 harness 的关键见解。 ### 关键经验 | 经验 | 描述 | |--------|-------------| | **使用真实软件** | CLI 必须调用实际应用程序进行渲染。没有用于 GIMP 的 Pillow 替代品,没有用于 Blender 的自定义渲染器。生成有效的项目文件 → 调用真实后端。 | | **渲染鸿沟** | GUI 应用程序在渲染时应用效果。如果您的 CLI 操作项目文件但使用幼稚的导出工具,效果会被静默丢弃。解决方案:原生渲染器 → 滤镜转换 → 渲染脚本。 | | **滤镜转换** | 在格式之间映射效果时(MLT → ffmpeg),注意重复滤镜合并、交错流排序、参数空间差异和不可映射的效果。 | | **时间码精度** | 非整数帧率(29.97fps)会导致累积舍入。使用 `round()` 而非 `int()`,显示使用整数算术,测试中允许 ±1 帧容差。 | | **输出验证** | 永远不要因为退出码为 0 就相信导出成功了。验证:魔术字节、ZIP/OOXML 结构、像素分析、音频 RMS 电平、时长检查。 | ## 📦 安装与使用 ### 对于插件用户(Claude Code) ``` # 添加 marketplace & 安装(推荐) /plugin marketplace add HKUDS/CLI-Anything /plugin install cli-anything # 为任何含 codebase 的软件构建 CLI /cli-anything ``` ### 对于生成的 CLI ``` # 安装任何生成的 CLI cd /agent-harness pip install -e . # 验证 which cli-anything- # 使用 cli-anything- --help cli-anything- # enters REPL cli-anything- --json # JSON output for agents ``` ### 运行测试 ``` # 运行特定 CLI 的测试 cd /agent-harness python3 -m pytest cli_anything//tests/ -v # 强制安装模式(推荐用于验证) CLI_ANYTHING_FORCE_INSTALLED=1 python3 -m pytest cli_anything//tests/ -v -s ``` ## 🤝 贡献 我们欢迎贡献!CLI-Anything 设计为可扩展的: - **新的软件目标** — 使用插件为任何有代码库的软件生成 CLI,然后通过 [`cli-anything-plugin/PUBLISHING.md`](cli-anything-plugin/PUBLISHING.md) 提交您的 harness。 - **方法论改进** — 对 `HARNESS.md` 的 PR,编码新学到的经验 - **插件增强** — 新命令、阶段改进、更好的验证 - **测试覆盖** — 更多 E2E 场景、边缘情况、工作流测试 ### 路线图 - [ ] 支持更多应用类别(CAD, DAW, IDE, EDA, 科学工具) - [ ] 用于 Agent 任务完成率的基准测试套件 - [ ] 社区贡献的 CLI harness,用于内部/自定义软件 - [ ] 与 Claude Code 之外的其他 Agent 框架集成 - [ ] 支持将闭源软件和 Web 服务的 API 打包成 CLI - [ ] 在 CLI 旁边生成 SKILL.md,用于 Agent 技能发现和编排 ## 📖 文档 | 文档 | 描述 | |----------|-------------| | [`cli-anything-plugin/HARNESS.md`](cli-anything-plugin/HARNESS.md) | 方法论 SOP — 唯一事实来源 | | [`cli-anything-plugin/README.md`](cli-anything-plugin/README.md) | 插件文档 — 命令、选项、阶段 | | [`cli-anything-plugin/QUICKSTART.md`](cli-anything-plugin/QUICKSTART.md) | 5 分钟快速入门指南 | | [`cli-anything-plugin/PUBLISHING.md`](cli-anything-plugin/PUBLISHING.md) | 分发和发布指南 | 每个生成的 harness 还包括: - `.md` — 特定于该应用程序的架构 SOP - `tests/TEST.md` — 测试计划和结果文档 ## ⭐ Star 历史 如果 CLI-Anything 帮助您的软件变得 Agent-Native,请给我们一个 Star! ⭐