随着Open-AutoGLM等项目引发关注,移动端的Phone Agent已经展现出巨大潜力。如果将视角扩展到桌面端,浏览器无疑是PC上最通用的操作入口。基于此背景,本文探讨如何利用开源库browser-use,构建一个能够理解并自动执行用户指令的Browser Agent。
从Open-AutoGLM的架构中,我们可以获得清晰的参考。其核心分为三层:面向用户的Agent客户端、负责推理与决策的AI模型、以及最终的执行层(如ADB)。沿着这一思路,我们发现开源项目browser-use提供了一个现成的、专注于浏览器自动化的Agent框架。它采用“Agent + LLM + CDP(Chrome DevTools Protocol)”的组合方案,能够通过AI模型理解任务意图,并直接控制浏览器完成操作。
架构演进:从单模型到分层规划
browser-use官方示例展示的最简架构是“browser-use + 多模态LLM”,即将整个推理与决策过程完全交给多模态模型。然而,在实际应用时,尤其是在国内可用模型生态下,这一架构遇到了挑战。当时对browser-use适配较好的多模态模型(如qwen-vl-max),在复杂任务中容易出现推理路径发散、产生幻觉以及长任务一致性差的问题。
为解决这一问题,我们调整了架构,在前端增加了一个更擅长规划和逻辑拆解的文本模型。最终架构演进为:GLM-4.6(规划层) + qwen-vl-max(多模态执行层) + browser-use(执行框架)。规划层的核心职责是对用户的自然语言问题进行重写与结构化,生成目标明确、步骤清晰的任务描述。
例如,对于用户指令“在淘票票网站搜索‘movie movie’影院,查找‘疯狂动物城2’明晚的场次信息”,规划模型会将其转化为更规范的Agent任务。实践表明,引入规划层后,任务执行步骤从原先不稳定的16步以上,显著优化到10-14步内稳定完成,一致性得到了大幅提升。这本质上是将复杂的任务理解与规划前移,交由更专业的模型处理。
核心代码实现
项目的代码结构非常清晰,核心调用流程主要分为三步,体现了模块化设计思想。
1. 规划模型改写用户任务
首先,使用GLM-4.6模型对原始用户问题进行规划与重写,生成标准化的任务描述。这里启用了深度思考(Chain-of-Thought)模式,以得到更可靠的规划结果。
# 使用GLM-4.6进行问题改写,启用深度思考模式
response = glm_client.chat.completions.create(
model="glm-4.6",
messages=[
{"role": "user", "content": rewrite_prompt}
],
thinking={
"type": "enabled", # 启用深度思考模式
},
max_tokens=4000, # 增加输出长度以支持更详细的规划
temperature=0.8 # 稍微增加创造性
)
2. 初始化多模态模型
接着,初始化用于驱动browser-use Agent的多模态大模型。我们接入阿里云的qwen-vl-max模型。
vision_llm = ChatOpenAI(
model='qwen-vl-max',
api_key=alibaba_api_key,
base_url='https://dashscope.aliyuncs.com/compatible-mode/v1'
)
3. 创建并运行Agent
最后,使用规划后的任务和多模态模型创建browser-use的Agent实例,并开始执行。通过合理设置参数(如最大步骤数、禁用内置的Judge模块),可以有效控制执行流程,避免陷入死循环。
# 创建Agent并执行搜索
agent = Agent(
task=task,
llm=vision_llm,
use_vision=True,
max_actions_per_step=1,
# 限制最大步骤数,避免无限循环
max_steps=30, # 增加步骤数应对复杂的日期选择
# 禁用Judge,避免Judge与Agent冲突
use_judge=False,
# 使用单一页面,避免开新标签页
browser_profile=None, # 使用默认配置,避免新标签页
)
browser-use框架的设计哲学非常清晰:将复杂性留给AI模型,框架自身保持轻量与专注。这种设计带来了工程实现的简洁性,但也意味着Agent的最终效果高度依赖底层模型的能力。在我们的实践中,增加规划模型主要提升了任务执行的一致性,而执行效率的显著提升则有赖于多模态模型自身能力的持续进化。
反思与优化方向
回顾整个项目,当前的“双模型”架构虽解决了初期的不稳定问题,但也存在过度设计的嫌疑。主要问题在于规划模型与多模态模型在“理解与规划”职能上存在重叠,且在某些场景下,使用成本较高的多模态模型的必要性可以重新评估。
一个更精简且高效的优化思路是:不做通用的全能Agent,而是针对特定高频任务(如查电影票、查天气)开发专用Agent。其架构可以简化为:特定任务提示词(包含详细的DOM结构引导) + 纯文本大模型 + browser-use。browser-use能够提供页面的DOM信息,纯文本大模型足以理解和操作结构化元素,其效果在定向任务中可能不逊于视觉识别。如果需要支持多种任务,只需在Agent前端增加一个轻量级的意图识别路由即可。
这种定向优化的架构不仅能大幅降低模型调用成本,还能使Agent的行为更加精准和可靠。对于想要深入探索AI Agent与自动化实践的开发者,可以将你的项目和经验分享到云栈社区的人工智能板块,与更多同行交流像browser-use这类开源实战项目的应用心得。