Skip to content

Repository files navigation

AI Interview Workspace

这个工作区包含两个相互配合的项目:

目录 作用
InterviewRadar/ 面试情报与备考包生成工作流。它读取简历、岗位方向、公司/JD 信息和补充附件,再通过真实面经、公司公开资料和项目锚定生成中文备考包。
interview-radar-web/ Next.js 面试练习前端与本地后端。它提供登录、简历上传、面试会话、语音输入输出、Codex 面试官追问、复盘和重开分支能力。

快速启动

Docker 部署

推荐用 Docker Compose 部署整个 monorepo。镜像会包含 Web 应用、InterviewRadar/ 工作流、Python 依赖和 Codex CLI;运行时数据会挂载到 Docker volume,不会写进镜像。

前置条件:

  • Docker / Docker Compose
  • Codex 认证二选一:
    • 宿主机已执行过 codex login,并存在 ~/.codex
    • 或启动时提供 OPENAI_API_KEY

启动:

git clone https://github.com/mathieu0905/ai_interview.git
cd ai_interview

# 如果宿主机已有 ~/.codex:
test -d "$HOME/.codex"
docker compose -f docker-compose.yml -f docker-compose.codex-login.yml up --build

# 或者使用 API key:
OPENAI_API_KEY=sk-... docker compose up --build

打开 http://localhost:3000

如果本机 30008766 端口已被占用,可以改宿主机端口:

HOST_WEB_PORT=3100 HOST_SHERPA_WS_PORT=8876 docker compose -f docker-compose.yml -f docker-compose.codex-login.yml up --build

此时打开 http://localhost:3100

默认挂载:

路径 用途
interview-radar-data volume Web 运行数据、SQLite、简历、会话、Codex 日志
interview-radar-corpus volume InterviewRadar/corpus_cache 运行产物
${HOME}/.codex:/host-codex:ro 可选,只读复用宿主机 Codex 登录态
/app/interview-radar-web/.data/codex-home 容器内可写 Codex home,位于 interview-radar-data volume
./interview-radar-web/models:/app/interview-radar-web/models 可选 Sherpa-ONNX 本地 ASR 模型

注意: 不要把宿主机 ${HOME}/.codex 直接可写挂载到容器的 /root/.codex。容器默认以 root 运行,直接可写挂载会在宿主机留下 root-owned 的 Codex 临时文件,之后本机执行 codex 可能出现 failed to clean up stale arg0 temp dirs: Permission denied

如果已经遇到这个问题,先退出本机正在运行的 codex,再删除 root-owned 的 stale 目录,或把 Codex 目录权限修回当前用户:

docker run --rm -v "$HOME/.codex/tmp/arg0:/mnt" alpine sh -c 'find /mnt -maxdepth 1 -type d -name "codex-arg0*" -user root -exec rm -rf {} +'
# 或者
docker run --rm -v "$HOME/.codex:/codex" alpine sh -c "chown -R $(id -u):$(id -g) /codex"

常用命令:

docker compose logs -f
docker compose down
docker compose down -v   # 同时删除本地面试数据,谨慎使用

语音与 OCR 说明:

  • 普通 TTS 依赖已装入镜像。
  • Docker 默认镜像不安装本地 ASR / OCR 重包,优先保证普通文字 PDF 简历和 Codex 面试流程开箱可用。
  • 如果要在容器里使用 faster-whisper、Sherpa-ONNX 或 RapidOCR,把 docker/python-requirements.txt 里对应依赖取消注释后重新 build。
  • Sherpa-ONNX 模型文件不打进镜像;需要把模型放到 interview-radar-web/models/ 后再使用 Sherpa WebSocket ASR。

本地开发

1. 准备 InterviewRadar

cd InterviewRadar
python3 -m venv .venv
.venv/bin/python -m pip install -U pip
.venv/bin/python -m pip install -r requirements.txt

2. 启动 Web 面试台

cd ../interview-radar-web
npm install
npm run dev

打开 http://localhost:3000

默认情况下 Web 项目会调用本地 codex 命令,并把 ../InterviewRadar 作为备考包生成目录。需要改路径时设置:

INTERVIEW_RADAR_DIR=/absolute/path/to/InterviewRadar npm run dev

数据流

  1. 用户在 Web 端注册/登录。
  2. 上传简历、填写岗位、公司、JD 和面试配置。
  3. Web 后端把会话文件写入 interview-radar-web/.data/users/<user-id>/sessions/<session-id>/
  4. Web 后端启动 Codex,让它在 InterviewRadar/ 中按 SKILL.md 生成备考包。
  5. 备考包、公司研究、候选人评估和每轮问答都会复制或追加到对应 session 目录。
  6. 前端通过轮询或 NDJSON stream 展示面试官思考进度、追问、评分和复盘。

隐私与脱敏

本工作区会处理简历、JD、公司材料、语音片段、面试回答、Codex 事件日志和本地 SQLite 用户库。已在根目录和两个子项目中补充 .gitignore,默认忽略:

  • .data/corpus_cache/uploads/sessions/ 等运行时数据目录
  • 简历、音频、转写、备考包、公司研究、候选人评估、Codex 日志
  • .env*、cookie/session/token/key/pem 等密钥文件
  • 本地模型、虚拟环境、构建产物、缓存、数据库和日志

注意: .gitignore 只阻止后续新增文件入库,不会自动移除已经被 Git 跟踪的敏感文件。检查方式:

git status --short
git ls-files | rg '(^|/)(\\.data|corpus_cache|.*\\.(pdf|docx|wav|mp3|sqlite)|.*(token|cookie|secret|password|credential).*)'

详细说明

  • InterviewRadar/README.md: 面试情报工作流说明
  • InterviewRadar/SKILL.md: Agent 执行入口
  • interview-radar-web/README.md: Web 项目使用说明

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages