一个能够为任意软件自动生成 Agent 可控 CLI 接口的 Claude Code 插件,通过七阶段流水线将 GUI 应用转化为结构化命令行工具,解决了 AI Agent 无法直接操作专业软件的难题。
CLI-Anything: Making ALL Software Agent-Native
今天的软件服务于人类👨💻。明天的用户将是智能体🤖。
CLI-Anything:弥合 AI Agent 与世界软件之间的鸿沟
**一条命令行**:让任何软件为 OpenClaw、nanobot、Cursor、Claude Code 等做好 Agent 准备。 [**中文文档**](README_CN.md)
## 🤔 为什么选择 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 的架构
### 🎯 核心设计原则
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! ⭐