Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Interview Skill

一个给 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 目录)使用。

跑第一场面试

  1. 复制简历模板并填入真实简历:

    cp Candidate/Resume.example.md Candidate/Resume.md

    Candidate/Resume.md / Candidate/Resume.pdf 已在 .gitignore 中,永远不会被提交。 简历含个人信息,请勿 push 到公开仓库。

  2. 把岗位要求填入 Candidate/JD.md(岗位定位 / 技术要求 / 能力优先级 / 面试时长)。

  3. 对你的 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 步,然后收手

  1. 换角度复述同一问题
  2. 缩小到具体子环节
  3. 给出具体选项让其判断取舍
  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

扩展

加一个新的技术领域

  1. project/ 下建子目录,例如 project/rag/
  2. 写一个 README.md,包含子文件索引表(主题 → 文件 → 触发关键词)和该领域的提问总则
  3. 按主题拆成子文件,不要堆成一个大文件;每个子文件标题编号从 1 起连续
  4. SKILL.md §3.1 的领域索引表里追加一行

领域文件只写"可以问什么",不要在里面规定面试流程或评估标准。

换岗位 / 换 JD

编辑 Candidate/JD.md 的四部分:岗位定位、技术要求、能力优先级、面试时长。

能力优先级最关键——它直接决定追问篇幅和反馈重点(用于分配,不打分)。


隐私与合规

  • Candidate/Resume.mdCandidate/Resume.pdf 与运行时 interview_state.md 均在 .gitignore 中,不会被提交
  • 面试过程中禁止询问婚育、年龄、家庭、地域、宗教、健康等与岗位无关的信息
  • 不得基于学校、学历、性别、外貌下结论(SKILL.md §1.3)
  • 每个关键结论必须能追溯到具体 Evidence

已知边界

  • 领域库只覆盖两个方向:Agent 应用 与 LLM/Transformer(MiniMind 项目)。面其他方向需要先自建领域文件。
  • 依赖 Agent 自身能力:不做代码执行、白板或运行环境,Coding 题靠候选人描述思路。
  • 简历解析靠 Agent 自身.pdf 简历依赖 Agent 的 PDF 读取能力,.md 更可靠。
  • 评估是证据驱动的倾向,不是裁定:证据覆盖不足的维度只给观察性反馈;Unverified 只作待验证假设,不转正负结论。

License

MIT。使用时可按需修改 LICENSE 中的作者信息。

About

面试skill,加入JD,放入你的简历

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors