--- title: "CLI-Anything 中文实测:7阶段流水线 + 真实 Demo(Blender/FreeCAD/Draw.io)" source_url: "https://mp.weixin.qq.com/s/LfT4HFtNIjdOsx5RnJ8mJQ" source: "wechat" author: "极客之家" ingested: "2026-05-22" sha256: "afea261deee940d4fc4417a6aac9202e379ca4be997cd189b16d513c3a040ccc" tags: [agent, tool, cli, python, hkuds] --- 我最近在用 Claude Code 做一个自动化处理的项目,中间需要调 Blender 渲染一批 3D 图。写到这里的时候我卡住了——Claude Code 根本没法直接操作 Blender,Blender 有自己的 Python API,有图形界面,但你让 Agent 通过这套东西干活,基本就是在对着空气说话。这其实不是 Blender 的问题,几乎所有有点分量的专业软件都是这样。这些软件是给人用的,交互逻辑是鼠标+键盘+眼睛,Agent 进来了就傻眼。当时我能想到的解法要么是写一大堆胶水代码,要么就是用那种基于截图的 GUI 自动化,但那玩意一换个系统主题就跌了,脆得很。后来我翻到了 CLI-Anything 这个项目,是香港大学数据科学实验室(HKUDS)做的,GitHub 地址在这:https://github.com/HKUDS/CLI-Anything 它在解决什么问题 现在的 AI Agent——不管是 Claude Code 还是 Codex,本质上是文本进文本出的东西。它能写代码、调 API、查文档,但遇到 Blender、GIMP、LibreOffice 这种带 GUI 的专业软件,就只能绕道走。要么手写一个薄薄的 wrapper,要么靠截图点击这种 RPA 玩法,但这两条路都有硬伤:wrapper 写得越深工作量越大,RPA 跑起来看心情。 CLI-Anything 的思路是:给任意一款软件自动生成一套结构化的 CLI 接口,让 Agent 直接用命令行调软件,输入命令,拿回 JSON 结果。没有截图,没有点击,没有 fragile 的 GUI 操控,就是纯粹的命令行交互。 其实很好理解:CLI 本来就是人和程序之间的接口,格式清晰,可组合,天然适合 LLM 读写。 工作原理 核心就是一条命令: /cli-anything ./gimp 把软件路径(或 GitHub 仓库地址)丢进去,它会跑一条 7 阶段的全自动流水线: 1. 🔍 Analyze — 扫描源码,把 GUI 操作映射到底层 API 2. 📐 Design — 设计命令分组、状态模型、输出格式 3. 🔨 Implement — 用 Click 框架实现 CLI,带 REPL 模式、JSON 输出、undo/redo 4. 📋 Plan Tests — 生成 TEST.md,规划单元测试和端到端测试 5. 🧪 Write Tests — 跑测试,覆盖真实软件调用 6. 📝 Document — 更新测试结果文档 7. 📦 Publish — 生成 setup.py,装进 PATH 跑完之后你就有了一个可以直接 pip install 的 CLI 包,名字统一叫 cli-anything-<软件名>,比如 cli-anything-gimp、cli-anything-blender。所有生成的包都在 cli_anything.* 命名空间下,不会互相打架。 生成的 CLI 还自带 REPL 模式,可以保持会话状态,支持 undo/redo,这对 Agent 的长流程任务很友好——不用每次调用都重新初始化软件上下文。 SKILL.md 的作用 每个生成的 CLI 都会附带一个 SKILL.md 文件,放在 skills/cli-anything-<软件名>/SKILL.md。这个文件的格式是专门给 Agent 读的——YAML 头部写名称和描述,正文列所有命令组和子命令,加上用法示例和 JSON 输出说明。Agent 读完这个文件就知道这个工具能干什么、怎么调、输出是什么格式。 结合 CLI-Hub 的元技能,Agent 甚至可以自己去注册表里找合适的 CLI、装好、读 SKILL.md、然后开始干活——全程不需要人介入。 # 让 Agent 自主完成任务 "Find appropriate CLI software in CLI-Hub and complete the task: " CLI-Hub 单靠一个项目自己维护所有软件的 CLI 肯定撑不住,所以他们做了一个 CLI-Hub,相当于一个社区驱动的 CLI 注册表。 pip install cli-anything-hub cli-hub install 目前 Hub 上的 CLI 覆盖范围已经挺广了。创意类的有 Blender、GIMP、Krita、Inkscape、Shotcut、Kdenlive、Audacity、OBS Studio;科学计算方向有 FreeCAD、QGIS、RenderDoc、UniMol Tools;开发工具有 Obsidian、Zotero、n8n、WireMock、Exa;游戏有 Godot Engine 和 Slay the Spire II;办公协作有 LibreOffice、Zoom、Jitsi Meet;AI/ML 那边有 Stable Diffusion WebUI、ComfyUI、Ollama。 注册表是实时更新的,社区提交 PR 合并后立刻生效。截至我写这篇文章的时候,几乎每天都有新的 CLI 并入,Rekordbox、Calibre、MiniMax 这些都是最近一两天刚合并的。 另外,Hub 还有一个"元技能"(meta-skill)——Agent 可以直接读 Hub 的目录,自主选择安装哪个 CLI,不需要人工指定。 真实 Demo 光说能用不够服气,项目里有几个真实的 Demo 值得看一眼。 Blender:3D 无人机 Agent 用 cli-anything-blender 一步一步搭了一个轨道中继无人机的 3D 模型,每一步都能看到实时预览,命令和对应的视觉状态全部记录进了 trajectory.json,可以回放。 FreeCAD:好奇号月球车 用 cli-anything-freecad 搭了一个好奇号风格的月球车模型,同样带实时预览和轨迹记录。FreeCAD 是个比较硬核的 CAD 工具,能跑通这个流程说明 CLI 覆盖的功能深度不低。 Draw.io:HTTPS 握手流程图 Agent 从零开始画了一张完整的 HTTPS 连接生命周期图——TCP 三次握手、TLS 协商、加密数据交换、四次挥手——全部通过 CLI 命令完成,最终产出 .drawio 和 .png 两个文件。 平台支持 目前已经支持的 AI 编程工具: Claude Code/plugin marketplace add HKUDS/CLI-Anything — 官方支持 Pi Coding Agent — bash 脚本安装扩展,官方支持 OpenCode — 复制命令文件到配置目录,官方支持 OpenClaw — 复制 SKILL.md 到技能目录,社区支持 Codex — bash 安装脚本,社区支持(实验性) GitHub Copilot CLI — copilot plugin install,社区支持 Qodercli — 注册脚本,社区支持 Claude Code 的接入最简单,三步搞定: # 第一步:添加插件市场 /plugin marketplace add HKUDS/CLI-Anything # 第二步:安装插件 /plugin install cli-anything # 第三步:生成 CLI /cli-anything ./目标软件路径 Cursor 和 Windsurf 的支持据说也在路上。 写在最后 能让 Claude Code、Codex 这类工具直接驱动 Blender、FreeCAD、GIMP 这种专业软件,思路上确实打在了痛点上。这几个 Demo 也不是玩具级别的——月球车、3D 无人机、完整流程图,东西是真的产出来了。 当然有几点还值得观察:生成 CLI 的质量依赖于源码分析的深度,如果软件的 Python API 封装得乱七八糟,生成出来的 CLI 覆盖率可能没那么理想。另外,社区贡献的 CLI 质量良莠不齐,Hub 现在靠 CI 做基础验证,但能不能挡住差的东西,得看以后的维护力度。 不过有一点我比较认可:项目每天都在合并 PR,这个更新频率在开源项目里不多见。社区也在持续贡献,最近合并的 Rekordbox、Calibre、MiniMax 这些,都是真实使用场景里会用到的工具。 对正在用 Claude Code 或者 Codex 做自动化的同学,这个项目值得试一下。特别是你的工作流里有某款有界面但没开放 API 的工具——扔进去跑一圈,没准直接就通了。 项目地址:https://github.com/HKUDS/CLI-Anything CLI-Hub:https://clianything.cc/ 安装 Hub:pip install cli-anything-hub