# TechCoach：AI 面试教练技术全景报告

基于真实代码库的深度技术剖析

## 项目概述

TechCoach 是一个面向求职者的、以大语言模型（LLM）为核心的个人技术面试教练平台。它通过分析用户上传的简历、项目经历和目标岗位描述，利用先进的 AI 技术生成高度定制化的模拟面试问题，帮助用户高效准备技术面试。

核心目标： 将用户的个人背景材料转化为高质量的模拟面试体验，赋能个人求职者。

项目采用现代化的前后端分离架构，通过 Docker 容器化技术进行封装和部署，体现了微服务的设计思想。其核心创新在于将复杂的 AI 任务（如 RAG 检索和面试问题生成）分解为多个协同工作的智能体（Agent），从而提供精准、个性化的服务。

## 系统架构

### 整体架构

TechCoach 项目采用前后端分离的现代化 Web 应用架构，并通过 Docker 容器化技术进行封装和部署。整个系统由多个协同工作的服务组成，通过 `docker-compose.yml` 进行编排。

graph TD subgraph "User" U[Browser] end subgraph "Docker Compose Stack" F[Frontend
Vue.js SPA] A[Backend API
FastAPI] C[Vector DB
ChromaDB] end subgraph "External Services" LLM[LLM Provider
OpenAI/Gemini/etc.] end U -->|HTTPS| F F -->|REST API| A A -->|Vector Search| C A -->|LLM Calls| LLM style U fill:#f9f,stroke:#333,stroke-width:2px style F fill:#bbf,stroke:#333,stroke-width:2px style A fill:#9f9,stroke:#333,stroke-width:2px style C fill:#ff9,stroke:#333,stroke-width:2px style LLM fill:#f96,stroke:#333,stroke-width:2px

### 核心模块

#### 后端核心模块 (app/)

- gateway: API 网关，基于 FastAPI，负责请求分发和中间件处理。
- agentic_core: AI 能力核心，实现 RAG、CrewAI 工作流和 LLM 路由。
- question_service: 封装面试问题生成与管理的业务逻辑。
- shared_kernel: 共享组件，如数据库模型、异常定义等。

#### 前端核心模块 (frontend/)

- views: 主要页面，如 Dashboard、Interview、Documents。
- router: Vue Router 管理前端路由。
- services: 封装与后端 API 的通信逻辑。
- stores: Pinia 进行全局状态管理。

### 技术栈

层级 | 技术 | 说明
--- | --- | ---
后端 | Python, FastAPI, Uvicorn | 高性能异步 API 服务
AI 框架 | CrewAI, LangChain | 智能体编排与 LLM 交互
数据库 | PostgreSQL, ChromaDB | 关系型数据与向量存储
前端 | Vue.js 3, Vite, Pinia | 现代化单页应用
部署 | Docker, Docker Compose | 容器化微服务部署

## AI 核心模块详解

### Agentic Core

Agentic Core 是 TechCoach 项目最关键的智能中枢，它采用了智能体 (Agent) 和工作流 (Crew) 的模式，将复杂的 AI 任务分解为多个步骤，由不同的 Agent 协同完成。

设计哲学： 通过模块化和分工，将复杂的 LLM 交互（如面试问题生成）转化为可管理、可扩展的智能体工作流。

#### 核心组件

- LLM Router (llm_router/): 负责与底层的大语言模型服务进行通信，可能支持多种不同的 LLM。
- Agent Manager (agent_manager.py): 定义和管理多个 AI 智能体 (Agent)，每个 Agent 有特定的角色和工具。
- Tools (tools/): 为 AI 智能体提供可以使用的工具，例如文件读写、向量数据库搜索等。

### RAG 系统

检索增强生成 (RAG) 是 TechCoach 实现个性化面试问题的核心技术。它允许系统从用户上传的文档中检索相关信息，并将其作为上下文提供给 LLM，从而生成更精准的问题。

sequenceDiagram participant U as User participant B as Backend API participant DP as Document Processor participant DS as Document Store (ChromaDB) participant AG as Agent Crew participant LLM as LLM Provider U->>B: Upload Resume & JD B->>DP: Process Documents DP->>DS: Store as Vectors U->>B: Request Interview Questions B->>AG: Trigger Crew AG->>DS: Vector Search (Query) DS-->>AG: Relevant Context AG->>LLM: Generate Questions with Context LLM-->>AG: Generated Questions AG-->>B: Final Question List B-->>U: Display Questions

### CrewAI 工作流

CrewAI 框架用于定义和管理 AI 智能体工作流。一个典型的面试问题生成任务可能涉及以下 Agent：

1. 简历分析师 (Resume Analyst): 分析用户简历，提取关键技能和经验。
2. 岗位匹配师 (Job Matcher): 将简历与目标岗位描述进行匹配，识别差距。
3. 问题生成器 (Question Generator): 基于分析结果和匹配差距，生成具体的技术面试问题。

    # 伪代码示例：定义一个 Crew
    from crewai import Crew, Agent, Task

    resume_analyst = Agent(
        role='Resume Analyst',
        goal='Extract key skills and experiences from the provided resume',
        tools=[VectorSearchTool()]
    )

    job_matcher = Agent(
        role='Job Matcher',
        goal='Identify gaps between resume and job description',
        tools=[VectorSearchTool()]
    )

    question_generator = Agent(
        role='Question Generator',
        goal='Create tailored technical interview questions