Files
zhuangang/plan/README.md
T

23 KiB
Raw Blame History

转岗计划总纲:Go 全栈基础 + Python 多 Agent 应用

这是整个计划的入口文件。换了电脑或者隔一段时间回来,先看这份文件的“进度记录”,再打开当前所在周的计划文件继续做。

状态:未开始 / 进行中 / 已完成(   ) 开始日期: 当前所在周:


1. 背景、起点和目标

背景

  • 7 年 Web 前端(Vue / React),成人本科。
  • AI 写代码越来越多,“只会把页面写出来”的价值在下降,需要往“能设计、能交付、能讲清原理”的方向走。
  • 学历在大厂简历筛选里吃亏,所以主攻看作品和经验的岗位,用能跑起来的项目和真实案例说话。

起点(已经具备,不用从零学)

  • 能独立开发和改通业务前端,能和后端 Agent 网关联调接口。
  • 在公司里接触过真实的多 Agent 产品链路:意图识别 → 多角色研讨 → 总结 / 交付 / 过程报告。
  • 踩过真实的生产问题:流式连接断开、模型额度不足、状态没有回写、数据库表结构和代码不一致、关掉页面后编排中断。

这些经历是转岗最大的本钱,后面的计划会把它们整理成“案例卡”和一个可以公开演示的迷你项目。

目标岗位

  • 应用侧 Agent 工程师
  • 大模型应用开发工程师
  • 全栈工程师(前端 + Go 后端)

终点(4 条必须同时满足,才算这条路径走完)

  1. 能讲清:一张架构图 + 三分钟口述“多 Agent 如何状态机化、状态存在哪、失败怎么办”。
  2. 能做小:一个不带公司业务外壳的迷你多 Agent 项目,本地可跑,覆盖编排 + 持久化 + 断点续跑(或写清降级策略)。
  3. 能举证:2 到 3 个“问题 → 根因 → 方案”的案例,优先来自自己在工作中遇到的真实问题(脱敏后)。
  4. 能对标岗位:简历和面试条目写得像“应用侧 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. 学习原则

  1. 每一步都落到文件:每天的任务都有明确要建的文件和完成标准;每周至少有一个能运行的提交或一页笔记。禁止“只看不写”。
  2. AI 写,你审:代码可以让 AI 生成,但每个文件你都要能讲清楚每一行在做什么,面试时这是最大的区分点。
  3. 边上班边学:工作日每天 1.5 到 2 小时,周末多投入一些。不建议裸辞。
  4. 代码和计划都进 Git:全部推到 zhuangang 仓库,换设备直接接着做。
  5. 只砍不加:进度落后时砍范围,不加新内容;新想法记到第 10 节“完成后的下一步”。
  6. 脱敏:公司代码、内网地址、真实任务数据、密钥、客户名,一律不进仓库。工作里的经验只以“机制 + 脱敏案例”的形式记录(详见第 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 做什么

  1. 写下一句话目标岗位(例:应用侧 Agent 工程师 / 大模型应用开发)。
  2. 列出自己在公司亲自改过、排查过的模块(只写通用名字,例如“前端多 Agent 研讨模块”“Agent 网关的作业接口”)。
  3. 按第 5 节 A~E 五个重点,填一张“已会 / 模糊 / 不会”三列对照表。
  4. 确认迷你项目技术栈: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 团队里关于“后台挂起 / 后台作业”的设计文档(如果有) 理想架构和现状差在哪

产出:

  1. 一张图(mermaid):用户 → 前端 → Agent 网关 → 草稿 / 作业 / 业务库。文件 notes/01-architecture.md
  2. 一张表:关键接口(初始化、运行并流式返回、草稿、作业、会话)各自职责。文件 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 包装与终点验收 + 投递

做什么:

  1. 简历三条 Agent 相关经历(STAR 写法):编排可靠性、状态权威、业务落地各一条,现象和结果写具体(数字必须真实,没有就写现象,不要编)。另加一条 Go 全栈项目一。文件 career/resume.md
  2. 面试口述稿:3 分钟架构 + 1 分钟“踩过的最大坑”。计时练习,总长不超过 4 分钟。文件 career/pitch.md
  3. Go 和数据库基础复习:goroutine / channel、切片、接口、错误处理、索引、事务。文件 career/interview-notes.md
  4. 对照第 1 节“终点”四条和第 12 节终点验收清单打勾;缺哪条补哪条,不开新需求。
  5. 开始投递:中小公司、创业团队、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/ 里,不进仓库)
日期:

优先写成卡的题目(来自你已经遇到过的问题):

  1. 关掉浏览器后,多轮研讨就停了(编排跑在前端)。
  2. 分析已经进行到第三步,但任务状态还是“未开始”(权威源 / 回写缺失)。
  3. 模型额度或鉴权失败,以及“换模型后恢复”。
  4. 主分支升级后某张表缺字段导致接口 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. 换设备后如何继续

  1. 新设备安装:Git、Go、Node.js、Docker、Python 3.12 和 uv、编辑器(VS Code 或 Cursor)。

  2. 配好能访问 git.gozeros.com 的 SSH 密钥,然后克隆仓库:

    git clone ssh://wsk@git.gozeros.com:30023/wsk/zhuangang.git
    cd zhuangang
    
  3. 打开 plan/README.md,在“进度记录”里找到上次做到哪周哪天。

  4. 打开对应周的计划文件,从下一天继续。

  5. 需要数据库的项目:在项目的 backend/ 目录 docker compose up -d 启动 PostgreSQL,再按该项目 README 跑迁移。

  6. Python 项目:进入 agent-mini/,运行 uv sync 安装依赖,复制 .env.example 为 .env。

  7. 每天学完:更新进度记录 → 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)”,提交并推送。本路径正式结束。