进阶 📋 6 个步骤 第 483 / 484 篇

用 CLI-Anything 把任意软件变成 Agent 可调用的 CLI:7 阶段生成管线与 cli-hub 实操

CLI-Anything 实操:Claude Code 插件安装、一条命令生成 GIMP/LibreOffice harness、--json 与 SKILL.md 双输出、cli-hub 装现成的、refine 增量扩覆盖、交给 Agent 干真活。

2026.09.28· 18 分钟阅读· 约 2314 字· 🧰 CLI-Anything / 🤖 Claude Code

想让 Agent 帮你批量处理图片、渲染 3D 场景、生成报表,可 GIMP、Blender、LibreOffice 这些软件根本没有开放的 API——过去能走的路子基本只剩 GUI 自动化:截图、找控件、模拟点击坐标,慢、脆、软件一升级就全崩。香港大学数据智能实验室(HKUDS)开源的 CLI-Anything 换了个思路:让 coding agent 去读目标软件的源码与接口,自动生成一个带 --help 和 --json 的标准命令行层,Agent 直接调命令干活。项目在 GitHub 上拿了五万颗星,官方称千余项自动化测试覆盖主流应用,全流程五分钟内能从零跑到可用。本篇带你装插件、生成自己的 harness、用 cli-hub 装现成的、再把它交给 Agent 真干活。

🎯 适合人群:装好 Claude Code(或 OpenCode / Codex / OpenClaw 等受支持 agent)、Python 3.10+,且目标软件(如 GIMP、LibreOffice)已在本机安装的开发者。不需要你写一行 CLI 代码。

先理解:为什么 CLI 是 Agent 的母语

GUI 是给人看的:布局靠像素、状态靠颜色、能力靠摸索。CLI 则天然对 Agent 友好——命令是结构化文本,--help 让能力自描述(Agent 运行时自己查文档),--json 让输出可直接解析,命令之间还能串成流水线。CLI-Anything 的生成器把这套优点自动化:它按七阶段管线工作——Analyze(扫源码,把 GUI 操作映射到底层 API)→ Design(设计命令分组、状态模型、输出格式)→ Implement(基于 Click 实现 CLI,带 REPL、JSON 输出、撤销/重做)→ Plan Tests → Write Tests → Document(产出给人看的 HARNESS.md 和给 Agent 看的 SKILL.md)→ Publish(生成 setup.py 装进 PATH)。产物不是玩具封装——它直接调用真实软件后端,LibreOffice 真出 PDF、Blender 真渲染场景。

Windows 用户注意。Claude Code 通过 bash 执行命令,Windows 上需要先装 Git for Windows(自带 bash 与 cygpath)或使用 WSL,否则生成过程会报 cygpath: command not found。这是官方 README 明确列出的环境要求。

Step 1:给 Claude Code 装上插件

1 两条斜杠命令完成安装
# 在 Claude Code 会话里执行:
/plugin marketplace add HKUDS/CLI-Anything
/plugin install cli-anything

安装即用,无需额外配置。如果你不方便走 marketplace,也可以手动安装:克隆 GitHub 仓库,把 cli-anything-plugin 目录复制到 ~/.claude/plugins/cli-anything,再执行 /reload-plugins。除 Claude Code 外,项目还提供 OpenCode、Codex、OpenClaw、Pi、Goose 等平台的安装方式——OpenClaw 用户把官方 SKILL.md 放进技能目录即可,这也意味着你在 clawpk 关心的这条 OpenClaw 生态线上可以直接用上它。

💡 装完先验证:在会话里输入 /cli-anything 能看到命令补全,说明插件已就位。没反应就重开会话再试。

Step 2:一条命令生成 CLI harness

2 指着软件跑七阶段管线
# 对本机已安装的软件目录生成
/cli-anything ./gimp
# 或直接指着 GitHub 仓库(会自动克隆)
/cli-anything https://github.com/blender/blender

# 生成的产物目录结构(以 GIMP 为例):
# gimp-harness/
# ├── gimp_cli.py     ← 主 CLI 实现
# ├── HARNESS.md      ← 给人看的完整用法指南
# ├── SKILL.md        ← 给 Agent 看的能力清单
# ├── TEST.md         ← 测试计划与结果
# ├── tests/          ← 单元测试 + 端到端测试
# └── setup.py        ← 安装配置

回车之后 Agent 会依次走完七个阶段,全程自动:扫描可执行结构、命令行参数、脚本接口与文档,产出「GUI 操作 → 可编程接口」的映射,再设计、实现、补测试、写文档、发布。整个过程约两到五分钟,期间你能看到它逐阶段的进度输出。生成的 SKILL.md 是整套设计里最值钱的文件——它用标准格式描述每个命令的名称、参数与输出格式,任何支持 skills 的 Agent 拿到它就能自动发现并正确调用这套 CLI,零手工配置。

生成消耗真实 token。七阶段全自动意味着大量模型调用,给大型软件生成 harness 的开销可能不小;建议先拿中小型工具练手,熟悉产物质量后再上大项目,期间留意你的 API 账单。

Step 3:装进 PATH,用人机两种方式验证

3 pip install -e 一装,--help 自查能力
cd gimp-harness
pip install -e .            # 装进当前环境,命令上 PATH

# 验证可执行
which cli-anything-gimp     # Windows 用 where

# 人看:自描述帮助
cli-anything-gimp --help

# Agent 用:结构化 JSON 输出
cli-anything-gimp --json layer add -n "Background" --type solid --color "#1a1a2e"

# 状态化工作流:--project 串起多步操作
cli-anything-gimp --project poster.json layer add -n "Logo" --type group
cli-anything-gimp --project poster.json export render output.png --format png

预期效果:--help 列出完整的命令分组与参数说明;加 --json 后任何命令都返回结构化结果,人和 Agent 各取所需。所有生成的 CLI 共享同一套接口习惯(--help / --json / --project / REPL 交互模式),学会一个就等于学会了全部——今天生成 GIMP 的 harness,明天生成 LibreOffice 的,操作肌肉记忆完全一致。

💡 官方给出的对照示例值得跑一遍找感觉:LibreOffice 生成真实 PDF、Blender 渲染真实场景。跑通一个你熟悉的软件,对着它的真实功能核对 CLI 覆盖度,比看任何文档都快。

Step 4:不想自己生成?cli-hub 直接装现成的

4 社区共享库,一条命令安装
pip install cli-anything-hub

cli-hub list               # 浏览社区已贡献的 harness
cli-hub search "3d"        # 按关键词搜索
cli-hub install gimp       # 装现成的 GIMP harness
cli-hub install blender
cli-hub install libreoffice
cli-hub update --all       # 全部更新

热门软件不需要你跑七阶段管线——社区已经把 harness 建好放进 CLI-Hub 共享库,cli-hub install 一条命令拿走。先查 hub 再自己生成,能省下整笔生成开销;hub 里没有的软件(尤其是你们公司内部的系统),再走 Step 2 自建。这个「先共享后自建」的顺序也符合项目的定位:它想做的就是把「软件 → Agent 可调用」这件事变成公共基础设施,而不是每家各造一遍轮子。

💡 装完记得 cli-anything-list(或对应平台的列表命令)盘点本机已有 harness,避免重复生成。

Step 5:refine 迭代,补齐能力缺口

5 增量扩覆盖,多轮逼近完整
# 大范围查缺:对照软件全部能力做差距分析
/cli-anything:refine ./gimp

# 定向扩容:只补某个能力域
/cli-anything:refine ./gimp "I want more CLIs on image batch processing and filters"

首版 harness 不会覆盖软件的全部能力——这正常。refine 命令做的是「软件完整能力 vs 当前 CLI 覆盖度」的差距分析,然后补实现、补测试、补文档。它可以反复跑,每轮增量且非破坏:已有命令不动,只往上加。实践节奏是「用起来 → 发现缺什么 → 带着具体描述 refine」——定向 refine 时把需求写具体(比如「批量加水印并处理 EXIF」),产物质量明显好于泛泛的一句「多加些命令」。

能力上限取决于软件自己暴露的接口面。CLI-Anything 生成的是「软件已有能力的命令行投影」,不是魔法——源码里没有的功能它变不出来。闭源且无脚本接口的软件(纯黑盒 GUI 程序)不在它的适用范围,那种场景仍然要回到 GUI 自动化或找官方 API。

Step 6:交给 Agent 真干活

6 自然语言下任务,Agent 调命令交付
# 在 Claude Code / OpenClaw 会话里直接下任务:
# "把 ./raw 目录下所有图片缩到 800 宽、转成 jpg,
#  存到 ./processed,用刚才生成的 GIMP CLI 做。"

# Agent 内部做的事(你能在轨迹里看到):
cli-anything-gimp --help                        # 自查能力
cli-anything-gimp --json batch process \
  --input-dir ./raw --output-dir ./processed \
  --operations "resize,convert"                 # 执行批处理

验收环节:拿一个真实的小任务交给 Agent,观察它是否先 --help 摸清命令、再用 --json 拿到结构化结果、最后正确交付产物。如果 Agent 调用姿势不对(参数乱传、命令选错),回 Step 5 用 refine 把对应能力域的命令和文档补扎实——SKILL.md 写得越清楚,Agent 用得越准。这一步跑顺了,你就拥有了一条「自然语言进、文件产物出」的自动化流水线,而整条线上没有一个脆弱的坐标点击。

💡 生产化三件套:把 harness 目录纳入版本控制;跑 TEST.md 里的测试套件确认绿;目标软件大版本升级后重跑 validate 与 refine,别让 harness 停留在旧版本的假设上。

常见问题速查

你遇到的现象大概率原因 & 解决
生成时报 cygpath: command not foundWindows 缺 bash 环境。装 Git for Windows 或改用 WSL
/cli-anything 命令无补全插件未装好。重跑 marketplace 两连,或走手动安装 + /reload-plugins
生成的命令与软件实际行为不符软件版本差异。带软件实际版本重跑 refine,或核对目标软件的脚本接口文档
想装的软件 hub 里没有走 Step 2 自建;闭源无接口的软件不适用本项目
Agent 调用命令频繁出错SKILL.md 描述不清晰。定向 refine 对应能力域,写具体需求
生成太慢/太贵七阶段管线的正常成本。改用 cli-hub 现成 harness,或换小型软件练手
← 返回教程中心