一个给 AI Agent 使用的结构化技术面试编排器。
它不是一个题库。它根据岗位要求(JD)、候选人简历和面试方法,动态决定下一题问什么。
下一题不是题库中的"下一题",而是当前状态下最值得问的那个问题。
面试的目标不是问完更多问题,而是在有限来回内获得足够可靠的 Evidence, 从而判断候选人的真实能力。
让 LLM 充当面试官,最常见的三种失败模式:
| 失败模式 | 表现 | 本 Skill 的约束 |
|---|---|---|
| 变成问卷 | 一次抛出十个问题,或照着固定列表念完,不追问回答 | 硬性要求一次只问一个问题(SKILL.md §1.1) |
| 变成知识点抽查 | 候选人说"用了 SQLite",于是开始问"SQLite 的优缺点" | 追问必须由候选人的回答触发;禁止把领域文件的问题列表当成面试顺序(SKILL.md §1.4 禁止反向依赖) |
| 凭印象做结论 | 讲得流畅就给好评,分不清"知道概念"和"真的做过" | 未验证的 Claim 不参与评价;证据不足进 Unverified 清单,既不转正向也不转负向(Interview/evaluation.md §4) |
本 Skill 遵循 Agent Skills 规范(目录根放置
SKILL.md+ frontmatter), 适用于 Claude Code 及兼容 Agent Skills 规范的实现。
git clone https://github.com/HYDtomako/interview-skill.git ~/.claude/skills/interview-skill也可以作为项目级 Skill 直接放在项目根目录(或对应 Agent 的 skills 目录)使用。
-
复制简历模板并填入真实简历:
cp Candidate/Resume.example.md Candidate/Resume.md
Candidate/Resume.md/Candidate/Resume.pdf已在.gitignore中,永远不会被提交。 简历含个人信息,请勿 push 到公开仓库。 -
把岗位要求填入
Candidate/JD.md(岗位定位 / 技术要求 / 能力优先级 / 面试时长)。 -
对你的 Agent 说:
用 interview-skill 对这个候选人做一场 60 分钟的模拟面试。
它会先读 JD 与简历,给出考察计划,然后一题一题地问,最后输出基于 Evidence 的评估报告。
注意(设计上的故意行为):
- 仓库只提供
Candidate/Resume.example.md模板,真实简历需要你自己创建(.gitignore保证不误提交)。 - 没有 JD / 简历时面试不会开始——编排器会停下来向你索取,而不是凭空编造候选人背景。
SKILL.md
编排器 / 路由
│
┌───────────────────┼───────────────────┐
↓ ↓ ↓
Candidate/ Interview/ project/
对象是谁 怎么面 可以问什么
│ │ │
JD.md Interview Strategy.md agent/
Resume Project Interview.md minimind/
evidence.md (按主题拆分的
evaluation.md 子文件 + 索引)
time_budget.md
| 目录 | 回答的问题 | 加载时机 |
|---|---|---|
Candidate/ |
岗位要什么?候选人是谁、做过什么? | 开场必读 |
Interview/ |
面试应该怎么进行? | 开场读部分,过程按需 |
project/ |
这个技术领域可以问什么? | 命中具体主题时按需读 |
职责边界是单向的:
project/ 只提供"可以问什么"
Interview/ 永远决定"怎么问"
Candidate/ 影响"考察重点",但不影响"面试方法"
领域文件里写得再多,也不能推翻追问方式和评估标准。
每一轮只提一个问题,等候选人回答后再决定下一题。禁止一次性抛出问题清单——面试不是问卷。
候选人说过,不等于候选人证明过。
用 E0–E5 标注每条评价的证据强度(只作标签,不换算分数):
| 等级 | 含义 |
|---|---|
| E0 | 无证据 → 不进评价,进 Unverified 清单 |
| E1 | 只有口头 Claim |
| E2 | 能进行概念解释(知道了,但没做透) |
| E3 | 能解释具体实现(达到基本要求) |
| E4 | 能通过演示 / Coding / Debug 证明(确实做过) |
| E5 | 有多来源证据交叉验证(理解透彻) |
E1 和 E2 不算"证明过"。能讲清楚概念不等于能落地。
每一轮都重新计算下一题:
候选人回答 → 提取 Claim → 哪些已证明、哪些是缺口
→ 对照 JD:哪条能力最重要且证据最薄弱
→ 选出信息增益最高的问题 → 时间允许吗 → 提问
优先级判据:与 JD 相关度 > 未解决的风险 > 证据缺口 > 覆盖不足的能力。
候选人答不上来时最多走 4 步,然后收手:
- 换角度复述同一问题
- 缩小到具体子环节
- 给出具体选项让其判断取舍
- 仍无法回答 → 记为负面证据,记录缺口,换题
不允许在同一道题上无限打转,也不允许当场给出否定评价。
LLM 没有内置时钟,靠自我估算流逝时间会严重失准。所以放弃"已过 X 分钟",改用来回计数:
| 面试时长 | 预算来回数 |
|---|---|
| 30 分钟 | 16–20 |
| 45 分钟 | 24–30 |
| 60 分钟 | 32–42 |
| 90 分钟 | 45–60 |
AI 面时长可以放宽——没有真人体力限制,默认 60 分钟,用户同意可放宽到 90 分钟, 多出来的来回用于"为什么用这个技术"和"踩坑细节"的透彻拷问。 每 5 个来回做一次显式复盘,最后 2 个来回留给候选人提问。
Phase 0 有一个必做步骤:搜索目标方向的面经(优先牛客),关键词覆盖公司规模(大厂 / 中厂 / 初创)
与方向(AI 算法、AI Agent、LLM 应用等)。面经用于校准该方向的高频考点与追问点,
但它不是题库——追问仍由候选人的回答驱动(SKILL.md §3 第 4 步)。
每个回答闭合后,面试官给出 2–4 句结构化参考答案,然后要求候选人用自己的话复述一遍——
不能"看懂",要"说懂"。照抄参考答案是记忆、换说法补理由才是理解。
参考答案之后的复述证据等级上限 E2,复述时主动补充的新内容才算新增证据(SKILL.md §5.6)。
候选人沉默、反问面试官、主动索要提示——这些情况都有明确应对(SKILL.md §5.5):
- 沉默 → 走降级阶梯,最多再推进 2 个来回后记为负面证据、换题
- 反问 → 区分"澄清型"(正常回答)与"反客为主型"(一句话拉回主动权)
- 索要提示 → 只给范畴提示、不给答案;给过提示的 Claim 证据等级上限 E2
project/ 下每个领域都是带索引的子目录,而不是单个大文件:
先读 project/<领域>/README.md(索引 + 总则)
↓
命中具体主题后再读对应子文件
避免"候选人提了一句 RAG,就把整套知识库全塞进上下文"。
本 Skill 不打分。 打分机制不可靠——一个数字掩盖了证据结构,把"背概念"和"真做过"混进同一个分值。
评估输出的是基于证据的直接反馈与不足,围绕 Candidate/JD.md 定义的 8 个能力维度
(默认见下表,优先级由 JD 决定):
| 维度 | 默认优先级 |
|---|---|
| Project Understanding | 高 |
| Technical Ability | 高 |
| Ownership | 高 |
| Problem Solving | 中高 |
| Thinking Ability | 中 |
| Learning Ability | 中 |
| AI / Industry Awareness | 低 |
| Communication | 低 |
三个关键设计:
- 每个维度只回答三个问题:验证到什么程度(E 级)、具体表现、不足 / 风险
- 有效证据少于 2 条的维度标注"证据不足"——只给观察性反馈,不进入总体判断的支撑
- Ownership 未验证时置信度整体下调——无法证明候选人真正负责过,其余"强表现"都不是"能干活"的证据
- 报告重点输出候选人的潜在问题(只列举不深挖 / 无数据 / 无坑 / 学习型项目等), 每个潜在问题给出坐实它的验证方式
结论只有三档倾向性意见(匹配 / 部分匹配 / 不匹配),不带数字,必须绑定证据。
interview-skill/
├── SKILL.md 编排器入口 + 硬性约束 + 核心决策循环
├── README.md
├── LICENSE MIT
├── .gitignore 忽略简历与运行时状态文件
│
├── Candidate/ 岗位与候选人材料
│ ├── JD.md 岗位要求 + 能力优先级(占位,替换为真实 JD)
│ ├── Resume.example.md 简历模板(入库)
│ ├── Resume.md 真实简历(已 gitignore,不提交)
│ └── Resume.pdf 真实简历 PDF(已 gitignore)
│
├── Interview/ 方法层:怎么面、怎么判
│ ├── Interview Strategy.md 考察优先级(实习/项目/开源/论文/竞赛)
│ ├── Project Interview.md 项目追问规范【权威】
│ ├── evidence.md Claim 类型与 E0–E5 记录格式
│ ├── evaluation.md 证据强度标签、维度反馈、反馈式报告模板(不打分)
│ └── time_budget.md 来回数预算与动态分配
│
└── project/ 知识层:可以问什么(二级按需加载)
├── agent/ Agent 方向(13 个子文件 + 索引)
│ └── README.md 索引 + 总则 + 触发关键词
└── minimind/ LLM / Transformer 方向(12 个子文件 + 索引)
└── README.md
- 在
project/下建子目录,例如project/rag/ - 写一个
README.md,包含子文件索引表(主题 → 文件 → 触发关键词)和该领域的提问总则 - 按主题拆成子文件,不要堆成一个大文件;每个子文件标题编号从
1起连续 - 在
SKILL.md§3.1 的领域索引表里追加一行
领域文件只写"可以问什么",不要在里面规定面试流程或评估标准。
编辑 Candidate/JD.md 的四部分:岗位定位、技术要求、能力优先级、面试时长。
能力优先级最关键——它直接决定追问篇幅和反馈重点(用于分配,不打分)。
Candidate/Resume.md、Candidate/Resume.pdf与运行时interview_state.md均在.gitignore中,不会被提交- 面试过程中禁止询问婚育、年龄、家庭、地域、宗教、健康等与岗位无关的信息
- 不得基于学校、学历、性别、外貌下结论(
SKILL.md§1.3) - 每个关键结论必须能追溯到具体 Evidence
- 领域库只覆盖两个方向:Agent 应用 与 LLM/Transformer(MiniMind 项目)。面其他方向需要先自建领域文件。
- 依赖 Agent 自身能力:不做代码执行、白板或运行环境,Coding 题靠候选人描述思路。
- 简历解析靠 Agent 自身:
.pdf简历依赖 Agent 的 PDF 读取能力,.md更可靠。 - 评估是证据驱动的倾向,不是裁定:证据覆盖不足的维度只给观察性反馈;
Unverified只作待验证假设,不转正负结论。
MIT。使用时可按需修改 LICENSE 中的作者信息。