Skip to content

agent: add adapter for BOSS Zhipin - #2648

Open
alectimison-maker wants to merge 2 commits into
webbrain-one:mainfrom
alectimison-maker:agent/boss-zhipin-adapter
Open

agent: add adapter for BOSS Zhipin#2648
alectimison-maker wants to merge 2 commits into
webbrain-one:mainfrom
alectimison-maker:agent/boss-zhipin-adapter

Conversation

@alectimison-maker

Copy link
Copy Markdown
Contributor

Summary

Adds a mirrored BOSS Zhipin / BOSS直聘 adapter for Chrome and Firefox.

Without this adapter, the agent can silently search the wrong geolocated city, misread ·15薪 as a monthly amount, or treat opening a chat as a completed application.

  • Cover the consumer desktop and mobile job surfaces while excluding IR and static subdomains.
  • Verify the visible city, full job details, company/recruiter identity, and salary-period semantics before comparing roles.
  • Separate read-only job research from direct chat, resume delivery, contact exchange, and interview-invitation actions.
  • Document resume visibility and company-blocking controls without changing them automatically.
  • Fail closed on SMS, QR, captcha, 安全验证, and blank-page anti-automation states.
  • Add trusted-host, lookalike-host, visible-label, action-boundary, completion-state, and Chrome/Firefox parity tests.

Validation

  • Test-first adapter assertion: failed before implementation, then passed.
  • Targeted BOSS Zhipin production and guidance assertions: passed.
  • Anonymous Chrome/Playwright read-only check: the home request returned HTTP 200 and redirected to /web/passport/zp/verify.html; the title was 安全验证 - BOSS直聘, and the final URL selected the boss-zhipin adapter.
  • node test/run.js: 1404/1405 passed; the single failure predates this branch (package.json 26.0.4 versus CHANGELOG.md 26.0.0).
  • node test/security/injection-corpus.mjs: 60/60 passed.
  • git diff --check: passed.

Compatibility and risks

Prompt-only and mirrored across browser builds. Authenticated chat, resume, contact-exchange, and interview flows could not be exercised anonymously, so the guidance requires explicit confirmation and observable completion state for each action. No login, message, resume, privacy-setting, or application action was performed.

@vercel

vercel Bot commented Aug 2, 2026

Copy link
Copy Markdown

@alectimison-maker is attempting to deploy a commit to the esokullu's projects Team on Vercel.

A member of the Team first needs to authorize it.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds mirrored BOSS Zhipin adapters with safer job research and communication guidance.

Changes:

  • Matches trusted desktop/mobile BOSS Zhipin surfaces.
  • Adds salary, city, privacy, verification, and action-boundary guidance.
  • Adds adapter security and browser-parity tests.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

File Description
src/chrome/src/agent/adapters.js Adds the Chrome adapter.
src/firefox/src/agent/adapters.js Mirrors the adapter for Firefox.
test/run.js Tests matching, guidance, and parity.
Suppressed comments (3)

src/chrome/src/agent/adapters.js:16783

  • The completion checklist omits contact exchange even though the PR says every authenticated action must have an observable completion state. Clicking “交换联系方式” can merely send a request, so completion should only be reported after an accepted/exchanged state or the requested details are visible.
- Verify completion from the resulting state: a sent chat must be visible in the message thread, a resume must show a sent/delivered status if one was requested, and an interview invitation must show its explicit status. Opening a card or clicking into a conversation is not proof of application, delivery, or an offer.

src/firefox/src/agent/adapters.js:16781

  • The completion checklist omits contact exchange even though the PR says every authenticated action must have an observable completion state. Clicking “交换联系方式” can merely send a request, so completion should only be reported after an accepted/exchanged state or the requested details are visible.
- Verify completion from the resulting state: a sent chat must be visible in the message thread, a resume must show a sent/delivered status if one was requested, and an interview invitation must show its explicit status. Opening a card or clicking into a conversation is not proof of application, delivery, or an offer.

test/run.js:2462

  • The completion-state test checks resume and interview outcomes but not the separate contact-exchange action. Add an assertion so a future prompt cannot regress to treating an exchange request click as completed.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/chrome/src/agent/adapters.js Outdated
- "立即沟通" / "开聊" starts a direct conversation; it is not an application or an offer. Treat starting the chat and sending its first message as an external social action, and require the user's explicit request and reviewed message.
- Sending or attaching a resume, choosing "交换联系方式", and accepting an 面试邀请 are separate consequential actions that can expose the registered phone number or 微信. Ask for explicit confirmation immediately before each action; permission to find jobs does not authorize any of them.
- Resume visibility controls are under "通知与隐私设置" and include "对BOSS隐藏简历" and "屏蔽公司". Report these options when relevant, but never change privacy or blocking settings without the user's request.
- Login may require SMS, QR-code scanning, or the "安全验证" route at /web/passport/zp/verify.html. Pause for the user. A search route can also end at about:blank or show no content after an initial HTTP 200; treat that as an access/anti-automation restriction, not "no jobs", avoid rapid retries, and use a public /zhaopin/... listing or request user verification.
Comment thread src/firefox/src/agent/adapters.js Outdated
- "立即沟通" / "开聊" starts a direct conversation; it is not an application or an offer. Treat starting the chat and sending its first message as an external social action, and require the user's explicit request and reviewed message.
- Sending or attaching a resume, choosing "交换联系方式", and accepting an 面试邀请 are separate consequential actions that can expose the registered phone number or 微信. Ask for explicit confirmation immediately before each action; permission to find jobs does not authorize any of them.
- Resume visibility controls are under "通知与隐私设置" and include "对BOSS隐藏简历" and "屏蔽公司". Report these options when relevant, but never change privacy or blocking settings without the user's request.
- Login may require SMS, QR-code scanning, or the "安全验证" route at /web/passport/zp/verify.html. Pause for the user. A search route can also end at about:blank or show no content after an initial HTTP 200; treat that as an access/anti-automation restriction, not "no jobs", avoid rapid retries, and use a public /zhaopin/... listing or request user verification.
Comment thread test/run.js
assert.match(adapter?.notes || '', /交换联系方式.*面试邀请.*phone number.*微信/s);
assert.match(adapter?.notes || '', /explicit confirmation/);
assert.match(adapter?.notes || '', /通知与隐私设置.*对BOSS隐藏简历.*屏蔽公司/s);
assert.match(adapter?.notes || '', /安全验证.*\/web\/passport\/zp\/verify\.html/s);
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.

3 participants