💻 程序员
两周不投简历,我重新做了一些沉淀
音频
两周不投简历,我重新做了一些沉淀
0:00/0:00
✦ ✦ ✦
今年面试圈有个变化——越来越多公司开始放弃八股文,转而考察 AI 落地能力。Bitget 是这样,Gate 也是这样。只要涉及到 AI Agent 相关的,一落地就是拷打。
面试官不再问"事件循环""原型链",反而问 "你怎么把一个 Agent 拆成可观测的节点" "你的 memory 是怎么设计的"。
各家在 AI 落地的方案选择差异也大。LangGraph、Dify、Coze、各家自研框架……生态处于一个混沌的状态,我自己也还没看清楚哪个会成为事实标准。
但能明确的是,之前在 ArcBlock 做 AIGNE Framework 和基于它构建的 Smith 应用,这段经验放到现在求职市场,反而有点尴尬——不是经验贬值,是对接的语言变了。
总体而言,面试官不太关心以前你的框架的内部细节,他更想看的是:你有没有落地的能力?你能独立负责什么模块?
那种被动感,比面试被刷掉更难受。
停下来两周,做点什么
两周前,我停止了所有投递。想清楚了一件事:简历没法讲故事,那就让作品讲故事。
我用不顶级的国产模型:MiniMax M3,结合自身经验,用 LangGraph 重做了一个真正在跑的项目:ai.firetable.tech。(没用顶级模型,是因为对我学习 LangGraph 而言,顶级模型会让我少踩坑,反而不好)
这不是为了炫技。是为了让面试官打开链接,在两分钟内 get 到我能做什么、能负责什么、我怎么跟 AI 进行 Peer 的。
这两周沉淀了什么
把之前积累的所有 AI 落地经验压缩到一个仓库,主要做了 6 件事:
- Multi-Agent / Multi-Graph 编排:我将 Turn 级别,拆成 router + subgraphs(chat / code / crypto / weather),再加 interrupt 驱动的 Client-side Tool。难点不在画图,而是 interrupt 怎么 resume、错误怎么隔离。同时还增加了 Background Graph 来做一些后台任务,不阻塞 Main Agent。

- Observability:LangGraph 自带的 callback,我基于它做了封装——每个 LLM call、tool call 都进 Postgres 每个对话渲成一个瀑布图。做完这套,所有节点的状态、耗时、错误都是可回放的。

- Credit 配额计算:每个用户和角色有配额,每次 LLM call 按 token 计费扣减。LLM 是无底洞,不锁死就是无限账单。

- Memory + Knowledge Base:每个用户有自己的记忆库,跨对话能 recall 上下文。我做了双层:用户级长期记忆 + thread 级短期摘要。还支持
save_memory是 LLM 触发的工具调用,recall是 middleware,会自动把<memory>+<threads>注入 SystemMessage。

- 如何跟 Agent 进行 Peer:在 Github workflow 集成了多个 Agent,让它们帮我把控 PR 质量;还把 repo 相关的 Deploy 流程写成了个 Skill,并且我的应用更新都是通过 Agent 来做的。不需要人工参与,干净利索,没有后遗症。

- 还有一堆边角活:Landing Page、多用户 SaaS、Drizzle + Zod、Tailwind v4 mobile 适配、Caddy 反代、 Cloudflare Origin Cert、Docker compose…… 这些不是 KPI,但每一块都是一个真实的工程决策。

这可能并不是"最佳实践"
这个过程中,我也遇到了很多问题,尤其在 LangGraph 中,针对 SubGraph 的支持,用着总感觉缺点什么,还会因为启用 LangSmith 导致各种 Bug。
我也给 Assistant UI 和 LangGraph 提了不少 issues,遇到需要上游好好处理的问题,我只能本地打 pnpm patch。
不过,如果你也在求职、在混沌期、不知道该不该停下来做点什么——
我的建议是:做一个能跑的作品,比十份精心修饰的简历更有用。
面试官也是程序员,他们更愿意打开一个真实的 GitHub Repo,而不是翻看你贴在简历背面的项目截图。
这一行比前面所有 "精通xxx" 的字加起来都管用。