一款开源的AI面试辅助工具:CodeInterviewAssist

1,073 阅读8分钟

CodeInterviewAssist是一个开源AI面试辅助工具,专注于编程面试,能够分析题目、生成解决方案、实时调试代码,并支持多种AI模型的集成。可通过隐形窗口避开录屏检测,提供详细的代码和复杂度分析。

GitHub 地址

image.png

⚠️ 致社区的重要声明 ⚠️

这是一个免费的开源项目,并非商业产品!

市面上有许多收费的面试准备工具,提供实时音频捕获、自动答案生成等功能,价格高达数百美元。本项目截然不同:

  • 这是一个小型、非营利、社区驱动的项目,没有任何商业动机
  • 所有代码完全开源,任何人都可以自由使用、修改或扩展
  • 想要语音支持?欢迎集成OpenAI的Whisper或其他API工具
  • 新功能应通过社区贡献实现——期望单个维护者免费实现高级功能是不合理的
  • 维护者不会因此获得作品集收益、金钱报酬或任何形式的认可

**在提交功能请求或期望个性化支持前,请理解本项目纯粹是社区资源。**如果你认可这个项目,最好的感谢方式是贡献代码、文档或帮助其他用户。

🔑 API密钥信息 - 已更新

我们已测试并确认当前版本同时支持Gemini和OpenAI API。如果遇到API密钥问题:

  • 尝试从用户数据目录的配置文件中删除API密钥条目
  • 退出并重新登录应用
  • 检查API密钥控制面板,确认密钥有效且有足够额度
  • 确保使用正确的API密钥格式(OpenAI密钥以"sk-"开头)

配置文件位于:C:\Users\[用户名]\AppData\Roaming\interview-coder-v1\config.json(Windows)或/Users/[用户名]/Library/Application Support/interview-coder-v1/config.json(macOS)

免费开源AI驱动的面试准备工具

本项目为付费编程面试平台提供了强大的替代方案。它以免费开源的形式提供了付费面试准备工具的核心功能。使用你自己的OpenAI API密钥,即可获得AI驱动的问题分析、解决方案生成和调试辅助等高级功能——所有操作都在本地运行。

项目初衷

优质的编程面试工具往往价格昂贵,许多学生和求职者难以负担。本项目提供同样强大的功能,却无需高昂费用:

  • 使用自己的API密钥(按实际使用付费)
  • 完全在本地运行,确保隐私安全
  • 可自定义以满足特定需求
  • 学习并贡献于开源工具

自定义可能性

代码设计灵活可扩展:

  • AI模型:虽然当前使用OpenAI模型,但可修改代码集成Claude、Deepseek、Llama等任何提供API的模型。所有集成代码位于electron/ProcessingHelper.ts,UI设置位于src/components/Settings/SettingsDialog.tsx
  • 编程语言:添加更多语言支持
  • 功能:扩展新能力
  • 界面:自定义UI偏好

只需基本的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)

注意:应用无法对以下场景隐形:

系统要求

  • 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
  1. 安装依赖:
npm install
  1. 推荐:清理之前构建:
npm run clean
  1. 运行适合你平台的脚本:

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自定义:可轻松修改ProcessingHelper.ts中的API调用及相关UI组件,集成Claude、Deepseek或Grok等LLM。

  • 常见问题

    • 启动应用前运行npm run clean以确保全新构建
    • 如果窗口不出现,多次尝试Ctrl+B/Cmd+B
    • 如需可调整窗口透明度(Ctrl+[/]/Cmd+[/])
    • macOS:确保脚本有执行权限(chmod +x stealth-run.sh

与付费面试工具对比

功能付费工具CodeInterviewAssist(本项目)
价格$60/月订阅免费(仅支付API使用费)
解决方案生成
调试辅助
隐形性
多语言支持
时间/空间复杂度分析
窗口管理
认证系统需要无(简化)
支付处理需要无(使用自己的API密钥)
隐私服务器处理100%本地处理
自定义有限完全源代码访问
模型选择有限可自由选择模型

技术栈

  • 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:
    • 问题提取:分析截图理解编程问题
    • 解决方案生成:创建带解释的优化方案
    • 调试:提供错误详细分析和改进建议
  • 语言:选择解决方案的编程语言
  • 窗口控制:使用快捷键调整透明度、位置和缩放级别
  • 所有设置本地存储在用户数据目录,会话间保持

许可证

本项目采用GNU Affero通用公共许可证v3.0(AGPL-3.0)。

含义

  • 可自由使用、修改和分发本软件
  • 修改代码后,必须在相同许可证下公开变更
  • 如果在网络服务器上运行修改版,必须向用户提供源代码
  • 强烈建议将改进贡献回主项目

详见LICENSE-SHORT文件或访问GNU AGPL-3.0查看完整许可证文本。