Skip to content

peng-yin/interview-agent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AI 语音技术面试官

基于 LiveKit 实时音频框架的 AI 语音模拟面试平台。通过 SiliconFlow 提供的 DeepSeek-V3(LLM)、SenseVoiceSmall(语音识别)和 CosyVoice2(语音合成),结合 RAG 知识库检索,实现沉浸式的中文语音技术面试体验。

页面预览

首页 - 双入口 快速体验 - 面试配置
首页 快速配置
招聘者管理面板 候选人面试入口
招聘者面板 候选人入口
面试房间(实时语音 + 转录) 面试评估报告
面试房间 面试报告
招聘者查看报告 候选人面试完成
招聘者报告 面试完成

功能特性

  • 双使用模式
    • 快速体验模式:无需注册,直接选择岗位和难度即可开始面试,报告基于 sessionStorage 展示
    • 招聘者模式:创建面试 → 生成候选人专属链接 → 候选人填写信息加入 → 招聘者查看报告,数据持久化到 SQLite
  • 语音实时对话:基于 WebRTC 的低延迟语音通信,支持 VAD 端点检测
  • 实时语音转录:面试过程中 AI 面试官和候选人的语音实时转为文字,打字机效果逐字显示,支持自动滚动
  • 三大岗位:前端工程师 / 后端工程师 / 全栈工程师
  • 三级难度:初级(1-3年)/ 中级(3-5年)/ 高级(5年+)
  • 自定义面试时长:招聘者模式支持 5-60 分钟自定义时长,面试进度条实时展示
  • 简历针对性提问:支持粘贴简历文本或上传简历文件(PDF / DOCX),AI 面试官会根据简历内容进行追问
  • 简历文件解析:支持拖拽上传或点击上传 PDF、DOCX 格式简历,自动提取文本内容
  • RAG 知识库:ChromaDB + bge-large-zh-v1.5 向量检索,覆盖 34 道面试真题(前端 17 / 后端 10 / 全栈 4 / 通用 3)
  • 结构化评估报告:面试结束后自动生成包含 4 维评分(技术能力、沟通表达、项目经验、问题解决)、亮点、改进点、推荐等级的报告
  • 多种结束方式:点击按钮 / 超时自动结束 / 语音说"结束面试"
  • 报告管理:支持导出报告(TXT)、复制摘要、招聘者面板查看历史报告
  • 候选人管理:招聘者可创建 / 查看 / 删除面试,面试列表实时刷新状态(等待 / 进行中 / 已完成 / 已过期)

技术栈

层级 技术
前端 Next.js 15 + React 19 + Tailwind CSS 3
实时通信 LiveKit Server + @livekit/components-react
Agent @livekit/agents (Node.js 22) + Voice Agent Pipeline
语音识别 SenseVoiceSmall(SiliconFlow)
大语言模型 DeepSeek-V3(SiliconFlow)
语音合成 CosyVoice2-0.5B(SiliconFlow)
向量数据库 ChromaDB + bge-large-zh-v1.5
业务数据库 SQLite(better-sqlite3,WAL 模式)
容器编排 Docker Compose

项目结构

interview-agent/
├── frontend/                       # Next.js 前端
│   ├── src/
│   │   ├── app/
│   │   │   ├── page.tsx                # 首页(招聘者入口 + 快速体验双入口)
│   │   │   ├── quick/page.tsx          # 快速体验:岗位/难度选择 + 简历上传
│   │   │   ├── interview/page.tsx      # 快速体验面试房间
│   │   │   ├── report/page.tsx         # 快速体验面试报告(sessionStorage)
│   │   │   ├── recruiter/
│   │   │   │   ├── page.tsx            # 招聘者管理面板(创建/列表/删除)
│   │   │   │   └── report/[id]/page.tsx # 招聘者查看报告
│   │   │   ├── c/[id]/
│   │   │   │   ├── page.tsx            # 候选人信息填写页
│   │   │   │   ├── interview/page.tsx  # 候选人面试房间
│   │   │   │   └── complete/page.tsx   # 面试完成感谢页
│   │   │   └── api/
│   │   │       ├── token/route.ts         # Token 生成 + Agent 调度
│   │   │       ├── interviews/route.ts    # 面试列表/创建 API
│   │   │       ├── interviews/[id]/route.ts # 面试详情/更新/删除 API
│   │   │       └── upload-resume/route.ts # 简历文件解析 API
│   │   ├── components/
│   │   │   └── InterviewRoom.tsx       # 面试房间核心组件
│   │   ├── lib/
│   │   │   ├── db.ts                   # SQLite 数据库操作
│   │   │   └── constants.ts            # 共享常量
│   │   └── types/
│   └── .env.local
├── agent/                          # LiveKit Agent
│   ├── src/
│   │   ├── main.ts                     # Agent 入口 + 报告生成
│   │   ├── interview-agent.ts          # 面试 Agent 逻辑(RAG + 结束检测)
│   │   ├── prompts/
│   │   │   └── interviewer.ts          # 面试官提示词
│   │   ├── rag/
│   │   │   ├── knowledge-base.ts       # ChromaDB 检索
│   │   │   └── embeddings.ts           # 向量嵌入
│   │   ├── scripts/
│   │   │   └── index-knowledge.ts      # 题库索引脚本
│   │   └── knowledge/                  # 面试题库 JSON
│   └── .env.local
├── docker-compose.yml              # 服务编排(4 个服务)
├── livekit.yaml                    # LiveKit Server 配置
├── .env                            # Docker Compose 环境变量
└── DESIGN.md                       # 详细系统设计文档

快速开始

前置要求

  • Node.js >= 22
  • Docker & Docker Compose
  • SiliconFlow API Key(申请地址

1. 配置环境变量

# 项目根目录 .env(Docker Compose 使用)
cp .env.example .env
# 编辑 .env,填入你的 SILICONFLOW_API_KEY

# Agent 环境变量
cp agent/.env.local.example agent/.env.local
# 编辑 agent/.env.local,填入你的 SILICONFLOW_API_KEY

# 前端环境变量(本地开发用,默认值即可)
cp frontend/.env.local.example frontend/.env.local

2. 启动基础服务

# 启动 LiveKit Server + ChromaDB
docker-compose up -d livekit-server chromadb

3. 索引面试题库(可选,启用 RAG 需要)

cd agent
npm install
npm run index-knowledge

4. 启动 Agent

cd agent
npm install
npm run dev

5. 启动前端

cd frontend
npm install
npm run dev

访问 http://localhost:3000 开始面试。

Docker Compose 一键部署

# 配置 .env 后一键启动所有服务
docker-compose up -d
服务 端口 说明
frontend 3000 Next.js 前端
livekit-server 7880 LiveKit WebSocket
chromadb 8000 向量数据库
agent - 面试 Agent(无端口暴露)

使用流程

快速体验模式

  1. 首页点击"快速体验"
  2. 输入名字,选择岗位和难度
  3. (可选)粘贴简历文本或上传 PDF / DOCX 简历文件
  4. 点击"开始面试",允许麦克风权限
  5. AI 面试官通过语音交流,按面试流程推进
  6. 点击"结束面试"或说"结束面试"结束
  7. 查看结构化面试评估报告,支持导出和复制

招聘者模式

  1. 首页点击"招聘者入口"进入管理面板
  2. 点击"创建面试",选择岗位、难度、时长,可上传候选人简历
  3. 复制生成的面试链接,发送给候选人
  4. 候选人打开链接,填写姓名和邮箱后加入面试
  5. 面试结束后,招聘者在管理面板查看报告,支持导出和复制摘要

系统设计

详见 DESIGN.md

About

AI 语音技术面试官

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages