Skip to main content

recruiting-copilot

40Stars13Forks0Issues0Watchers

DSH Recruitment Bundle: 7 skills for job analysis, dual-channel sourcing on Boss Zhipin and Liepin, resume evaluation, and interview scheduling, with a built-in browser panel on the right side of the web for remotely operating the recruitment station.

Evidence5/5methodologySourceInstallMaintenanceDSH versionSecurity scan
Machine-auditedInstall commandRepo verifieddsh-plugin topicLicenseREADMEAI wiki
Language
JavaScript
License
MIT
Branch
master
agent-skillsai-agentboss-zhipinchrome-devtools-protocolclaude-codeclaude-code-plugindeepseek-harnessdsh-plugin

Install

cmdweb profile
$ dsh plugin --profile web add github:Viy1204/recruiting-copilot

Run the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial

Install via your agent

Install the DeepSeek Harness plugin Viy1204/recruiting-copilot for me: review the repository at https://github.com/Viy1204/recruiting-copilot first, then run the install command and verify the plugin loads successfully.

Paste this instruction to the DSH Web GUI assistant — it will install and verify for you.

One-Line Positioning

This is an AI recruitment copilot for HR / headhunters: organizes job requirements, daily sourcing & initial screening with greetings on Boss Zhipin + Liepin dual channels, resume evaluation, scheduling interviews, candidate ledger & daily reports into an AI workflow, and embeds a ready-to-use recruitment browser panel in the right side of the DSH Web interface.

Core Capabilities

  • Provides 7 recruitment skills covering the entire recruiting chain: "initialize workspace → organize job → daily sourcing greetings → resume evaluation → schedule interview → market inventory → daily Q&A"
  • Uses AI copilot to turn vague "I need a XX" into executable initial screening standards, producing external JD, internal notes, and target company lists
  • One-sentence trigger for daily sourcing on Boss Zhipin + Liepin dual channels: check unread, search candidates, initial screening, greet after confirmation, update ledger, generate daily report
  • Resume evaluation supports both local PDF/images and optionally receiving Liepin/BOSS resumes from Lark email for deduplication and archiving
  • When scheduling interviews, automatically checks interviewer availability, creates calendar events with video conference links, invites interviewers, and syncs interview files
  • Renders a remotely operable browser in the right dock column of DSH Web UI, reusing login states from boss-cli / liepin-cli

Technical Implementation

  • Language: JavaScript (ES Module, zero third-party dependencies)
  • Key Dependencies: Node built-in fetch / WebSocket / child_process (lib/index.js:29-32); host @deepseek-ai/dsh-skill-filesystem and dsh-host-webserver; external CLI boss-cli (Viy1204 fork)
  • Architecture Pattern: Dual identity - both a profile bundle (enables host skill-filesystem via dsh/cordis.patch.yml and registers skills/ as global custom skill root) and a cordis plugin + client module pair (lib/index.js mounts /plugins/recruiting-view/* routes, client.js registers into shell.overlay slot)
  • Entry Files: lib/index.js (host plugin, exports apply(ctx, rawConfig)) / client.js (browser-side panel) / dsh/cordis.patch.yml (profile patch layer)

Use Cases

HR or headhunters who need to handle large volumes of Boss / Liepin communications and candidate filing daily. Want AI to help search, screen per established criteria, generate greeting messages and sync to ledger, while directly viewing recruitment site within DSH interface without switching windows. Also usable for one-time deep market talent structure analysis for a position, or batch evaluation of resumes freshly received from Lark email.

Prerequisites & Compatibility

DependencyMin VersionDescription
DSHNot declaredDepends on host dsh-skill-filesystem and dsh-host-webserver; right browser panel only appears in web profile, headless and other profiles without webServer only register skills
Node.js>=22package.json engines.node; install script minimum requires >=20, but lib/index.js uses Node 22+ built-in fetch/WebSocket
Chrome / EdgeInstalled locallyUsed to drive real browser in panel; can specify via CHROME_PATH or PUPPETEER_EXECUTABLE_PATH when not found
boss-cli (fork)>=0.7.0Auto-installed by skills/recruit-init/scripts/install-dependencies.sh as git+https://github.com/Viy1204/boss-cli.git#main, old versions can't connect panel with random ports
liepin-cli>=0.2.0Also auto-installed by install script as @viyzhu/liepin-cli, old versions clearly prompt when panel is empty with random ports
lark-cliOptionalWithout it, daily reports output local Markdown, interview scheduling gives manual meeting creation list, resumes need to be provided locally; sourcing and local resume evaluation unaffected
PlatformCross-platformmacOS / Windows / Linux; startup parameters determined from process.platform, all three platforms covered

Installation

dsh plugin --profile web add github:Viy1204/recruiting-copilot

Configuration Options

ConfigTypeDescriptionDefault
sourcesArrayWhich sources to mirror in recruitment browser panel (boss / liepin), each with name / port / match / homeUrl / userDataDir / defaultHidden; only write differences in patch, rest supplemented from built-in defaults[boss:53470, liepin:53471]
frameIntervalMs / watchdogIntervalMsNumberFrame interval (ms), too small increases bandwidth, too large increases delay; clamped to 200~30000 range700
jpegQualityNumberJPEG quality for MJPEG frame push, clamped to 10~100 range80
maxFrameWidthNumberMax single frame width, clamped to 320~4096 range1800
RECRUIT_BROWSER_HIDDEN env varStringShared three-way override: set true force headless, force force headed, unset uses each source's own defaultHidden (BOSS headed, Liepin headless)Not set
BOSS_BROWSER_REMOTE_DEBUGGING_PORT / LIEPIN_BROWSER_REMOTE_DEBUGGING_PORT env varsNumberOverride boss-cli / liepin-cli's fixed CDP debugging port; if env vars changed, sources[].port in patch must also follow53470 / 53471
CHROME_PATH / PUPPETEER_EXECUTABLE_PATH env varsPathManually specify executable path when local Chrome/Edge not foundAuto-detect
BOSS_CLI_SOURCE / LIEPIN_CLI_SOURCE env varsURL/package nameSource for installing boss-cli / liepin-cli (read by script)git+https://github.com/Viy1204/boss-cli.git#main / @viyzhu/liepin-cli

FAQ

Q: What else needs to be done after installation?

A: Need Node ≥20, Chrome/Edge installed locally, and run skills/recruit-init/scripts/install-dependencies.sh once to install boss-cli (Viy1204 fork) and liepin-cli, then scan QR once for each to save login state. Optionally install lark-cli to make daily reports output to Lark cloud docs, interview scheduling auto-create calendars.

Q: What to do when BOSS in recruitment browser panel shows "Account Restricted"?

A: Usually triggered BOSS risk control - page text says "Detected your account using third-party recruitment management systems, plugins,外挂, software and other auxiliary tools". Plugin already defaults by source (BOSS headed, Liepin headless), don't set RECRUIT_BROWSER_HIDDEN to true or it will drag BOSS into headless too. During restriction period only web is limited, Boss Zhipin APP and PC client work normally.

Q: Will not installing lark-cli affect core functions?

A: No. lark-cli only affects three optional scenarios: daily reports to Lark cloud docs, interview scheduling creates calendar, receiving resumes from Lark email; sourcing, local resume evaluation, ledger, panel all unaffected, will output as local Markdown or manual operation checklist.

Q: How to uninstall or rollback?

A: Use dsh plugin --profile web remove recruiting-copilot to uninstall, use update subcommand to pull latest commit. If you manually operated old version in panel before, restarting DSH session lets new version take effect - panel defaults to collapsed and read-only, headless/headed toggle button removed.

Q: What does empty panel prompt "Please update liepin-cli" mean?

A: Old liepin-cli used puppeteer.launch() to assign random CDP ports, panel can't detect at fixed port 53471. Need upgrade to @viyzhu/liepin-cli ≥0.2.0, boss-cli also requires fork version ≥0.7.0, otherwise panel can't connect that browser.

Q: Will automation trigger recruitment platform risk control?

A: Irreversible external actions like greeting, clicking "Not Suitable", notifying candidates default require user confirmation first, AI doesn't automatically reject people. Plugin has built-in risk control circuit breaker: when page hits 403/verify/security-check, stops all auto actions and shows red prompt at panel top, requires manual confirmation to release.

Learning Curve

Advanced — requires understanding DSH profile bundle's dual identity (patch enables skill + host plugin takes over browser), and running initialization flow once in workspace; panel mode related env vars (RECRUIT_BROWSER_HIDDEN / port override) have platform experience threshold, but daily use only needs to say "Process today's recruiting".

Known Issues & Limitations

  • BOSS browser defaults headed, Liepin browser defaults headless: observed same account got BOSS web login restricted for 24h due to headless UA, so two sources no longer unified headless (README.md:9-46)
  • Don't set RECRUIT_BROWSER_HIDDEN=true: will drag BOSS into headless too, is observed accident path (README.md:22-23)
  • Button to switch headless/headed mode in same session removed: UA switching between HeadlessChrome and Chrome = 24h account ban; host's setMode implementation kept but no UI entry (dsh/README.md:140-142)
  • liepin-cli old versions use random ports, panel can't take over: requires @viyzhu/liepin-cli ≥0.2.0, @viyzhu/boss-cli-fork ≥0.7.0 (README.md:144-146)
  • Changing RECRUIT_BROWSER_HIDDEN doesn't take effect when port already has instance: need to first boss shutdown / liepin quit to close that one (README.md:142-143)
  • Browser panel defaults collapsed, defaults read-only (input dispatch off): need to explicitly open via toolbar 🔒; collapse state persisted in localStorage (dsh/README.md:144-146)
  • Fit (pinning page viewport to panel size) failure retry max 3 times: prevents being triggered by second-level resize to trigger risk control, after exceeding limit stops and writes reason to state.error (lib/index.js:185-191)
  • Risk control/verification page circuit breaker: URL matching RISK_URL_RE (403 / verify / security-check forms) stops self-healing restart, fit retry and all control actions (except watch / clear-risk / set-target), requires human to click prompt bar to release (lib/index.js:165-174)
  • Risk control detection intentionally excludes about:blank: that's new tab initial state, including would lock the panel itself (lib/index.js:159-163)
  • When external CLI unavailable, panel can launch browser, but boss-cli's anti-detection protection only attaches to CLI process's CDP session, expires when process exits: so during cross-command persistent period, browser seen in panel is completely naked (README.md:27-29)
  • boss-cli / liepin-cli / lark-cli are all prerequisites: install script reports missing but doesn't block workspace creation; panel takeover only effective in web profile (README.md:58-74)

Read the usage guide →

Install steps, key points, FAQ and compatibility for this plugin — auto-derived from indexed fields.

Listing badge

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/Viy1204/recruiting-copilot)

Paste this markdown into your GitHub README to link back to this listing. The badge only states the listing — not a security endorsement.

← Back to plugin directory