Code2Offer(代码转面试 · Code → Interview Prep)

👀 免安装先看真实产物:在线 Demo 报告(100 题自测报告,无需安装/无需 Key)
对当前打开的代码仓库一键生成真实面试场景的全套材料,由 DeepSeek 驱动:
产物(默认写入 <仓库>/interview-output/runs/run-NNNN/,每次生成一个独立目录) |
内容 |
01_项目讲解.md |
STAR 三版本(1/3/10 分钟)、架构走读、技术选型横向对比 |
02_百问百答.md + index.html |
100 题,每题带 文件:行号 代码依据、追问链、对比表;HTML 报告可搜索/隐藏答案自测/掌握度统计 |
03_亮点与防守.md 04_缺点与改进.md |
亮点→追问→第一人称防守脚本;有准备的缺点话术 |
05_设计决策与选型对比.md 06_速记卡.md |
候选方案×维度×客观优劣×适用边界;考前 30 分钟版 |
架构图.svg + 架构图.drawio |
分层架构图(入口→路由→业务模块→数据与配置,按真实文件归属连线),暗色成品级样式并内嵌报告顶部;报告内点击节点查看该模块关联的面试题,.drawio 可在 diagrams.net(免费)继续编辑导出 PPT |
index.html 源码点读 |
题目里的 文件:行号 可点击:右侧词典式抽屉展示该处真实源码摘录(带行号)与关联题目 |
校验报告.md |
对抗校验:每道题的答案要点对照引用处代码原文逐条证伪,标红无依据的主张 |
与"把仓库丢给大模型问一句"的核心差别:先脚本画像(零幻觉事实层)→ 覆盖矩阵强制出题 → 对抗校验环 → 内容缓存 + 阶段门控(重跑只算变化的部分)。
上手(三步)
1. 配置密钥(任选其一)
推荐:在当前工作区根目录建 .env:
DEEPSEEK_API_KEY=***
系统环境变量:setx DEEPSEEK_API_KEY sk-xxx(Windows)/ 写入 ~/.zshrc(macOS/Linux),设完重启 VSCode。
可选:DEEPSEEK_MODEL(默认 deepseek-chat)、DEEPSEEK_BASE_URL(自建网关)、DEEPSEEK_TIMEOUT_MS(超时,默认 300000)。
模型兼容性诚实声明:提示词与请求路由针对 DeepSeek 家族模型深度调优(严格 JSON 任务自动路由到稳定模型);任何 OpenAI 兼容端点在协议层可用,但输出质量未经跨模型校准——追求 0.9.0 的 S 级质量请使用 DeepSeek。
多根工作区/不想混在项目里:把 .env 放进扩展的全局存储目录也可被读到。
被分析仓库自己根目录的 .env 也会被读取,但优先级最低,且它的 DEEPSEEK_BASE_URL 只有在它自己也提供密钥时才生效(见「安全」)。
支持的语言与工程文件
阶段 0 会识别并归一化多语言仓库:TypeScript/JavaScript、Python、Go、Java/Kotlin、Rust、C/C++/C#、Ruby、PHP、Swift/Objective-C、Dart、Scala、Elixir/Erlang、Clojure、Lua、R/Julia、Haskell、Zig/Nim、Perl、Solidity、SQL、Shell/PowerShell,以及 Vue/Svelte/Astro、GraphQL、Protobuf、Terraform、JSON/YAML/TOML/XML、Dockerfile/Makefile 等文件。不同语言统一进入安全扫描、分块、证据引用和面试题流水线;常见的 pubspec、Gemfile、Mix、Composer、Gradle、Swift Package、.NET 工程文件也会作为依赖线索参与画像。
2. 生成
- 资源管理器右键任意文件夹 → 「代码转面试:生成面试材料」;或
Ctrl+Shift+P → 同名命令;或点左侧活动栏图标 → 「生成面试材料…」。
- 会依次询问 运行模式、最大精读文件数、目标题量、输出方式和是否选择 JD(岗位描述)文本文件;题量按模式自适应(经济 20 / 平衡 40 / 深度 60,可自定义 10~100)——质量优先不硬凑,小仓库少出题、每题更聚焦,token 更省;经济模式会明确标注不完整。
- 输出方式(0.5.2):默认「自动独立目录」——每次生成新建
interview-output/runs/run-0001、run-0002…,前一次与后一次的产物互不覆盖,且增量缓存/断点自动从上一次接续(仓库没变的部分零成本);也可以选「固定 interview-output」(旧模式,都写同一目录)或「自定义目录…」。
- 之后什么都不用盯着:右下角通知条有「取消」按钮,左侧面板有完整进度时间轴(见下节),输出面板会自动弹出一个本次专属的日志通道(见下节)。
- 全量生成通常 10–40 分钟(推理模型逐模块精读+百题校验,这是正常节奏;仓库越大越久)。完成后弹「打开报告 / 打开文件夹」。
- 不小心多点了几次? 同一仓库不会产生第二个任务——弹提示给两个选择:「查看进度」(聚焦面板)或「取消并重新开始」(自动沿用原参数,已花的钱不白花)。不同仓库可放心并行,各任务独立显示、独立取消。
3. 看进度:时间轴面板(0.4.0)
点左侧活动栏图标打开面板,每个任务实时展开为阶段节点时间轴:
⟳ my-backend 4m12s · 阶段:对抗校验 · 节点 3/8 [✕]
✓ 1. 仓库画像 用时 2s · 118 文件 / 14 个精读文件
✓ 2. 模块精读 用时 1m38s · 6 张模块卡
✓ 3. 出题(含修复环) 用时 2m11s · 共 100 题
⟳ 4. 对抗校验 进行中 21s
○ 5. 标红题重写 等待中
⊘ 6. JD 加权 跳过 · 未选择 JD 文件
○ 7. 总装输出 等待中
○ 8. 完成 等待中
▶ 再加一个仓库的生成…
📖 打开面试报告 📁 打开产物文件夹 ⚙ 配置模型 / 密钥说明
| 节点图标 |
含义 |
| ⟳(转圈) |
该阶段进行中,实时秒表(推理模型单阶段几分钟是常态) |
| ✓ |
完成,显示该段用时与结果摘要(如 pass 84 · fix 9 · flag 4 · 未覆盖 3) |
| 💿 |
门控命中:输入没变化,直接复用上次结果(0 成本,几乎 0 用时)——重跑时你会看到大量这个,说明增量生效 |
| ⊘ |
跳过(如未选 JD);○ 等待中 |
| ✗ / ■ |
失败 / 已取消(缓存保留) |
操作:
- ✕(任务条目悬停) = 取消该任务:当前模型请求完成后停止,已完成阶段缓存保留,重跑自动续。
- 🗑(已结束任务悬停) = 从列表移除记录,并连同本次专属的输出通道一起清掉;「清空已结束的任务记录」一键清场。
- 面板标题栏 🛑 = 取消全部运行中任务(多仓库并行时)。
- 鼠标悬停任务条目 = 完整时间轴文本(开始时刻、每节点用时与备注、模型、产物目录、日志通道)。
日志也按次分开(0.5.2):每次生成开始时,输出面板会自动新建并弹出通道 「代码转面试 · 仓库名 · 启动时刻」,本次运行的全部阶段日志都在里面;主通道「代码转面试」仍保留所有运行的完整历史,方便横向对照或深度排查(重试警告、token 成本)。
4. 看报告
- 完成弹窗直接点「打开报告」;之后可随时
Ctrl+Shift+P → 「代码转面试:打开面试报告」——index.html 在编辑器内打开,搜索/筛选/自测/掌握标记全部可用。
- HTML 报告支持深浅主题、类别/难度/必考/标红/未覆盖/未掌握组合筛选、搜索高亮、类别掌握率和学习进度 JSON 导出;进度按仓库+题库版本隔离。
- 输出目录会附带
quality-report.json、质量门禁报告.md、run-manifest.json、claim-ledger.json 和 evidence-graph.json;manifest 同时记录阶段耗时、调用/缓存/降级摘要,完成状态以确定性门禁为准。
- 「打开产物文件夹」定位最近一次完成的生成目录(自动独立目录模式下即
interview-output/runs/run-NNNN);历史产物原样保留在各自的 run 目录里,随时可回看对比。
- 标红的题(校验发现代码无法支撑的主张)会列在
校验报告.md,建议人工复核后再背诵——这是特性,保证你面试说的每句话能在自己代码里指出来。
常见问题
| 现象 |
处理 |
| 提示未找到 DEEPSEEK_API_KEY |
按上面第 1 步配置;错误消息里会列出全部可选位置 |
| HTTP 401 |
密钥无效(401/403/400 立即失败,不会空转重试) |
网络请求失败:... fetch failed |
关注错误码:ENOTFOUND=DNS/域名、ECONNREFUSED=端口/网关未启动、ETIMEDOUT=网络/代理超时、CERT_HAS_EXPIRED=TLS 证书;同时检查 DEEPSEEK_BASE_URL、代理和防火墙 |
| 跑很久没反应 |
看输出面板通道,推理模型单次请求 2–6 分钟属正常;可随时取消(已花费进度保留);超大仓库建议改用 CLI 的 --max-files 控制精读范围 |
| 「该目录已有生成任务在运行」 |
同一输出目录有运行锁防互相覆盖;确认没有任务后删除 interview-output/.run-lock 即可 |
| 想找回之前一次的产物/对比两次结果 |
自动独立目录模式下每次生成在 interview-output/runs/run-NNNN,历史 run 原样保留;「打开产物文件夹」直达最近一次 |
| 输出面板通道太多 |
每次生成一个专属通道;在侧栏对已结束任务点 🗑(或「清空已结束的任务记录」)即可连同通道一起清掉 |
| 题目显示「? 未覆盖」 |
校验时模型漏答;重跑「生成面试材料」会自动只补验这些题 |
| 想换模型 |
「配置模型」命令,或在设置里填 codeInterviewPrep.model(优先级最高) |
| 推理模型反复提示输出预算不足 |
新版会将严格 JSON 的精读/出题/校验自动路由到 deepseek-chat,叙述稿仍使用所选推理模型;输出面板会明确记录路由 |
| Windows 终端中文乱码(CLI) |
chcp 65001 |
安全与隐私
- 只有你的 DeepSeek(或自建网关)端点会收到请求;无遥测、无任何第三方上报。完整数据流向与密钥保护措施见 隐私政策;使用条款与费用说明见 服务条款。
.env、私钥、凭据类文件有独立拒绝清单 + 内容级密钥扫描,绝不进入模型输入(与仓库 .gitignore 无关)。
- 100–300KB 文本会先分段扫描高风险密钥;只记录跳过路径和原因,不记录秘密原文。
- 端点与凭据同源绑定:克隆的恶意仓库不能靠它自己的
.env 把你的密钥引到攻击者地址;DEEPSEEK_BASE_URL 强制 HTTPS(http://localhost 调试网关例外)。
- 错误与日志中密钥一律打码;扩展不写系统环境变量,不跨仓库串用凭据。
- 401/403 会提示检查密钥,429/5xx 会退避重试;取消、失败和部分完成不会伪装成成功。
CLI(可选,同一核心库)
扩展只是薄壳;完整的命令行版(含 evaluate 自评、rehearse 交互排练)在同源码仓库:
npm install && npm run build && node dist/cli/index.js generate <仓库> --jd jd.txt
| |