🎙️面试官说的每一句话,我都想留下来:于是我用 Vibe Coding 做了一个免费的 macOS 面试录音工具

背景

找过工作的人应该都懂:

面试复盘有多重要,复盘就有多难。

一场技术面四五十分钟下来,面试官可能连续问你:

  • Java / JVM
  • MySQL / Redis
  • 项目设计
  • Agent / RAG
  • 场景题
  • 算法题

面试结束以后,你脑子里往往只剩下几个模糊片段:

“刚刚那个问题,我是不是答错了?”

“面试官追问了什么来着?”

“我项目那里是不是讲得特别乱?”

更尴尬的是:

你明明知道这场面试里暴露了很多问题,却已经记不清到底暴露了什么。

于是我想做一件非常简单的事:把面试完整录下来。

然后:

text
复制代码
线上面试 ↓ 完整录音 ↓ Whisper / AI 转录 ↓ 生成面试逐字稿 ↓ ChatGPT ↓ 逐题复盘

让 AI 帮我重新整理:

  • 面试官到底问了什么?
  • 我的原回答是什么?
  • 哪些地方答错了?
  • 哪些地方虽然没错,但表达很差?
  • 一个更好的面试回答应该是什么?
  • 这场面试暴露了哪些知识薄弱点?
  • 下一场面试前应该重点补什么?

想法非常简单。

结果真正到了 Mac 上,我发现:

“把面试官声音 + 自己声音一起录下来”居然没想象中那么省事。

我只是想录个面试,为什么突然开始学虚拟声卡了?

我的需求真的非常朴素:

text
复制代码
面试官的声音 + 我自己的回答 ↓ 一个音频文件

甚至:

我连屏幕都不需要录。

结果调研了一圈以后,发现现有方案大概是这样。

方案一:系统自带录音备忘录

简单是简单。

但很多情况下你最终得到的是:

text
复制代码
✅ 自己的麦克风 ❌ 系统内部声音

也就是说:

你说的话录下来了,面试官的问题没了。

那还复盘什么……


方案二:OBS

OBS 当然非常强。

但第一次打开:

text
复制代码
场景 来源 音频混音器 音轨 编码器 输出 容器

我当时只有一个想法:

我真的只是想录个音。

😂


方案三:BlackHole / 虚拟声卡

这条路线也完全能解决问题。

但很快就变成:

text
复制代码
安装 BlackHole ↓ Audio MIDI Setup ↓ Multi-Output Device ↓ Aggregate Device ↓ 检查 Clock Source ↓ 检查 Drift Correction

我:

“等一下,我不是来准备面试的吗?”


后来我发现了 LoopRec

在调研过程中,我看到了一款让我非常喜欢的软件:

LoopRec。

它真正让我喜欢的不是功能特别多,而是:

功能特别少。

打开以后基本就是:

text
复制代码
系统声音 ON 麦克风 ON 系统声音音量 90% 麦克风音量 100% 开始录音
  • 没有场景。
  • 没有复杂混音台。
  • 没有一堆专业录音参数。

这才是我理解中的:“面试录音工具”。

但它的免费版本存在单次录制时长限制。问题是技术面试这种东西,很难控制时长:

text
复制代码
30 min 45 min 60 min 90 min 120 min

都有可能。

总不能面试进行到一半说:

“面试官您好,我这个录音软件免费额度快到了,要不今天先到这里?”

😂

然后那个非常典型的程序员念头就出现了:要不我自己写一个?

于是 InterviewRec 出现了。

InterviewRec

一句话介绍:

一个免费、开源、原生、轻量的 macOS 面试 / 会议录音工具。

它的工作流程只有:

text
复制代码
Mac 系统声音 ─┐ ├──→ InterviewRec ──→ M4A 麦克风声音 ───┘

系统声音就是:

面试官 / 会议对方的声音。

麦克风就是:

你自己的回答。

录完以后得到:

text
复制代码
InterviewRec-2026-08-28-xxxxxx.m4a

然后你想:

  • 直接回放;
  • 拖进 Whisper;
  • 用本地模型转录;
  • 丢给 ChatGPT;

都可以。


它目前能做什么?

V0.1 的功能我刻意控制得非常克制:

text
复制代码
✅ 录制 Mac 系统声音 ✅ 录制麦克风 ✅ 系统声音 + 麦克风同时录制 ✅ 输出单个 M4A ✅ 不需要 BlackHole ✅ 不需要配置虚拟声卡 ✅ 系统声音 / 麦克风独立开关 ✅ 两路独立录音音量 ✅ 双路实时音量电平 ✅ 选择麦克风设备 ✅ AirPods / USB 麦克风等输入设备 ✅ 自定义保存目录 ✅ 录完直接播放 ✅ Finder 中定位录音文件 ✅ 设置自动保存 ✅ 完全本地运行 ✅ 免费 ✅ MIT 开源

项目当前代码就是围绕“系统声音 + 麦克风 → 单个 M4A”这一目标设计的,没有加入 AI、云端或账号系统。


不需要虚拟声卡

这是我自己最在意的一点。

InterviewRec 直接使用 macOS 的:

ScreenCaptureKit

来获取系统声音和麦克风。

当前实现中:

text
复制代码
ScreenCaptureKit │ ┌─────────────┴─────────────┐ ↓ ↓ System Audio Microphone │ │ └─────────────┬─────────────┘ ↓ PCM Normalize ↓ 48 kHz Float32 ↓ ┌───────────┴──────────┐ ↓ ↓ System Gain Mic Gain │ │ └───────────┬──────────┘ ↓ Mixer ↓ Limiter ↓ AAC ↓ M4A

系统声音和麦克风通过同一个 ScreenCaptureKit Session 获取,最终进入统一的音频处理链路。

所以使用的时候不用:

text
复制代码
BlackHole Soundflower Loopback VB-Cable

也不会为了录音去修改你的系统默认输出设备。

代码中也使用了 excludesCurrentProcessAudio,避免把 InterviewRec 自己产生的声音再次抓进录音链路。

对普通用户来说,最终感知应该只有:

text
复制代码
安装 ↓ 授权 ↓ 选择麦克风 ↓ 开始录音

真正的原生 macOS App

我没有使用:

text
复制代码
Electron WebView Tauri Flutter

整个项目技术栈非常简单:

text
复制代码
Swift 6 + SwiftUI + ScreenCaptureKit + AVFoundation

目前平台范围也砍得很直接:

text
复制代码
macOS 15 Sequoia+ Apple Silicon Only

支持:

text
复制代码
M1 M2 M3 M4 M5

不考虑 Intel。

不考虑 Rosetta。

因为这是一个我自己真正要用的小工具:

与其为了兼容所有机器把第一版做复杂,不如先把自己的核心场景做好。

UI也十分简洁:

Vibe Coding

这个项目还有一个很有意思的地方:它基本是靠 Vibe Coding 做出来的

InterviewRec 本身其实也是我的一次实验:

现在的大模型,到底能不能从 0 做出一个真正能使用的 macOS 原生工具?

但我没有采用:

text
复制代码
“帮我写一个录音软件”

然后坐等 AI 吐完整项目的方式。而是真正按照软件开发流程来做的。

第一步:先做需求,而不是先写代码

我先把 V0.1 需求收缩成一句话:

系统声音 + 麦克风 → 单个 M4A。

然后把边界冻结:

text
复制代码
macOS 15+ Apple Silicon 只录音 不录屏 不联网 不做 AI 不做后端

这一步看起来没有写一行代码。

但后来回头看:

它可能是整个项目最重要的一步。

因为 Vibe Coding 特别容易出现:

“既然 AI 写代码不要钱,那不如全加上。”

结果 Scope 直接爆炸。


第二步:先写 Design,再让 Agent 开始干活

项目现在不是只有源码。

还专门保留了:

text
复制代码
docs/ ├── DESIGN.md ├── PLAN.md └── TESTING.md

DESIGN.md 回答:

这个软件怎么实现?

PLAN.md 回答:

Agent 应该按照什么顺序实现?

TESTING.md 回答:

你怎么证明这个东西真的能用?

这和:

text
复制代码
Prompt ↓ 疯狂生成代码 ↓ 能编译 ↓ 宣布完成

完全是两回事。


第三步:把系统拆成 Agent 能理解的小模块

现在项目里的音频核心大概是:

text
复制代码
AudioFrame PCMBufferReader PCMConverter GainProcessor AudioMixer AudioLimiter AudioLevelMeter RecordingWriter ScreenCaptureAudioService RecordingEngine

而不是:

text
复制代码
RecordingManager.swift 3000 行

😂

例如:

GainProcessor

就只负责:

数字增益。

AudioMixer

就只负责:

合并音频。

AudioLevelMeter

就只负责:

音量计算。

RecordingWriter

就只负责:

PCM → AAC/M4A。

我现在越来越觉得:

好的架构不仅方便人维护,也非常方便 Coding Agent 工作。

你告诉 Codex:

“修 AudioMixer。”

它只需要理解一个明确的小模块。

而不是每次把整个项目重新读一遍。


第四步:不要相信 AI 说“已经完成”

这可能是这次 Vibe Coding 给我最大的体会。

Coding Agent 特别喜欢说:

“Implementation complete.”

但软件工程真正重要的是:测试。

所以我给核心音频 Pipeline 做了自动化测试。

目前覆盖了:

text
复制代码
GainProcessor AudioMixer AudioLimiter AudioLevelMeter PCMConverter RecordingWriter RecordingState Settings FileNaming

比如 Mixer 测试会真正验证:

text
复制代码
System Audio + Microphone ↓ 混音结果

还做了:

text
复制代码
Synthetic System Tone + Synthetic Mic Tone ↓ Mixer ↓ AAC / M4A ↓ 重新读取生成文件 ↓ 检查两种声音是否都还存在

以及不同麦克风输入格式的转换测试。


MVP思维

这个项目目前仍然是:

V0.1。

我现在尤其关注:

text
复制代码
30~120 分钟真实长录 不同采样率设备的长期同步 Writer Backpressure 异常中断 麦克风热插拔 Crash Recovery 分段保存

这些属于下一阶段要继续重点验证和改进的内容。

当前仓库里也明确把:

完整崩溃恢复 / segment recording

留到了 V0.2。

我觉得开源项目没必要一上来就吹:

“完美、稳定、工业级。”

反而应该告诉大家:

哪里已经做了,哪里还在继续验证。

Issue 和 PR 本来就是开源的一部分。


隐私方面

InterviewRec 当前:

text
复制代码
不联网 不上传 无账号 无服务器 无埋点 无广告

所有录音文件只保存在:

你自己选择的本地目录。

默认:

text
复制代码
~/Music/InterviewRec/

毕竟:

技术面试录音本身就是非常敏感的数据。

如果一个纯录音工具还要求我:

text
复制代码
登录 上传 同步 注册账号

那反而不是我想要的东西。


对 Vibe Coding 的理解

以前大家讲 Vibe Coding:

“一句话生成一个网站。”

但真正把 InterviewRec 做下来以后,我越来越觉得,一个更靠谱的流程应该是:

text
复制代码
Idea ↓ Requirements ↓ Design ↓ Implementation Plan ↓ Coding ↓ Tests ↓ Manual Verification ↓ 迭代

AI 并不是:

让软件工程消失。

而是:让软件工程的每一步都变快。

需求可以和 AI 一起讨论。

架构可以让 AI Review。

实施计划可以让 Agent 拆。

代码可以交给 Codex。

测试可以交给 Agent 补。

Bug 可以让 Agent Debug。

文档可以自动维护。

但最终:

方向、取舍和验收,还是得由人负责。

至少这是我做 InterviewRec 最大的感受。


我自己最终准备怎么使用它?

其实 InterviewRec 只是整个工作流的第一步。

真正让我觉得它有价值的是:

text
复制代码
腾讯会议 / Zoom / 飞书 ↓ InterviewRec ↓ interview.m4a ↓ Whisper ↓ interview.md ↓ ChatGPT

然后把逐字稿交给 AI:

text
复制代码
请根据这份技术面试逐字稿: 1. 按时间顺序整理面试官所有问题 2. 还原我的回答 3. 对每个回答进行评价 4. 找出错误、遗漏和表达问题 5. 给出更好的面试标准答案 6. 总结这场面试暴露出的知识薄弱点 7. 给出下一轮复习优先级

最后,代码开源

项目地址:⭐ InterviewRec

GitHub:https://github.com/sz-xiaohuolong/InterviewRec

目前:

text
复制代码
📌 macOS 15 Sequoia+ 📌 Apple Silicon 📌 Swift 6 + SwiftUI 📌 ScreenCaptureKit 📌 AVFoundation 📌 MIT License 📌 免费 📌 完全开源 📌 完全本地 📌 无会员 📌 无服务器 📌 无广告

如果你也是:

  • 准备秋招 / 春招;
  • 找实习;
  • 准备跳槽;
  • 经常参加线上技术面;
  • 需要录线上会议;
  • 想用 AI 复盘自己的表达;

欢迎拿去用。


如果这个小工具刚好解决了你的问题

欢迎:

点一个 Star ⭐

也欢迎:

text
复制代码
Issue PR Bug Report Feature Suggestion

尤其欢迎帮我测试:

  • AirPods
  • USB 麦克风
  • 腾讯会议
  • Zoom
  • 飞书
  • Teams
  • 不同型号 Apple Silicon Mac
  • 长时间录音

一个开源小工具最有价值的地方,就是:一个人的需求,最后可能刚好解决了一群人的问题。

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
小火龙
下载 APP