23 KiB
转岗计划总纲:Go 全栈基础 + Python 多 Agent 应用
这是整个计划的入口文件。换了电脑或者隔一段时间回来,先看这份文件的“进度记录”,再打开当前所在周的计划文件继续做。
状态:未开始 / 进行中 / 已完成( ) 开始日期: 当前所在周:
1. 背景、起点和目标
背景
- 7 年 Web 前端(Vue / React),成人本科。
- AI 写代码越来越多,“只会把页面写出来”的价值在下降,需要往“能设计、能交付、能讲清原理”的方向走。
- 学历在大厂简历筛选里吃亏,所以主攻看作品和经验的岗位,用能跑起来的项目和真实案例说话。
起点(已经具备,不用从零学)
- 能独立开发和改通业务前端,能和后端 Agent 网关联调接口。
- 在公司里接触过真实的多 Agent 产品链路:意图识别 → 多角色研讨 → 总结 / 交付 / 过程报告。
- 踩过真实的生产问题:流式连接断开、模型额度不足、状态没有回写、数据库表结构和代码不一致、关掉页面后编排中断。
这些经历是转岗最大的本钱,后面的计划会把它们整理成“案例卡”和一个可以公开演示的迷你项目。
目标岗位
- 应用侧 Agent 工程师
- 大模型应用开发工程师
- 全栈工程师(前端 + Go 后端)
终点(4 条必须同时满足,才算这条路径走完)
- 能讲清:一张架构图 + 三分钟口述“多 Agent 如何状态机化、状态存在哪、失败怎么办”。
- 能做小:一个不带公司业务外壳的迷你多 Agent 项目,本地可跑,覆盖编排 + 持久化 + 断点续跑(或写清降级策略)。
- 能举证:2 到 3 个“问题 → 根因 → 方案”的案例,优先来自自己在工作中遇到的真实问题(脱敏后)。
- 能对标岗位:简历和面试条目写得像“应用侧 Agent 工程师 / 全栈工程师”,而不是“改过公司某个页面”。
另外,第 1 个月结束时要有一个能演示的 Go 全栈项目(项目一:团队任务看板),作为全栈能力的证明。
任意一条没满足,都不要提前宣布“学完了”。
非目标(故意不做)
- 不以模型预训练、微调为主业。
- 不把公司业务代码开源,也不整仓搬进作品集。
- 不深入运维巡检、内网穿透、多云部署,简历上最多一句带过。
- 本计划不再单独做“文档知识库问答(RAG)”项目,也不专门学 Redis、Nginx、HTTPS 部署。这些放到“完成后的下一步”里,不塞进本计划(见第 10 节)。
2. 技术栈(已确定)
| 用途 | 选择 | 说明 |
|---|---|---|
| 全栈后端语言 | Go | 第 1 个月主线。语法简单、风格统一,适合用 AI 辅助编写和审查 |
| Web 框架(Go) | Gin | 国内使用广,概念少 |
| 数据库 | PostgreSQL | 第 3 周开始用;Agent 项目默认用 SQLite,零依赖、方便别人跑起来,可选换成 PostgreSQL |
| 数据访问(Go) | sqlc + pgx | 写真 SQL,自动生成类型安全的 Go 代码,顺便练 SQL |
| 数据库迁移 | golang-migrate | 表结构变更全部用迁移文件管理,避免“库表和代码不一致” |
| 鉴权 | bcrypt + JWT | 第 4 周 |
| 前端 | React 或 Vue(你的强项) | 前后端分离,前端只负责调接口 |
| Agent 项目语言 | Python 3.12 | 第 8 周补课,第 9 到 11 周做项目。Agent 相关的框架、资料和岗位要求大多是 Python |
| Python 工具 | uv(管理环境和依赖)、ruff(格式化和检查)、pytest | |
| Agent 项目框架 | 自写 asyncio 编排循环(默认) | 参考文档要求“LangGraph 或自写循环二选一,不要两个都深挖”。默认选自写,理由见下面 |
| Agent 服务 | FastAPI + SSE | 后台跑任务、前端通过 SSE 订阅进度 |
| 大模型调用 | httpx 调 OpenAI 兼容接口 + 一个假模型(FakeLLM) | 假模型让测试和演示不依赖密钥和网络 |
| AI 编程工具 | Cursor / Cursor CLI / Grok Build | 让 AI 写,你负责设计、审查、调试 |
为什么默认自写 asyncio 循环,而不是 LangGraph
- 面试要证明的是“懂编排、状态、续跑的原理”,自己写一遍循环、检查点和恢复逻辑,最能讲清楚。
- 代码量不大(核心几百行),出了问题容易调试。
- 公司里的 Agent 网关如果已经用了 LangGraph 一类的框架,你自写一遍之后再去读它,会更容易看懂它替你做了什么。
- 如果你在第 5 周盘点时更想用 LangGraph(比如目标公司明确要求),可以换,
agent-mini-project.md最后有一张“自写版模块 ↔ LangGraph 对应概念”的表。只选一个,不要两个都做。
3. 学习原则
- 每一步都落到文件:每天的任务都有明确要建的文件和完成标准;每周至少有一个能运行的提交或一页笔记。禁止“只看不写”。
- AI 写,你审:代码可以让 AI 生成,但每个文件你都要能讲清楚每一行在做什么,面试时这是最大的区分点。
- 边上班边学:工作日每天 1.5 到 2 小时,周末多投入一些。不建议裸辞。
- 代码和计划都进 Git:全部推到
zhuangang仓库,换设备直接接着做。 - 只砍不加:进度落后时砍范围,不加新内容;新想法记到第 10 节“完成后的下一步”。
- 脱敏:公司代码、内网地址、真实任务数据、密钥、客户名,一律不进仓库。工作里的经验只以“机制 + 脱敏案例”的形式记录(详见第 8 节)。
4. 十二周总路线
第 1 个月 Go 全栈基础(第 1~4 周) → 项目一:团队任务看板
第 2 个月 阶段0 盘点 + 阶段1 读通画图(第 5 周)
阶段2 五个重点 A~E + 案例卡(第 6~7 周)
Python 补课(第 8 周)
第 3 个月 阶段3 Python 迷你多 Agent 项目(第 9~11 周)★主交付
阶段4 包装与终点验收 + 投递(第 12 周)
精力不够时可以拉长到 14 到 16 周,但顺序不要变,也不要跳过验收。
第 1 个月:Go 全栈基础
| 周 | 主题 | 产出 | 计划文件 |
|---|---|---|---|
| 第 1 周 | Go 基础语法 | 命令行任务清单 todo |
week01-go-basics.md |
| 第 2 周 | Gin 写 HTTP 接口 + 接前端 | 任务清单 Web 版(内存存储) | week02-gin-api.md |
| 第 3 周 | PostgreSQL、SQL、迁移、sqlc、事务 | 任务清单改用数据库存储 | week03-postgresql.md |
| 第 4 周 | 注册登录、JWT、权限 | 项目一:团队任务看板(多用户、成员权限) | week04-auth-project1.md |
月底验收:
- 能独立用 Go + Gin + PostgreSQL 写出带鉴权的 REST 接口
- 项目一本地
docker compose up+go run .+npm run dev就能跑起来,README 写清楚 - 能讲清楚:接口隔离存储层、事务、索引、JWT 的优缺点
第 2 个月:盘点、读通、深挖、补 Python
第 5 周:阶段 0 盘点(前 23 天)+ 阶段 1 读通与画图(后 45 天)
阶段 0 做什么
- 写下一句话目标岗位(例:应用侧 Agent 工程师 / 大模型应用开发)。
- 列出自己在公司亲自改过、排查过的模块(只写通用名字,例如“前端多 Agent 研讨模块”“Agent 网关的作业接口”)。
- 按第 5 节 A~E 五个重点,填一张“已会 / 模糊 / 不会”三列对照表。
- 确认迷你项目技术栈:Python + 自写 asyncio 循环(默认)或 LangGraph,二选一。
文件:notes/00-inventory.md
阶段 0 验收:
- 一句话目标岗位已写下
- A~E 的“已会 / 模糊 / 不会”三列填完
- 迷你项目技术栈已选定,写进
notes/00-inventory.md
阶段 1 做什么(重点 A 编排 + B 权威源,先建立全局地图,再钻细节)
按优先级读公司项目里这几块(在公司电脑上读,笔记只写机制):
| 优先级 | 要读的模块(通用叫法) | 要搞清的问题 |
|---|---|---|
| P0 | 前端的多 Agent 功能:意图、多席研讨、草稿、作业 | 几个步骤怎么串起来,谁发起 SSE |
| P0 | 前端的会话与交付模块 | 会话状态和交付状态分别存在哪 |
| P0 | Agent 网关里多 Agent、意图、作业、草稿相关的接口 | 服务端是“单轮调用”还是“后台作业” |
| P1 | 前端对 Agent 网关的接口契约清单 | 前后端到底约定了哪些接口 |
| P2 | 团队里关于“后台挂起 / 后台作业”的设计文档(如果有) | 理想架构和现状差在哪 |
产出:
- 一张图(mermaid):用户 → 前端 → Agent 网关 → 草稿 / 作业 / 业务库。文件
notes/01-architecture.md - 一张表:关键接口(初始化、运行并流式返回、草稿、作业、会话)各自职责。文件
notes/01-api-table.md(接口只写职责,不写真实路径和内网地址)
阶段 1 验收:
- 不看代码能口述多 Agent 功能的主流程
- 图上标出:关掉浏览器时,流程断在哪一层
- 指出至少一处“状态双写或权威来源不清”的位置
第 6 周:阶段 2(上)重点 A 编排 + C 流式
| 重点 | 必做实验(二选一即可) | 产出 |
|---|---|---|
| A 多 Agent 编排 | 跟一次完整的多 Agent 流程(或用联调桩),记录派活顺序和结束(共识)条件 | notes/cards/A-orchestration.md |
| C 流式与长任务 | 故意断网或关页面,记录“单轮继续”和“整个循环停掉”的区别 | notes/cards/C-streaming.md |
周末顺手补完阶段 1 没画完的部分。
第 7 周:阶段 2(下)重点 B 权威源 + D 人机协作 + E 业务集成
| 重点 | 必做实验 | 产出 |
|---|---|---|
| B 状态与权威源 | 对比草稿数据和任务 / 过程报告,找出哪些没有回写 | notes/cards/B-source-of-truth.md |
| D 人机协作 | 走一遍“需要澄清”或“换模型失败 → 恢复” | notes/cards/D-human-in-loop.md |
| E 与业务系统集成 | 跟一次过程报告 / 任务状态:LLM 结果怎样变成业务记录 | notes/cards/E-integration.md(可以和 B 合并成一张,但五个重点都要覆盖) |
阶段 2 验收:
- A~E 每个重点至少一张案例卡(模板见第 6 节)
- 每张卡都写了“若重做,我会怎样设计”,这些结论会直接变成第 9~11 周迷你项目的设计依据
第 8 周:Python 补课(给 JS 开发者的速成)
计划文件:week08-python-basics.md
内容:基础语法对照 JS、类型标注(typing)、asyncio、pydantic、httpx + pytest、FastAPI 基础和 SSE。
产出:py-learning/ 练习目录,最后一天跑通一个能推送 SSE 的 FastAPI 小服务。
这一周只学 Python,不开 Agent 项目,也不深挖新案例(戒律:同一周不同时开新框架和新功能)。
第 3 个月:迷你多 Agent 项目 + 包装求职
第 9~11 周:阶段 3 迷你复现项目(主交付)★
计划文件:agent-mini-project.md
| 周 | 里程碑 | 产出 |
|---|---|---|
| 第 9 周 | M1 单轮 LLM 调用封装(超时、可读的错误码)+ M2 多轮编排循环 | 命令行能跑完一次“协调者 + 两个专家”的多轮讨论 |
| 第 10 周 | M3 状态持久化 + 进程重启后续跑 + FastAPI 后台作业 + SSE | 杀掉进程再启动,任务能接着跑完,浏览器断开重连能补齐事件 |
| 第 11 周 | M4 README、架构图、和生产概念的映射表;可选:Go 网关或极简前端 | 别人按 README 10 分钟内跑通 |
范围(来自参考文档):
| 必须有 | 本阶段禁止 |
|---|---|
| 至少 2 个专家角色 + 1 个协调者 | 完整任务中心、字典、巡检 |
| 明确的结束条件(达成共识或达到最大轮数) | 照搬公司 UI |
| 状态持久化(默认 SQLite,可换 PostgreSQL) | 依赖公司内网才能演示 |
| 进程重启后能续跑;编排跑在后台,不依赖浏览器 | 没有任何说明的纯聊天 demo 页 |
| SSE 推送进度,断线可重连补齐 |
阶段 3 验收:
- 别人按 README 10 分钟内跑通(不需要真实模型密钥,用 FakeLLM 也能演示)
- 演示:启动 →(中途杀进程)→ 重启 → 最终结果可查
- 映射表至少 5 个概念对齐生产(角色 / 派活 / 共识 / 草稿 / 作业,或等价概念)
第 12 周:阶段 4 包装与终点验收 + 投递
做什么:
- 简历三条 Agent 相关经历(STAR 写法):编排可靠性、状态权威、业务落地各一条,现象和结果写具体(数字必须真实,没有就写现象,不要编)。另加一条 Go 全栈项目一。文件
career/resume.md - 面试口述稿:3 分钟架构 + 1 分钟“踩过的最大坑”。计时练习,总长不超过 4 分钟。文件
career/pitch.md - Go 和数据库基础复习:goroutine / channel、切片、接口、错误处理、索引、事务。文件
career/interview-notes.md - 对照第 1 节“终点”四条和第 12 节终点验收清单打勾;缺哪条补哪条,不开新需求。
- 开始投递:中小公司、创业团队、AI 应用团队的 Agent 应用 / 大模型应用 / 全栈岗位。
5. 五个学习重点(始终抓住这 5 条)
转岗面试和第 2、3 个月的自学,优先加深这五条,其他功能当背景。
| # | 重点 | 在工作中的抓手(通用叫法) | 学完应能回答的一句话 |
|---|---|---|---|
| A | 多 Agent 编排 | 链式 / DAG 编排、主角色派活、各角色交付、共识 | “角色怎么分工、什么时候结束、怎么避免同一个任务被跑两次” |
| B | 状态与权威源 | 草稿 / 作业 / 任务,谁说了算 | “刷新或关页后为什么丢进度,权威数据写在哪” |
| C | 流式与长任务 | SSE、连接断开处理、浏览器里循环 vs 后台作业 | “为什么编排不该只活在浏览器里” |
| D | 人机协作 | 意图澄清、等待用户输入、模型切换 | “Agent 什么时候必须停下来问人” |
| E | 与业务系统集成 | 过程报告、任务状态、鉴权隔离 | “LLM 的结果怎样落到可审计的业务对象上” |
迷你项目里每个重点都有对应的实现(见 agent-mini-project.md 的映射表)。
6. 案例卡模板(直接复制)
每张卡一个文件,放在 notes/cards/。仓库里只放脱敏版本。
标题:
对应重点:A / B / C / D / E
现象:
根因(一层):
根因(系统层,可选):
当时怎么处理 / 未处理:
可迁移结论(面试一句):
若重做的设计:
关联代码/路径:(私有,只写在 notes/private/ 里,不进仓库)
日期:
优先写成卡的题目(来自你已经遇到过的问题):
- 关掉浏览器后,多轮研讨就停了(编排跑在前端)。
- 分析已经进行到第三步,但任务状态还是“未开始”(权威源 / 回写缺失)。
- 模型额度或鉴权失败,以及“换模型后恢复”。
- 主分支升级后某张表缺字段导致接口 500(应用依赖和数据库迁移)。
7. 每周节奏和戒律
| 日 | 做什么 |
|---|---|
| 周一 | 定本周重点(第 2、3 个月只选第 5 节中的一条,或一个里程碑) |
| 周二~周四 | 写代码 / 做实验 / 写案例卡 |
| 周五 | 验收:本周有没有“可展示的产出”;没有的话,周末只补交付,不学新东西 |
| 周日 | 30 分钟回顾:对照终点清单调整下一周范围(只砍不加),更新进度记录并 git push |
第 1 个月按每周计划文件里的“第 1 天~第 7 天”走,周五和周日的检查照做。
戒律
- 同一周不同时开“新框架 + 新业务功能 + 新论文”。
- 公司需求和学习冲突时:学习这边只保“案例卡或迷你项目提交”,不保阅读量。
- 概念类资料每个重点最多读 1 篇(比如工具调用、结构化输出、人在回路),读完必须写进案例卡。
- 不拿“无状态的聊天界面教程”当主线,最多用来对比“为什么不够”。
8. 脱敏和保密
- 仓库里不放:公司代码片段、内网地址和端口、真实接口路径、真实任务 / 客户数据、密钥、截图里的业务内容。
- 案例卡只写机制:“草稿状态没有回写到任务表”可以写;具体表名、接口路径、字段名不写。
- 需要记私有细节时,写在
notes/private/,并把它加进.gitignore,只留在公司电脑上。 - 迷你项目必须是自己从零写的“无业务外壳”版本,角色和题目都用通用例子,不能复制公司代码或提示词。
- 每次
git push前跑一遍git diff --cached,看一眼有没有不该提交的内容。
9. 仓库结构(zhuangang)
zhuangang/
├── .gitignore # 至少包含 notes/private/、.env、*.db、node_modules/、.venv/
├── plan/ # 本计划文件夹(就是这些 .md 文件)
│ ├── README.md
│ ├── week01-go-basics.md
│ ├── week02-gin-api.md
│ ├── week03-postgresql.md
│ ├── week04-auth-project1.md
│ ├── week08-python-basics.md
│ └── agent-mini-project.md
├── go-learning/ # 第 1 周语法练习,含第 7 天的 todo 命令行项目
├── todo-api/ # 第 2~3 周:任务清单 Web 版(Gin + PostgreSQL + 前端)
│ ├── backend/
│ └── frontend/
├── task-board/ # 第 4 周:项目一 团队任务看板
│ ├── backend/
│ └── frontend/
├── notes/ # 第 5~7 周:盘点、架构图、案例卡(全部脱敏)
│ ├── 00-inventory.md
│ ├── 01-architecture.md
│ ├── 01-api-table.md
│ ├── cards/
│ └── private/ # 不进仓库(.gitignore)
├── py-learning/ # 第 8 周 Python 练习
├── agent-mini/ # 第 9~11 周:迷你多 Agent 项目(主交付)
└── career/ # 第 12 周:简历、口述稿、面试笔记
以后整理作品集时,可以把 task-board/ 和 agent-mini/ 单独同步到公开的 GitHub 仓库(再检查一遍脱敏)。
10. 换设备后如何继续
-
新设备安装:Git、Go、Node.js、Docker、Python 3.12 和 uv、编辑器(VS Code 或 Cursor)。
-
配好能访问
git.gozeros.com的 SSH 密钥,然后克隆仓库:git clone ssh://wsk@git.gozeros.com:30023/wsk/zhuangang.git cd zhuangang -
打开
plan/README.md,在“进度记录”里找到上次做到哪周哪天。 -
打开对应周的计划文件,从下一天继续。
-
需要数据库的项目:在项目的
backend/目录docker compose up -d启动 PostgreSQL,再按该项目 README 跑迁移。 -
Python 项目:进入
agent-mini/,运行uv sync安装依赖,复制.env.example为.env。 -
每天学完:更新进度记录 →
git add→git commit→git push。
完成后的下一步(不属于本计划,完成终点验收后再选一个开新路径)
- 评测集:给 Agent 输出做自动评测。
- 工具调用规范:函数调用、MCP。
- 可观测性:链路追踪、日志、成本统计。
- RAG + pgvector 知识库、Redis 缓存、Docker + Nginx + HTTPS 正式部署。
11. 进度记录
按周
第 14 周和第 8 周按天打勾(☐ 改成 ☑)。第 57 周和第 912 周按“周一周日”的节奏,周五验收时打勾。
| 周 | 主题 | 计划文件 | 每天 | 计划完成日 | 实际完成日 | 产出路径 | 周验收 |
|---|---|---|---|---|---|---|---|
| 1 | Go 基础语法 | week01-go-basics.md | ☐☐☐☐☐☐☐ | go-learning/ | ☐ | ||
| 2 | Gin 接口 + 前端 | week02-gin-api.md | ☐☐☐☐☐☐☐ | todo-api/ | ☐ | ||
| 3 | PostgreSQL | week03-postgresql.md | ☐☐☐☐☐☐☐ | todo-api/ | ☐ | ||
| 4 | 鉴权 + 项目一 | week04-auth-project1.md | ☐☐☐☐☐☐☐ | task-board/ | ☐ | ||
| 5 | 阶段0 盘点 + 阶段1 画图 | README 第 4 节 | ☐☐☐☐☐☐☐ | notes/00、01 | ☐ | ||
| 6 | 阶段2 A 编排 + C 流式 | README 第 4 节 | ☐☐☐☐☐☐☐ | notes/cards/ | ☐ | ||
| 7 | 阶段2 B + D + E | README 第 4 节 | ☐☐☐☐☐☐☐ | notes/cards/ | ☐ | ||
| 8 | Python 补课 | week08-python-basics.md | ☐☐☐☐☐☐☐ | py-learning/ | ☐ | ||
| 9 | 阶段3 M1 + M2 | agent-mini-project.md | ☐☐☐☐☐☐☐ | agent-mini/ | ☐ | ||
| 10 | 阶段3 M3 持久化 + 续跑 + SSE | agent-mini-project.md | ☐☐☐☐☐☐☐ | agent-mini/ | ☐ | ||
| 11 | 阶段3 M4 文档 + 映射表 | agent-mini-project.md | ☐☐☐☐☐☐☐ | agent-mini/ | ☐ | ||
| 12 | 阶段4 包装 + 终点验收 + 投递 | README 第 4 节 | ☐☐☐☐☐☐☐ | career/ | ☐ |
按阶段(来自参考文档)
| 阶段 | 计划完成日 | 实际完成日 | 产出路径 | 验收 |
|---|---|---|---|---|
| 第 1 个月 Go 全栈基础 | task-board/ | ☐ | ||
| 0 盘点 | notes/00-inventory.md | ☐ | ||
| 1 读通与画图 | notes/01-*.md | ☐ | ||
| 2 案例卡 | notes/cards/ | ☐ | ||
| Python 补课 | py-learning/ | ☐ | ||
| 3 迷你项目 | agent-mini/ | ☐ | ||
| 4 终点 | career/ | ☐ |
卡住和收获(每天一句)
| 日期 | 周/天 | 一句话收获或卡住的地方 |
|---|---|---|
12. 终点验收清单(全部勾选才算完结)
全栈能力
- 项目一(团队任务看板)能本地跑起来,README 清楚
- 能讲清 goroutine、channel、切片底层、接口、错误处理
- 能讲清表结构设计、索引、事务、迁移、JWT 鉴权
Agent 能力(参考文档的终点)
- 架构图最新版已归档,和迷你项目 README 里的一致
- 迷你项目可演示:启动 → 中途杀进程 → 重启续跑 → 结果可查
- 至少 2 张案例卡可以对外讲(已脱敏)
- 口述稿计时不超过 4 分钟,覆盖 A / B / C 中至少两项
- 第 1 节“终点”四条全部满足
求职
- 简历更新完成(Agent 三条 + 全栈一条),没有编造的数字
- 已开始投递
- 写下一句“下一步如果继续学”:评测集 / 工具调用规范 / 可观测性(三选一),作为新路径,不塞进本计划
完结动作:把本文件开头的状态改成“已完成(YYYY-MM-DD)”,提交并推送。本路径正式结束。