前言
在 AI Agent 时代,自动化不再仅限于简单的重复任务。近期发现了一个有趣的开源项目 boss-agent-cli,它将 Python CLI 工具和 AI Agent 的能力结合,为求职者(尤其是 AI Agent)打造了一套完整的 BOSS 直聘自动化解决方案。这个项目展现了如何设计一个 Agent 友好的工具,值得所有做 AI Agent 集成的开发者学习。
这个项目解决什么问题?
传统求职的痛点
求职是一个耗时的过程:
- 职位搜索繁琐:需要在平台上反复翻页、手动查看职位详情
- 福利信息零散:职位列表里的福利标签不完整,需要逐个进入详情页面查证
- 沟通记录复杂:打招呼、投递、面试邀请散落在不同的消息流中
- 进度追踪困难:无法清晰地看到整个求职漏斗(应聘→沟通→面试→offer)
如果你是一个 AI Agent,情况会更糟:你需要能够调用这些平台的能力,但 BOSS 直聘没有公开 API,你只能自己做网页自动化。
boss-agent-cli 的方案
这个项目提供了一个 CLI 工具 ,把 BOSS 直聘的核心功能封装成命令行界面。关键是,所有输出都是 结构化 JSON,这意味着 Agent 可以轻松解析和调用。
核心亮点分析
1. Agent 友好的设计
这是这个项目最聪明的地方。
传统 CLI 的问题:输出是面向人类的,充满格式化文本、颜色、进度条等。Agent 很难解析。
boss-agent-cli 的做法:
boss schema
执行这个命令,你会得到一个完整的能力描述(JSON 格式),告诉 Agent:
- 我有哪些命令
- 每个命令接受什么参数
- 输出什么结构
这是一个 自描述协议,Agent 只需看一次 schema,就能理解如何使用这个工具。所有输出都遵循统一的信封格式:
json
{
"ok": true,
"schema_version": "1.0",
"command": "search",
"data": [...],
"pagination": {"page": 1, "has_more": true},
"error": null,
"hints": {"next_actions": ["boss detail <security_id>"]}
}
这让 Agent 可以:
- 通过
ok字段判断成败 - 通过
error字段获取错误信息 - 通过
hints字段自动决定下一步操作 - 通过
recovery_action字段自动修复错误
为什么这重要? 在 AI Agent 的世界里,工具集成就像积木,工具设计得好坏直接决定 Agent 的能力。boss-agent-cli 就是一块设计得很好的积木。
2. 福利精准筛选
很多求职者都有这样的需求:"我只要双休和五险一金的职位"。
传统做法:搜索后,手动逐个查看职位详情里的福利描述。
boss-agent-cli 的做法:
sql
boss search "Golang" --city 广州 --welfare "双休,五险一金"
工具会:
- 先检查职位列表里的福利标签
- 标签不匹配时,自动调用职位详情页(
card.json)进行全文搜索 - 自动翻页(最多 5 页)直到找齐所有结果
- 返回每个结果带
welfare_match字段,说明匹配来源
这看似简单,但实现起来很复杂:需要调用多个 API、处理分页、做文本匹配、管理请求延迟避免被反爬。
3. 求职流水线与进度追踪
求职不是一次性的。从投递、打招呼、对话、面试,再到最后签 offer,是一个漫长的流程。
项目提供了 3 个命令来追踪这个过程:
bash
boss pipeline # 汇总沟通 + 面试,标记各阶段状态
boss follow-up # 跟进提醒(筛选超时未推进的联系人)
boss digest # 每日摘要(综合统计和更新)
通过这些命令,Agent(或求职者)可以一目了然地看到:
- 我已经投递了多少个职位
- 其中有多少收到了招聘者的回复
- 有几个进入了面试阶段
- 哪些联系人需要主动跟进
4. 反检测与登录安全
BOSS 直聘 会检测自动化操作。项目采用多个策略来规避:
三级降级登录:
- Cookie 提取:从本地浏览器(Chrome / Firefox / Edge 等 10+ 种)提取已有的 Cookie,无需扫码
- CDP 登录:检测到远程调试端口的 Chrome,复用浏览器完成登录
- patchright 扫码:最后才拉起浏览器让用户扫码
反检测浏览器:
基于 patchright(Playwright 的反检测 fork),从二进制层面修补自动化标记。简单说,BOSS 直聘会检测浏览器的 headless 属性,patchright 能把这个标记去掉。
智能延迟:
bash
# 高斯分布请求延迟 + 指数退避重试
# 不是傻傻地 time.sleep(2),而是模拟真人的操作节奏
这些细节看起来小,但对于长期运行的自动化工具至关重要。
5. 与 AI Agent 框架的集成
项目提供了两种集成方式:
方式一:Skill 安装(推荐)
bash
npx skills add can4hou6joeng4/boss-agent-cli
这是最方便的。安装后,Agent 自动获得调用 boss 命令的能力,无需手动配置。这反映了项目的一个理念:好的工具应该让集成变得简单。
方式二:手动配置
在 Agent 的规则文件里加上使用说明,让 Agent 学会调用 boss 命令。
技术架构与实现细节
架构图
scss
CLI (Click) → AuthManager → patchright (登录)
↓
BossClient (httpx) → BOSS 直聘 wapi
↓
CacheStore (SQLite WAL)
↓
output.py → JSON 信封 → stdout
关键技术栈
| 组件 | 技术选择 | 为什么 |
|---|---|---|
| CLI 框架 | Click | 轻量、易扩展,适合 Agent 集成 |
| HTTP 客户端 | httpx | 支持异步,性能好 |
| 反检测浏览器 | patchright | Playwright fork,去掉自动化标记 |
| Cookie 提取 | browser-cookie3 | 支持多浏览器 |
| 缓存 | SQLite WAL | 轻量级,支持并发读,适合 CLI |
| 加密 | Fernet + PBKDF2 | 对称加密,机器绑定密钥 |
聪明的设计决策
1. 缓存策略
搜索结果会缓存到 SQLite,TTL 为 24 小时。这有两个好处:
- 减少对 BOSS 直聘的请求压力(不会被 ban)
- Agent 可以离线调试
2. 错误自愈
每个错误响应都包含 recovery_action,告诉 Agent 应该怎么修复:
json
{
"ok": false,
"error": "AUTH_EXPIRED",
"recovery_action": "boss login"
}
Agent 看到这个错误,可以自动执行 boss login,而不是傻傻地重试。
3. 增量监控
watch 命令可以保存搜索条件,定期执行,并标出新职位:
perl
boss watch add my-golang "Golang" --city 广州 --welfare "双休"
boss watch run my-golang
这对于长期求职非常有用。Agent 可以定期运行 watch run,只看新发布的职位。
实际应用场景
场景 1:自动求职 Agent
想象一个 AI Agent,收到用户的求职需求:"帮我在广州找 Golang 职位,要求双休和五险一金"。
Agent 可以这样做:
bash
boss schema # 先看一遍工具的能力
boss search "Golang" --city 广州 --welfare "双休,五险一金" --count 50
boss detail <security_id> # 查看几个职位的详情
boss recommend # 看看有没有系统推荐的职位
boss batch-greet "Golang" --city 广州 # 自动打招呼
boss pipeline # 查看当前的求职进度
整个过程无需人工干预,所有操作都是自动化的。
场景 2:求职数据分析
一个求职者想分析自己的求职情况:投递数、回复率、面试邀请比例等。
可以导出数据后分析:
bash
boss export "Python" --city 北京 --count 100 -o jobs.csv
boss chat -o communication.json # 导出所有沟通记录
boss pipeline # 看求职漏斗
然后用 Python 或 R 进行数据分析。
场景 3:长期职位监控
一个求职者不着急,但想关注市场上有没有感兴趣的职位。可以:
perl
boss watch add my-fav "Senior Golang Engineer" --salary 50-80K
# 每天运行一次
boss watch run my-fav
系统会自动检测新职位,只显示新发布的,避免信息重复。
代码质量与开发者体验
浏览项目的代码和文档,有几个值得称赞的地方:
1. 完善的文档
README.md:清晰的快速开始docs/agent-quickstart.md:专门面向 Agent 开发者docs/agent-hosts.md:展示不同 Agent 框架的集成示例docs/capability-matrix.md:完整的能力矩阵SKILL.md:Skill 安装说明
2. 环境诊断工具
boss doctor
这个命令会诊断:
- patchright 是否已安装
- Chromium 内核是否可用
- 是否能从本地浏览器提取 Cookie
- 登录态是否存在、是否可解密
- Token 质量是否良好
- 网络连接是否正常
这大大降低了新用户的上手成本。
3. 详细的错误处理
每个错误都有清晰的含义和修复建议:
| 错误码 | 含义 | 修复方法 |
|---|---|---|
AUTH_REQUIRED |
未登录 | 执行 boss login |
AUTH_EXPIRED |
登录过期 | 重新登录 |
RATE_LIMITED |
频率过高 | 等待后重试 |
GREET_LIMIT |
今日打招呼次数用完 | 明天再试 |
值得学习的地方
对于 AI Agent 开发者
- 自描述 API :设计工具时,考虑工具如何被 Agent 调用。提供
schema命令,让 Agent 一次了解全部能力。 - 结构化输出:所有输出都是 JSON,避免格式化文本。这样 Agent 才能可靠地解析结果。
- 错误自愈 :不要让 Agent 猜测怎么修复错误。在错误响应里包含
recovery_action,告诉 Agent 应该做什么。 - 渐进式降级:对于需要用户交互的操作(如登录),提供多个备选方案,按优先级尝试(Cookie → 远程调试 → 扫码)。
对于 CLI 工具开发者
- 分离 stdout 和 stderr:JSON 数据输出到 stdout,日志输出到 stderr。这样 Agent(或脚本)可以清晰地获取结构化数据。
- 缓存策略:对于耗时的操作(如网页爬取),缓存结果并设置合理的 TTL。
- 诊断命令 :提供
doctor命令,帮助用户快速定位问题。 - 预设和快捷方式 :提供
preset和watch等功能,让重复操作变得简单。
潜在的改进方向
没有完美的项目,boss-agent-cli 也有一些值得改进的地方:
- 单元测试覆盖率:对于爬虫类工具,完整的单元测试很重要,但这类项目通常难以测试(依赖外部 API)。
- 国际化:当前仅支持中文。如果能支持其他语言(英文、日文等),会吸引更多用户。
- 性能优化:某些操作(如福利筛选)需要多次调用 API。可以考虑并发优化。
- 社区生态:可以考虑发展 Agent 插件生态,让更多的 Agent 框架能轻松集成。
总结
boss-agent-cli 是一个设计精良的开源项目,它展现了如何为 AI Agent 设计工具:
✅ Agent 友好 :自描述 API、结构化输出、错误自愈
✅ 功能完整 :搜索、筛选、沟通、进度追踪
✅ 易于集成 :提供 Skill 安装方式,也支持手动配置
✅ 开发体验好 :诊断工具、详细文档、清晰的错误提示
✅ 反检测能力强:三级降级登录、patchright 反爬、智能延迟
无论你是在构建 AI Agent、做求职自动化,还是只是想学习如何设计 Agent 友好的工具,这个项目都值得一读。
项目地址:github.com/can4hou6joe...