本项目为付费编程面试平台提供了强大的替代方案。它以免费开源的形式提供了付费面试准备工具的核心功能。使用您自己的OpenAI API密钥,您可以访问AI驱动的问题分析、解决方案生成和调试辅助等高级功能——所有操作都在您的本地机器上运行。
项目初衷
最好的编程面试工具往往价格昂贵,让许多学生和求职者望而却步。本项目提供了同样强大的功能,却无需支付高昂费用,让您能够:
-
• 使用自己的API密钥(只为实际使用付费) -
• 在本地机器上运行,确保完全隐私 -
• 根据个人需求进行自定义 -
• 学习并贡献于开源工具
自定义可能性
代码库设计灵活,可适应多种需求:
-
• AI模型:虽然目前使用OpenAI的模型,但您可以修改代码以集成其他提供商的模型,如Claude、Deepseek、Llama或任何具有API的模型。所有集成代码位于 electron/ProcessingHelper.ts
,UI设置位于src/components/Settings/SettingsDialog.tsx
。 -
• 语言:添加对更多编程语言的支持 -
• 功能:扩展新功能 -
• 界面:根据偏好自定义界面
只需具备基本的JavaScript/TypeScript知识和对目标API的理解即可实现。
功能亮点
-
• 🎯 99%隐形:无法检测的窗口,可绕过大多数屏幕捕捉方法 -
• 📸 智能截图捕捉:分别捕捉问题文本和代码以获得更好分析 -
• 🤖 AI驱动分析:使用GPT-4o自动提取并分析编程问题 -
• 💡 解决方案生成:获取详细解释和时间/空间复杂度分析的解决方案 -
• 🔧 实时调试:通过AI辅助和结构化反馈调试代码 -
• 🎨 高级窗口管理:自由移动、调整大小、改变透明度和缩放窗口 -
• 🔄 模型选择:为不同处理阶段选择GPT-4o或GPT-4o-mini -
• 🔒 隐私优先:您的API密钥和数据除OpenAI API调用外不会离开您的计算机
全局快捷键
应用程序使用无法识别的全局键盘快捷键,不会被浏览器或其他应用检测:
-
• 切换窗口可见性:[Control或Cmd + B] -
• 移动窗口:[Control或Cmd + 方向键] -
• 截图:[Control或Cmd + H] -
• 删除最后一张截图:[Control或Cmd + L] -
• 处理截图:[Control或Cmd + Enter] -
• 开始新问题:[Control或Cmd + R] -
• 退出:[Control或Cmd + Q] -
• 降低透明度:[Control或Cmd + [] -
• 增加透明度:[Control或Cmd + ]] -
• 缩小:[Control或Cmd + -] -
• 重置缩放:[Control或Cmd + 0] -
• 放大:[Control或Cmd + =]
隐形兼容性
应用程序对以下情况隐形:
-
• Zoom 6.1.6及以下版本 -
• 所有基于浏览器的屏幕录制软件 -
• 所有版本的Discord -
• Mac OS截图功能(Command + Shift + 3/4)
注意:应用程序不对以下情况隐形:
-
• Zoom 6.1.6及以上版本 -
• https://zoom.en.uptodown.com/mac/versions (如需降级Zoom的链接) -
• Mac OS原生屏幕录制(Command + Shift + 5)
系统要求
-
• Node.js(v16或更高) -
• npm或bun包管理器 -
• OpenAI API密钥 -
• 终端/IDE的屏幕录制权限 -
• macOS: -
1. 前往系统偏好设置 > 安全性与隐私 > 隐私 > 屏幕录制 -
2. 确保CodeInterviewAssist有屏幕录制权限 -
3. 启用权限后重启CodeInterviewAssist -
• Windows: -
• 无需额外权限 -
• Linux: -
• 根据发行版可能需要 xhost
访问权限
运行应用程序
快速开始
-
1. 克隆仓库:
git clone https://github.com/greeneu/interview-coder-withoupaywall-opensource.git
cd interview-coder-withoupaywall-opensource
-
2. 安装依赖:
npm install
-
3. 推荐:清理之前的构建:
npm run clean
-
4. 根据您的平台运行相应脚本:
Windows:
stealth-run.bat
macOS/Linux:
# 首先使脚本可执行
chmod +x stealth-run.sh
./stealth-run.sh
重要提示:应用程序窗口默认不可见!使用Ctrl+B(Mac上为Cmd+B)切换可见性。
构建可分发包
创建可安装的分发包:
macOS(DMG):
# 使用npm
npm run package-mac
# 或使用yarn
yarn package-mac
Windows(安装程序):
# 使用npm
npm run package-win
# 或使用yarn
yarn package-win
打包后的应用程序将位于release
目录。
脚本功能:
-
• 为应用程序创建必要目录 -
• 清理之前的构建以确保全新开始 -
• 以生产模式构建应用程序 -
• 以隐形模式启动应用程序
注意事项与故障排除
-
• 窗口管理器兼容性:某些窗口管理工具(如macOS上的Rectangle Pro)可能会干扰应用的窗口移动。可考虑暂时禁用它们。 -
• API使用:注意OpenAI API密钥的速率限制和信用额度。视觉API调用比纯文本调用更昂贵。 -
• LLM定制:您可以轻松定制应用以包含Claude、Deepseek或Grok等LLM,只需修改 ProcessingHelper.ts
中的API调用和相关UI组件。 -
• 常见问题: -
• 启动应用前运行 npm run clean
以确保全新构建 -
• 如果窗口不出现,多次尝试Ctrl+B/Cmd+B -
• 如需调整窗口透明度,使用Ctrl+[/]/Cmd+[/] -
• macOS:确保脚本有执行权限( chmod +x stealth-run.sh
)
与付费面试工具对比
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
技术栈
-
• Electron -
• React -
• TypeScript -
• Vite -
• Tailwind CSS -
• Radix UI组件 -
• OpenAI API
工作原理
-
1. 初始设置 -
• 启动隐形窗口 -
• 在设置中输入OpenAI API密钥 -
• 为提取、解决方案生成和调试选择首选模型 -
2. 捕捉问题 -
• 使用全局快捷键[Control或Cmd + H]对代码问题进行截图 -
• 截图自动添加到最多2张的队列中 -
• 如需移除最后一张截图,使用[Control或Cmd + L] -
3. 处理 -
• 按[Control或Cmd + Enter]分析截图 -
• AI使用GPT-4视觉API从截图中提取问题需求 -
• 模型根据提取的信息生成最优解决方案 -
• 所有分析均使用您的个人OpenAI API密钥完成 -
4. 解决方案与调试 -
• 查看带有详细解释的生成解决方案 -
• 通过截取更多错误信息或代码使用调试功能 -
• 获取包含问题识别、修正和优化的结构化分析 -
• 根据需要切换解决方案和队列视图 -
5. 窗口管理 -
• 使用[Control或Cmd + 方向键]移动窗口 -
• 使用[Control或Cmd + B]切换可见性 -
• 使用[Control或Cmd + []和[Control或Cmd + ]]调整透明度 -
• 窗口对特定屏幕共享应用保持隐形 -
• 使用[Control或Cmd + R]开始新问题 -
6. 语言选择 -
• 一键切换编程语言 -
• 使用方向键在可用语言间导航 -
• 系统动态适应代码库中添加或移除的任何语言 -
• 语言偏好会在会话间保存
添加更多AI模型
本应用设计时考虑了可扩展性,您可以轻松添加对其他LLM的支持:
-
• 您可以添加Claude、Deepseek、Grok或任何其他AI模型作为替代选项 -
• 应用架构允许多个LLM后端共存 -
• 用户可以自由选择偏好的AI提供商
要添加新模型,只需扩展electron/ProcessingHelper.ts
中的API集成,并在src/components/Settings/SettingsDialog.tsx
中添加相应的UI选项。模块化设计使这一过程简单明了,不会破坏现有功能。
配置
-
• OpenAI API密钥:您的个人API密钥本地存储,仅用于OpenAI API调用 -
• 模型选择:您可以为每个处理阶段选择GPT-4o或GPT-4o-mini: -
• 问题提取:分析截图以理解编程问题 -
• 解决方案生成:创建带有解释的优化解决方案 -
• 调试:提供错误和改进建议的详细分析 -
• 语言:选择解决方案的首选编程语言 -
• 窗口控制:使用键盘快捷键调整透明度、位置和缩放级别 -
• 所有设置本地存储在用户数据目录中,并在会话间保持
项目地址
https://github.com/Ornithopter-pilot/interview-coder-withoupaywall-opensource/blob/main/README.md
扫码加入技术交流群,备注「开发语言-城市-昵称」
(文:GitHubStore)