想让 Agent 帮你批量处理图片、渲染 3D 场景、生成报表,可 GIMP、Blender、LibreOffice 这些软件根本没有开放的 API——过去能走的路子基本只剩 GUI 自动化:截图、找控件、模拟点击坐标,慢、脆、软件一升级就全崩。香港大学数据智能实验室(HKUDS)开源的 CLI-Anything 换了个思路:让 coding agent 去读目标软件的源码与接口,自动生成一个带 --help 和 --json 的标准命令行层,Agent 直接调命令干活。项目在 GitHub 上拿了五万颗星,官方称千余项自动化测试覆盖主流应用,全流程五分钟内能从零跑到可用。本篇带你装插件、生成自己的 harness、用 cli-hub 装现成的、再把它交给 Agent 真干活。
先理解:为什么 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 装上插件
# 在 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
# 对本机已安装的软件目录生成
/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,用人机两种方式验证
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 的,操作肌肉记忆完全一致。
Step 4:不想自己生成?cli-hub 直接装现成的
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 迭代,补齐能力缺口
# 大范围查缺:对照软件全部能力做差距分析
/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 真干活
# 在 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 用得越准。这一步跑顺了,你就拥有了一条「自然语言进、文件产物出」的自动化流水线,而整条线上没有一个脆弱的坐标点击。
validate 与 refine,别让 harness 停留在旧版本的假设上。常见问题速查
| 你遇到的现象 | 大概率原因 & 解决 |
|---|---|
| 生成时报 cygpath: command not found | Windows 缺 bash 环境。装 Git for Windows 或改用 WSL |
| /cli-anything 命令无补全 | 插件未装好。重跑 marketplace 两连,或走手动安装 + /reload-plugins |
| 生成的命令与软件实际行为不符 | 软件版本差异。带软件实际版本重跑 refine,或核对目标软件的脚本接口文档 |
| 想装的软件 hub 里没有 | 走 Step 2 自建;闭源无接口的软件不适用本项目 |
| Agent 调用命令频繁出错 | SKILL.md 描述不清晰。定向 refine 对应能力域,写具体需求 |
| 生成太慢/太贵 | 七阶段管线的正常成本。改用 cli-hub 现成 harness,或换小型软件练手 |