CLI-Anything 调研报告

notes/research/github/cli-anything-research-20260310.md

Port 8777
path
notes/research/github/cli-anything-research-20260310.md
--- title: CLI-Anything 调研报告 category: research/github source_type: github created_by: xiaomeixia status: archived migrated_from: agent-notes/xiaomeixia/research/github/cli-anything-research-20260310.md tags: [] --- # CLI-Anything 调研报告 **来源**: https://github.com/HKUDS/CLI-Anything **调研时间**: 2026-03-10 **调研人**: 小美虾 🦐 --- ## 📌 一句话总结 **CLI-Anything**: 让任何软件一键变成"Agent 原生"工具 —— 通过自动生成 CLI 接口,让 AI Agent 能够控制真实的专业软件(GIMP、Blender、LibreOffice 等),无需 API、无需 GUI 自动化。 --- ## 🎯 核心价值 > "Today's Software Serves Humans👨‍💻. Tomorrow's Users will be Agents🤖." **核心洞察**: CLI 是 AI Agent 和人类的最佳通用接口: - ✅ **结构化 & 可组合** - 文本命令匹配 LLM 输出格式,可链式调用 - ✅ **轻量 & 通用** - 最小开销,跨所有系统无需依赖 - ✅ **自描述** - `--help` 提供自动文档,Agent 可自主发现 - ✅ **已验证成功** - Claude Code 每天通过 CLI 运行数千真实工作流 - ✅ **Agent 优先设计** - 结构化 JSON 输出消除解析复杂度 - ✅ **确定性 & 可靠** - 一致的结果支持可预测的 Agent 行为 --- ## 🔧 工作原理 ### 7 阶段自动化流水线 ``` /cli-anything <software-path-or-repo> ``` | 阶段 | 名称 | 说明 | |------|------|------| | 1 | 🔍 **Analyze** | 扫描源代码,映射 GUI 动作到 API | | 2 | 📐 **Design** | 设计命令组架构、状态模型、输出格式 | | 3 | 🔨 **Implement** | 构建 Click CLI,包含 REPL、JSON 输出、撤销/重做 | | 4 | 📋 **Plan Tests** | 创建 TEST.md,包含单元测试 + E2E 测试计划 | | 5 | 🧪 **Write Tests** | 实现完整的测试套件 | | 6 | 📝 **Document** | 更新 TEST.md 记录测试结果 | | 7 | 📦 **Publish** | 创建 setup.py,安装到 PATH | ### 输出示例 ```bash # 为 GIMP 生成完整 CLI /cli-anything ./gimp # 安装到 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 ``` --- ## 🎨 已验证的软件 (9 款,1436 个测试 100% 通过) | 软件 | 领域 | CLI 命令 | 后端 | 测试数 | |------|------|----------|------|--------| | 🎨 **GIMP** | 图像编辑 | `cli-anything-gimp` | Pillow + GEGL/Script-Fu | ✅ 107 | | 🧊 **Blender** | 3D 建模渲染 | `cli-anything-blender` | bpy (Python 脚本) | ✅ 208 | | ✏️ **Inkscape** | 矢量图形 | `cli-anything-inkscape` | 直接 SVG/XML 操作 | ✅ 202 | | 🎵 **Audacity** | 音频制作 | `cli-anything-audacity` | Python wave + sox | ✅ 161 | | 📄 **LibreOffice** | 办公套件 | `cli-anything-libreoffice` | ODF 生成 + 无头 LO | ✅ 158 | | 📹 **OBS Studio** | 直播录制 | `cli-anything-obs-studio` | JSON 场景 + obs-websocket | ✅ 153 | | 🎞️ **Kdenlive** | 视频编辑 | `cli-anything-kdenlive` | MLT XML + melt 渲染 | ✅ 155 | | 🎬 **Shotcut** | 视频编辑 | `cli-anything-shotcut` | 直接 MLT XML + melt | ✅ 154 | | 📐 **Draw.io** | 图表绘制 | `cli-anything-drawio` | mxGraph XML + draw.io CLI | ✅ 138 | **测试覆盖**: - 1,011 单元测试 + 425 E2E 测试 - 100% 通过率 - 真实软件后端验证(非模拟) --- ## 💡 解决的痛点 | 当前痛点 | CLI-Anything 方案 | |----------|------------------| | 🤖 "AI 无法使用真实工具" | 直接集成真实软件后端(Blender、LibreOffice、FFmpeg)—— 完整专业能力,零妥协 | | 💸 "UI 自动化频繁崩溃" | 无需截图、无需点击、无需 RPA 脆弱性。纯命令行可靠性 + 结构化接口 | | 📊 "Agent 需要结构化数据" | 内置 `--json` 输出,无缝 Agent 消费 + 人类可读格式调试 | | 🔧 "定制集成成本高" | 一个 Claude 插件通过 7 阶段流水线为任何代码库自动生成 CLI | | ⚡ "原型 vs 生产差距" | 1,436+ 真实软件测试验证。9 款主流应用实战检验 | --- ## 🚀 使用场景 ### 1. 开源项目 Agent 化 任何 GitHub 仓库 → 一键生成 CLI → Agent 可控 - VSCodium, WordPress, Calibre, Zotero, Joplin, Logseq, Penpot... ### 2. AI/ML 平台自动化 - Stable Diffusion WebUI, ComfyUI, InvokeAI, Open WebUI, Fooocus, Kohya_ss... ### 3. 数据与分析 - JupyterLab, Apache Superset, Metabase, DBeaver, KNIME, Orange... ### 4. 开发工具 - Jenkins, Gitea, Portainer, pgAdmin, SonarQube, ArgoCD... ### 5. 创意与媒体 - Blender, GIMP, OBS, Audacity, Krita, Kdenlive, Shotcut, Inkscape... ### 6. 科学计算 - ImageJ, FreeCAD, QGIS, ParaView, Gephi, KiCad, JASP... ### 7. 企业与办公 - NextCloud, GitLab, Grafana, LibreOffice, Odoo, ERPNext... --- ## 📦 安装与使用 ### 作为 Claude Code 插件(推荐) ```bash # 添加 CLI-Anything 市场 /plugin marketplace add HKUDS/CLI-Anything # 安装插件 /plugin install cli-anything # 为任何软件生成 CLI /cli-anything <software-path-or-repo> ``` ### 手动安装 ```bash # 克隆仓库 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 使用示例 ```bash # LibreOffice 示例 cli-anything-libreoffice document new -o report.json --type writer cli-anything-libreoffice --project report.json writer add-heading -t "Q1 Report" --level 1 cli-anything-libreoffice --project report.json export render output.pdf -p pdf # Blender 示例 (REPL 模式) $ cli-anything-blender blender> scene new --name ProductShot blender[ProductShot]> object add-mesh --type cube --location 0 0 1 blender[ProductShot]*> render execute --output render.png --engine CYCLES blender[ProductShot]> exit ``` --- ## 🏗️ 架构设计 ### 核心原则 1. **真实软件集成** - CLI 必须调用真实应用进行渲染,非替代实现 2. **灵活交互模式** - 状态化 REPL(交互式) + 子命令接口(脚本/流水线) 3. **一致用户体验** - 统一 REPL 界面(repl_skin.py),品牌化横幅、样式提示、命令历史 4. **Agent 原生设计** - 每个命令支持 `--json` 标志,结构化数据供机器消费 5. **零妥协依赖** - 真实软件是硬性要求,测试失败(非跳过)当后端缺失 ### 项目结构 ``` cli-anything/ ├── cli-anything-plugin/ # Claude Code 插件 │ ├── HARNESS.md # 方法论 SOP(真相来源) │ ├── README.md │ ├── QUICKSTART.md │ ├── PUBLISHING.md │ ├── repl_skin.py # 统一 REPL 接口 │ ├── commands/ │ │ ├── cli-anything.md │ │ ├── refine.md │ │ ├── test.md │ │ └── validate.md │ └── scripts/ │ └── setup-cli-anything.sh │ ├── gimp/agent-harness/ # GIMP CLI (107 测试) ├── blender/agent-harness/ # Blender CLI (208 测试) ├── inkscape/agent-harness/ # Inkscape CLI (202 测试) ├── audacity/agent-harness/ # Audacity CLI (161 测试) ├── libreoffice/agent-harness/# LibreOffice CLI (158 测试) ├── obs-studio/agent-harness/ # OBS CLI (153 测试) ├── kdenlive/agent-harness/ # Kdenlive CLI (155 测试) ├── shotcut/agent-harness/ # Shotcut CLI (154 测试) └── drawio/agent-harness/ # Draw.io CLI (138 测试) ``` --- ## 📚 关键文档 | 文档 | 说明 | |------|------| | [HARNESS.md](https://github.com/HKUDS/CLI-Anything/blob/main/cli-anything-plugin/HARNESS.md) | 方法论 SOP - 单一真相来源 | | [README.md](https://github.com/HKUDS/CLI-Anything/blob/main/cli-anything-plugin/README.md) | 插件文档 - 命令、选项、阶段 | | [QUICKSTART.md](https://github.com/HKUDS/CLI-Anything/blob/main/cli-anything-plugin/QUICKSTART.md) | 5 分钟入门指南 | | [PUBLISHING.md](https://github.com/HKUDS/CLI-Anything/blob/main/cli-anything-plugin/PUBLISHING.md) | 分发和发布指南 | --- ## 💡 关键经验教训 (来自 HARNESS.md) | 教训 | 说明 | |------|------| | **使用真实软件** | CLI 必须调用真实应用渲染,不能用 Pillow 替代 GIMP | | **渲染差距** | GUI 应用在渲染时应用效果,需用原生渲染器 | | **滤镜翻译** | 格式映射时注意滤镜合并、流排序、参数空间差异 | | **时间码精度** | 非整数帧率 (29.97fps) 导致累积舍入,用 `round()` 非 `int()` | | **输出验证** | 验证魔法字节、ZIP/OOXML 结构、像素分析、音频 RMS 级别 | --- ## 🔗 与 OpenClaw 的关联 ### 潜在集成点 1. **技能生成** - CLI-Anything 可生成 SKILL.md,与 OpenClaw 技能系统对接 2. **服务器管理** - 为服务器上的软件(Xray、Nginx 等)生成 CLI 3. **媒体处理** - 集成 GIMP/Blender/Audacity CLI 到媒体处理流程 4. **文档生成** - 用 LibreOffice CLI 自动生成报告 PDF 5. **自动化流水线** - 将 CLI 集成到 Cron 任务中 ### 建议行动 1. **安装 CLI-Anything 插件** - 在支持的环境中(Claude Code) 2. **为常用工具生成 CLI** - 如 Xray、Nginx、FFmpeg 等 3. **创建 OpenClaw 技能** - 封装生成的 CLI 为技能 4. **集成到现有技能** - 如 `server-health-monitor` 可调用生成的 CLI --- ## 📊 对比分析 | 方案 | CLI-Anything | UI 自动化 (Selenium 等) | 直接 API | |------|--------------|------------------------|----------| | **覆盖率** | ✅ 100% 功能 | ⚠️ 依赖 UI 元素 | ❌ 有限 API | | **稳定性** | ✅ 高(CLI 稳定) | ❌ 低(UI 易变) | ✅ 高 | | **开发成本** | ✅ 自动(1 命令) | ❌ 高(手动脚本) | ⚠️ 中(需 API) | | **Agent 友好** | ✅ 原生设计 | ❌ 需额外解析 | ⚠️ 需适配 | | **JSON 输出** | ✅ 内置 | ❌ 需转换 | ⚠️ 部分支持 | --- ## 🎯 小美虾的建议 ### 立即可用 1. **为 OpenClaw 网关生成 CLI** - 简化配置和管理 2. **为常用服务生成 CLI** - Nginx、Docker、Systemd 等 3. **集成到技能系统** - 将生成的 CLI 封装为技能 ### 中长期 1. **建立 CLI 库** - 收集常用工具的 CLI harness 2. **自动化工作流** - 结合 Cron 实现定时任务 3. **社区贡献** - 发布 OpenClaw 相关的 CLI harness --- ## 🔗 相关链接 - **GitHub**: https://github.com/HKUDS/CLI-Anything - **中文文档**: https://github.com/HKUDS/CLI-Anything/blob/main/README_CN.md - **方法论**: https://github.com/HKUDS/CLI-Anything/blob/main/cli-anything-plugin/HARNESS.md - **快速开始**: https://github.com/HKUDS/CLI-Anything/blob/main/cli-anything-plugin/QUICKSTART.md --- _调研报告由小美虾生成 🦐_