browser-use 跑招聘资料整理:能自动打开网页,但不能替我判断边界
browser-use 的吸引力很直接:把“打开网页、搜索、复制关键信息”交给 Agent。招聘同事看到它,第一反应往往是能不能自动整理候选人资料。我的建议是先把范围缩小,只处理公开、允许访问、无需登录绕过的页面,并且只做辅助摘要。
1. 安装环境
我用 Python 3.11 和一个独立虚拟环境:
python3 -m venv .venv
source .venv/bin/activate
pip install -U browser-use playwright python-dotenv
playwright install chromium
.env 放模型配置。不要把公司账号 Cookie、招聘后台账号直接交给实验脚本。只要脚本能替你登录,它也能替你误操作。
2. 最小脚本
下面这个脚本只让 Agent 整理公开页面信息,并要求输出 Markdown:
import asyncio
from browser_use import Agent
from langchain_openai import ChatOpenAI
async def main():
llm = ChatOpenAI(model='gpt-4.1-mini', temperature=0)
task = '''请只访问公开网页,整理 HR AI 招聘自动化相关的常见场景、风险和原文链接。不要登录任何网站,不要下载文件,不要采集个人联系方式。输出 Markdown 表格。'''
agent = Agent(task=task, llm=llm)
result = await agent.run()
print(result)
asyncio.run(main())
这个版本很克制,但足够观察工具的行为:它会不会乱点、会不会在页面间迷路、会不会把广告内容当成事实。
3. 提示词要写停止条件
我后来给任务补了三条停止条件:
如果页面要求登录,停止访问并记录原因。
如果页面禁止自动化访问,停止访问并记录链接。
最多访问 8 个页面,超过后直接汇总。
没有停止条件时,Agent 很容易为了完成任务继续搜索,最后输出看似丰富,来源却变得不可控。
4. 结果落盘
我不建议让它直接写进候选人系统。先落成本地文件,人工看过再决定是否进入正式记录:
from pathlib import Path
Path('outputs').mkdir(exist_ok=True)
Path('outputs/hr-ai-research.md').write_text(str(result), encoding='utf-8')
如果用于候选人研究,我会额外要求每条结论带链接,不允许出现“根据网上资料看”这种没有来源的句子。
5. 合规边界
招聘场景最容易踩线。我的底线是:不绕登录、不突破 robots.txt、不采集非必要个人信息、不把自动整理结果直接作为筛选依据。公开页面也不等于可以无限采集,尤其是包含个人身份、联系方式、作品评价的内容。另一个容易忽略的问题是数据本地化。脚本看到的页面内容会被送进模型服务,如果里面出现候选人信息,你就需要确认公司是否允许这种处理方式。不能确认时,就不要把真实候选人放进实验。
6. 复盘
browser-use 很适合做“研究助理”:它能帮你打开页面、整理公开材料、保留链接。它不适合做“招聘裁判”。真正决定候选人是否合适的证据,仍然要回到简历、面试、作品和人的判断。工具越能自动点击,我们越要先写下哪些按钮永远不能让它点。