Skip to content

feat: 新增 Boss直聘 channel(岗位搜索 + JD 全文) - #627

Open
iqjiy wants to merge 4 commits into
Panniantong:mainfrom
iqjiy:feat/boss-channel
Open

feat: 新增 Boss直聘 channel(岗位搜索 + JD 全文)#627
iqjiy wants to merge 4 commits into
Panniantong:mainfrom
iqjiy:feat/boss-channel

Conversation

@iqjiy

@iqjiy iqjiy commented Aug 14, 2026

Copy link
Copy Markdown

动机

新增 Boss直聘(zhipin.com)的岗位搜索 + JD 全文能力,并让用户像配置其他平台一样直接告诉 Agent「帮我配 Boss直聘」,无需自己研究 9222/CDP 参数。

改动

  1. boss channel

    • check() 只读探测 boss-agent-cli、CDP 端口和 zhipin 页签,不搜索、不拉起浏览器。
    • Doctor 提供 macOS / Linux / Windows 的专用 Chrome 恢复命令。
    • 调试端口强制绑定 127.0.0.1,并提示 9222 可完全控制浏览器的安全边界。
  2. Agent 驱动的配置流程

    • 注册 agent-reach install --env=local --system --channels=boss,并纳入 --channels=all
    • Boss 为桌面专用 channel,服务器环境自动跳过。
    • Agent 负责安装、启动专用 Chrome、在用户确认登录后运行 boss --cdp-url http://localhost:9222 login --cdp,再以 boss statusagent-reach doctor 验收;用户只负责手动登录、扫码或处理滑块。
    • 专用 profile 长期复用,不反复创建,也不默认切换到用户日常主 Chrome。
  3. 严格 CDP 抓取

    • 使用公开 BossClient(..., browser_mode="cdp_required")search_jobs()job_card_browser()JobItem.lid,不依赖私有接口。
    • 上游 CLI 已暴露等价命令:boss --browser-mode cdp-required --cdp-url http://localhost:9222 search ...。CDP 不可用时立即失败,禁止静默降级 headless。
    • 使用 uv run --isolated --no-project --with ... 运行 Python API 示例,避免 tool 隔离环境导致普通 Python 无法 import,也避免在用户工作区创建 .venv
  4. 正确处理 code 37

    • code 37 + 环境存在异常ENVIRONMENT_RISK,立即停止,不刷新 Token、不重新登录、不自动重试。
    • 只有明确 token/stoken 过期语义才是 TOKEN_REFRESH_FAILED;上游最多刷新并重试一次。
    • 文档要求串行、降频翻页。跨 CLI 进程的 5–10 秒持久搜索预算另见 boss-agent-cli PR #383,不混入本 PR 的固定依赖。

临时依赖策略

所需公开 API 来自 boss-agent-cli PR #382,目前尚未合并、发布。技术上可以依赖 fork branch,但 branch 会移动、不可复现,因此安装器固定到已包含 CDP 登录态复用、错误分类和严格 CLI 的不可变提交:

ba0f12541079ad794eae4c3bf3fc348befd228c9

上游发布后,只需把 _BOSS_AGENT_CLI_SOURCE 替换为包含上述公开能力的正式版本约束。

验证

  • 599 passed, 16 subtests passed
  • ruff check agent_reach tests:通过
  • mypy agent_reach:36 个源文件通过
  • git diff --check:通过
  • BOSS 相关行为均为 mock/只读探测;未执行真实 BOSS 搜索或账号操作

iqjiy and others added 4 commits August 14, 2026 17:09
- 新增 boss channel:经 boss-agent-cli + CDP 真 Chrome 搜岗位、取 JD 全文。
  check() 三层只读探测(装没装 → 9222 端口 → 有无 zhipin 页签),无副作用、
  不搜索、不拉起浏览器。
- 抓取走 boss-agent-cli 公开 API(search_jobs + job_card_browser +
  browser_mode="cdp_required"),不依赖私有降级链。
- 文档:平台数 15→16(SKILL.md / SKILL_en.md / README / CHANGELOG),
  career.md 加 Boss直聘 抓取姿势 + 环境体检恢复 runbook。
- 测试:test_boss_channel.py 7 个测试,契约测试自动覆盖。

Co-Authored-By: Claude <noreply@anthropic.com>
判断登录态只信 boss status(wt2/__zp_stoken__),不再用当前页 URL 推断。security-check / zhipin-security / _security_check 是 Boss 反爬挑战,与登录无关,已登录也会出现(带 CDP 调试端口的 Chrome 几乎必现)。

- channels/boss.py:check() 新增「页签都停在安全校验页」分支,返回明确 warn 提示「反爬挑战、不代表未登录、先跑 boss status」,不再笼统报「链路就绪」。
- skill/SKILL.md + references/career.md:拆开「登录/扫码」与「处理安全校验滑块」,新增「登录门槛 ≠ 反爬安全校验」三态说明。
- tests:新增 test_check_warn_when_stuck_on_security_check。

Co-Authored-By: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant