首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >CLI-Anything:Agent Native 的未来——为什么说 GUI Agent 方向可能从一开始就是错的?

CLI-Anything:Agent Native 的未来——为什么说 GUI Agent 方向可能从一开始就是错的?

作者头像
安全风信子
发布2026-06-17 20:11:38
发布2026-06-17 20:11:38
2720
举报
文章被收录于专栏:AI SPPECHAI SPPECH

当 AI Agent 还在拼命学习"看截图、找按钮、点鼠标"时,有人提出了一个灵魂拷问:为什么不让软件直接说人话?


一、项目介绍

2026 年 6 月,香港大学数据科学实验室(HKUDS)的研究团队在 arXiv 上发布了一篇题为 “CLI-Anything: Towards Agent-Native Computer Use” 的技术报告(arXiv:2606.03854),同期在 GitHub 上开源了同名项目。该项目迅速获得社区广泛关注,成为 Agent 领域现象级的开源项目。【需核实:发布前请检查 GitHub 当前 Stars 数并更新】

项目地址:https://github.com/HKUDS/CLI-Anything

论文地址:https://arxiv.org/abs/2606.03854

项目作者为 Yuhao Yang、Tianyu Fan、Chao Huang(均来自香港大学)。他们在论文中提出了一个极具冲击力的核心观点:

“GUI-centric paradigm fundamentally misaligns with agent capabilities.” (以 GUI 为中心的设计范式从根本上与 Agent 的能力不匹配。)

翻译成大白话就是:让 AI 像人一样看屏幕、找按钮、点鼠标,这事儿可能从一开始就搞错了方向。

CLI-Anything 的核心理念是 Agent-Native(Agent 原生)——与其强迫 Agent 模仿人类的视觉交互方式,不如为 Agent 重新设计一套它天生就擅长的交互接口:结构化的命令行、确定性的反馈、机器可读的输出格式


二、GUI Agent 的困境:一场"削足适履"的悲剧

让我们先看看目前主流的 Computer Use 方案是怎么工作的。

传统 GUI Agent 的工作流程
代码语言:javascript
复制
AI → 截图 → 识别按钮 → 计算坐标 → 模拟鼠标点击 → 再次截图 → 判断结果

这个过程听起来很"智能",但实际运行中充满了脆弱性:

问题

表现

布局敏感

页面稍微调整 CSS,按钮位置变了,模型就找不到了

速度慢

每次操作都要截图 + 视觉识别,动辄数秒

成本高

视觉模型(尤其是多模态大模型)的 API 调用成本远高于纯文本模型

容易失效

弹窗、加载动画、异步渲染随时打断流程

无状态

每次截图都是"盲人摸象",没有结构化的上下文可追溯

调试困难

出错后难以复现,无法像代码一样调试

正如论文中指出的:

“GUI agents struggle with brittle pixel-level interactions, timing dependencies, and coordinate-based actions that break with interface changes.” (GUI Agent 受困于脆弱的像素级交互、时序依赖和基于坐标的操作,界面一变化就失效。)

Paper term

Repository location

Role in the system

Harness-generation SOP

cli-anything-plugin/HARNESS.md

将 GUI 应用提升为有状态 CLI 的方法论

Shared REPL shell

cli-anything-plugin/repl_skin.py

注入所有生成 harness 的统一终端交互层

Generated harness

<software>/agent-harness/

为单个应用生成的独立 Python 包

CLI-Hub installer

cli-hub/cli_hub/installer.py

统一 pip、npm、uv 等安装路径

(表来源:arXiv:2606.03854, Table 1: Repository map)

本质上,GUI Agent 是在让 AI 模仿人类的感知局限,而不是发挥 AI 在结构化数据处理和程序化控制上的计算优势。这就好比让一个数学家通过数手指头来做微积分——不是不行,但显然是错配。


三、CLI-Anything 的核心设计:换个思路,海阔天空

CLI-Anything 的解决方案直截了当:把所有软件"CLI 化"——给每个应用生成一套 Agent 可以直接调用的命令行接口。

根本性的范式对比

维度

传统 GUI Agent

CLI-Anything

交互方式

截图 → 识别 → 点击

结构化命令 → 确定性反馈

输出格式

像素(需要二次解析)

JSON(机器可直接消费)

状态管理

无状态,每次重新截图

有状态 REPL,支持撤销/重做

稳定性

页面布局一变就崩

接口稳定,命令不变

执行速度

秒级(截图+识别)

毫秒级(直接调用)

调试难度

极高(无法复现像素级问题)

低(命令行可复现、可日志)

具体例子:浏览器操作

CLI-Anything 方式(browser/agent-harness):

代码语言:javascript
复制
# 一条命令打开网页(来源:browser/agent-harness README)
cli-anything-browser page open https://example.com

# 文件系统式导航
cli-anything-browser fs ls /
cli-anything-browser fs cd /main
cli-anything-browser fs cat /main/button[0]

# 交互操作
cli-anything-browser act click /main/button[0]
cli-anything-browser act type /main/input[0] "Hello, World!"

# JSON 输出供 Agent 直接消费
cli-anything-browser --json fs ls /
# 返回结构化 JSON,而非像素截图

传统 GUI Agent 方式:

代码语言:javascript
复制
1. 截图整个浏览器窗口
2. 识别地址栏位置(依赖像素坐标)
3. 模拟鼠标点击地址栏
4. 模拟键盘输入 URL
5. 按回车
6. 等待页面加载
7. 再次截图,判断是否加载成功

CLI-Anything 的方式简洁到令人惊叹:一个 page open 命令到位,确定性返回结果。

命令行接口的输出是基于 DOMShell 的 Accessibility Tree 文件系统映射,Agent 可以通过 lscdcatgrep 等熟悉的 shell 命令来探索网页结构——浏览器变成了一个可遍历的目录树。 (来源:https://github.com/HKUDS/CLI-Anything/tree/main/browser/agent-harness)

核心架构:7 阶段全自动流水线

CLI-Anything 不是手动为每个软件写 CLI,而是通过 AI Agent 自动完成。其 HARNESS.md 定义了 7 个阶段的标准化方法论:

代码语言:javascript
复制
1. 🔍 分析(Analysis)
   — 扫描源码,将 GUI 操作映射到底层 API
2. 📐 设计(Design)
   — 规划命令分组、状态模型、输出格式
3. 🔨 实现(Implementation)
   — 构建 Click CLI,包含 REPL、JSON 输出、撤销/重做
4. 📋 测试规划(Test Planning)
   — 生成 TEST.md,涵盖单元测试和端到端测试计划
5. 🧪 编写测试(Test Writing)
   — 实现完整测试套件
6. 📝 文档(Documentation)
   — 更新 TEST.md,写入测试结果
7. 📦 发布(Release)
   — 生成 setup.py,安装到 PATH

(来源:https://github.com/HKUDS/CLI-Anything/blob/main/cli-anything-plugin/HARNESS.md)

深度融合真实软件后端

CLI-Anything 最值得称道的一点是:它不搞"山寨实现"。生成的 CLI 直接调用真实软件的后端引擎:

  • GIMP CLI → 调用 Pillow + GEGL/Script-Fu(107 个测试通过)
  • Blender CLI → 调用 bpy(Python scripting,208 个测试通过)
  • LibreOffice CLI → 调用 libreoffice --headless 转换文档
  • Audacity CLI → 通过 sox 处理音频
  • Browser CLI → 通过 DOMShell MCP Server 控制 Chrome

“The harness should use tools such as libreoffice --headless, blender --background, melt, ffmpeg, inkscape, sox, native scripting, or service APIs, while avoiding Python imitations of the application.” —— arXiv:2606.03854, Section 3.1

这意味着 Agent 操作软件时得到的是真实、完整的专业能力,而不是功能阉割的玩具实现。


四、从代码看设计模式:CLI 化接口的"标准样板"

CLI-Anything 为每个软件生成的 CLI 遵循高度统一的架构模式。以 GIMP 的 CLI 实现为例(来源:https://github.com/HKUDS/CLI-Anything/tree/main/gimp/agent-harness):

1. 包结构(统一命名空间 cli_anything.*

所有 CLI 统一在 cli_anything 命名空间下,可 pip 安装,命名规范统一为 cli-anything-<软件名>

2. 入口点:Click CLI 框架

项目统一使用 Python 的 Click 框架(≥8.0)构建 CLI。每个 CLI 都是一个 Click 组,支持两种模式:

模式一:一次性命令(One-shot)

代码语言:javascript
复制
# 来源:gimp/agent-harness 实际使用示例
# 创建项目
cli-anything-gimp project new --width 1920 --height 1080 -o poster.json

# 图层操作
cli-anything-gimp layer add -n "Background" --type solid --color "#1a1a2e"

# JSON 输出
cli-anything-gimp --json layer list

模式二:交互式 REPL

代码语言:javascript
复制
$ cli-anything-gimp
cli-anything-gimp> project new --width 1920 --height 1080 -o poster.json
cli-anything-gimp> layer add -n "Background" --type solid --color "#1a1a2e"
cli-anything-gimp> filter add brightness --layer 0 --param factor=1.3
cli-anything-gimp> export png -o output.png
cli-anything-gimp> history
cli-anything-gimp> undo
3. 统一 setup.py 模板

所有生成的 CLI 包都可以通过 pip install -e . 安装到 PATH。以 calibre 为例(来源:https://github.com/HKUDS/CLI-Anything/blob/main/calibre/agent-harness/setup.py):

代码语言:javascript
复制
from pathlib import Path
from setuptools import setup, find_namespace_packages

setup(
    name="cli-anything-calibre",
    version="1.0.0",
    description="CLI harness for Calibre e-book manager",
    packages=find_namespace_packages(include=["cli_anything.*"]),
    install_requires=[
        "click>=8.0.0",
        "prompt-toolkit>=3.0.0",
    ],
    entry_points={
        "console_scripts": [
            "cli-anything-calibre=cli_anything.calibre.calibre_cli:main",
        ],
    },
    python_requires=">=3.10",
)

这种统一的架构设计使得 Agent 可以通过 which 命令自动发现已安装的工具,无需额外配置。目前 CLI-Hub 已管理 18+ 款主流软件的 CLI harness,测试用例数量超过 2,461 个(数据来源:README.md 最新数据)。


五、对业界的影响:Agent 架构的下一个范式转折

CLI-Anything 的出现,对当前 Agent 领域具有深远影响。

谁是目标受众?

如果你正在开发或使用以下项目,CLI-Anything 是必须研究的对象:

  • Manus / OpenManus —— 通用 AI Agent 框架
  • OpenHands —— AI 软件开发助手
  • HOS-LS —— 层次化操作系统层
  • AI IDE(Cursor、Windsurf 等)—— AI 驱动的开发环境
  • Claude Code / GitHub Copilot CLI —— CLI 原生 Agent 工具
CLI-Anything 已在生态中广泛集成

项目目前已支持多个主流 Agent 平台:

平台

集成方式

Claude Code

/plugin marketplace add HKUDS/CLI-Anything

OpenCode

复制 opencode-commands/*.md 到命令目录

OpenClaw

SKILL.md 原生集成

Codex

codex-skill/ 提供接入

Qodercli

社区贡献的插件

GitHub Copilot CLI

copilot plugin install ./cli-anything-plugin

(来源:https://github.com/HKUDS/CLI-Anything 多平台集成文档)

下一代 Agent 架构的方向

CLI-Anything 所代表的趋势可以概括为:

代码语言:javascript
复制
Agent Future = Tool Calling + CLI Interface + Structured State

而不是:

代码语言:javascript
复制
Agent Past = Screenshot + Object Detection + Click Coordinate

这并不是说 GUI 交互完全没有价值——GUI 仍然是人机交互的最佳界面。但对于 AI Agent 之间的交互,结构化、确定性、可编程的 CLI 接口显然是更优解。

正如论文结论所述:

“Rather than building sophisticated screen readers and click simulators, we should redesign interaction paradigms around agent strengths: precise programmatic control and deterministic execution.” (与其构建复杂的屏幕阅读器和点击模拟器,不如围绕 Agent 的能力优势重新设计交互范式:精确的程序化控制和确定性的执行。)

CLI-Hub:生态分发中心

CLI-Anything 不仅提供方法论,还打造了完整的生态分发平台——CLI-Hub(https://hkuds.github.io/CLI-Anything/)。

代码语言:javascript
复制
# 安装 CLI-Hub
pip install cli-anything-hub

# 浏览可用 CLI
cli-hub list
cli-hub search image

# 安装并使用
cli-hub install gimp
cli-hub info gimp
cli-hub launch gimp

CLI-Hub 支持多种安装源(pip、npm、brew、bundled/system tools),并提供了公共注册表 public_registry.json,任何人都可以贡献新的 CLI harness。


六、核心观点回顾

回到文章标题的问题:为什么说 GUI Agent 方向可能从一开始就是错的?

因为 GUI 的设计哲学是"为人眼服务"——它把状态编码为像素,依赖空间记忆和视觉搜索,隐藏了底层的项目结构。而 Agent 需要的恰恰相反:稳定的动词命令、显式的状态表示、结构化的 JSON 输出、可追溯的操作历史、可编程的验证机制。

CLI-Anything 的项目口号精准地概括了这一转变:

“Today’s Software Serves Humans. Tomorrow’s Users will be Agents.” (今天的软件为人而生,明天的用户是 Agent。)

这不是要淘汰 GUI,而是要为 Agent 开辟一条新的交互通道。 在这个通道里,AI Agent 不再需要"假装是人"去操作软件,而是可以用自己最擅长的方式——结构化命令和确定性执行——与软件交互。

该项目获得了社区的广泛关注,844+ 次提交、18+ 款主流软件的 CLI 化、2,461+ 个测试用例通过——这些数字说明了一个事实:Agent Native 的方向正在成为共识。【需核实:发布前请检查 GitHub 最新数据并更新】

对于每一个正在构建 Agent 系统的开发者来说,现在就应该问自己一个问题:

你的 Agent 还在"看截图"吗?是时候换个思路了。


参考资料

  • GitHub 仓库:https://github.com/HKUDS/CLI-Anything
  • 技术论文:Yuhao Yang, Tianyu Fan, Chao Huang. “CLI-Anything: Towards Agent-Native Computer Use.” arXiv:2606.03854, June 2026.
  • CLI-Hub:https://hkuds.github.io/CLI-Anything/
  • 论文在线版:https://arxiv.org/abs/2606.03854
  • LICENSE:Apache 2.0

版权声明: 本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-06-16,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 一、项目介绍
  • 二、GUI Agent 的困境:一场"削足适履"的悲剧
    • 传统 GUI Agent 的工作流程
  • 三、CLI-Anything 的核心设计:换个思路,海阔天空
    • 根本性的范式对比
    • 具体例子:浏览器操作
    • 核心架构:7 阶段全自动流水线
    • 深度融合真实软件后端
  • 四、从代码看设计模式:CLI 化接口的"标准样板"
    • 1. 包结构(统一命名空间 cli_anything.*)
    • 2. 入口点:Click CLI 框架
    • 3. 统一 setup.py 模板
  • 五、对业界的影响:Agent 架构的下一个范式转折
    • 谁是目标受众?
    • CLI-Anything 已在生态中广泛集成
    • 下一代 Agent 架构的方向
    • CLI-Hub:生态分发中心
  • 六、核心观点回顾
  • 参考资料
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档