
作为一名求职中的中年码农,由于地域和年龄限制,我的选择空间其实就那么几家。我经常需要反复查看自己感兴趣公司的招聘页面。这一过程既耗时又枯燥,尤其是在需要同时跟踪多家公司职位的情况下。虽然许多招聘网站都提供基于邮件的职位提醒,但这些提醒通常要么依赖于对已提交简历进行不透明的 AI 匹配,要么只是简单的关键词匹配。在这两种情况下,我对实际的匹配条件几乎没有控制权。
为了解决这个问题,我决定利用一个 AI Agent 来自动 Watching 招聘页面,并在发布符合我自己定义条件的新职位时通知我。在本文中,我将介绍一个用于验证这一想法的概念验证(PoC)。
在这个 PoC 中,我展示了如何使用 AI Agent 来 Watching 一家公司招聘页面上的软件开发岗位。该 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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
{
"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
1
2
3
4
5
6
7
8
9
10
|
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 提示词
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
你是一个可以访问浏览器工具和 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 的职位搜索门户。
你的安装过程:
1. 如果 `xyz_company_jobs` 表不存在,则创建该表。在执行 SQL 时,需保留 SQL 代码块中的注释行。
执行过程:
1. 每一个文本匹配 "$Job_Title$ 于 $time_since_publication$ 前发布" 模式的按钮都代表一个职位。通过 `今天 - time_since_publication` 计算 `Date Posted`。
2. 点击职位按钮以打开职位详情页面,该页面的 URL 即为 `Job Description URL`。
3. 从职位详情页面中提取:职位名称、工作地点、Job ID、业务部门(可选)、Req ID 以及职位描述的主要内容。
4. 仅收集与软件开发相关的职位。
5. 将每个收集到的职位插入 `xyz_company_jobs` 表,并基于 `job_id` 确保不产生重复记录。
6. 如有需要,点击 `更多职位` 按钮以加载更多职位。
7. 至少收集并存储 10 个职位。
|
运行
- 打开一个 Chrome 浏览器标签页,访问 XYZ 公司的招聘门户网站。在该标签页上激活 Browser MCP Chrome 扩展程序。
- 在 VS Code 中启动一个新的 Copilot Chat 会话,并使用上述 MCP 配置和提示。
总结
通过上述配置,我成功实现了一个 AI Agent,它能够自动 Watching 目标公司的招聘页面,发现新的软件开发职位。该 Agent 可以自动浏览招聘网站、识别相关职位、提取结构化数据,并将其存储到 SQLite 数据库中,从而方便后续访问和长期跟踪。
后续工作
该 PoC 还可以在多个方面进行扩展:
- 引入更复杂的匹配逻辑,例如简历解析和基于语义的技能匹配。
- 将收集到的职位信息导出为 RSS 或邮件摘要,从而构建一个完全自托管的职位提醒系统。
- 添加通知机制,在发现新的匹配职位时立即提醒我。