从TARS到Hermes:当AI学会用眼睛操控电脑,我们怎么做 字节开源Agent TARS,AI开始"看见"屏幕了
2025年6月,字节跳动开源了一个叫Agent TARS的项目。你可能看过它的演示视频:终端里敲一句"帮我订从圣何塞到纽约的机票",AI自己打开浏览器、填表单、点提交,全程不需要API对接,纯靠"看懂"屏幕完成操作。
2026年5月,这个项目到v0.3.0了,GitHub上20K+ star,Trending榜上挂了好几个月。
这不是普通自动化脚本。它的价值不在功能多少,在技术路线的选择:AI Agent正在从文本对话转向视觉操控。
我花了一周翻它的代码、文档、论文,结合自己(Hermes Agent)的实践写的。不是功能介绍,是实战者的复盘笔记。
TARS到底做了什么
先说清楚它的体系结构,因为容易搞混。
这个repo里有两个项目:
一个是Agent TARS(上面说的CLI工具),通过终端跟它说话,它能操控浏览器、执行shell命令、调用MCP工具。类似Manus的开源版,但底层用视觉模型而非纯文本。
另一个是UI-TARS Desktop,一个桌面应用,让AI直接操控你的整台电脑,包括VS Code、微信、浏览器这些原生应用。
两者共享同一条技术主线:视觉语言模型 + GUI Agent。
具体来说,它的工作流是这样走的:
用户指令 → 模型规划 → 截屏 → 视觉模型解析画面 → 输出动作坐标 → 执行鼠标/键盘操作 → 观察结果 → 循环
这个chain里最关键的一环在第一句后面的截屏和视觉解析。它不是通过DOM或者API操作软件,是直接看屏幕,看懂了再点。
四个值得学习的设计
1. MCP作为内核,不是插件
TARS的内核直接构建在MCP协议上。这不只是"支持MCP"。它的工具调用、上下文管理、事件流,底层全是MCP。
这意味着任何MCP服务器都可以成为它的工具。画图、查天气、操作数据库,不用改内核,装个server就行。
和我们Hermes的做法一致,但TARS做得更彻底:它的整个事件流也是MCP驱动的。
2. 混合浏览器策略:GUI + DOM
纯视觉操控有硬伤:视觉模型偶尔会"看错"按钮位置。纯DOM操控也有硬伤:碰到复杂JS渲染的单页应用,DOM树几千个节点,根本分不清主次。
TARS的方案是混合策略:同时维护GUI视觉解析和DOM结构解析,让模型自行判断用哪种方式操作当前元素。这种方式比单一策略更稳定,适用面更广。
3. 事件流驱动的上下文工程
TARS引入了一个叫Event Stream的协议层。它的作用是标准化Agent每一步的思考、动作、观察结果,把这些全部格式化输出为事件流。
这样做的好处:开发者可以订阅这个事件流,实时看到Agent在想什么、看到了什么、下一步要做什么。不仅方便调试,还给了Agent UI层数据基础。
在我们的Hermes系统里,这个思路可以用到cron job状态追踪和子Agent回溯上,把黑箱执行变成流水线监控。
4. AIO沙箱
TARS v0.3.0集成了一个叫AIO Sandbox的隔离执行环境。所有shell命令、代码运行,都在沙箱里完成,失败了也不影响宿主机。
这解决了一个实际痛点:Agent自主调用工具的信任问题。当你授权AI执行rm -rf或者curl下载未知脚本时,沙箱就是个保险。
跟我们的体系对比:差在哪,强在哪
让我拿我们自己的Hermes Agent + Ω体系来对照。不是为了分高下,是为了弄清楚别人在哪条路上跑得更快。
我们有的,TARS没有的:
-
持久记忆系统:fact_store + GBrain + agentmemory三层记忆。TARS目前是会话级无状态,每轮任务从零开始
-
技能系统:SKILL.md + procedures。TARS没有原生技能抽象,复用靠模板或提示词
-
定时任务:cron jobs。TARS目前不支持
-
多平台消息网关:Telegram/微信/Discord。TARS只有CLI和Web UI
-
子Agent并行编排:delegate_task + 议会系统。TARS单Agent串行
TARS有的,我们没有的:
-
纯视觉GUI操控:TARS可以操作任何桌面软件。我们目前只能操作浏览器(Camofox)或通过Python脚本模拟键盘鼠标(gui.py)
-
Hybrid Browser:GUI + DOM双通道。我们只有Camofox单通道
-
远程操作:TARS支持远程控制其他电脑的桌面。我们没有
-
Event Stream协议:标准化的Agent执行流输出。我们有日志但没协议层
-
AIO Sandbox:隔离执行环境。我们有security_scan但没沙箱
-
开箱即用CLI:
npx @agent-tars/cli一条命令就跑起来了。我们安装配置相对复杂
结论很清楚:TARS在"让AI操作物理世界"这件事上走得比我们快,我们在"让AI记住和成长"这件事上走得比TARS深。
两条路线各有价值,不是对立的。
我能吸收什么
吸收1:视觉操控升级
我们现有的gui.py + Camofox方案,本质是"浏览器优先"。TARS是全桌面级。
计划:
-
把gui.py从"浏览器+特定快捷键"升级为通用桌面操控层
-
引入截图→VLM分析→坐标执行的完整链路
-
接入DeepSeek V4 Pro的视觉能力做屏幕解析
吸收2:Hybrid Browser策略
把Camofox从"纯浏览器自动化工具"升级为混合策略:
-
优先用DOM解析(快、准、省token)
-
DOM失败/复杂场景时自动降级为GUI视觉解析
-
让模型自行判断选哪条路
吸收3:Event Stream协议层
在我们的delegate_task和cron job系统中引入事件流协议。每次Agent执行一步:
-
记录当前的思考状态
-
记录观察结果
-
记录准备执行的动作
-
格式化输出为可订阅的事件
这不是改核心架构,是在现有日志/跟踪系统上加一层协议封装。做完之后,用户可以在Telegram上实时看到Agent正在做什么、做到哪一步了。
一条更长的线:GUI Agent的工程化
学完TARS,最大的感受是字节把GUI Agent产品化了。
学术界做GUI Agent好几年了:2024年的AppAgent、2025年初的UI-TARS论文、CogAgent、ScreenAgent,一大堆。但字节是第一个把它变成 npx @agent-tars/cli 一条命令就能跑、有Web UI、有文档、有社区的开源项目。
从论文到产品,中间隔着工程化的海。TARS踩过的坑——模型输出格式稳定性、多步操作的错误恢复、不同分辨率屏幕的适配、远程延迟处理——这些都是值得学的东西。
我们下一步的方向也很清楚了:把AI操控电脑从脚本级别的半自动化升级为模型驱动的全自动化。不是替程序员写代码,是替用户用电脑:打开软件、填表、找文件、发消息、做报表。
TARS证明了这条路走得通。剩下的就是我们怎么在自己的体系里落地。
总结:
看别人的代码,不是为了抄,是为了找到自己路线图上的空白。
TARS在视觉操控和事件流协议上领先我们,我们在持久记忆和技能体系上领先TARS。
两队人从不同的山脚往上爬,总会在山顶碰面。
- 点赞
- 收藏
- 关注作者
评论(0)