📍 词元二号站 开源解码 让 Agent 操控任意软件:CLI-Anything 原理拆解、上手指南与真实边界

让 Agent 操控任意软件:CLI-Anything 原理拆解、上手指南与真实边界

摘要:一篇讲透 CLI-Anything 的原创长文:它如何读取源码为任意软件自动生成 CLI,让 AI Agent 抛开模拟点击、直接用命令行操控 GIMP、Blender、LibreOffice 等软件。含七阶段原理、Claude Code 上手三步、能力地图与真实边界。
字号 100%
行距 2.05
当前可见 60% 的内容
本文由 辛梓煜@词元2号站(www.ciyuanerhao.com)撰写,转载请注明出处。

快速摘要

如果你只想要一句话结论:CLI-Anything 是香港大学数据科学实验室(HKUDS)开源的一个项目,它做的事情是——读取某个软件的源代码,自动为它生成一整套命令行接口(CLI),从而让 AI Agent 不用截图点鼠标,就能像调用程序一样调用那些原本只有图形界面的软件。它已经在 GIMP、Blender、LibreOffice、OBS、Kdenlive 等二十来款专业软件上实测,官方公布的测试用例累计接近两千项、全部通过。它的价值不在于"炫技",而在于补上了 Agent 生态里长期缺失的一块拼图:过去 Agent 的能力上限,很大程度取决于第三方软件愿不愿意为它开放接口;有了这套方法,主动权第一次回到了使用者手里。

需要说清楚的是:它生成的 CLI 并非软件官方原生接口,覆盖度和稳定性会有波动,也重度依赖强力的基础模型和可获取的源码。这几点后面会展开。

想看完整拆解——从底层原理、七阶段流水线,到怎么在 Claude Code 里三步装好、怎么让它越用越全,再到它到底能碰哪些软件、又有哪些坑——往下翻


一、先把问题讲透:Agent 想用你电脑里的软件,到底卡在哪

我自己折腾各种 Agent 工具的时候,最先撞上的墙不是"模型不够聪明",而是"模型够聪明,但它够不着东西"。你让它帮你剪个视频、抠张图、导出一份 PDF,它脑子里门儿清该怎么做,可它的手伸不进你的剪辑软件、图像软件、办公软件里。这种感觉很像请了个经验丰富的老师傅,本事一身,却发现车间的工具柜全锁着,他只能干瞪眼。

这几年大家的注意力大多扑在"模型多强"上——参数多大、推理多深、能不能一步到位。可真到落地干活,卡住整个链条的往往不是模型的脑子,而是它的手能不能碰到东西。一个 Agent 再会思考,够不着软件,也只是纸上谈兵。所以"怎么让 Agent 接上真实软件",是绕不开的一道坎。

我举个特别具体的场景你就懂了。假设我想让 Agent 帮我做一件小事:把一段屏幕录像剪成三秒的动图,再存到桌面。这活儿对人来说不过是打开录制软件、框选区域、点录制、点停止、点导出,前后半分钟。可对 Agent 来说,这中间的每一步——找到软件图标、认出"录制"按钮在哪、判断有没有录完、找到"另存为"、填对文件名——都是一道坎。它脑子里知道流程,手上却步步维艰。

问题的本质是:软件和 Agent 之间,缺一个双方都能听懂的"接口"。人和软件之间的接口是图形界面,它是为人的眼睛和手优化的;可这套东西对 Agent 极不友好。于是要让 Agent 真正动起来,把它和一个具体软件"接上线",业内基本就两条路。

1.1 第一条路:模拟点击(GUI 自动化)

这条路的思路很直白:让 Agent 学人类的样子操作。它先"看"一眼屏幕截图,识别出按钮、菜单、输入框的位置,然后控制鼠标去点、去拖、去填。

听上去很美——只要是人能点的,理论上它都能点。但真上手你就会发现问题一堆:

  • 。截图、识别、定位、点击,一轮下来好几秒,做几十步操作能等到你怀疑人生。
  • 依赖视觉能力。模型得能"看懂"界面,这对模型要求高,也更烧算力。
  • 。软件更新一次布局、换一版皮肤、弹个意料之外的窗口,之前调好的流程可能当场崩掉。
  • 遇到小众软件抓瞎。界面越非主流、越不规整,识别越容易翻车。

在实际工程里,GUI 自动化(也就是常说的 RPA 那一类,RPA 即"机器人流程自动化",本质是让程序模拟人操作界面)是"能用,但用起来提心吊胆"的方案。它最大的问题是"不确定"——同一套流程,今天跑得好好的,明天软件弹了个更新提示,或者你换了台分辨率不同的显示器,识别就可能错位,整条链子当场断掉。对追求稳定的自动化来说,这种"看运气"的特性是致命的。

1.2 第二条路:命令行(CLI)

第二条路是绕开界面,直接从底层"喊话"软件。命令行接口(CLI,Command-Line Interface,简单说就是用打字敲命令的方式来指挥程序)把上面几个毛病基本都能治:不用截图不用识别,速度快、结果稳、还能在后台悄悄跑,不打扰你在前台干别的。

CLI 几乎是业内公认最适合 Agent 的操控方式。原因也不玄乎,我把它拆成几点摆出来:

维度

模拟点击(GUI 自动化)

命令行(CLI)

速度

慢,逐帧识别

快,几乎零开销

稳定性

界面一变就崩

输出稳定、可预测

对模型的要求

需要视觉能力

纯文本即可

是否打扰前台

会占用屏幕和鼠标

可后台静默运行

Agent 友好度

要额外解析画面

结构化文本,天然对味

这里多解释一句为什么 CLI 对大语言模型(LLM)特别友好。LLM 本质上是在"读文本、写文本",而命令行的输入输出恰好也是纯文本,两者是同一种语言。把这层"合拍"拆细了看,CLI 有六个特质特别对 Agent 的胃口:

  • 结构化、可组合:文本命令天然匹配模型的输入格式,一条能接一条,自由串成复杂流程。
  • 轻量且通用:几乎零额外开销,跨平台就能跑,不挑环境。
  • 自描述:一个 --help 就能让 Agent 自动发现这个工具的全部功能,等于自带说明书。
  • 久经验证:命令行不是新东西,像 Claude Code 这类工具每天就是靠 CLI 执行海量真实任务,路子早被走通了。
  • Agent 友好:结构化的 JSON 输出,Agent 拿到就能用,不用再费劲去解析。
  • 确定且可靠:同样的命令给同样的结果,行为可预测,不会像识别界面那样时灵时不灵。

这几点里,我最看重"自描述"和"确定性"。自描述意味着 Agent 面对一个陌生工具时能自己摸清它会什么,不用你手把手教;确定性意味着它每次执行都稳,不会今天点得中、明天点偏了。这两样恰恰是图形界面最给不了的——界面是给人的直觉看的,不是给机器的确定性用的。

1.3 但 CLI 有个硬伤:得软件自己愿意支持

问题来了。CLI 虽好,可它不是白来的——需要软件官方主动开发并对外提供命令。

Agent 火起来之后,不少互联网公司确实开始给自家产品补 CLI 或开放接口,让 Agent 能直接读写它们的文档、表格。可放眼望去,愿意这么做的仍是极少数。我们日常在用的绝大多数软件,尤其是那些经典的单机老工具,压根没有 CLI 这回事。

而且很多软件也有它的难处:本身就是免费开源项目,团队维持日常开发都够呛,让它专门抽人力去做一套 Agent 用的 CLI,实在有心无力。这不是不想做,是没余力做。结果就是一个尴尬的局面——一边是能力越来越强、嗷嗷待哺想干活的 Agent,一边是一大批没接口、进不去的软件,中间隔着一道谁都懒得填的鸿沟。填这道鸿沟,靠软件厂商一个个主动来做,等到猴年马月都不一定齐。

于是就有人开始琢磨:能不能在官方没动手的情况下,让任意软件都"凭空长出"一套 CLI? CLI-Anything 就是冲着这个问题去的。


二、CLI-Anything 是什么:给"没有 CLI 的软件"补一套 CLI

2.1 一句话定义

就像它名字直白说的——CLI-Anything,给任何东西配 CLI。它是一个能读取软件源代码、并据此自动生成一整套配套命令行接口的项目。跑通之后,你的 Agent 就能通过这套新命令去操控那款软件了。

换个角度理解:过去要给一个软件做 CLI,是"人读代码、人写命令、人写测试",慢且贵;CLI-Anything 把这套活儿交给了 AI,让 AI 读代码、AI 设计命令、AI 写测试。它相当于一个专门"给软件配 Agent 接口"的自动化流水线。你要做的,只是把软件(或它的仓库地址)指给它,剩下的它包圆。这也是它敢叫"Anything"的原因——它不是为某个特定软件量身定做,而是提供了一套通用方法,理论上对任何有代码的软件都适用。

项目地址在 GitHub 上:github.com/HKUDS/CLI-Anything,采用 Apache 2.0 开源许可,可以自由使用、修改和分发。

2.2 它从哪儿来

CLI-Anything 出自香港大学数据科学实验室(HKUDS)。团队还配了一份技术报告,标题叫《CLI-Anything: Towards Agent-Native Computer Use》(面向 Agent 原生的计算机操作),挂在 arXiv 上(编号 2606.03854),作者是 Yuhao Yang、Tianyu Fan、Chao Huang。

"Agent 原生"(Agent-Native)这个说法值得留意。它背后的判断是:今天的软件是为"人"设计的——菜单、图标、拖拽,全都围着人类的眼睛和手转;而明天的重度用户会是 Agent。既然如此,软件就该有一层专门给 Agent 用的接口。CLI-Anything 想做的,正是这层桥。

这个判断我是认同的。过去几十年,软件的交互一直在往"更符合人类直觉"的方向进化——从命令行到图形界面,从鼠标到触屏,核心都是让人用起来更顺手。可当越来越多的操作要交给 Agent 去执行时,这套为人优化的界面反而成了障碍。它就像给一个不用眼睛的用户配了一堆精美图标——好看,但用不上。CLI-Anything 相当于承认了这个现实:与其逼 Agent 去"看"人类的界面,不如给它另开一扇门,一扇纯文本、结构化、它天生就懂的门。这个思路对不对,很大程度上决定了它值不值得关注。而项目从开源到现在,GitHub 上聚集的关注度(星标已达数万量级)也侧面说明,认同这个方向的人不在少数。

2.3 核心思路:读代码 → 生成 CLI

它的底层逻辑其实一点不复杂,我用一行伪代码概括一下:

输入:软件的源代码(本地路径 或 GitHub 仓库地址)
  ↓ 分析代码,把界面里的每一个功能映射成一条命令
  ↓ 设计命令的分组、参数、输出格式
  ↓ 写代码把这套 CLI 真正实现出来
  ↓ 配上完整测试,验证每条命令都能跑通
输出:一套可安装、可被 Agent 调用的命令行工具

注意,它不是拿 Python 随便糊一个"假装能用"的替身,而是让生成出来的 CLI 去驱动真实的软件后端。这一点是它和很多"玩具级"方案的分水岭,后面第三节会专门讲。

这里顺带说说它想成就的那个更大的图景。官方把愿景概括成三点:无门槛接入——任何软件都能通过结构化 CLI 即刻被 Agent 操控;无缝集成——不需要专门的 API、不需要操控 GUI、不需要重构代码、也不需要复杂的适配层;面向未来——一条命令,就把为人类设计的软件变成 Agent 的原生工具。说白了,它赌的是一件事:软件不该因为"没人来接 Agent"就被挡在自动化时代之外,而这道接入的门槛,本就不该那么高。

2.4 它和 MCP、和"官方 CLI"是什么关系

聊到这儿,估计有朋友会想起 MCP。MCP(Model Context Protocol,模型上下文协议)是这两年很火的一套标准,用来把外部工具、数据源统一接给 Agent。既然有 MCP,为什么还要 CLI-Anything?

其实它们解决的不是同一层问题。MCP 更像"插座标准"——它规定了工具怎么把自己暴露给 Agent,但前提是那个工具得先有一套能对外提供的能力(一套 API、一套服务)。可现实是,你桌面上那些老牌单机软件,压根没有对外的服务,连"插头"都没有,谈何插座。CLI-Anything 干的恰恰是更靠前的一步:先给这些没接口的软件造出一套接口来。造好之后,它以标准命令行的形式存在,任何能调命令行的 Agent、乃至将来包一层 MCP,都能用得上。

再和"官方 CLI"摆一起看,三者的定位是这样的:

方案

谁来做

覆盖度

适用前提

官方原生 CLI

软件厂商

高、稳定

厂商愿意且有人力去做

MCP 接入

工具方 / 社区

取决于底层能力

工具已有可暴露的 API/服务

CLI-Anything

你自己 / 社区

自动生成,需迭代补全

软件有可获取的源码

一句话:CLI-Anything 填的是"厂商不做、又没有现成 API"的那片空白。它不跟 MCP 抢地盘,反而是给 MCP 之类的上层协议铺了一层"底料"——先把软件变得可被命令行驱动,上层怎么包装都好说。想明白这层关系很重要,不然容易把它们当成互相替代的竞品,其实它们是上下游、能叠着用的关系:CLI-Anything 负责"把没接口的软件变得有接口",MCP 负责"把有接口的能力标准化地递给 Agent",各司其职。


三、它是怎么工作的:七个阶段的全自动流水线

我把官方文档翻了一遍,CLI-Anything 生成一套 CLI 的过程,被拆成了七个自动执行的阶段。你只要丢给它一个软件路径,剩下的它一条龙走完。用一张流程图看最直观:

flowchart TD
    A[输入软件源码 / 仓库地址] --> B[1. 分析<br/>扫描源码, 把 GUI 操作映射到底层 API]
    B --> C[2. 设计<br/>规划命令分组, 状态模型, 输出格式]
    C --> D[3. 实现<br/>构建 CLI, 含 REPL, JSON 输出, 撤销重做]
    D --> E[4. 规划测试<br/>生成测试计划, 覆盖单元与端到端]
    E --> F[5. 编写测试<br/>实现完整测试套件]
    F --> G[6. 文档<br/>写入测试结果, 生成技能说明]
    G --> H[7. 发布<br/>生成安装脚本, 装到系统 PATH]
    H --> I[一套可被 Agent 调用的 CLI]

逐个阶段拆开说:

3.1 分析(Analyze)

先把软件的源代码扒一遍,搞清楚它的架构和数据模型,把界面上"点这里能干嘛"逐一对应到底层的函数或 API 上。这步是地基,决定了后面生成的命令能覆盖多少功能。

打个比方,这就像一个新来的工程师接手一套陌生代码:他得先读懂这软件内部是怎么组织的——项目文件长什么样、有哪些核心对象、每个界面操作背后到底调了哪个函数。只有把这层"内部地图"画清楚,后面生成的命令才不会是空中楼阁。软件越复杂、代码越庞大,这一步越吃模型的理解力,这也是它对基础模型要求高的原因之一。

3.2 设计(Design)

有了功能清单,接着规划命令怎么分组、每条命令带哪些参数、输出成什么格式。好的设计会让一堆零散能力被收拢成逻辑清晰的几组命令,而不是一锅乱炖。

这一步还要定一个很关键的东西:状态模型。很多软件的操作是有上下文的——你得先有个"项目",才能往里加图层、加轨道、加元素。CLI 得把这种状态管起来,让 Agent 敲第二条命令时,工具还记得第一条命令干了啥。设计得好不好,直接决定这套 CLI 用起来顺不顺。

3.3 实现(Implement)

真正动手写代码,把 CLI 造出来。生成的工具默认就带三样东西:交互式 REPL(一个可以像聊天一样一条条敲命令的会话环境)、JSON 结构化输出、以及撤销/重做能力。

撤销/重做这点尤其体贴 Agent。Agent 干活难免试错,走错一步能一键回退,就不至于把整个项目搞乱、从头再来。这相当于给它的每一步操作都上了个"后悔药"。

3.4 规划测试 & 3.5 编写测试

这是我觉得它比一般"生成工具"讲究的地方——它不是生成完就撒手,而是先制定一份测试计划,再把完整的测试套件写出来。测试分好几层:拿合成数据验证单个函数的单元测试、生成真实项目文件跑通全流程的端到端测试,还有把装好的命令当子进程真跑一遍的验证。

为什么这么费劲?因为"自动生成的代码"最不让人放心的就是"看着能跑、实际不对"。一套没有测试兜底的 CLI,你根本不敢让 Agent 拿去批量干活——万一某条命令悄悄出错,产物全废了都没人知道。而有了这几层测试,每条命令是不是真管用,是有据可查的。这也是它敢公布"全部测试 100% 通过"这个数字的前提——不是没测出问题,而是把测出来的问题都在生成阶段解决掉了。

3.6 文档

把测试结果写进文档,同时生成一份给 AI 读的"技能说明"文件(也就是那种 SKILL.md),让 Agent 之后能快速看懂这套 CLI 怎么用。这一步很容易被忽视,但其实很关键:Agent 面对一套陌生 CLI 时,靠的就是这份说明和 --help 来快速上手。文档写得清不清楚,直接影响 Agent 用得顺不顺。每个生成的 CLI 还会附一份该软件的架构说明和一份测试计划文档,方便你后续维护。

3.7 发布

生成安装脚本,把工具装进系统 PATH。装好之后 Agent 用一句标准的 which 命令就能发现它,不需要任何额外配置。这个"零配置发现"的设计很巧妙——Agent 不用你告诉它工具装在哪、叫什么,它自己用系统命令一查就知道有哪些 cli-anything-* 工具可用、每个能干嘛。整套流程走完,一个原本只有图形界面的软件,就彻底变成了 Agent 能自主发现、自主调用的工具。

3.8 一个关键设计:调"真软件",不造"假替身"

单独把这条拎出来强调,因为它是 CLI-Anything 敢说"零妥协"的底气。

举个例子。假如要给一个图像软件做 CLI,偷懒的做法是:用 Python 的图像库随便实现几个滤镜,假装这就是那个软件的能力。问题是,很多软件的特效是在"渲染"那一刻才真正生效的,你用简陋的导出工具糊过去,特效会被悄无声息地丢掉,最后产物根本不对。

CLI-Anything 的原则是:CLI 只负责生成合法的项目文件,真正的渲染交回给真实软件去做。LibreOffice 导 PDF 就真调 LibreOffice,Blender 渲 3D 场景就真调 Blender,音频处理就真走对应的音频后端。官方甚至把这条写成硬规矩——如果真实后端不在,测试直接判失败,而不是"跳过"糊弄过去。这样才能保证生成的能力是真的,不是纸糊的。

我特别欣赏这个"当接口、不当替身"的定位。市面上不少号称能让 AI 操作软件的方案,实际是把软件的一小撮功能用别的库重新实现了一遍,结果就是"支持是支持了,但只剩皮毛"——真正专业、复杂的能力全丢了。CLI-Anything 反其道而行:它不试图取代软件,只给软件加一层"翻译"。你要的还是那个完整的、专业的软件,只不过多了一个 Agent 能听懂的说话方式。这就是它敢喊"零妥协、功能一个不少"的底气所在。生成的项目文件必须是软件能认的合法格式(比如办公文档的 ODF、视频工程的 MLT XML、矢量图的 SVG),然后原封不动交给软件本体去出片。中间不偷工、不减料。


四、生成出来的 CLI 长什么样:REPL、--json、子命令

原理讲完,来看成品。这里有个很省心的地方:不管你给哪个软件生成 CLI,用法是统一的三种姿势——学会一个,其余的都会用。这种一致性不是巧合,而是设计使然:所有生成的 CLI 都共用同一套交互界面(内部叫 ReplSkin),带统一的横幅、提示符风格、命令历史和输出格式。于是你在 GIMP 的 CLI 里养成的操作习惯,切到 Blender、LibreOffice 的 CLI 也照样管用,不用重新适应。下面就是那三种姿势。

4.1 三种用法

  • 子命令模式:像普通命令行工具一样,一条命令干一件事,适合写脚本、串流水线。
  • REPL 交互模式:直接运行工具名(不带任何参数)就进入一个交互会话,可以一条条敲命令、保留上下文状态,适合 Agent 边想边做。
  • JSON 输出模式:加个 --json,输出就变成结构化数据,专门喂给 Agent 消费。

4.2 一个 LibreOffice 的实际例子

拿它给 LibreOffice 生成的 CLI 举例,感受一下 Agent 在背后是怎么"说话"的(下面命令来自官方演示):

# 新建一个 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"

# 插一张 4 行 3 列的表格
$ cli-anything-libreoffice --project report.json writer add-table --rows 4 --cols 3
✓ Added 4×3 table

# 通过 LibreOffice 无界面模式导出成真实 PDF
$ cli-anything-libreoffice --project report.json export render output.pdf -p pdf --overwrite
✓ Exported: output.pdf via libreoffice-headless

你看,整个过程没有任何"打开软件—点文件—点新建—点插入表格"的界面操作,全是纯文本命令。而最后那步导 PDF,是真的把活儿交给了后台的 LibreOffice。

4.3 为什么 --json 对 Agent 这么关键

再看一眼加了 --json 的返回:

{
  "name": "Q1 Report",
  "type": "writer",
  "pages": 1,
  "elements": 2,
  "modified": true
}

对人来说,一句"已创建文档"就够了;但对 Agent 来说,它需要的是能直接解析、能据此做下一步判断的结构化数据。有了 JSON,Agent 不用再去"猜"命令执行成没成、现在文档什么状态,一切都明明白白摆在字段里。这就是"Agent 原生"落到实处的样子。

那这三种模式实际怎么选?我给个简单的判断:要写固定脚本、串流水线,用子命令模式,一条命令一件事,好组织;让 Agent 边想边做、需要保留上下文,用 REPL 模式,它能记住前几步的状态;要把结果交给程序或 Agent 继续处理,一律加 --json,省得再去解析人类可读的文本。绝大多数交给 Agent 的场景,其实是"REPL + JSON"的组合——既有连续会话的记忆,又有机器能吃的结构化输出。

REPL 模式跑起来更像下面这样,会有个带横幅的交互界面,提示符还会跟着当前项目状态变(这里以 Blender 为例):

$ 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 via blender --background

五、动手上手:在 Claude Code 等 Agent 里怎么装、怎么用

这一节最实用,我把上手路径按新手能照抄的程度铺开。

5.1 先看环境要求

  • Python 3.10 及以上(生成的 CLI 是 Python 包,这是硬门槛)。
  • 目标软件要装好。你想让 Agent 操控哪个软件,这个软件本身得在你机器上装着。
  • 一个支持的 Agent 工具。官方对 Claude Code 支持最完整,此外还适配了 OpenCode、OpenClaw、Codex、Qodercli、GitHub Copilot CLI 等,Cursor、Windsurf 也在路上。

这里要提前打个预防针:别用太弱的模型去驱动它。前面反复强调过,生成 CLI 是个吃模型推理能力的重活,官方点名建议用前沿级别的大模型。如果你手头的 Agent 接的是个小模型,很可能生成到一半就崩、或者产出一堆需要返工的半成品。所以在开工前,先确认你的 Agent 底座模型够强,这一步能帮你省掉后面一大堆麻烦。另外,虽然生成 CLI 可以只靠仓库地址读源码,但要真正跑起来操控软件,目标软件本体还是得装在本机——这两件事别搞混。

5.2 Claude Code:三步走

在 Claude Code 里,CLI-Anything 是以"插件"形式集成的,三步搞定:

# 第一步:添加插件市场
/plugin marketplace add HKUDS/CLI-Anything

# 第二步:安装插件
/plugin install cli-anything

# 第三步:给某个软件生成 CLI(这里以 gimp 为例)
/cli-anything ./gimp

第三步一敲,前面讲的七阶段流水线就自动跑起来了。这个过程不算快——它要读代码、设计、实现、写测试、生成文档,跑上几分钟很正常,但换来的是一套带完整测试的成品,值。

给用非官方模型的朋友提个醒:如果你的 Claude Code 接的不是官方模型,插件功能可能不被支持,/plugin 那套命令会不认。碰到这种情况也别慌,直接把项目地址丢给 Agent、让它自己照着说明装就行,比如对它说:

帮我在电脑里安装这个项目:https://github.com/HKUDS/CLI-Anything ,并参考它的中文说明完成配置。

Windows 用户注意:Claude Code 是通过 bash 执行命令的,Windows 下建议装 Git for Windows(自带 bashcygpath)或者用 WSL,否则可能报 cygpath: command not found

5.3 其他 Agent 平台怎么装

如果你用的不是 Claude Code,路子也不复杂,核心都是"把命令/技能文件放到对应目录"。这里给几个常见平台的接入方式,照着敲即可。

OpenCode(把命令文件和方法论手册一起拷进命令目录):

git clone https://github.com/HKUDS/CLI-Anything.git

# 全局安装(所有项目可用)
cp CLI-Anything/opencode-commands/*.md ~/.config/opencode/commands/
cp CLI-Anything/cli-anything-plugin/HARNESS.md ~/.config/opencode/commands/

装完会得到 /cli-anything/cli-anything-refine/cli-anything-test/cli-anything-validate/cli-anything-list 五个斜杠命令。这里有个容易踩的坑:那份 HARNESS.md 是所有命令都要引用的方法论规范,必须和命令文件放在同一个目录下,漏了它命令会不完整。

OpenClaw(以原生技能文件 SKILL.md 安装):

git clone https://github.com/HKUDS/CLI-Anything.git
mkdir -p ~/.openclaw/skills/cli-anything
cp CLI-Anything/openclaw-skill/SKILL.md ~/.openclaw/skills/cli-anything/SKILL.md

装好后一句自然语言就能触发,比如 @cli-anything build a CLI for ./gimp

Codex(跑内置安装脚本):

git clone https://github.com/HKUDS/CLI-Anything.git
bash CLI-Anything/codex-skill/scripts/install.sh

装完重启 Codex,让它重新发现这个技能,之后直接用自然语言下达任务即可。

可以看出来,不管哪个平台,方法论内核是同一套七阶段流程,生成出来的 Python 工具结构也一模一样。所以你完全不必纠结"用哪个平台生成的 CLI 更好"——它们本质上是同一个东西,选你顺手的 Agent 就行。

5.4 用生成好的 CLI

不管你用哪个平台生成,用法完全一致:

# 把生成的 CLI 装进 PATH
cd gimp/agent-harness && pip install -e .

# 验证装好了没
which cli-anything-gimp

# 看它有哪些能力
cli-anything-gimp --help

# 直接进 REPL 交互
cli-anything-gimp

# 给 Agent 用的 JSON 输出
cli-anything-gimp --json <命令>

实际使用时你甚至不用记这些命令——用自然语言告诉 Agent 你想干嘛就行,比如"用刚才生成的 CLI,帮我把这张图转成灰度并导出到桌面",剩下的命令拼装交给它。

5.5 CLI-Hub:不想自己造,直接装现成的

如果社区已经有人给你要的软件做好了 CLI,你完全不必从头生成。CLI-Anything 配了一个叫 CLI-Hub 的注册中心兼包管理器,可以一条命令装现成的:

# 装上包管理器
pip install cli-anything-hub

# 浏览 / 搜索 / 查看 / 安装
cli-hub list
cli-hub search video
cli-hub info gimp
cli-hub install gimp

它本质是 pip 的一层轻量封装:cli-hub install gimp 就是去帮你装那个独立的 cli-anything-gimp 包。每个 CLI 都是一个独立的、可 pip 安装的包,Hub 只是帮你从注册表里按名字找到它、跟踪安装状态而已。装完直接用,省掉了自己跑一遍生成流水线的时间。

这套包管理设计有个细节挺讲究:所有生成的 CLI 都被收在一个统一的命名空间下(cli_anything.*),彼此之间互不冲突。也就是说,你机器上同时装 GIMP、Blender、LibreOffice 三套 CLI,它们能在同一个 Python 环境里和平共处,不会打架。命名也统一规范:cli-anything-gimpcli-anything-blender……看名字就知道是操作哪个软件的。这种整洁,对后续维护和 Agent 自动发现工具都是加分项。

顺带一提,Hub 里还有个"matrix(能力矩阵)"的概念,是把一整套跨多个工具的工作流打包成"能力×提供方"。比如做一条视频,可能要转写、配图、渲染好几步、好几个工具,matrix 会把这些意图统一编排起来。任务跨多个软件时,这个思路能省不少事。

5.6 refine:让覆盖面越用越全

单跑一次生成,不一定能把软件的功能全覆盖到。这时候可以用优化命令做"查漏补缺":

# 全面优化:让 Agent 自己找覆盖差距并补上
/cli-anything:refine ./gimp

# 定向优化:指定你最想补强的方向
/cli-anything:refine ./gimp "我想要更多图像批处理和滤镜相关的命令"

refine 会把"软件的完整能力"和"当前 CLI 已覆盖的能力"做一次差距分析,然后针对缺口补命令、补测试、补文档。它是增量的、非破坏性的,可以反复跑,一次比一次全。

这里给个实用建议:refine 支持带"聚焦方向"。如果你在用的过程中发现某类操作老是缺(比如"我总需要批量处理图片,可现在的命令不够用"),就把这个方向明确写给它,让它专门往那儿补,比漫无目的地全面扫一遍更高效。把生成理解成"先出个能用的初版",把 refine 理解成"按你的真实需求持续加料",这套用法就顺了。

小结一下不同 Agent 里的接入形态:在 Claude Code 里它是插件,在别的一些 Agent(比如 OpenClaw、Codex)里则是以 SKILL.md 技能文件的形式安装。形态不同,实际用起来差别不大——照官方指引装,或者干脆把仓库地址交给 Agent 让它自己装,都行。

六、它到底能操控哪些软件:一张能力地图

光说原理容易飘,看它实测过哪些软件更踏实。官方在二十来款有代表性的复杂软件上做了验证,累计测试用例接近两千项、标称 100% 通过。

这里插一句怎么看这个"测试数"。它不是营销话术里的凑数,而是每个软件的 CLI 到底被验证了多少条能力的实打实指标。比如 Blender 的 CLI 有两百多项测试、s&box 有两百多项,说明这两套 CLI 覆盖的功能点相当密;而像 Zoom 这种走 REST API 的,测试数就少一些,因为它本身能操作的

🔒
🔒 以下内容仅对更高等级用户组开放,请升级您的账户等级以查看完整内容。
您当前:游客 · 可见 60% 内容 · 升级至 注册用户 可见 70%
👀
游客
可见 60%
✓ 当前
👤
注册用户
可见 70%
社区精英
可见 100%
🛡️
社区守护
可见 100%
仅解锁本文,永久有效。如需PDF珍藏版,请联系站长获取。 当前单篇价格 ¥5
✏️ 发表评论

请先登录后发表评论

前往登录
📊 站点统计
今日发布4 篇
文章总数106 篇
昨日发布3 篇
本月发布14 篇
建站时间37 天
🔍 搜索
📅 日历
« 2026 » « 08 »
     12
3456789
10111213141516
17181920212223
24252627282930
31      
站点公告

联系站长

微信:wyxs1638
AIGC技术社区
致力于解码 AIGC前沿技术 与经验分享
纯粹的技术交流社区

💡 欢迎您的建议与反馈,让社区变得更好

快速通道
联系站长
站长微信二维码
AI交流群
AI交流群二维码