结构化招聘工作台与 Agent
归属:附录 · 方法学习复刻 — 不是字节/腾讯/理想线上交付。字节实习主线见 字节 · 人才量化。
开岗先建评分卡;初筛每一分可追溯到简历原文;面试独立反馈;用漏斗与校准反证评分卡。
Demo · Hiring Agent Demo · Hiring Copilot Agent 测试 Agent 仓库1. 架构图
当前:Hiring Copilot(看板 + 规则引擎)
flowchart LR
UI[index.html 四页签] --> APP[app.js]
APP --> ENG[engine.js Hire.*]
ENG --> DATA[data.js 职位/评分卡/候选人]
ENG --> LS[(localStorage)]
APP --> UI
subgraph pages [页面]
P1[候选人看板]
P2[我的面试]
P3[职位与评分卡]
P4[招聘分析]
end
UI --- P1 & P2 & P3 & P4
下一刀:Hiring Agent(对话调用同一引擎)
sequenceDiagram
participant U as 用户
participant A as Hiring Agent
participant H as Hire 引擎
participant S as Stats Kit可选
U->>A: 帮我处理超时简历
A->>H: slaBreaches(state, today)
H-->>A: 超时列表
A->>H: screen(cand, job)
H-->>A: 分数+证据
A->>H: message(invite, cand)
H-->>A: 邀约模板
A-->>U: 建议推进/淘汰 + 引用证据
Note over A,H: 反馈未齐 / 名额已满 / 需复盘会 → 硬拒绝
A-.->S: 开实验前 sample_size
2. API / 引擎调用(无后端 HTTP,浏览器内)
公开版不调云端 LLM API。产品化时可把下表封成 POST /v1/tools/*,鉴权后由 Agent 调。
| 调用 | 入参 | 出参要点 | 护栏 |
|---|---|---|---|
Hire.screen(cand, job, weights?) | 候选人、职位、可选权重 | total、attrs[].evidence、rec、knockouts | 硬性条件不符→不推荐 |
Hire.advance(state, id, date) | 状态、候选人、日期 | 更新 history | 反馈未齐 / 非「建议录用」/ 超名额 → throw |
Hire.reject(state, id, reason, date) | 淘汰原因枚举 | status=rejected | 原因必选 |
Hire.submitFeedback(state, fb) | 维度分、overall、note | 写入 feedback | 须在 panel;note≥15 字;不可重复 |
Hire.canSeeOthers(...) | viewer | bool | 未提交不可见;HM 例外 |
Hire.aggregate(fbs) | 反馈数组 | decision / flags | 分歧≥2 或有 1 分→复盘会 |
Hire.analytics(state, jobId) | 职位 | 漏斗、渠道、校准、bins | — |
Hire.message(kind, cand, extra) | invite/reject/offer | 模板字符串 | 拒信不写原因细节 |
Hire.slaBreaches(state, today) | 今天 | 超时列表 | — |
产品化 HTTP 建议(尚未实现)
POST /v1/jobs/{id}/screen { candidate_id }
POST /v1/candidates/{id}/advance
POST /v1/candidates/{id}/reject { reason }
POST /v1/interviews/{id}/feedback
GET /v1/jobs/{id}/analytics
POST /v1/agent/chat { message, actor_id } → tool_calls[]
3. 技术栈梳理
| 层 | 选型 | 原因 |
|---|---|---|
| UI | 原生 HTML/CSS/JS | 零构建,Pages 即演示 |
| 状态 | localStorage | 无后端也能推进/重置 |
| 引擎 | 纯函数 Hire.* | tests.html 可测 |
| 数据 | 种子 RNG 生成 54 人 | 可复现管道分布 |
| 未用 | React / 云 LLM / DB | 优先可打开、可自测 |
4. Best practices
- 开岗时和用人经理共同锁评分卡,之后不随意改权重「救」某个候选人。
- 必备维度缺失只给「待定」,不要用其它维度高分掩盖。
- 淘汰原因结构化(分析用),候选人沟通模板不写细节。
- 每周看:初筛分档 vs 现场面通过率;若倒挂,先修评分卡。
- Agent 输出必须带 tool 结果摘要,禁止无调用就下录用结论。
5. Demo 路径(建议 3 分钟)
- 打开看板 → 点超时候选人 → 看证据高亮与 knockouts。
- 切「我的面试」→ 不写满 15 字提交 → 看报错;写完后解锁他人反馈。
- 「职位与评分卡」拖权重 → 右侧名次箭头变化。
- 「招聘分析」看面试官偏宽松/偏严与分档通过率。
盲筛开关打开后,全页隐藏姓名/性别/年龄/学校——演示反偏见设计。