CLI-Anything
不学自知,不问自晓,古今行事,未之有也。——王充
https://github.com/HKUDS/CLI-Anything
当软件学会开口说话:CLI-Anything,正在把整个软件世界变成 Agent 的主场
有些项目像工具,有些项目像平台,还有一些项目,一出场就像是在改写规则。
CLI-Anything 就属于第三种。
它不是在做一个新的图像编辑器,不是在做一个新的 3D 建模器,也不是想替代某一类成熟软件。它做的事情更像是给那些原本“只会服务人类”的软件,装上一张新的嘴、一双新的手,再加上一套能和 AI Agent 顺畅对话的神经系统。它想回答的问题很直接,也很野心勃勃:
今天的软件服务人类,明天的软件用户将是 Agent。
而 CLI-Anything,正是在这条路上搭桥的人。
它到底是什么
CLI-Anything 的项目描述非常有冲击力:Making ALL Software Agent-Native。
翻成更有画面感的话,就是:它想让所有软件都能被 Agent 自然调用、理解、编排和执行。不是做几个演示性质的小命令糊弄过去,也不是把 GUI 软件勉强包一层壳,而是为“任何有代码库的软件”生成完整、可用、可测试、面向 Agent 的 CLI 接口。
这个项目把 AI Agent 和传统软件之间那道有点顽固的墙,硬生生拆出了门。
过去,很多专业软件都像一座座脾气古怪但能力极强的城堡。人类熟悉快捷键、菜单层级、参数窗口,于是能和它们和平共处;但 Agent 面对这些 GUI 软件时,常常像站在城门口,不知道该从哪敲门。CLI-Anything 的出现,就像给这些城堡统一装上了前台、对讲机和标准化服务台,让 Agent 不再只能“看着界面发愣”,而是可以直接下达结构化命令,获得可编程、可解析、可验证的反馈。
它为什么让人兴奋
因为它不是在谈概念,它已经把很多重量级软件拉到了 Agent 的世界里。
在 README 里,CLI-Anything 展示了它覆盖的多个专业应用领域:图像编辑、3D 建模、矢量图形、音频制作、办公、直播、视频编辑等。GIMP、Blender、Inkscape、Audacity 等复杂应用,都被生成了完整的 CLI 接口,而且强调的是production-ready,不是摆拍式 demo,而是完整能力映射。
更重要的是,它还带着非常扎实的测试结果出现。项目展示了跨多个复杂应用的大规模测试,总计通过了 2,280 项测试,并明确强调这是建立在真实后端和真实软件能力之上的结果,而不是“模拟一下差不多”的空中楼阁。
这就很有意思了。
很多项目在介绍自己时喜欢说“理论上可行”“未来可扩展”“很有潜力”。CLI-Anything 则更像是把成绩单拍在桌上说:别聊抽象的,我们已经让这些复杂软件真的跑起来了。
它最迷人的地方,不是“能生成 CLI”,而是“生成的是 Agent 真能用的 CLI”
表面上看,CLI-Anything 做的是 CLI 生成;但如果只把它理解成“自动产生命令行工具”,其实有点低估它了。
它真正关注的是:怎样让 Agent 能够稳定、可持续、程序化地使用软件能力。
为此,CLI-Anything 在架构设计上有几个很鲜明的原则。
1. 它不伪装,不替代,只做真实集成
CLI-Anything 强调的是 Authentic Software Integration。也就是说,它不是重新造一个“看起来像 GIMP、实际上只是个简化功能壳子”的替代品,而是生成合法项目文件,委托真实软件去完成渲染、编辑和处理。
这是一种非常清醒的工程思路。
它知道,真正复杂的软件能力,往往沉淀在成熟应用内部:文件格式、渲染逻辑、插件体系、脚本接口、工程管线,任何一个都不是“重写一个轻量版”能轻易复刻的。与其假装自己无所不能,不如老老实实把桥搭好,让 Agent 和这些真实软件直接协作。
这就像不是把一位资深工匠替换掉,而是给工匠配了一位特别懂沟通、还能自动整理需求的智能助手。
2. 它天然为 Agent 考虑了“机器可读性”
CLI-Anything 的每个命令都支持 --json,这件事看起来平平无奇,实际上非常关键。
因为 Agent 不只是“会敲命令的人类替身”,它更需要结构化输出,需要明确字段,需要可机器消费的结果。对于人类来说,一张格式漂亮的表格足够了;对于 Agent 来说,JSON 才是更顺滑的语言。
所以 CLI-Anything 做的不是“命令能跑就行”,而是把结果组织成 Agent 真能吞下去、继续推理和编排的数据形态。这种设计非常像是在对 Agent 说:
你别担心,我知道你不是来看热闹的,我会把答案整理好再递给你。
3. 它同时照顾交互式使用和脚本化调用
CLI-Anything 的 CLI 既支持子命令模式,也支持状态化 REPL 模式。直接运行裸命令时,可以进入 REPL,用于连续、交互式的 Agent 会话;而子命令接口则适合脚本、流水线和自动化编排。
这个设计很像一位双语翻译官。
面对人类或长链路 Agent 会话时,它可以进入“持续对话模式”;面对自动化任务、批处理和管线执行时,它又切换成“指令执行模式”。这种双模能力,让它不会被某一种使用方式绑死。
4. 它追求一致体验,而不是每个软件各唱各的调
项目里提到,所有生成的 CLI 都共享统一的 REPL 界面,包括 banner、提示风格、历史记录、进度显示和标准化输出格式。
这意味着什么?
意味着当 Agent 学会和一个 CLI-Anything 生成的工具打交道后,它和其他同体系工具沟通的成本会显著下降。命令风格统一、行为预期统一、反馈格式统一,这种一致性会极大降低 Agent 在多软件协同时的摩擦。
你可以把它想象成一个训练有素的礼宾团队。虽然背后服务的是不同领域的专业软件,但走到前台时,接待流程、沟通方式和工作节奏都保持一致。Agent 自然就更容易建立稳定的使用习惯。
5. 它对“真实依赖”非常强硬
CLI-Anything 明确表示,真实软件依赖是硬要求,没有后备降级方案,不做“差不多就行”的妥协。如果后端缺失,测试应该失败,而不是轻轻跳过。
这种态度很硬,但也很工程。
因为一旦你允许“没有真实后端也能假装工作”,最终你得到的就不再是面向真实生产能力的 Agent 工具链,而只是一套容易自我感动的演示系统。CLI-Anything 不愿意这么做,它宁愿把门槛讲清楚,也不愿意把幻觉包装成能力。
这个项目的野心,藏在它的方法论里
CLI-Anything 并不是只扔出一堆生成结果,然后说“看,我成功了”。它还把自己的方法论、命令体系、文档结构都整理得非常系统。
项目结构里有一个很关键的部分:cli-anything-plugin。
这可以理解为它的方法引擎,也是它把“生成 Agent-Native CLI”这件事流程化、标准化的重要载体。里面包含:
HARNESS.md,作为方法学 SOP 和事实标准源README.md,用于说明插件文档、命令、选项和阶段QUICKSTART.md,提供 5 分钟上手路径PUBLISHING.md,说明如何分发和发布
这说明 CLI-Anything 不只是一个结果集合,它更像一条生产线。它不满足于“我们团队内部能做出来”,而是在努力把这件事整理成一种可以复制、可以推广、可以社区协作的方法。
它仿佛在对外界说:
别只围观我,你也可以把自己的软件带进来,我们一起把它训练成 Agent 听得懂的样子。
它提供了什么命令
如果你想真正靠近 CLI-Anything 的工作方式,最直观的入口就是它的插件命令。
README 中列出了几个核心命令:
1 | /cli-anything <software-path-or-repo> |
这四个命令很像一条成熟的生产链路:
/cli-anything负责从零构建完整 CLI harness,走完全部 7 个阶段/cli-anything:refine负责对已有 harness 做能力补强和缺口分析/cli-anything:test负责运行测试并更新测试文档/cli-anything:validate负责按照 HARNESS 标准进行校验
你会发现,它想得非常周全。它不是只在乎“生出来”,还在乎“补齐”“验证”“留档”。这是一种很明显的工程系统意识。
快速启动的感觉,像是在给软件发一张 Agent 世界的入场券
README 中给出了非常直接的示例,读起来会让人有一种“这事真能开始”的踏实感。
从本地源码构建
1 | /cli-anything /home/user/gimp |
从 GitHub 仓库构建
1 | /cli-anything https://github.com/blender/blender |
对已有 harness 做广泛补强
1 | /cli-anything:refine /home/user/gimp |
带着明确目标做定向补强
1 | /cli-anything:refine /home/user/shotcut "vid-in-vid and picture-in-picture compositing" |
运行测试并更新测试文档
1 | /cli-anything:test /home/user/inkscape |
按标准进行验证
1 | /cli-anything:validate /home/user/audacity |
这些命令之所以打动人,不只是因为它们简洁,而是因为它们传达出一种很明确的姿态:CLI-Anything 不把复杂性藏起来,但它把复杂任务组织成了清晰步骤。你知道第一步做什么,第二步怎么补,第三步怎么验收,整条路是亮着灯的。
CLI-Hub 让这件事更像一个正在成形的生态
项目 README 里还提到一个很重要的配套能力:CLI-Hub。
它提供了一个面向社区 CLI 的安装与管理入口,可以通过下面的方式使用:
1 | pip install cli-anything-hub |
这一步很关键,因为它把 CLI-Anything 从“单个方法论项目”进一步推向“生态入口”。
如果说前面的能力是在帮助软件变成 Agent-Native,那么 CLI-Hub 就像是这座新城市的码头。它让各种社区构建的 CLI 有地方停靠、有方式分发,也让用户能够浏览、安装和管理这些成果。
一个项目一旦开始出现“Hub”这样的角色,味道就变了。它不再只是展示自己做了什么,而是在组织别人也能参与什么。
SKILL.md 这一笔,写得很有前瞻性
CLI-Anything 还做了一件特别 Agent 时代的事:为每个生成的 CLI 自动生成 SKILL.md。
这个文件包含了非常适合 Agent 发现和消费的信息,比如:
- 带有名称和描述的 YAML frontmatter
- 所有可用子命令的分组说明
- 常见工作流的使用示例
- 面向 Agent 的 JSON 输出、错误处理和程序化调用建议
而且这些 SKILL.md 并不是手工拼出来的,它们在流程的 Phase 6.5 由生成器自动提取 Click 装饰器、setup.py 和 README 中的元数据后生成。
这件事的意义在于,CLI-Anything 不只是让软件“勉强能被 Agent 调”,它还在认真建设一层 Agent 可发现、可编排、可理解的能力描述层。
如果说普通 CLI 是软件的“命令面孔”,那 SKILL.md 更像是软件递给 Agent 的一份自我介绍。它会告诉 Agent:我会什么、我有哪些动作、你怎么和我更高效地合作、出了错该怎么理解我。
这种设计意识,非常像在为“Agent 互联网”铺协议。
它覆盖的领域越多,越能看出它不是偶然成功
CLI-Anything 已经覆盖了多个复杂而且差异极大的软件类别:
- 图像编辑
- 3D 建模与渲染
- 矢量图形
- 音频制作
- 办公和生产力工具
- 视频编辑
- 直播与内容创作
- 图表与设计
- AI 图像与内容生成
- 本地 LLM 推理
- 原生调试与图形性能分析
这类跨度,恰恰是最能证明方法论价值的地方。
因为如果一个方案只在单一场景成功,它可能是领域特化;但如果它能在图像、音频、办公、图表、渲染、推理等不同类型的软件上建立可重复模式,那它更可能是在摸到某种共性结构。
CLI-Anything 的价值,就在于它不是只征服了一个山头,而是在尝试找到一张可迁移的地形图。
它像一个很懂现实的理想主义者
我很喜欢这个项目的一点,是它既有理想,也很诚实。
README 里没有把自己包装成万能魔法,而是明确写出局限:
- 它依赖强基础模型,弱模型可能生成不完整或错误的 CLI
- 它依赖可获得的源码,如果目标只有编译后二进制,质量会明显下降
- 一次
/cli-anything执行未必覆盖所有能力,通常还需要通过/refine迭代提升
这段话读起来其实很加分。
因为真正靠谱的工程项目,往往都知道哪里是能力边界。它不会用一句“理论上支持任何软件”来掩盖实际复杂性,而是告诉你:这件事可以做,而且我们已经做到了很多,但它仍然需要高质量模型、源码条件和多轮精修。
这种诚实,反而让它更值得信任。
这个项目最值得关注的,不只是现在做到了什么,而是它可能推动什么发生
如果 CLI-Anything 这条路继续走下去,它会带来的变化可能非常深。
第一层变化:软件的“用户定义”正在扩展
过去的软件用户默认是人类。界面设计、交互逻辑、功能入口,本质上都围绕人来组织。
但当 Agent 成为越来越重要的使用者之后,软件也需要新的接入口。CLI-Anything 正在把这种接入口标准化。它让软件第一次能够比较自然地面对 Agent 这个新型用户群体。
这不只是“多一种调用方式”,而是用户模型的变化。
第二层变化:GUI 软件不再天然排斥自动化
长期以来,GUI 软件在自动化世界里总显得有些别扭。很多时候,只能靠脚本插件、脆弱的录制宏、图像识别点击或者不够完整的 API 来勉强桥接。
CLI-Anything 提供了一种更系统的思路:从源码出发,为 GUI 软件生成完整 CLI harness,让它们以工程化、可测试、可维护的方式进入自动化体系。
这意味着很多以前“只能手工操作”的能力,未来可能变成 Agent 可直接编排的积木。
第三层变化:专业软件的能力会被重新组织
当一个软件被包装成完整 CLI,并且具备标准化命令、统一输出、技能描述文件后,它的能力边界就会被重新切分。
以前你想到 Blender,脑海里可能是一个庞大复杂、只有专家才能熟练掌控的桌面软件;但在 Agent 体系里,它也可以是一个明确的能力模块:建模、渲染、导出、处理、批量生成。软件不再只是“一个完整的大应用”,也可以是“一个被调度的专业能力单元”。
而 CLI-Anything 做的,就是把这种能力颗粒度整理出来。
如果让我用拟人的方式来形容 CLI-Anything
它像一个脾气很好但执行力极强的翻译官。
它站在人类软件和 AI Agent 中间,一边拍拍那些老牌 GUI 软件的肩膀说:“别紧张,我不是来拆你的,我是来帮你把本事讲清楚。”
另一边又转头对 Agent 说:“你别只会盯着按钮发呆,我把它的技能表、命令集、输出格式都整理好了,你直接和它对话。”
它还像一个训练营教官。
面对复杂软件,它不只是说“你以后也能被 Agent 使用了”,而是给它安排课程、补上文档、跑完测试、做完验证,最后再递上一份 SKILL.md,像是在郑重其事地授勋:从今天起,你正式成为 Agent 世界的可调用成员。
它也像一个筑路人。
很多软件不是没有价值,而是通往 Agent 的路还没修好。CLI-Anything 没有绕开这些山,也没有幻想把所有山铲平,而是一段一段地修路、架桥、立路牌,让更多软件真正走进 AI 原生时代。
一个很适合写进未来的软件项目
CLI-Anything 最打动人的地方,是它身上那种“未来感”和“落地感”同时存在的气质。
它提出的命题非常大:让所有软件 Agent-Native。
它采取的手段却很实:源码分析、CLI 生成、REPL 统一、JSON 输出、测试覆盖、验证流程、技能描述、社区分发。
这不是那种只会喊口号的未来主义,也不是那种只顾埋头写脚本的局部修补。它更像是把“大方向”和“工程细节”稳稳焊在一起的项目。
如果你关心 AI Agent 接下来如何真正进入生产软件世界,如果你关心传统软件如何拥有新的接口形态,如果你对“软件将如何为 Agent 而重新组织自己”这个问题有兴趣,那么 CLI-Anything 是一个非常值得认真看的项目。
它没有把自己写成终点,反而更像一个开端。
一个让软件从“等人来点按钮”,走向“主动成为 Agent 能调用的能力体”的开端。
一个让终端不再只是程序员工具,而变成软件与智能体交流通道的开端。
一个让复杂应用不再沉默,而开始学会用命令、结构化输出和技能描述来介绍自己的开端。
结尾
CLI-Anything 这名字取得很直白,也很有野心。
Anything,不是随口说说,而是一种态度:不把 Agent 的边界停留在网页、聊天窗口和少数 API 上,而是把整个软件世界都纳入可连接、可调用、可协作的范围。
它像是在提醒我们,AI Agent 的未来,不只是会说话、会写代码、会调接口。真正更大的变化,是那些原本沉默而复杂的软件,也会逐渐拥有被 Agent 理解和驱动的能力。
当越来越多软件学会“开口说话”,CLI-Anything 这样的项目,可能就是最早教它们说第一句话的人。
而那句话,大概会是:
来吧,我已经准备好和 Agent 一起工作了。
