
作为一名正在求职的中年开发者,地域和年龄的限制让我的选择范围相对固定。我需要频繁地查看心仪公司的招聘页面,这个过程既耗时又乏味,尤其是在需要同时跟踪多家公司职位动态的时候。虽然许多招聘平台都提供邮件订阅提醒,但这些提醒要么依赖于对已投简历的、不透明的 AI 匹配,要么只是简单的关键词筛选,让我对实际的匹配规则几乎没有掌控感。
为了解决这个痛点,我决定利用 AI Agent 来自动监控特定的招聘页面,并在出现符合我个人定义条件的新职位时通知我。本文将分享一个用于验证此想法的概念验证(PoC)。
在这个 PoC 中,我将展示如何使用 AI Agent 自动监控一家公司的招聘门户,专注于收集软件开发相关职位。这个 Agent 能够自动浏览网站、识别职位、提取结构化的职位信息,并将结果存储到 SQLite 数据库中,便于后续的查询与长期追踪。
PoC
职位数据来源
本次实验,我选择了一家其招聘页面基于 Eightfold AI 平台构建的公司。如果你的目标公司同样使用 Eightfold AI,那么这个 PoC 只需少量修改即可复用。
Eightfold AI 是一个人才智能平台,利用人工智能技术赋能招聘、员工留存及劳动力发展。它基于技能和经验将候选人与开放职位进行匹配,目前已被包括 Vodafone、Morgan Stanley 和 Chevron 在内的超过 100 家公司使用,业务覆盖 155 个以上国家和地区。
尽管 Eightfold AI 平台本身已提供基于 AI 的职位订阅功能,但我希望拥有对匹配逻辑和采集数据的更细粒度控制权,因此才着手构建这套自定义的解决方案。
Agent 设计
我选择在 VS Code Copilot Chat 环境中实现这个 PoC,并使用了以下工具和精心设计的提示词。
MCP 工具
./vscode/mcp.json 配置文件如下:
{
"servers": {
"browsermcp": {
"type": "stdio",
"command": "npx",
"args": [
"@browsermcp/mcp@latest"
]
},
"sqlite": {
"command": "~/genai-toolbox/toolbox",
"args": [
"--prebuilt",
"sqlite",
"--stdio"
],
"env": {
"SQLITE_DATABASE": "~/jobs/jobs.db"
}
}
}
}
数据库 Schema
预先设计好的数据库表结构,用于规范存储数据,这也是实现 后端数据处理 流程的关键一步:
CREATE TABLE IF NOT EXISTS xyz_company_jobs (
job_id TEXT PRIMARY KEY, -- 职位的唯一标识
req_id TEXT, -- 招聘需求 ID
job_title TEXT, -- 职位名称
location TEXT,
date_posted TEXT, -- 格式:'YYYY-MM-DD'
business_department TEXT,
job_description_url TEXT,
job_description TEXT -- 职位描述的主要内容
);
Agent 提示词
以下是驱动 Agent 工作的核心提示词:
你是一个可以访问浏览器工具和 SQLite 数据库工具的 AI Agent。你的任务是从 XYZ_Company 的招聘网站中收集与软件开发相关的职位信息,并将提取到的数据存储到 SQLite 数据库中。当前浏览器中打开的页面是 XYZ_Company 的职位搜索门户。
数据库:
```sql
CREATE TABLE IF NOT EXISTS xyz_company_jobs (
job_id TEXT PRIMARY KEY, -- 职位的唯一标识
req_id TEXT, -- 招聘需求 ID
job_title TEXT, -- 职位名称
location TEXT,
date_posted TEXT, -- 格式:'YYYY-MM-DD'
business_department TEXT,
job_description_url TEXT,
job_description TEXT -- 职位描述的主要内容
)
规则:
- 在调用一次
click() 操作后,必须等待 10 秒,确保页面完全加载,然后再调用 snapshot 捕获当前页面状态。
- 在向
xyz_company_jobs 表插入新记录之前,需要检查 job_id 是否已经存在,以避免重复数据。
- 在生成 INSERT SQL 语句时,确保对值中的单引号进行正确转义。
- 不要收集或点击位于
document > main > group Similar Position 区域下的职位。
用户已经准备的环境:
- 浏览器中已经打开了 XYZ_Company 的职位搜索门户。
你的安装过程:
- 如果
xyz_company_jobs 表不存在,则创建该表。在执行 SQL 时,需保留 SQL 代码块中的注释行。
执行过程:
- 每一个文本匹配 “$Job_Title$ 于 $time_since_publication$ 前发布” 模式的按钮都代表一个职位。通过
今天 - time_since_publication 计算 Date Posted。
- 点击职位按钮以打开职位详情页面,该页面的 URL 即为
Job Description URL。
- 从职位详情页面中提取:职位名称、工作地点、Job ID、业务部门(可选)、Req ID 以及职位描述的主要内容。
- 仅收集与软件开发相关的职位。
- 将每个收集到的职位插入
xyz_company_jobs 表,并基于 job_id 确保不产生重复记录。
- 如有需要,点击
更多职位 按钮以加载更多职位。
- 至少收集并存储 10 个职位。
运行
- 打开一个 Chrome 浏览器标签页,访问目标公司(XYZ)的招聘门户网站。在该标签页上激活 Browser MCP Chrome 扩展程序。
- 在 VS Code 中启动一个新的 Copilot Chat 会话,并使用上述 MCP 配置和提示词。
总结
通过上述配置,我成功实现了一个能够自动监控目标公司招聘页面的 AI Agent。它可以自主浏览招聘网站、识别新的软件开发职位、提取结构化的职位数据,并将其存储到本地的 SQLite 数据库中。这套方案为我后续的职位访问和长期跟踪提供了极大的便利,也让我对数据拥有完全的控制权。
后续工作
这个 PoC 还有很大的扩展空间,例如:
- 引入更复杂的匹配逻辑,例如结合简历解析和基于语义的技能匹配。
- 将收集到的职位信息导出为 RSS 源或邮件摘要,从而构建一个完全自托管的个性化职位提醒系统。
- 添加即时通知机制(如桌面通知、Telegram Bot 消息等),在发现新的匹配职位时第一时间提醒我。
对于有类似需求的开发者,在 云栈社区 可以找到更多关于自动化工具和求职技巧的讨论。