主题
第 7 阶段:Go 与高性能 Agent 服务
周期: 4 周(Phase 7 / Week 1-4,独立编号,非全局周号)——进阶阶段,主线 Phase 1-6 完成后开始目标: 系统掌握第二后端语言 Go,并用它做出一个 Agent 基建方向的作品集项目(高性能 LLM 网关)。 关键产出物: 可部署、可压测、有 README 的 Agent 网关 + "能用 Go 干活"的简历标签
阶段定位(先想清楚再开始)
主线到 Phase 6 已经完成。 6 个阶段走完,你已经具备独立设计、实现、部署、评测一个 Agent 系统的能力,转型目标已达成。本阶段是进阶投资,不是必修课——适合放在求职期(面试淡季)或入职后的缓冲期,投入 4 周兼职时间。
为什么值得学 Go:
- Agent 基建岗位的语言偏好。 LLM 网关、Agent 平台、高并发推理服务等基建方向,Go 是事实上的主流选择(Docker、Kubernetes 生态同源)。你在 Phase 6 面试题里见过"Agent 服务的并发、成本、监控怎么做"——Go 就是把这类问题答漂亮的工具。
- 读懂 Go 生态的 Agent 开源源码。 MCP 官方 Go SDK、Ollama、各类 LLM 代理/网关项目都是 Go 写的。读得懂源码 = 能抄到最一线的工程设计,而不是只看二手教程。
- 第二语言让工程理解升级。 用过 Python 的 asyncio 再学 Go 的 goroutine/channel,你会真正理解"并发模型"是什么,而不是"会用某个库"。这种对比带来的理解深度,是只学一门语言永远到不了的。
为什么放在最后而不是中间: 主线的第一优先级是最短路径拿到 Agent 工程师职位。中途插一门语言会推迟求职,且没有 Agent 场景做载体、Go 只能干学。现在你手上有 Phase 1-6 的全部知识和项目,Go 从第一周就能以"Agent 基建"为载体学习——每一行代码都在为作品集服务。
关键认知
Go 与 Python 的心智模型差异(学习全程的锚点对比表)
| 维度 | Python(你已掌握) | Go(本阶段掌握) |
|---|---|---|
| 运行方式 | 解释执行 + 虚拟机 | 编译为单个静态二进制 |
| 类型 | 动态类型 + Type Hints(可选) | 静态类型(编译期强制) |
| 错误处理 | 异常(try/except,可不安处理) | 显式 error 返回值(不处理编译都过不了 lint) |
| 并发模型 | asyncio 协程(单线程事件循环,颜色函数) | goroutine + channel(CSP,任意函数都是并发的) |
| 继承 | class 继承 | 没有继承,struct 嵌入 + interface 组合 |
| 部署产物 | 解释器 + 依赖环境 | 一个二进制文件,扔进 scratch 容器就能跑 |
学习策略与 Phase 1 相同:锚点对比。 Phase 1 你用 JS/TS 做锚点学 Python;这次用 Python + TS 双锚点学 Go。每遇到一个新概念,先问"这在 Python 里对应什么?在 TS 里呢?设计差异为什么存在?"——差异处就是理解增长处。
一个贯穿全阶段的心智转变
Python 里并发是"库"(asyncio),Go 里并发是"语言"。 go 一个关键字就能起并发,channel 是一等公民。这意味着你不再需要区分 sync/async 两套 API(Python 里 httpx vs aiohttp 的割裂在 Go 里不存在),但也意味着数据竞争的风险无处不在——go test -race 会成为你的日常。这个转变的深度理解是本阶段的认知核心,比语法重要 10 倍。
进度追踪
⏱ 耗时参考(预估,第一轮内测后补真实数据)
学习者画像 实际/计划周数 卡点高发周 本路线毕业生(Phase 1-6 完成) 1.0-1.2x(4-5 周) Week 2(channel/select 并发模型)、Week 3(SSE 透传) 期间在职、投入不足 10h/周 1.4-1.6x(6 周) Week 3(网关项目周最容易断) 之前翻过 Go 语法 1.0x(4 周) Week 2(语法熟但并发模型仍要重学) 关键提醒: 有两门语言基础的人学 Go,语法从来不是卡点,并发模型和"显式一切"的工程文化才是。Week 2 觉得 channel 别扭是正常的,坚持写完 worker pool 练习就会通。
回填约定: 学习本阶段时,每周用复盘模板记录实际耗时;本阶段完成后,把实测周数回填到上表,并将标题中的"预估"改为"实测"。
- [ ] Week 1 - Go 语法速通(对比 Python/TS 学)
- [ ] Week 2 - 并发模型 + HTTP 服务 + 工程化
- [ ] Week 3 - 网关项目核心(转发 + 流式 + 路由 + 限流)
- [ ] Week 4 - 缓存 + 可观测 + 部署 + 压测 + 作品集化
- [ ] 阶段产出物:Agent 网关上线 + 压测报告 + README
降级提示: 时间不够时——P2(可砍):压测报告优化、技术博客、响应缓存的语义升级;P1(降为最低可行):缓存只做"非流式 + 精确 key"、可观测只做结构化日志;P0(不可砍):Week 1-2 语言与并发基础 + 网关的多模型转发 + SSE 流式 + 基础限流 + Docker 部署。网关没有流式和限流就不叫网关,砍了等于没学。
Week 1 - Go 语法速通(对比 Python/TS 学)
核心思路: 与 Phase 1 完全相同的教学法——你是程序员,用对比学最快,优先掌握 80% 场景的 20% 语法。
本周学什么(一句话概览): 变量与类型系统、slice/map、struct 与组合、interface 与显式错误处理、go mod 与 testing。详细内容见 每日计划。
产出物
Go 版 CLI 聊天机器人 v1: 复刻 Phase 1 Week 4 的 chatbot(命令行交互、多轮对话、流式输出)。写完把两版代码放在一起看——这门语言的性格就刻在这个对比里。
推荐资源
- A Tour of Go — 官方交互式语法教程,Week 1 主线
- Learn X in Y minutes (Go) — 速览语法
- Go by Example — 按主题查惯用写法,全年有效
Week 2 - 并发模型 + HTTP 服务 + 工程化
核心思路: 本周是全阶段的认知核心。goroutine/channel/context 是 Go 区别于一切脚本语言的灵魂,也是 Agent 基建岗位面试的必考点。
本周学什么(一句话概览): goroutine 与数据竞争、channel 与 select、worker pool、context 超时取消、net/http 服务与中间件、golangci-lint 与标准项目布局。详细内容见 每日计划。
产出物
并发 fetcher 工具: 并发抓取 N 个 URL(可配并发数、超时、重试),go test -race 干净通过。这个小工具就是网关的 embryo——Week 3 的转发与并发调度全是它的放大。
推荐资源
- Go Concurrency Patterns — Rob Pike 的经典讲稿
- Standard Project Layout — 社区项目布局约定(读一读即可,不必教条)
Week 3 - 网关项目核心
核心思路: 从本周起进入项目驱动。你要做的东西业界有成熟对照物(LiteLLM、OneAPI 等)——先自己设计,再对照它们的设计 diff 思路。
本周学什么(一句话概览): 网关架构与 openai 兼容协议、反向转发与多模型路由、SSE 流式透传、令牌桶限流、超时与重试。详细内容见 每日计划。
产出物
网关 MVP: 一个进程、一个 openai 兼容端点,按路由规则把请求转发到至少 2 个模型厂商,流式请求全程透传,超限请求被令牌桶拒绝。Phase 6 的 chat 前端改个 base URL 就能直接接到这个网关上——这是最好的集成验收。
推荐资源
- LiteLLM(Python)与 One API(Go)— 同一问题的两种语言答案,对照读设计
- golang.org/x/time/rate — 令牌桶标准实现
Week 4 - 缓存 + 可观测 + 部署 + 压测
核心思路: 把 MVP 打磨成能写进简历的作品:有数据(压测报告)、能一键部署(Docker)、能讲清设计(README)。与 Phase 6 作品集打磨的方法论完全同构。
本周学什么(一句话概览): 响应缓存、slog 结构化日志与请求指标、Docker 多阶段构建与云端部署、hey/wrk 压测与 P50/P95 优化、README 作品集化。详细内容见 每日计划。
产出物
- 网关 Docker 化并部署到 Fly.io / Railway,有公开端点
- 压测报告:并发梯度下的 P50/P95/QPS,以及一处性能优化的前后对比
- 完整 README:架构图、设计取舍(为什么用 channel 不用锁、为什么缓存只做非流式)、压测数据、快速开始
推荐资源
- hey — 最轻量的 HTTP 压测工具(Go 写的,顺便读读源码)
- Docker 多阶段构建官方文档
阶段总结与自检
完成标准
- [ ] 能向面试官讲清 goroutine/channel 与 asyncio 的模型差异,以及各自适用的场景
- [ ] 网关可演示:openai 兼容端点 → 按路由转发到 ≥ 2 家厂商,流式对话全程可见
- [ ] 有限流、超时、重试;
go test -race干净通过 - [ ] Docker 部署上线,有公开端点
- [ ] 压测报告有 P50/P95 数据,README 有设计取舍论述
- [ ] 能读懂 MCP 官方 Go SDK 的示例源码并跑通一个 server
面试故事线(这个项目怎么讲)
"我注意到 Agent 基建岗位普遍用 Go,于是用 Go 写了一个 LLM 网关:openai 兼容协议、多厂商路由、SSE 流式透传、令牌桶限流。压测从 XX QPS 优化到 XX QPS,P95 控制在 XX ms。过程中最深的体会是 Go 的并发模型和 Python asyncio 的本质差异……"
数字是你压测出来的真实数据——这也是为什么 Week 4 的压测是 P1 而不是 P2:有数据的基建项目在面试里比十个 CRUD 有说服力。
学完之后
- 把网关接入你的 Phase 6 作品集项目(chat 前端 → 网关 → 模型厂商),让它从"练习"变成"架构的一层"
- 进阶方向:给网关加成本核算与配额(Phase 6 的成本控制议题)、加 fallback 路由(主模型挂了自动切备用)、读 One API 源码对照你的设计
- Go 的下一站:读 Docker/K8s 生态里你感兴趣的项目源码,或给 MCP Go SDK 提一个 PR