🎯 免费、开源、可自定义 AI 的面试辅助与笔试辅助工具
基于浏览器原生能力,支持接入你自己的 AI API Key;可本地使用,也可登录后同步简历库、知识库、面试记录和复盘。
- 实时语音识别:利用浏览器 Web Speech API,实时将面试官语音转为文字
- 实时 ASR Gateway:支持服务端 WebSocket 接入豆包/讯飞/阿里,系统音频识别延迟更低,详见 实时 ASR Gateway 优化说明
- 远程同步资料库:登录后可同步简历库、专家库、面试记录和复盘,详见 Supabase 同步与简历解析说明
- AI 自动解答:识别到问题后自动发送给你的 AI,流式输出专业解答
- 上下文关联:支持多轮对话上下文(最多5轮),追问也能准确回答
- 手动编辑:支持手动输入/编辑问题,灵活应对各种场景
- 一键截图:使用浏览器屏幕共享 API 快速截屏
- 拖拽上传:支持拖拽、粘贴、文件选择等多种图片上传方式
- AI 视觉识别:将截图发送给视觉 AI 模型,自动识别题目并解答
- 多题型支持:代码题、选择题、读图题、逻辑推理题、英语题
- 批量历史:截图和解答自动保存,支持回溯查看
- 多 Provider 支持:OpenAI / Anthropic / 自定义兼容接口
- API Key 自由:使用你自己的 Key;AI 请求只发送到你配置的模型服务
- 模型自由选择:文本模型 + 视觉模型独立配置
- Prompt 自定义:面试和笔试场景使用不同的 System Prompt
- 流式响应:支持 SSE 流式输出,打字机效果
- 连接测试:一键测试 AI 连接是否正常
- 本地优先:未登录时数据存储在浏览器 localStorage
- 可选同步:登录后简历库、知识库、面试项目和复盘同步到 Supabase
- Key 混淆加密:API Key 经过混淆处理后再存储
- 可控同步:同步仅用于跨设备继续使用,核心模型 Key 仍由你自己配置
- Node.js >= 18
- pnpm(推荐)或 npm
# 克隆项目
git clone https://github.com/xiqing21/interviewdog-free.git
cd interviewdog-free
# 安装依赖
pnpm install
# 启动开发服务器
pnpm dev
# 构建生产版本
pnpm build- 打开应用后,点击左侧「设置」
- 选择你的 AI Provider(OpenAI / Anthropic / 自定义)
- 填入你的 API Key
- 填入 Base URL(使用默认或自定义代理地址)
- 配置文本模型和视觉模型
- 点击「测试连接」确认配置正确
| Provider | 默认 Base URL | 默认文本模型 | 默认视觉模型 |
|---|---|---|---|
| OpenAI | https://api.openai.com/v1 |
gpt-4o | gpt-4o |
| Anthropic | https://api.anthropic.com/v1 |
claude-sonnet-4-20250514 | claude-sonnet-4-20250514 |
| 自定义 | 自行填写 | 自行填写 | 自行填写 |
💡 支持任何兼容 OpenAI Chat Completions API 格式的服务,包括国内的各种 API 中转站。
| 技术 | 用途 |
|---|---|
| React 18 + TypeScript | 前端框架 |
| Vite 5 | 构建工具 |
| MUI 5 | UI 组件库 |
| Tailwind CSS 3 | 样式工具 |
| React Router 6 | 路由管理 |
| react-markdown + highlight.js | Markdown 渲染与代码高亮 |
| Web Speech API | 语音识别(浏览器原生) |
| getDisplayMedia | 屏幕截图(浏览器原生) |
interviewdog-free/
├── index.html
├── package.json
├── vite.config.ts
├── tsconfig.json
├── tailwind.config.ts
├── src/
│ ├── main.tsx # 应用入口
│ ├── App.tsx # 根组件(路由 + Provider 嵌套)
│ ├── types/index.ts # 全局 TypeScript 类型定义
│ ├── constants/index.ts # 常量配置
│ ├── styles/
│ │ ├── globals.css # 全局样式 + Tailwind 指令
│ │ └── theme.ts # MUI 主题(暗色/亮色)
│ ├── services/
│ │ ├── aiService.ts # AI API 调用(OpenAI 兼容格式)
│ │ ├── speechService.ts # Web Speech API 语音识别封装
│ │ ├── captureService.ts # 屏幕截图封装
│ │ ├── storageService.ts # localStorage 读写抽象
│ │ └── cryptoService.ts # API Key 混淆/还原
│ ├── context/
│ │ ├── SettingsContext.tsx # AI 设置 + 应用设置状态
│ │ ├── InterviewContext.tsx # 面试辅助状态
│ │ └── ExamContext.tsx # 笔试辅助状态
│ ├── hooks/
│ │ ├── useSettings.ts
│ │ ├── useInterview.ts
│ │ ├── useExam.ts
│ │ ├── useTheme.ts
│ │ └── useHotkeys.ts # 全局快捷键
│ └── components/
│ ├── layout/ # 布局组件(Sidebar/TopBar/BottomBar)
│ ├── interview/ # 面试辅助组件(语音/问答/历史)
│ ├── exam/ # 笔试辅助组件(截图/题型/解答)
│ ├── settings/ # 设置组件(Provider/模型/Prompt)
│ └── common/ # 通用组件(Markdown/复制/状态/隐私)
└── prd.md # 产品需求文档
| 快捷键 | 功能 |
|---|---|
Ctrl + Shift + S |
截图(笔试模式) |
Ctrl + Shift + ↑ |
滚动答案上滚 |
Ctrl + Shift + ↓ |
滚动答案下滚 |
Ctrl + Shift + M |
切换面试/笔试模式 |
MIT License
本工具仅供学习和技术研究使用。使用者应遵守相关法律法规,不得将本工具用于任何违法违规用途。使用本工具产生的一切后果由使用者自行承担。