- 默认本地优先 —— 所有简历数据存在 IndexedDB。跑起来不需要账户或后端,云同步是可选项。
- Schema 优先的模板 —— 每份简历都是一个带类型的 Zod 值。模板从共享 schema 渲染,AI 工具通过 JSON Patch 对着 schema 改(不靠猜)。
- AI 工具是一等公民 —— 原生 MCP 服务器(
@magic-resume/mcp)让 Claude Code、Cursor、Windsurf 通过和网页版同一套数据层读改你的简历。
系统架构
本仓包含前端、MCP 与共享 schema,后端是独立部署的一套服务。前端只跟一个网关源通信,网关按路径前缀把/api/* 转发到后端各服务。

1. Magic-Resume(本仓)
github.com/LinMoQC/Magic-Resume —— pnpm + Turborepo 单仓:
职责: 所有面向用户的 UI、本地编辑、IndexedDB 持久化、MCP 工具。前端自己也带一批
app/api/* 的 Next.js 路由处理器(如 chat-agent、pdf/parse),它们校验用户身份、把 AI 请求代理到后端。
2. 后端(独立部署)
一个 NestJS pnpm 工作区单仓,按运行画像拆分,前面挡着一个网关:gateway—— 唯一公网入口。边缘鉴权 + 可信身份注入、按 IP/用户限流、把/api/*按前缀流式反代路由。无数据库。platform-api—— CRUD:简历、用户、分享/协作、通知、JSON Patch 应用、Zod 校验。持有 PostgreSQL。agent-service—— AI 后端:DeepAgents 驱动的对话 / 工作流 / 面试(LangGraph),走 SSE 流式;PDF 解析;翻译。
契约
Schema 一致性靠
@magic-resume/resume-schema —— 发到 npm、被后端作为依赖消费。定义一次,处处校验。
部署模式
- 自托管: 只需跑
apps/web。数据留在 IndexedDB —— 只能编辑和导出简历。没有账户、没有后端、没有 AI(AI 需要后端 / 云端模式)。见 自托管。 - 云端(magic-resume.cn): 前端与后端分开部署 —— Web 在 Vercel,后端在容器平台。前端把
NEXT_PUBLIC_API_URL指向网关。见 云端模式。
技术栈
接下来读什么
快速开始
架构总览
MCP 服务器
本地开发
本文档跟随
master 分支。如果你在功能分支上、这里有出入,仓库根的 CLAUDE.md 是权威的简版参考。