OfferPilot 是一个面向 AI Agent / LLM 工程面试的智能诊断 Agent。项目采用手写 Agent Loop,不依赖 LangChain / LangGraph,目标是把 Agent 工程里的模型调用、工具执行、上下文管理、会话状态、子 Agent、Web 流式交互和语音诊断串成一个完整产品原型。
项目同时也是 zero2Agent 学习体系的实战项目:把教程里的 Agent 工程知识、面试题库和架构拆解落地成可运行系统。
当前推荐部署形态是 server-backed:浏览器访问 Next.js Web,Web 通过受保护的后端 API 调用 LLM / ASR / TTS provider。浏览器直连 LLM API 的 BYOK 模式暂缓,作为后续架构探索处理。
前端支持直接录音或上传音频。系统会把录音转成 WAV,调用 Mimo ASR 转写,再把转写文本送入现有面试诊断 Agent。录音会保留在页面里,方便回放和下载复测。
录音处理不会再伪装成重复的用户消息,而是单独展示为“思维链 / 处理流程”卡片。卡片会展示转写状态、诊断状态、录音播放器、录音下载和转写文本。
诊断结果支持 GitHub-Flavored Markdown,包含表格渲染。每条回答尾部提供复制和保存 .md 文档的快捷操作。
导出的示例报告见:demo.md。
- 打通真实 API 测试链路,CLI 和 API Server 启动时自动读取
.env。 - 增加 OpenAI 兼容模型配置:
OPENAI_API_KEYOPENAI_BASE_URLOPENAI_MODEL
- 默认聊天模型调整为
gpt-5.5。 - 接入 Mimo 音频能力:
- ASR:
mimo-v2.5-asr - TTS:
mimo-v2.5-tts - 官方 Base URL:
https://api.xiaomimimo.com/v1
- ASR:
- 新增后端音频 API:
POST /api/transcribePOST /api/tts
- 新增前端代理路由:
web/src/app/api/transcribeweb/src/app/api/tts
- 浏览器录音改为导出 WAV,适配 Mimo ASR 的
wav/mp3要求。 - 新增录音上传诊断流程。
- 新增录音诊断的思维链 / 处理流程卡片。
- 支持录音回放和录音下载。
- 使用
remark-gfm支持 Markdown 表格渲染。 - Assistant 回答尾部新增复制和保存
.md。 - 修复 diagnostician 子 Agent 递归调用工具导致诊断卡住的问题。
- Docker Compose 透传 OpenAI 兼容模型和 Mimo 音频配置。
| 模块 | 能力 | 状态 |
|---|---|---|
| 面试诊断 | 输入问题和回答,输出评分、差距、改进建议 + CoT 思维链展示 | 已完成 |
| 录音回答诊断 | 录音/上传音频 → ASR → 诊断 | 已完成 |
| 实时模拟面试 | AI 逐题提问 → TTS 播报 → 录音/文字作答 → 即时缺陷分析 → 总结报告 | 已完成 |
| 简历分析 | 段落级诊断:STAR 结构、量化度、技术决策、个人贡献 | 已完成 |
| JD 匹配 | 关键词覆盖率、缺失项、职级判断、定向包装建议 | 已完成 |
| 能力雷达 | 7 维度评分 + 学习路径推荐 + 诊断历史追踪 | 已完成 |
| 报告导出 | Markdown / PDF 一键导出诊断报告 | 已完成 |
| 多 Agent 协作 | 专家子 Agent + 并发池 | 已完成 |
| 知识检索 | SQLite FTS5 + embedding 向量(路线: sqlite-vec → zvec/Qdrant) | 已完成 |
src/
agent/ Agent Loop,负责工具执行和预算控制
query-engine/ Provider 路由、流式输出、重试、结果收集
query-engine/
providers/ Claude / OpenAI-compatible / DeepSeek / Mock
tools/ 工具注册表和内置面试工具
sub-agent/ 子 Agent 运行时和并发池
realtime/ ASR/TTS 集成与实时面试辅助模块
knowledge/ Markdown 知识解析、FTS 检索、embedding
context/ 分层上下文和压缩
memory/ 会话级记忆
permission/ 工具风险控制和审计
session/ 会话状态和消息历史
command/ CLI 命令解析
hooks/ 工具前后置 Hook
db/ SQLite 持久化
server.ts HTTP API Server + SSE
web/
src/app/ Next.js App Router 页面和 API 代理
src/components/ Chat UI、侧边栏、输入框、消息渲染
推荐配置:
- 文本模型:推荐使用 ai.tosky.top 提供的 OpenAI 兼容接口,默认模型为
gpt-5.5。 - 语音模型:推荐使用 小米 MiMo 开放平台 的 MiMo V2.5 系列模型。
- ASR:
mimo-v2.5-asr - TTS:
mimo-v2.5-tts - TTS 成本参考:约 1 分钟 1 分钱。
- 邀请码:
6ENEDG - 注册链接:https://platform.xiaomimimo.com?ref=6ENEDG
- 通过邀请码注册,双方各得 10 元 API 体验金,首单 9 折;体验金有效期 40 天。
- ASR:
复制 .env.example 为 .env,按需填写 key。
OPENAI_API_KEY=sk-...
OPENAI_BASE_URL=https://api.ai.tosky.top/v1
OPENAI_MODEL=gpt-5.5
MIMO_API_KEY=sk-...
MIMO_BASE_URL=https://api.xiaomimimo.com/v1
MIMO_ASR_MODEL=mimo-v2.5-asr
MIMO_TTS_MODEL=mimo-v2.5-tts
ANTHROPIC_API_KEY=sk-ant-...
DEEPSEEK_API_KEY=sk-...说明:
- 默认聊天模型是
gpt-5.5。 - OpenAI 兼容模型走
OPENAI_BASE_URL。 - Mimo ASR/TTS 使用官方
https://api.xiaomimimo.com/v1。 - Mimo ASR 按官方文档通过
/chat/completions的input_audio调用。 - 浏览器录音会先编码成 WAV,再上传给后端转写。
建议使用 Node.js 20 或 22。Windows 下 Node.js 24 可能触发 better-sqlite3 原生依赖重编译。
npm install
cp .env.example .env启动 API Server:
npm run serve启动 Web UI:
cd web
npm install
npm run dev打开:
http://localhost:3000
健康检查:
http://localhost:3001/health
http://localhost:3000/api/health
交互式诊断:
npm start单次诊断:
npm run diagnose -- -q "什么是 ReAct Agent?" -a "它会推理、调用工具、观察结果并继续迭代。"构建知识库:
npm run build-kb生成 embedding:
npm run embed- 点击输入框左侧麦克风按钮。
- 说出面试回答。
- 再次点击停止录音。
- OfferPilot 在思维链卡片中保存录音。
- 浏览器上传 WAV 到
/api/transcribe。 - 后端调用 Mimo ASR。
- 转写文本展示在思维链卡片中。
- 转写文本进入面试诊断 Agent。
- 诊断结果支持复制或保存为 Markdown。
也可以通过附件按钮上传已有音频文件。
docker compose up -d服务地址:
API: http://localhost:3001
Web: http://localhost:3000
docker-compose.yml 已透传 OpenAI 兼容模型和 Mimo 音频相关环境变量。
生产部署说明见:docs/deployment.md。
最近一次本地验证命令:
npm run build
npx vitest run tests/unit tests/e2e
npm --prefix web run build
git diff --check预期结果:
TypeScript 构建通过
单元测试和 E2E 测试通过
Next.js 生产构建通过
diff whitespace 检查通过
OfferPilot 使用 zero2Agent 的知识体系作为面试知识来源,并把 Agent 工程思想落地为完整应用:
zero2Agent 理论与面试知识
|
v
OfferPilot 工程实现
|
v
Agent Loop、工具、会话、记忆、Web UI、ASR 诊断



