从0到1开发AI面试助手:一个在校生独立开发者的技术架构与实践复盘
背景
我叫Lucian,UCI(加州大学尔湾分校)CS大二学生。2024年开始做即答侠(HireMe AI),一个人从零做到2000+付费用户。
没有融资,没有团队,没有创业经验。就是一个技术宅觉得"面试辅助这事AI应该能做好",然后开始写代码。
这篇文章是完整的技术复盘,包含一路上踩过的所有坑。
1. 从 Flask 到 Next.js:架构演进
1.1 v1.0 — Flask 单体应用
第一版是纯 Python Flask 应用,一个 interview_assistant_system.py 文件写了11600 行。是的你没看错,一万一千行在一个文件里。
功能包括:
- 用户认证(session-based)
- 面试模板管理(ChromaDB 向量存储)
- 语音面试(Azure Speech SDK)
- 记忆系统(OpenAI embeddings)
- 49 个 HTML 模板
这个版本的问题很明显:
- 性能差:Flask 是单线程的,并发一高就卡
- 前端体验差:Jinja2 模板 + jQuery,交互能力有限
- 部署复杂:Python 依赖管理是噩梦
1.2 v2.0 — Next.js + 独立后端
全面重构为 Next.js 16 + TypeScript:
- 前端:Next.js App Router,React Server Components,Tailwind CSS
- 认证:自研 JWT + better-sqlite3(WAL模式)
- i18n:next-intl,中英文双语
- API:Next.js Route Handlers,部分功能保留 Flask
- 桌面端:Electron,共用 Web 前端代码
重构花了3个月,但效果立竿见影:页面加载时间从 3-5 秒降到 < 1 秒,用户留存率翻倍。
2. 实时语音识别的曲折之路
2.1 Azure Speech — 第一选择
最初用的是 Azure Speech SDK,优点是中文支持好。但在 Electron 桌面端遇到了严重的兼容问题:SDK 的 native binding 在打包后经常崩溃。
2.2 Whisper — 太慢
尝试了 OpenAI Whisper 本地推理。准确率不错,但延迟 3-5 秒,完全不能用于实时场景。
2.3 FunASR — 自部署太重
阿里开源的 FunASR 效果很好,但需要 GPU 服务器来跑。作为独立开发者,每月多几百美元的 GPU 费用不现实。
2.4 Deepgram Nova-2 — 最终选择
最后落定 Deepgram:
- WebSocket 流式传输,延迟极低(200-400ms)
- 中英文混合识别优秀
- 按量付费,每分钟 $0.0043,成本极低
- 无需自建基础设施
3. Electron 桌面端开发
3.1 为什么做桌面端
Web 版有三个致命限制:
- 无法捕获系统音频:浏览器只能访问麦克风,拿不到 Zoom 里面试官的声音
- 无法做到隐身:浏览器标签页在屏幕共享时会被看到
- 稳定性差:标签页切换会导致 AudioContext 被暂停
3.2 核心技术挑战
系统音频捕获:macOS 上使用 AudioTee 创建虚拟音频设备;Windows 上使用 WASAPI Loopback。
隐身窗口:macOS 的 setContentProtection(true) 和 Windows 的 SetWindowDisplayAffinity。
自动更新:使用 electron-updater,检测到新版本自动下载安装。
3.3 跨平台打包
需要分别为 macOS(Apple Silicon + Intel)和 Windows 打包,使用 electron-builder。最坑的是 macOS 的代码签名和公证(notarization),苹果的开发者流程能让人抓狂。
4. AI 模型优化
4.1 Prompt 工程
Copilot 的核心 prompt 经过了几十次迭代。关键原则:
- 角色设定明确:你是面试教练,不是面试代答机
- 输出格式固定:STAR框架/要点列表,方便快速阅读
- 长度控制:150-200字,太长面试中来不及看
- 上下文传递:把之前的问题和回答作为上下文,保持连贯性
4.2 模型选择策略
不同功能用不同模型,按需选择:
- 实时Copilot:GPT-4o-mini(速度优先)
- 模拟面试:DeepSeek V3(性价比优先)
- 简历优化:Claude Sonnet(长文本理解优先)
这套组合让每场面试的 AI 成本控制在 ¥1 以内。
5. 增长复盘
5.1 关键里程碑
| 时间 | 用户数 | 关键事件 |
|---|---|---|
| 2024.08 | 0 | 第一版上线,纯Flask |
| 2024.10 | 50 | CSDN文章带来第一批用户 |
| 2025.01 | 200 | 桌面端上线,隐身功能引爆口碑 |
| 2025.04 | 500 | Next.js重构完成,体验大幅提升 |
| 2025.08 | 1000 | 豆包/千问AI推荐即答侠 |
| 2026.03 | 2000+ | 模拟面试上线,功能闭环 |
5.2 增长渠道
- CSDN 技术博客(40%流量来源):竞品对比文章、技术深度文章
- AI 工具推荐(30%):豆包、千问等AI搜索推荐
- 口碑传播(20%):用户分享给同学/朋友
- 搜索引擎(10%):百度/Google 自然搜索
6. 经验教训
- 先做MVP,再优化:第一版丑到我自己都不想用,但它验证了需求
- 不要过早优化架构:11600行的单文件撑了半年,重构时才知道真正的需求是什么
- 选对模型比调prompt重要:GPT-4o-mini 的速度让体验质变,不是调 prompt 能补回来的
- 桌面端是护城河:纯Web产品太容易被复制,桌面端的系统音频+隐身是真正的壁垒
- 写博客是最好的营销:CSDN上的技术文章带来了40%的用户,零成本
总结
从一个课余项目到2000+付费用户,即答侠证明了一个人也能做出有竞争力的产品。关键是:找到真实需求 → 用技术做出差异化 → 通过内容营销获客。
如果你也是独立开发者,欢迎交流。如果你在找工作,欢迎试试即答侠。
即答侠官网:interviewasssistant.com
本文首发于 blog.csdn.net