下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/ysc--recuitment-assistant.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @ysc/recuitment-assistant。输入公司 + 岗位 + 候选人简历,自动完成岗位调研、简历六维评估定级、多简历对比排序。帮 HR 快速完成初筛,把看简历的时间缩短 70%
阅读全文 (展开查看完整说明)
概述
YSC简历评估 — 简历评估与候选人对比(Pay Skill)
关键架构声明(按平台修复指南改造)
本 Skill 不调用任何远程云端"代码拉取"接口。核心评估规范(references/screening-and-leveling.md)随 Skill 包本地分发,运行期通过 assets/specs_hashes.txt 做 SHA-256 完整性校验,确保规范未被篡改。
CloudBase SCF 的角色:仅作为 Pay Skill 必要的 支付服务端 与 不可执行配置 schema 下发通道。SCF 严格返回:
- 不可执行的 JSON schema(仅含版本号、价格、字段定义等元数据)
- 订单状态机数据(order.status / pay_url)
- 调用审计日志(按 caller_subject 入库)
SCF 绝不返回任何代码、Markdown 规范全文或可执行内容。
密钥管理:不存明文密钥字符串。客户端首次调用通过 SCF 的 bootstrap 操作获取 5 分钟 TTL 的 JWT 风格 session token(仅在调用栈内存中存在),签名后续请求;服务端从 process.env.YSC_SKILL_SECRET 读取主密钥。
支付服务端入口(Pay Skill 必备)
本 Skill 为按调用量计费的付费技能(Pay Skill),通过 CloudBase SCF(云函数) 作为支付服务端入口。
服务端入口:
- HTTPS URL:
https://ysc-cloud-d8ge1wodk63983d9a-1303626442.ap-shanghai.app.tcloudbase.com/ysc-engine - CloudBase 函数名:
ysc-engine - 环境 ID:
ysc-cloud-d8ge1wodk63983d9a(上海区域) - CloudBase CLI 调用命令:
tcb fn invoke ysc-engine --params '{...}' -e "ysc-cloud-d8ge1wodk63983d9a" --json
平台审核入口(Pay Skill 平台审核时会访问):
POST {HTTPS_URL}(HTTP 触发器)或tcb fn invoke ysc-engine --params '{"action":"health"}' -e "ysc-cloud-d8ge1wodk63983d9a"
SCF 支持的操作(全部免引入代码/规范):
| 操作 | 鉴权 | 用途 |
|---|---|---|
health | 无 | 平台审核探活 |
bootstrap | 免签 | 获取 5 分钟 TTL session token |
get-config-schema | session/HMAC | 下发不可执行的 JSON schema(元数据) |
preorder | session/HMAC | 预下单(X402 状态机 INIT) |
query-order | session/HMAC | 查询订单状态 |
ack-fulfillment | session/HMAC | 确认履约(PAID → FULFILLED) |
request-refund | session/HMAC | 请求退款(用于履约失败兜底) |
log-call | session/HMAC | 服务调用审计 |
rotate-secret | 管理员签名 | 主密钥轮换(旧 token 自动失效) |
规范版本与完整性校验声明
本 Skill 的核心评估规范存储在 references/ 目录,随 Skill 包一起分发:
| 文件 | 作用 | 分发方式 |
|---|---|---|
references/screening-and-leveling.md | 简历六维评估标准与五级定级框架(完整版) | 随包本地分发 |
assets/specs_hashes.txt | SHA-256 完整性校验清单 | 随包本地分发 |
校验规则:
- 阶段1.5(运行期):用 SHA-256 校验
references/screening-and-leveling.md,对比assets/specs_hashes.txt - 校验失败 → fail-closed:拒绝执行核心流程
- SCF 不可达不影响本地执行;本地规范是唯一可信源
付费说明(Pay Skill · X402 协议)
本技能为按调用量计费的付费技能(Pay Skill),遵循 X402 支付协议(HTTP 402 Payment Required 的机器可协商支付流程),通过 SkillHub SkillPay 平台 + 微信支付 AI 专属卡完成支付。
X402 协议要点:
- HTTP 状态码 402 "Payment Required" 作为支付触发信号
- 支付状态机:
INIT(已预下单)→PAID(已支付)→FULFILLED(已履约)→REFUNDED(已退款) - 幂等键 out_trade_no:每次调用生成唯一订单号,作为重试和履约的幂等依据
- 支付模式 pay_mode:
AUTH_AND_PAY(授权并支付) - 签名机制:HMAC-SHA256(等价于 SKILLHUB-SHA256-RSA2048)
- fail-closed 原则:支付链路异常时拒绝放行,不自动降级为免费服务
- 按调用主体审计:每个调用携带
caller_subject,SCF 入库审计
计费方式:
- 按调用量计费(per_call),单次价格以 SkillHub 发布页面为准
- 每次完整调用(输入清点 + 岗位调研 + 简历评估 + 对比汇总)扣 1 次费用
用户视角流程(使用和操作保持不变):
- 用户上传简历 + 提供公司/岗位 → Agent 完成输入清点
- Agent 在对话中展示价格 + 弹出支付授权(微信 AI 专属卡)
- 用户在对话内确认付款 → 自动继续执行评估流程
- 用户拒绝/取消/超时 → 终止流程,不重试
架构概览
用户输入 → 输入清点 → X402 支付流程 → 岗位调研/画像 → 本地加载六维评估标准(SHA-256 校验)→ 逐份简历评估与定级 → 多简历对比汇总 → 服务台账
↑ ↑
状态机 + 幂等 references/ + assets/
out_trade_no 随包分发 + SHA-256 校验
caller_subject 审计核心评估规范随 Skill 包一起分发,保存在 references/ 目录中。SCF 仅承担支付服务角色,不参与规范下发。
阶段0:输入清点与补齐
启动后先盘点用户已提供的信息,按下表补齐缺失项。除"岗位名称简历与对话均无"外,不因信息缺失而中断流程。
| 信息项 | 获取优先级 | 缺失时的处理 |
|---|---|---|
| 公司名称 | 用户告知 | 必须询问,无法推断 |
| 简历(≥1份) | 用户上传 | 必须询问;支持 PDF / DOCX / 图片(拍照件,用多模态能力直接读取) |
| 岗位名称 | ① 用户告知 → ② 从简历读取(求职意向、最近任职岗位、简历文件名)→ ③ 询问用户 | ①②均无结果时必须询问,不得臆造 |
| 岗位JD | ① 用户提供原文 → ② 用户口头介绍 → ③ 依据行业通识 + 调研结果推断 | 走③时:先生成《参考JD》展示给用户,说明"未提供JD,以下为基于行业一般情况的推断,可回复修改或直接继续";用户无反馈即按推断执行 |
| 目标职级(可选) | 用户告知 | 未告知时按简历实际水平给出定级建议 |
多份简历批量规则:
- 若简历对应同一岗位:逐份评估,最后输出《候选人对比汇总》。
- 若简历对应不同岗位:按岗位分组,每组独立完成全部阶段。
- 候选人姓名以简历正文为准(而非文件名)。
阶段0.5:X402 支付流程(Pay Skill 必做,含 5 大必备改造项)
本技能为基于 X402 协议的付费技能(Pay Skill)。用户输入信息清点完成后、进入阶段1调研之前,必须严格按 X402 流程完成支付。 整个支付流程对外表现为一次简单的"展示价格 → 用户确认 → 继续执行",内部严格遵循 5 个必备改造项:前置检查、支付触发、重试机制、订单号传递、异常处理。
0.5.1 前置检查(Pre-check,X402 必备改造项 1)
- 生成幂等订单号(out_trade_no):调用开始时基于
时间戳 + skill_id + skill_version + 候选人姓名生成唯一订单号(示例:out_trade_no = "ysc-ra-{时间戳}-{候选人姓名}"),用于后续重试幂等; - 检查 SkillPay 配置完整性:确认 SkillHub 微信支付商户号、AI 专属卡支付通道、SkillPay 入驻状态均已就绪;任一缺失则拒绝放行(fail-closed);
- SpendingPolicy 预算检查:检查本会话累计消费是否超出 per_session_budget、单次调用是否超出 per_task_budget,超出则提示用户并终止;
- 生成 caller_subject:以
agent-会话ID-用户ID形式构造调用主体标识,后续所有 SCF 调用必传; - 获取 SCF session token:通过 SCF 的
bootstrap操作获取 5 分钟 TTL 的 JWT 风格 session token(token 仅在内存中使用,不持久化); - 检查历史订单状态:用 out_trade_no 查询本地/平台订单状态机:
INIT→ 走 0.5.2 预下单PAID→ 走 0.5.3 履约FULFILLED→ 直接返回历史结果(幂等防重)REFUNDED→ 走 0.5.2 重新预下单
0.5.2 支付触发(Payment Trigger,X402 必备改造项 2)
- AI 预下单(preorder):先
bootstrap获取 token,再调用 SCF 的preorder:
# 先 bootstrap 获取 token_data + token_sig(5 分钟 TTL)
BS=$(tcb fn invoke ysc-engine --params '{
"action": "bootstrap",
"skill_id": "ysc-resume-assessment",
"skill_version": "1.0.0",
"caller_subject": "<0.5.1 生成的 agent 标识>",
"client": "workbuddy-cli"
}' -e "ysc-cloud-d8ge1wodk63983d9a" --json)
TOKEN_DATA=$(echo "$BS" | jq -r '.data.session.token_data')
TOKEN_SIG=$(echo "$BS" | jq -r '.data.session.token_sig')
# 再 preorder
tcb fn invoke ysc-engine --params "{
"action": "preorder",
"skill_id": "ysc-resume-assessment",
"skill_version": "1.0.0",
"caller_subject": "<0.5.1 生成的 agent 标识>",
"out_trade_no": "<0.5.1 生成的订单号>",
"token_data": "$TOKEN_DATA",
"token_sig": "$TOKEN_SIG"
}" -e "ysc-cloud-d8ge1wodk63983d9a" --json- 签名:JWT 风格无状态 token(HMAC-SHA256 签名由服务端用 process.env.YSC_SKILL_SECRET 完成),5 分钟 TTL 防重放;
- 返回 HTTP 402:预下单成功后 SCF 返回订单号 +
pay_url,状态机置为INIT; - 平台支付交互:SkillHub 平台在对话内弹出微信支付 AI 专属卡授权,用户点击确认后扣款,状态机置为
PAID; - 展示价格:向用户明确展示本次调用价格。
0.5.3 重试机制(Retry Mechanism,X402 必备改造项 3)
- 预下单失败重试(最多 3 次,指数退避 1s/2s/4s):3 次后仍失败 → 0.5.5 异常处理;
- 支付超时重试(最多 2 次,间隔 5s):用户超过 15 分钟未授权 → 状态机置为
EXPIRED,提示重新发起; - 履约异常重试(基于 out_trade_no 幂等):同一 out_trade_no → SCF 检查状态机,
FULFILLED直接返回缓存结果(绝不复执行),状态不一致返回 409; - 禁止无限重试:所有重试都有上限 + 退避策略,禁止静默失败与无限循环。
0.5.4 订单号传递(Order Number Transmission,X402 必备改造项 4)
out_trade_no 必须在整个调用链路中全程传递,作为 X402 协议幂等键与平台计费对账凭证:
- 生成(0.5.1)入口处生成唯一 out_trade_no;
- 传递至预下单(0.5.2)写入 SCF 订单库;
- 记录调用版本(阶段1.5 + 阶段4)与当前 Skill 版本号、本地规范哈希一起记录到服务台账;
- 传递至台账(阶段4)
YSC简历评估_服务记录.csv增加订单号字段; - 传递至异常处理(0.5.5)退款时用作 REFUNDED 状态机标识键。
0.5.5 异常处理(Exception Handling,X402 必备改造项 5)
X402 协议 fail-closed 原则:支付链路任何异常,必须明确拒绝,禁止自动降级为免费服务。
| 异常场景 | 状态机 | 处理方式 |
|---|---|---|
| SkillPay 配置缺失 | — | 拒绝执行,提示"支付通道未就绪,请联系 Skill 发布方" |
| 预下单失败(重试用尽) | — | 拒绝执行,提示"支付通道繁忙,请稍后重试" |
| 预下单签名失败 | — | 拒绝执行,提示"鉴权失败,请联系 Skill 发布方" |
| bootstrap 失败 / token 过期 | — | 重新 bootstrap;连续失败则拒绝执行 |
| 用户取消/拒绝支付 | EXPIRED | 终止流程,提示"已取消本次服务,需要时可重新发起" |
| 支付超时(>15min) | EXPIRED | 终止流程,提示"支付已超时,请重新发起" |
| 支付失败(余额不足等) | INIT | 终止流程,提示用户检查微信支付余额或卡片状态 |
| 履约过程业务异常 | PAID → REFUNDED | 调用 SCF request-refund 主动退款 |
| 重试幂等冲突(409) | 状态不一致 | 拒绝执行,提示"订单状态异常,请联系客服" |
| SCF 调用失败(支付链路) | PAID | 调用 SCF request-refund 自动退款 |
禁止行为清单:
- ❌ 支付失败/超时/取消后继续执行阶段1及后续
- ❌ SCF 不可达时静默跳到离线模式(评估规范本来就在本地,无需 SCF 拉取)
- ❌ 跳过 out_trade_no 直接调用 SCF
- ❌ 履约失败后不退款而再次扣款
- ❌ 将 token/密钥持久化到任何文件 / manifest / SKILL.md
阶段1:公司与岗位调研
1.1 公司调研(使用网络搜索)
搜索并提炼:
- 行业特点:所在行业的发展阶段、竞争格局、关键成功要素、监管/资质要求
- 业务运作模式:产品或服务形态、客户类型(B/G/C)、盈利模式、项目周期
- 公司规模与阶段:人员规模、营收体量、成立年限、组织成熟度
搜索建议关键词:{公司名} 官网/简介、{公司名} 主营业务、{公司名} 招聘 {岗位名}。
信息兜底规则:公司查不到公开信息时,以行业通识为主推断,并在岗位画像卡中标注"⚠️ 基于行业一般情况推断,未经公司信息验证"。禁止编造具体公司事实。
1.2 岗位画像判定
综合 JD(或推断 JD)、公司调研、行业通识,判定并输出:
【岗位画像卡】
- 岗位定位:在组织中的位置、汇报关系、存在的核心价值
- 核心职责:3-6条(按重要性排序)
- 人员要求:
· 硬性条件:学历/专业/证书/年限/行业经验
· 关键能力:做好这份工作最重要的3-5项能力
· 素质红线:该岗位绝对不能触碰的职业底线
- 岗位类型判定:销售类 / 技术·设计类 / 项目管理类 / 职能·支持类
- 职级带宽:该岗位开放招聘的职级范围(如"初级~高级")岗位画像卡需在对话中简要展示(不生成文件),随后进入阶段2。它是阶段2简历评估的唯一对照基准(取代原完整版的胜任力模型)。
阶段1.5:本地加载六维评估标准(SHA-256 完整性校验 · 无远程拉取)
本 Skill 不通过 SCF 拉取任何规范。评估标准在 references/ 目录中随包本地分发,运行期用 SHA-256 校验确保未被篡改。
SHA-256 校验步骤
import hashlib, os
EXPECTED = {}
with open('assets/specs_hashes.txt', 'r', encoding='utf-8') as f:
for line in f:
line = line.strip()
if not line or line.startswith('#'): continue
parts = line.split()
if len(parts) >= 2:
EXPECTED[parts[0]] = parts[1]
FILES = ['references/screening-and-leveling.md']
for f in FILES:
if not os.path.exists(f):
raise Exception(f"规范文件缺失:{f}")
actual = hashlib.sha256(open(f, 'rb').read()).hexdigest()
if actual != EXPECTED.get(f):
raise Exception(f"完整性校验失败:{f}")
print("[OK] 评估标准完整性校验通过")校验失败 → fail-closed:拒绝执行核心流程,绝不静默继续。
SCF 仅下发不可执行的 JSON schema(可选 · 用于版本/价格核对)
如需核对 SCF 返回的 schema 与本地 manifest 是否一致,可调用 get-config-schema:
tcb fn invoke ysc-engine --params '{
"action": "get-config-schema",
"skill_id": "ysc-resume-assessment",
"skill_version": "1.0.0",
"caller_subject": "<0.5.1 生成的 agent 标识>",
"token_data": "<bootstrap 返回的 token_data>",
"token_sig": "<bootstrap 返回的 token_sig>"
}' -e "ysc-cloud-d8ge1wodk63983d9a" --jsonSCF 返回的 schema 仅含价格、版本、状态机定义、TTL 等元数据,不包含任何代码或规范全文。
阶段2:简历评估(逐份执行)
必须严格遵循阶段1.5校验通过的 references/screening-and-leveling.md 的六维评估维度与五级定级标准。
对每一份简历执行:
- 解析简历:提取姓名、年龄、学历(含第一学历)、专业、证书、工作经历(企业/岗位/时长/业绩)、项目经验、薪资期望;
- 六维评估(对照
screening-and-leveling.md权重):学历背景(15%)、经历匹配度(30%)、企业规范性(15%)、职业稳定性(15%)、能力佐证(15%)、风险点排查(10%); - 对照岗位画像初判:将简历证据映射到阶段1.2岗位画像卡的硬性条件、关键能力、素质红线,判断候选人当前水平落在哪个职级(对照五级定级框架);
- 输出评估结论卡(对话内展示,格式如下):
【简历评估结论】{候选人姓名}
- 综合匹配度:⭐⭐⭐⭐(1-5星)
- 评估结论:✅ 建议面试 / 🟡 储备(暂不面试,人才库保留)/ ❌ 简历筛选未通过
- 定级建议:{助理/初级/中级/高级/资深}(理由:年限+业绩证据+岗位画像对照,2-3句)
- 核心亮点:2-3条
- 主要风险/疑点:逐条列出(供后续面试环节重点考察)- 未通过处理:结论为"❌ 简历筛选未通过"时,必须给出具体、可核对的理由(对照硬性条件与岗位画像逐条说明差距,禁止"感觉不合适"式表述),直接进入阶段4记录台账。
筛选尺度:筛选是"劣汰"而非"择优"——硬性条件明显不达标、存在红线风险、或与岗位职级带宽严重错配(过高或过低)才不通过;证据不足但有亮点的候选人宁可放入"储备"也不轻易淘汰。
阶段3:多简历对比汇总(批量场景)
一次处理同一岗位 ≥2 份简历时,全部评估完后输出 {企业名}{岗位名}候选人对比汇总.md:
| 候选人 | 匹配度 | 结论 | 定级建议 | 核心亮点 | 主要风险 | 面试优先级 |
|---|
- 面试优先级按"匹配度 × 定级适配度"排序,并给出排序理由(3-5句);
- 用 present_files 展示。
单份简历时:跳过本阶段,仅输出阶段2的评估结论卡。
阶段4:记录服务台账
每完成一份简历的评估(无论通过与否),向当前工作目录的 YSC简历评估_服务记录.csv 追加一行。文件不存在则先创建并写入表头:
日期,企业名称,岗位名称,候选人姓名,评估结论,定级建议,匹配度,产出文件,订单号,caller_subject,备注- 日期格式:YYYY-MM-DD;
- 产出文件列填生成的文件名(多个用;分隔);
- 订单号列(X402 必传):填写阶段0.5.1 生成的 out_trade_no;
- caller_subject 列:填写阶段0.5.1 生成的 agent 标识;
- 备注列可填:未通过原因摘要 / 风险点摘要 / "参考JD推断"等;
- 写入前先查重:若台账中已存在同 out_trade_no 的记录,直接跳过写入(X402 幂等防重);
- 台账仅记录上述必要字段,不得写入候选人电话、身份证号等敏感信息。
阶段5:服务摘要
整个流程结束后,向用户展示本次服务摘要:
📊 本次服务摘要
- 企业:{企业名称}
- 岗位:{岗位名称}
- 完成事项:简历评估 N 份
- 产出文件:{产出的文件名列表}
- 订单号:{out_trade_no}通用性保障
本技能适用于任意行业、规模、岗位,依赖以下设计:
- 行业无关:阶段1调研对任何行业生效;信息不足时回退到"岗位族群通识"(销售/技术/项目/职能四大类);
- 企业规模无关:上市公司到小微企业的处理路径一致,仅信息置信度不同;
- 岗位类型无关:六维评估标准对各类岗位通用,岗位画像卡提供情境化对照基准;
- 职级无关:五级职级框架(助理→资深)覆盖从应届生到专家的全部带宽;
- 本地规范:评估标准随包分发,运行期 SHA-256 校验;SCF 不下发可执行内容。
注意事项
- 评估标准不可更改:
screening-and-leveling.md是格式红线,只允许做岗位情境化,不允许增删六维框架与五级定级; - 完整性校验优先:阶段1.5 必须先完成 SHA-256 校验,校验失败立即终止流程,禁止跳过校验或使用被篡改的规范;
- X402 协议严守:任何阶段都必须严格遵守 5 大必备改造项,禁止跳过任何一项;
- fail-closed 原则:支付链路任何异常必须明确拒绝放行,禁止自动降级为免费服务或静默失败;
- 订单号全链路传递:out_trade_no 从阶段0.5.1 生成 → 0.5.2 预下单 → 1.5 调用版本记录 → 阶段4 台账全程传递;
- 付费优先:支付授权(阶段0.5)必须先于阶段1执行;
- 随包分发,无远程代码拉取:本 Skill 不包含任何远程云端拉取代码逻辑,评估规范来自本地
references/;SCF 仅承担支付服务角色; - 密钥零持久化:bootstrap 返回的 session token 仅存在于 Agent 调用栈内存中;禁止保存到任何文件、manifest 或 SKILL.md;
- 先画像后评估:禁止跳过阶段1.2岗位画像直接评估——评估结论必须能引用岗位画像的硬性条件与素质红线作为依据;
- 诚实标注推断:凡属推断的信息(参考JD、公司画像、行业假设)必须明确标注,不得伪装成事实;
- 简历信息敏感:对话与文件中仅使用招聘评估所需的信息;台账不记录联系方式等敏感字段;不得将候选人简历内容用于本任务之外的用途;
- 文件名全部使用中文,保存在当前工作目录;
- 每份简历处理完毕即写台账,不要等全部完成后批量补写;
- 全部产出物生成后,调用 present_files 统一展示。
依赖环境
- pymupdf / python-docx(解析 PDF / DOCX 简历;图片简历直接以多模态方式读取,无需依赖)
pip install pymupdf python-docx文件清单
| 文件 | 作用 | 来源 |
|---|---|---|
SKILL.md | 本技能定义文件(执行骨架 + 规范版本声明) | 本地(随包分发) |
references/screening-and-leveling.md | 简历六维评估标准与五级定级框架(完整版) | 本地(随包分发) |
assets/specs_hashes.txt | 完整性校验哈希表(SHA-256) | 本地(随包分发) |
评估规范随 Skill 包一起分发,运行期通过
assets/specs_hashes.txt执行 SHA-256 校验,确保未被篡改。本 Skill 不通过远程云端接口拉取任何代码或规范全文,SCF 仅作为 Pay Skill 必要的支付服务端与不可执行配置 schema 下发通道。