Day 153 · 行业里的 Agent:金融、医疗、电商、SaaS 客服各长什么样
专题篇最后一篇。先用 881 条 JD 统计哪些行业在招 Agent 工程师,再拆 SaaS 客服、金融、医疗、电商四个行业的典型 Agent:知识从哪来、工具是什么、红线在哪、拿什么指标验收、出错要赔多少。最后讲面试时怎么把 SupportPilot 迁移到目标行业,以及怎么选行业。
Archive
188篇
专题篇最后一篇。先用 881 条 JD 统计哪些行业在招 Agent 工程师,再拆 SaaS 客服、金融、医疗、电商四个行业的典型 Agent:知识从哪来、工具是什么、红线在哪、拿什么指标验收、出错要赔多少。最后讲面试时怎么把 SupportPilot 迁移到目标行业,以及怎么选行业。
2026 年国内给智能体出了三份新文件:5 月的《智能体规范应用与创新发展实施意见》、7 月 15 日施行的《人工智能拟人化互动服务管理暂行办法》、5 月发布的 GB/Z 185 智能体互联系列国家标准,再加上清朗专项和已经施行一年的标识办法。今天逐条读原文,判断 SupportPilot 适用哪些、不适用哪些,再把「仅限用户本人决策、需由用户授权决策、智能体自主决策」写成一个能审计的决策策略。
Agent 替人花钱,要回答三个问题:谁允许它花、它买的是什么、钱怎么到账。今天按授权、结账、结算三层把 AP2、ACP、UCP、x402、MPP 和国内的银联 APOP、支付宝 AI 付放进一张图,读 x402 v2 的报文,再手写一个带「花钱授权框」的 Agent 钱包和一个按次收费的 API,把重放、篡改金额、付错资源三种攻击挡在门外。
浏览器 Agent 靠截图和点按钮操作网页,又贵又容易被页面文字劫持。WebMCP 让网站自己在页面里用 document.modelContext 注册工具,浏览器里的 Agent 直接调用,沿用用户已登录的会话。讲清 2026 年 10 月的规范和 Chrome origin trial 状态、命令式和声明式两种写法、和后端 MCP 的分工、两个方向的安全问题,再给 CloudLedger 账单页注册查发票、申请退款、提工单三个工具,不开 Chrome 也能测。
Agent 替用户调接口时,到底是谁在授权?用 RFC 8693 令牌交换和 act 声明表达「谁通过谁」,用 SPIFFE 式的工作负载身份让 Agent 自己有身份,用受众、scope、authorization_details 和几分钟的有效期把令牌收窄到只够干一件事;再看 MCP 的企业托管授权、ID-JAG,以及 IETF 里 AIMS、AAuth 这些还在写的草案。最后在本机跑一遍完整的代理授权流程。
Agent 的回答不一定只能是文字。2026 年让 Agent 在对话里渲染界面的做法收敛成了三条路线:MCP Apps 让工具返回一个沙箱里的 HTML 页面,A2UI 让 Agent 输出一份声明式组件描述交给客户端渲染,AG-UI 负责 Agent 和前端之间的事件传输。今天讲清楚三者各管什么、怎么选、安全边界在哪,然后用 Python 给 CloudLedger 写一个退款审批卡片的 MCP App,在官方测试 host 里真实跑通批准流程。
2026 年各家厂商开始出租整套 Agent 运行时:循环、沙箱、会话、记忆、观测都替你托管。今天把 Claude Managed Agents、Gemini Managed Agents、Bedrock AgentCore 和国内几家对应产品放在一起看清楚各自托管了什么、怎么收钱,算一笔运行时成本账,再把 Day 23 的查账工具接到 Claude Managed Agents 上跑一遍,最后给一张「自建还是租」的决策表。
第三方 MCP server、skill、插件本身就可能是攻击者。复盘 2025–2026 年几起真实事件,用一个「升级后工具描述被悄悄改了」的汇率 server 实测:DeepSeek 5 次里 5 次照着描述把客户邮箱和发票号塞进了参数。然后写一个给工具定义做指纹、发现被改就拒绝调用的 MCP 客户端,加上接入前扫描、环境变量白名单和 OWASP Agentic Top 10 对照。
Day 39 讲了怎么攻击,这一篇讲防御怎么落地:规则、安全分类器(Qwen3Guard、Llama Guard 4、Prompt Guard 2)、LLM 政策审核三层怎么排,误杀和漏放怎么量,延迟预算怎么分。给 SupportPilot 写一套能跑的 guardrail 和评测脚本,实测规则层误杀 18%、加上政策审核后漏放从 50% 降到 20%。
测试集是上线前写的,线上的问题它不认识。这一课把客服点踩、草稿被改了多少、转人工、客户追问这些信号收进一张表,每周算一遍健康报表,把可疑回复去重成组交给人审,审过的变成 Day 31 格式的测试用例,知识缺失的起草成帮助中心文章,最后同步到 Langfuse。代码全部可跑,用一周模拟数据实测。
手调 prompt 的那套「看错例、猜规则、改一句、再跑一遍」可以交给程序做。用 60 条 CloudLedger 工单实测三种做法:60 行自己写的反思循环、DSPy 的 GEPA、ACE 式的增量规则手册,看它们各自把分数提了多少、在哪里过拟合、花了多少钱。
海外 JD 里 TypeScript 占三分之一,美国本土接近一半。今天用 AI SDK 7 的 ToolLoopAgent、工具审批和 useChat,把查账 Agent 做成一个前后端都是 TypeScript 的 Next.js 应用;再用 Mastra 1.x 写一遍同一个 Agent,最后和 Day 49「Python 后端 + 自己读 SSE」的做法摆在一起,讲清楚什么时候全用 TS。
国内 JD 里 Java 和 Go 各占两成多,很多公司的业务系统根本不是 Python。今天把 Day 27 那个「查重复扣款」的任务用 Spring AI 2.0、LangChain4j 1.22 和字节的 Eino 各写一遍,对照 Python 版看同一套概念在 JVM 和 Go 里叫什么,再讲清楚什么时候该全用 Java/Go,什么时候让 Python Agent 服务和 Java 业务系统各干各的。
国内 JD 里 Dify 出现得比 LangGraph 还频繁。今天把 Dify、扣子、阿里云百炼、n8n 在 2026 年 10 月的真实状态查清楚,把 CloudLedger 的工单分流在平台上搭一遍,写一个只读接口把业务数据接给平台,再用同一份用例给代码版和平台版打分。最后给一张「什么时候该从平台改成写代码」的判断表。
不是所有 Agent 都长在聊天框里。新工单的 webhook、客服邮箱里的新邮件、每天早上的定时扫描都能把 Agent 叫起来;它在后台起草好回复,停下来进收件箱,等人批准、改写、提意见或忽略。今天把验签、去重、领任务、断点续跑、收件箱和死信一层层搭出来,全部实跑。
企业里最常被提的 Agent 需求之一是「用大白话查数据」。今天给 CloudLedger 的业务库做一个问数 Agent:把表结构、真实取值和业务口径喂给模型,用三道闸保证它只读不写,生成、执行、报错自修、结果自检一条龙,最后用 10 道题量执行准确率,看第一版为什么只有 7/10。
向量检索擅长「找一段像的话」,不擅长「把散在多篇文章里的关系串起来」和「把整个知识库总结一遍」。今天用大模型从 CloudLedger 帮助中心抽出实体和关系建一张图,手写 local search 和 global search,和 Day 18 的混合检索并排比一比,再用 ast 给代码库建一张依赖图。
客户不会只发文字:报错截图、手机拍的账单、扫描版合同。这一课先弄清楚模型怎么「看」图、一张图要多少 token,再用 DeepSeek 的视觉输入把一张 CloudLedger 扫描账单抽成结构化数据并和业务库对账,实测改过数字的账单能不能被抓出来;然后让截图进 W3 的检索,最后过一遍 MinerU、Docling、PaddleOCR-VL 和 ColPali 这些 2026 年的文档解析工具。
这一课不讲 Coding Agent 内部怎么实现,讲你作为工程师怎么用它:写一份够短的 AGENTS.md,用 hooks 把「请不要」变成「不能」,配一个只读的审查子 Agent,用 claude -p 在 CI 里无人值守地跑,再用 Spec Kit 走一遍规格驱动开发。最后讲怎么验收 Agent 写的代码,以及面试官问「你怎么用 AI 写代码」时怎么答。
推理模型是怎么来的、各家(DeepSeek、Claude、OpenAI、通义)怎么开关和调思考强度、思考 token 怎么计费;用一套 CloudLedger 计费题实测思考关闭、low、high、max 和五次投票的准确率、token、延迟和花费;再讲自洽投票、best-of-N、树搜索这些「多花推理时间换准确率」的老办法,以及在 Agent 里什么时候值得开思考。
给云簿后台造 60 个工具,实测一次全挂上要 4539 个 prompt token,只挂一个搜索工具是 482。今天讲 Anthropic 和 OpenAI 原生的 Tool Search、Claude Code 的 MCP 延迟加载,再在 Day 9 的循环里自己实现一个:BM25 和 embedding 两种检索、30 条用例测选工具的召回率,最后看一次真实轨迹里检索漏掉工具时模型会怎么错。
让模型不再一次调一个 JSON 工具,而是写一段 Python 批量调用工具、在代码里过滤和汇总,只把结果交回上下文。讲 CodeAct 论文、smolagents、Cloudflare Code Mode、Anthropic 程序化工具调用,自己写一个带工具桥的执行器,实测同一道题 JSON 做法和代码做法的 token 和正确率,最后讲沙箱为什么必须有、怎么选。
Skill 就是一个带 SKILL.md 的文件夹:启动时只让模型看到名字和一句描述,用到时才读正文、参考文件和脚本。今天给云簿写一个退款计算 skill,在 Claude Code 里跑通,再在 Day 9 的手写 Agent 循环里实现一个 80 行的 skill 加载器,最后讲清 Skills 和 MCP、子 Agent 怎么分工,以及恶意 skill 这条新的供应链风险。
两个作品做完了,最后一天把它们变成招聘方看得懂的东西:BillSleuth 的案例页模板、两分钟演示视频的逐秒脚本、FDE 面试里讲项目的四段式(客户场景、方案、指标、取舍),中英文简历条目,个人网站的作品集页怎么排。再用 2026 年 10 月抓的两批岗位数据(88 条可远程的 FDE 类岗位、131 条外企在华 AI 应用岗)说清楚这两个作品分别对准哪类岗位、有哪些现实限制。最后是作品篇自检清单。
把 BillSleuth 做成招聘方点开就能试的网页:FastAPI 用 SSE 把调查图的每个节点更新实时推给前端,页面上并排展示调查步骤、复算对比表、结论和证据链。每次调查在独立子进程里、用独立的库副本跑,标准答案不下发,按 IP 限流加每日花费上限。调查结束可以下载 Agent Loupe SDK 格式的 JSONL,拖进作品一回放,我用作品一的导入器实际导入验证过。最后给出两种部署。
拿着 Day 127 的评测结果做错误分析:先把失败自动分桶,再逐桶读样例。冒烟的 15 次运行全对,唯一的「失败」是厂商排队超时,但读成功的运行时发现了真问题:重复开票时贷记单开在哪张,取决于模型列发票号的顺序。写一个不调模型的组件级评测把它量出来(160 次判断开错 7 次),在 recompute_invoice 的返回结构上加 overpaid 和 duplicate_of 两个字段后降到 0。再讲一次只改一处、用 McNemar 判断提升、模型对比,以及怎么切留出集防止对评测集过拟合。
给 BillSleuth 建一套能复现的评测:Day 122 造的 100 个场景(12 类根因 80 个,四种「账其实没错」20 个),一个会着急、会记错数字、会追问的 LLM 模拟客户,一组纯规则的判分(根因、多收金额、发票号、动作、数字幻觉、误冲正、漏冲正、转人工),每次试验在独立进程里从干净的库副本开始,结果带置信区间和 pass^k。顺便回答 Day 124 留下的问题:结论多写了原发票号算不算对。
结论要冲正时,由代码(不是模型)起草贷记单,调查图在审批节点用 interrupt 暂停,主管在命令行或网页上批准或驳回,图从磁盘上的 checkpoint 恢复。给 Day 123 的 draft_credit_note 加显式幂等键和 BEGIN IMMEDIATE,补上 approved、issued、rejected 三个状态,两人审批门槛,签发前再查一次额度,驳回后改写给客户的话。11 个测试把权限边界钉死,其中一个证明了 Day 123 的「已有草稿就返回」挡不住批准之后的重放。
把调查结论写成两份解释:给客户的大白话版和给同事的带证据编号版。写一个数字溯源校验器,检查回答里每个金额和百分比能不能在证据链里找到出处,不过就把问题清单交回模型重写,三次不行用模板兜底。附真实运行里校验器误伤、漏网和抓到问题的几个案例。
用 LangGraph 把调查流程搭起来:先用结构化输出读懂客户在抱怨什么,用代码定位候选发票,再进入「提出假设、调工具验证」的循环,最后通过 SubmitFindings 提交结构化结论。工具结果由代码自动抽成带编号的证据链。用 DeepSeek 实跑 16 个场景,覆盖全部 12 类根因和 4 种「账没错」。
把计费库和参考引擎包成 Agent 能用的 MCP 工具:6 个只读查询工具、1 个复算工具 recompute_invoice、1 个只能写草稿的 draft_credit_note。讲清楚工具粒度、返回结构、写给模型看的报错、读写分离和审计日志,最后用测试证明 100 个场景的差额都能被复算工具找出来。
把昨天手算的计费规则写成一个参考引擎:Decimal 金额、按天折算、计费锚点、优惠券和税率有效期,用单元测试一条条钉死;再写 12 个模仿真实 bug 的故障注入函数,一次生成 100 个带标准答案的争议场景,并用测试证明每个标准答案都是对的。
第二个作品换一个方向:做一个能查清「为什么多扣了钱」的计费争议调查 Agent。今天先补订阅计费的基本功(计费周期、锚点日、按天折算、优惠券、税、贷记单),再把 PRD、非目标、架构、十天排期和验收指标定下来。
作品一收尾:写一份三十秒能看懂的 README,用三篇 ADR 记下这几天最重要的取舍,配上一键启动脚本、CI 和发布前自查脚本,选 License、打第一个版本;再准备两分钟演示视频的分镜、个人网站上的案例页、简历描述,以及面试时三种长度的讲法和最可能被深挖的问题。
把 Agent Loupe 放到网上让招聘方点开就能试:只读演示模式、样例脱敏和残留扫描、按 IP 和全站的重跑限流、按当天实际花费计算的每日上限、只信任确定存在的那层代理、CORS;前端部署到 Cloudflare Pages,后端给 Fly.io 和自己的云服务器两种方案;最后按方法测性能,把数字回填进表格。
在 Loupe 里看到一个失败的步骤,一键存成评测用例:快照保存那一步的完整输入和原运行的工具结果,写几条断言;批量多次运行算通过率和 pass^k,把模型服务的 503 和 Agent 自己的失败分开统计;导出成 Day 35 的 golden.jsonl;改提示词前后各跑一批,用回归对比看哪些用例变差了。
在第 3 步发现模型做了个糟糕的决定,改一句系统提示词,从第 3 步重新跑:前面的步骤原样保留,工具结果从原运行里回放,白名单里的只读工具可以真实执行。今天实现录制-回放(cassette)、第 N 步上下文重建、分叉运行和重跑对话框,并用 DeepSeek 实测非确定性和 cassette miss。
改了一句提示词,Agent 的行为变了,但是从哪一步开始变的?今天给 Agent Loupe 加上逐步对比:用「这一步做了什么决定」当签名,LCS 对齐两条步骤序列,标出相同、不同、多出、缺少,再用按词切分的逐词 diff 看清具体改了什么。
点开任意一步,看模型收到的完整 messages、返回的工具调用和思考内容;把每次模型调用的上下文拆成系统提示词、工具定义、历史、工具结果、本轮新增五块,看各占多少;再画一张上下文增长图和一张成本冰柱图,找出「哪一步把上下文撑大了」「钱花在了哪」。
前端开工。Vite + React + TypeScript 起项目,写运行列表页和运行详情页,用步骤树加瀑布时间轴把一次 Agent 运行画出来;再用虚拟滚动让一万步也能顺畅滚动,并学会用 Chrome Performance 面板测量它到底卡不卡。
把导入器接到后端:SQLite 表和索引怎么设计,导入为什么要放在一个事务里,运行列表用游标分页而不是 OFFSET,一万步的 trace 怎么分段加载,成本按价格表补上。最后用 curl 和 pytest 把每个接口都验一遍,并实测一万步导入和查询的耗时。
定下 Run 和 Step 两个模型,读懂 OpenTelemetry GenAI 语义约定里的 gen_ai.* 属性,写出 OTLP JSON、Langfuse 导出、自研轻量 SDK 三个导入器,最后给 Day 9 的 Agent 加几行代码,产出第一条真实的 trace。
作品篇开工。先回答为什么要做一个 Agent 调试器、现有的 Langfuse、LangSmith、Phoenix 已经做到哪一步、还缺什么,再把 PRD、架构、仓库骨架和十天里程碑定下来。今天写的代码不多,但后面九天都照着它施工。
110 天的最后一天。用 880 条 JD 里资深档的真实数据做一次完整的自检:国内资深岗挂牌年包在什么区间、海外 Staff 岗给多少、远程的门到底有多窄;资深岗位怎么找、怎么谈(职级比薪资更值得谈);以及走完这门课之后,往哪几个方向继续。
资深面试里最有说服力的证据,往往是面试官能自己点开看的东西:一个被合并的 PR、一篇有数据的技术博客、一次分享的录像。今天讲怎么给 MCP 和 Agent 框架提一个能被合并的 PR,在 AI 生成 PR 泛滥的 2026 年要注意什么,怎么写技术博客和做分享,以及这些对国内资深岗和海外远程岗到底有多大用。
资深工程师没有直接权力,却要让老板拍板、让别的团队迁移、让新人把 Agent 做对。今天讲四件事:用 ROI 和评测数据写一页纸给管理层,在没有权力的情况下推动平台落地,带新人做 Agent 项目,以及怎么回应「AI 不靠谱」的质疑。
资深和 Staff 的系统设计面试,考的不是你记住了多少组件,而是你能不能从业务目标和约束出发,在 45 分钟里把规模估算、关键取舍、评测和演进路线讲清楚。今天用「企业级 Agent 平台」「十万并发客服 Agent」「代码 Agent 的评测体系」三道题完整走一遍,附追问清单和常见失分点。
到了资深这一档,你最重要的产出不再是代码,而是一份能让十个人对齐的设计文档和一串能回答「当初为什么这么选」的 ADR。今天拿 AgentOps 的模型网关当例子,把设计文档每一节写什么、Agent 系统要多写哪几节、取舍怎么写才有说服力、评审时怎么接住质疑,一次讲清楚。
AgentOps 写完了,今天把它变成招聘方愿意花时间看、看完会想约你聊的东西:一条不需要 API key 和 Docker、几秒钟跑完的演示命令,一份让人三十秒看懂的 README,一组用真实数据说话的报告和 ADR,一个三分钟的演示视频,一篇只讲一个坑的技术博客,以及一份发布前的自查脚本。最后讲面试时怎么用三十秒、三分钟、十五分钟三种长度讲这个项目。
用一个可控延迟的假上游和 Locust 压 AgentOps 网关,把网关自己的开销和上游的耗时分开量。我在本机实测出三件事:单进程五十 rps 左右就把一个核吃满;把连接池调大反而更慢;多进程部署时限流配额会翻几倍。再用利特尔定律和 DeepSeek 的账户并发上限算容量,最后给出 compose 和 K8s 两种部署和一张上线清单。
SupportPilot 是一个 Agent 被攻击,AgentOps 是多个租户共用网关、工具中心和运行时,多出来的攻击面是跨租户越权、工具定义被偷换、刷钱和审计被改。今天先用确定性测试把隔离钉死,再给工具中心加指纹、给审计加哈希链、给网关加按钱熔断,最后把 promptfoo 红队接进夜间 CI,做一次事故演练。
Day 85 讲了规模化可观测该怎么设计,今天把它真正装进 AgentOps:网关和级联路由按 OTel GenAI 约定打 span 和指标,trace 从调用方一路传到上游,指标用 OTLP 推给 Collector 以支持多进程部署;再用 usage 表做成本看板和账单对账。我在本机把网关、真实的 Collector 和 Prometheus 端点串起来跑了一遍,中间踩到的五个坑都写在里面。
Day 79 的级联路由写在 SupportPilot 自己的代码里,Day 81 训出了分诊小模型。今天把级联搬进 AgentOps 网关,变成任何租户都能用的 triage 路由:小模型先判,低置信度、高风险类别、输出解析失败、小模型挂了这四种情况回退大模型;上线前先跑 shadow 模式,用一致率决定什么时候切流量。
「新 prompt 通过率从 82% 涨到 86%」这句话,在 50 条用例上几乎没有意义。今天把评测做成平台服务:结果按用例落库,两个版本做配对比较,给出 McNemar 检验和成本差的置信区间;再加一个按客户稳定分流的 A/B 实验,让改动先在 10% 的流量上跑。
一张要等主管审批的退款工单,可能挂起两个小时;一个 worker 进程,可能在第五步的时候被重新部署杀掉。今天写一个最小的持久化运行时:每一步按幂等键落库,重放时已完成的步骤直接取结果;租约机制让死掉的 worker 的任务被别人接手;遇到审批就挂起,批准后从断点继续。
把散落在各团队的业务工具收到平台上:上游 MCP server 注册进来,租户的 Agent 通过一个统一入口访问,看得见什么工具由策略决定,写操作要一次性审批,每次放行和拒绝都进审计日志。最后用官方 MCP 客户端走一遍真实的 HTTP 链路。
所有团队调大模型都走这一个入口。今天写出 OpenAI 兼容的 /v1/chat/completions:逻辑路由、按租户的令牌桶限流、月度预算、主供应商挂了自动切备用,每一次上游调用都按租户和功能记账。全程用假上游测试,一分钱不花。
进阶毕业项目开工。SupportPilot 是一个 Agent,AgentOps 是让十个团队都能安全、便宜、可评测地跑 Agent 的平台。今天先不急着写网关,把设计文档、目录结构、五个子系统之间的接口和验收指标定下来,后面九天照着它施工。
这一周看了 Coding Agent、Computer Use、语音、Deep Research、Agent 互联和产品交互,每样都诱人。资深工程师要回答的是「我们明年该不该做 X」。今天把一周内容串成一张图,给出技术选型报告的模板,用加权打分矩阵加敏感性分析完整写一份「要不要做语音客服 Agent」的报告,最后是本周资深面试题汇总和坑清单。
Agent 做得再聪明,用户不敢用也白搭。今天讨论自主程度怎么分级、为什么它是一个设计决策;怎么展示计划和步骤让用户敢信任;怎么做到可中断、可撤销;失败时用户看到什么;以及工程师怎么和 PM、设计师一起定下这些规则。最后给 SupportPilot 的每个动作定自主级别,实现一个带撤销窗口的动作策略引擎。
你的研究员如果是别的团队、别的公司做的 Agent,怎么发现它、调用它、信任它?今天读 A2A 1.0 规范:Agent Card、任务状态机、三种传输绑定、版本协商和鉴权;理清它和 MCP、ACP 的分工;再手写一个最小的 A2A 服务端,把 SupportPilot 包成一个能被别的 Agent 调用的 Agent,并聊聊哪些会成为标准。
Deep Research 是一类跑几分钟到几十分钟的 Agent:澄清问题、写研究提纲、并行派出子 Agent 搜索阅读、压缩成笔记、写成带引用的报告。今天对照 open_deep_research、GPT Researcher、STORM 和 Anthropic 的工程复盘,讲清架构、评测和成本,最后实现一条可替换模型和搜索的流水线,外加一个不靠模型的引用核验器。
语音 Agent 的难点不在听懂和会说,在时间。今天把「用户说完到听见回应」这一秒多拆成六段,比较级联方案和端到端实时模型,讲清楚轮次检测和打断为什么是最难的部分,再用 asyncio 搭一条可调参数的模拟流水线,亲手把首个音频包的延迟从两秒压到一秒出头。
Day 26 让 Agent 打开过浏览器,今天往深里走:截图坐标、代码执行、可访问性树三条路线各自的代价;2026 年 Claude 和 OpenAI 的 computer use 接口长什么样;为什么 GUI Agent 难做可靠;截图到底多费钱;以及一个带白名单、不可信内容标记和写操作确认的浏览器运行时,当场演示网页注入。
同样一个模型,换一套工具接口,修 bug 的成功率能差出一截。今天把 SWE-agent、mini-swe-agent、OpenHands SDK、Codex CLI 拆开读:工具集怎么设计、编辑怎么做、上下文怎么压、沙箱怎么关、什么时候停。最后自己实现一套 ACI 工具和卡死检测,并设计一个能说服人的对比实验。
W13 收尾。把平台架构、模型网关、MCP 网关、规模化可观测、治理合规、事故响应拼成一份完整的 AgentOps 平台设计文档,用一份 36 项的架构评审清单逐项过一遍,再用模型当评审人做一次预审。最后是这一周的资深面试题和坑清单。
从 Air Canada、Cursor、Replit 三起真实事故讲起,整理 Agent 特有的六类事故;出事后头 15 分钟先按哪个开关、怎么用 trace 和回放定位根因、无责复盘怎么写,以及怎么把每次事故变成评测用例、护栏和灰度规则。动手实现一套分级紧急开关和自动行为熔断器。
企业客户的安全问卷、国内生成式 AI 服务的备案与登记、AI 生成内容标识、个人信息出境、欧盟 AI Act 在 2026 年 7 月调整后的时间表。今天把这些要求逐条翻译成技术方案:画数据流图、做数据分级、给每类数据定保留期,并实现一个能覆盖所有存储的删除流程。
一个 Agent 接 Langfuse 很简单,一百万次运行每天全量记录就会把存储和预算压垮。今天算清 trace 的数据量,用 OpenTelemetry Collector 的尾部采样只留下有价值的 trace,把 prompt 原文和元数据分开存、分开保留,定一套 Agent 的指标和 SLO,用燃烧速率代替固定阈值做告警。
模型出口管住了,接着管工具出口。按 2026-07-28 版 MCP 规范讲清远程 MCP 的 OAuth 授权流程、为什么禁止令牌透传、Client ID Metadata Documents 为什么取代动态注册;再用工具登记加指纹钉住防 rug pull,按租户和风险等级授权,写一份改一个字就能被发现的审计日志。
平台的第一块砖。所有 Agent 的模型调用都先经过网关:虚拟 key 鉴权、按月预算、按 token 限流、按模型组路由、出错自动切换供应商、按租户和项目记账。今天写一个能跑测试的最小网关,再对比 LiteLLM、Higress、Portkey 这些现成方案该怎么选。
SupportPilot 跑顺了,销售、HR、财务都来要一个自己的 Agent。今天讲什么时候该平台化、平台该给什么不该给什么、多租户在数据/配额/密钥/模型四个维度怎么隔离、控制面和数据面怎么拆,以及自建平台和直接上 Dify 的分界线。
W12 收尾。把选型、自部署、LoRA、蒸馏、置信度路由串成一条能重复执行的流水线,产出 AgentOps 平台的第一个自研模型:分诊路由小模型,连同数据卡、模型卡和上线方案。最后过一遍这周的资深面试题和最容易踩的坑。
SFT 和蒸馏都是在模仿,上限是老师。强化学习让模型从结果的对错里学,这是 2025 年以来推理模型和 Agent 能力提升的主要来源。今天讲清楚 RLVR 和 GRPO 在做什么,怎么给 Agent 设计奖励、怎么防奖励作弊,用 TRL 跑一个最小的 GRPO 实验,最后说清楚这块对应用工程师的意义边界。
大模型准但贵,小模型快但会犯错。今天用大模型给成千上万张工单打标签,蒸馏出一个专做分诊的小模型;再从 logprobs 里算出它对每个判断的置信度,低于阈值就回退大模型。最后扫一遍阈值,画出成本和准确率的取舍曲线,用数据选工作点。
客服回复没有唯一的标准答案,只有「这个比那个好」。今天把 RLHF、DPO、KTO、ORPO 这几种偏好优化方法的区别讲清楚,从 SupportPilot 的人工修改记录和评测结果里造成对数据,用 TRL 跑一次 DPO,再检查它有没有学到你不想要的东西,比如回复越来越长。
微调不是「效果不好就训一下」的万能药。今天先把提示词、RAG、微调各自能解决什么问题分清楚,然后选一个真正适合微调的任务:SupportPilot 的工单分诊。从线上记录造训练集,在 Colab 免费 T4 上用 LoRA 训练一个 4B 分诊模型,挂到 vLLM 上和原版比一比。
把一个开源模型跑成 OpenAI 兼容接口,让 SupportPilot 改一个环境变量就能调用。先算清楚什么时候值得自部署,再用显存账解释 vLLM 为什么快,最后用压测工具量出吞吐和延迟,把昨天 TCO 里空着的那一项填上。
榜单第一的模型,放进你的工单流程里不一定第一。今天把选模型当成一次带数据的工程决策来做:先用硬约束砍掉一半候选,再用 SupportPilot 自己的评测集跑一场多模型对比,最后算总拥有成本,定出「哪个节点用哪个模型」的路由表。
W11 的六天写了一堆零件:用例户口本、统计模块、评审监控、线上实验、红队流水线、benchmark 自检。今天把它们串成一份 AgentOps 评测平台的设计文档:目标和非目标、架构、数据模型、关键取舍、风险和上线计划;再写一个对比报告工具,让每个 MR 都能看到「变化有多大、区间多宽、这个评测集看不看得出来」。最后是这一周的资深面试题和坑清单。
评测集和 benchmark 的区别,在于后者要让别人也能复现、也信得过。今天拆解 τ-bench 和 SWE-bench 是怎么造出来的,再看 2025 年那篇 benchmark 体检论文发现的问题:τ-bench 里一个只会回空话的 Agent,在不可能完成的航空任务上拿了 38%,比 GPT-4o 还高。然后给 SupportPilot 设计 CloudLedger-Bench:环境快照、按最终数据库状态判分、参考解和空 Agent 双重自检、防污染金丝雀串、版本规则,并用代码抓出两个藏着 bug 的任务。
Day 39 和 Day 53 我们手写过一批注入用例。手写的用例几十条就到头了,攻击者却有无穷多种说法。今天把红队变成一条流水线:种子攻击 × 变形策略 × 投放位置自动组合出用例,只看「实际发生了什么」的检测器判定成败,攻击成功率带区间汇报,打穿的用例自动进回归集;再写一个会根据失败改写攻击的自适应攻击者,最后看 promptfoo、garak、PyRIT 怎么接进来。
离线评测说新 prompt 更好,线上就一定更好吗?不一定。今天给 AgentOps 写一个最小可用的实验框架:按客户稳定分流、SRM 检查、用 delta 方法算按客户聚合的比率指标、一个主指标加护栏的决策规则。再用模拟数据跑出三个教训:转人工率降了 3 个点但成本涨了 16% 时该不该上线;按会话算方差会把标准误低估一半;每天偷看一次结果,假阳性率从 5% 变成 22%。
SupportPilot 每天三千张工单,想每天看一次回复质量,只能靠 LLM 评审。规模上来以后,Day 32 那套校准不够用了:校准集里差评样本太少、校正后的通过率自己也有误差、三个评审投票照样会一起犯错、评审模型一升级就悄悄变宽松。今天用模拟数据把这些问题一个个跑出来,写一个带区间的校正、投票分流和漂移报警模块,再算清楚评审的钱和人工各花多少。
v2 在 180 条用例上比 v1 高了 1.1 个点,能合并吗?今天用 SupportPilot 那种「场景 × 说法」的评测数据,把 Wilson 区间、聚类标准误、配对比较、McNemar、按簇 bootstrap、重复采样和功效分析全部写成代码跑一遍。跑完你会发现,这 1.1 个点在统计上什么也说明不了,而这个评测集连 6 个点以下的提升都看不出来。
基础篇里评测是你一个人的事:自己写用例、自己跑、自己看分数。到了一个五六个人、两三条产品线的团队,评测会烂掉,原因几乎都不是技术。今天讲评测在团队里怎么分工、用例从哪来、谁来评审、能力集和回归集怎么流转、什么时候该退役,再写一个给用例上户口的小工具。
W10 的五个主题合成一份正式的设计文档:AgentOps 运行时的背景、目标与非目标、方案、被放弃的选项、风险和评测计划。先讲设计文档为什么存在、写什么不写什么,再给出一份完整示范和两份 ADR,最后是这周的资深面试题汇总和坑清单。
「该用单 Agent 还是多 Agent」是资深面试最爱问的问题之一,网上的答案两边都有。今天把 Anthropic、Cognition、LangChain 三篇文章的论据摆在一起,拆出决定架构的五个维度,讲清共享状态和消息传递、失败隔离这些细节,再写一个在同一批任务上对比几种架构的实验脚本,最后整理成一棵决策树。
退款审批要等主管几个小时,年度对账要跑一个下午,中间发版重启、机器被回收都很正常。今天讲持久化执行(durable execution)的原理:把每一步的结果记进日志,重启后重放。再讲 Agent 特有的麻烦:模型输出不确定,重放时怎么办;副作用做了一半,怎么不重复退款。最后自己写一个带日志重放和幂等键的运行器,并对比 Temporal、Restate、DBOS 和 LangGraph checkpoint。
昨天管的是一次任务里的上下文,今天管跨会话的记忆。先用 CoALA 的分类把「记忆」拆开,再看 mem0、Letta、Zep、LangGraph store 各自怎么解决写入、检索、冲突和遗忘,最后给 SupportPilot 写一个带来源优先级、有效期和删除权的客户记忆,并讲清楚哪些东西绝对不能记。
跑五十步的 Agent,上下文会变成最贵也最容易出错的地方。今天看三份一手资料:Chroma 的上下文腐烂实验、Anthropic 的上下文工程文章、Manus 围绕 KV 缓存命中率的六条经验,然后写一个按「轮」裁剪的分层上下文管理器,最后设计一个实验,在自己的任务上比较几种策略的成功率和成本。
基础篇 Day 9 手写的那 100 行循环,到了平台上要变成一个运行时:工具层、上下文管理、权限、钩子、子 Agent、状态持久化都要有扩展点。今天先读 OpenAI Agents SDK、Claude Agent SDK 和 LangGraph 三家的运行时源码,看它们各自怎么取舍,再给 AgentOps 写一个 200 行的 harness,带审批暂停和恢复。
前 60 天让你能做出一个像样的 Agent,接下来 50 天要让你能扛住一个团队的 Agent 系统。先用 880 条 JD 里标题带「资深、专家、架构师」的那 42 条看清楚资深岗要什么,再看进阶篇的地图和要做的 AgentOps 平台,最后换一种学习方式:读论文、读源码、写设计文档。
最后一天。对照 880 条真实 JD 的技能频次给自己打一次勾,清点作品,把没达标的地方排进补课计划;然后讲接下来三个月值得深入的方向:LoRA 轻量微调、浏览器 Agent、Agent Harness 与可观测、语音 Agent、开源贡献,附一个最小可跑的浏览器 Agent 和一个 LoRA 实验的设计模板,以及长期跟进这个领域的信息源。
用 2026 年 10 月抓取的 880 条 AI Agent 岗 JD 说话:每个招聘平台能看到什么、看不到什么,国内、新加坡、香港、美国、海外远程各自的薪资样本和口径,Forward Deployed Engineer 这类岗位是什么,远程岗真实的地域限制,以及谈薪、比较 offer、识别假 AI 岗和培训贷。
Agent 岗的系统设计题怎么答:一套七步框架(需求、指标、架构、数据、评测、风险、成本与 ROI),用「企业客服 Agent」和「Deep Research Agent」两道最常见的题完整走一遍,包括容量估算、Agent 与人工的 ROI 算账、分阶段上线方案,以及面试官最爱追问的问题清单和一道现场编码加强题。
Agent 岗技术一面的高频题,按模型与提示词、工具调用、RAG、Agent 架构与框架原理、上下文工程、MCP 与 Skills、评测、安全与工程化分组,一共 60 道。每道题给答题要点,答案折叠,先自己说一遍再展开。题目的侧重按 880 条真实 JD 的技能频次分配。
用 880 条真实 JD 的技能频次给简历做关键词对照,把 SupportPilot 和代码审查 Agent 写成「问题、方案、数据」三段式的项目经历,把原来的工作经历诚实地往 AI 方向改写,并正面处理年限和学历门槛。最后产出中英文两版一页简历。
做一个挂在 GitHub PR 上的审查机器人:拿到 diff、算准行号、让模型按结构化格式提意见、过滤掉误报,再作为行内评论发回去。重点不在「能评论」,而在怎么用埋 bug 的数据集证明它的意见值得看。
招聘方不会 clone 你的仓库。今天把 SupportPilot 包装成一个面试官 5 分钟能看懂的作品:README 第一屏放什么,架构图怎么画,两三分钟的演示视频怎么录,技术博客写哪些踩坑和数字,GitHub 主页和提交历史怎么整理。
SupportPilot 第一次上公网之前,先当一回攻击者:写一套注入测试集,看它会不会泄露别的客户的账单、会不会绕过审批退款。修好之后用 Docker Compose 把服务、数据库、前端和 HTTPS 一起部署到云服务器,再加上限流、每日预算和演示账号,别让 demo 把你的 API 余额刷光。
给 SupportPilot 装上眼睛和账本:每张工单在 Langfuse 里是一棵能点开的 trace,每次模型调用都记一笔精确到分的账。然后用两招把单工单成本压下来:让 prompt 前缀稳定以吃到缓存命中价,让小模型干分类、大模型只管起草。
拿着 Day 50 的基线报告做错误分析:读失败用例、写一句话笔记、归类、计数、挑最多的先修。修法分四种:改代码规则、改检索、改提示词、改评测集本身。每次只改一处,在 dev 上跑并记进改动日志;最后跑一次 test,看提升是不是真的。附我在写这个项目时实际踩到的四个 bug。
把 Day 43 的验收指标变成能自动跑的评测:36 个场景、100 种客户说法,按场景拆 dev/test;规则检查管分类、工具轨迹、退款闸门、引用、事实和禁语,LLM 评审只判"有没有依据"和"有没有解决问题"两件事,再加成本和延迟。跑出第一份基线报告,并学会检查评审本身准不准。
用 FastAPI 把工作流包成 HTTP 接口,用 SSE 把每个步骤、每次工具调用、每个字推给前端;再用 Next.js + React + TypeScript 做两个页面:客户视角看着 Agent 干活并追问,客服工作台一键审批退款。讲清楚为什么不用 EventSource、要不要上 Vercel AI SDK、怎么停止、怎么让读屏软件不被逐字播报逼疯。不会前端的同学,文末有 Streamlit 版。
给 SupportPilot 加上三种记忆:同一张工单里的多轮对话(状态存进 Postgres,进程重启也不丢)、跨工单的客户画像(只在历史变化时重建)、对话太长时把早期轮次压成摘要。改动集中在三个新文件和两个节点,用假 LLM 测多轮和压缩。
SupportPilot 的心脏。把 LLMClient 搬进项目并加上成本账本和结构化重试,设计工作流状态,写九个节点和条件路由:查客户、分诊、检索、调工具、起草、质检、退款审批、定稿、转人工。用假 LLM 写单测覆盖审批、转人工、质检打回,最后在终端里端到端跑 10 张工单。
写 SupportPilot 的业务工具:查客户、订阅、账单,退款规则写死在代码里并用剧情客户测试,退款只能创建待审批申请。按权限分级注册给模型。对接企业系统:审批通知推到飞书/钉钉/企业微信群,加一个只读、带 SQL 校验和行级隔离的 text-to-SQL 工具。最后包成 MCP server,在 Claude Desktop 里查账单。
把 W3 的 RAG 代码产品化:按小标题切块并带上下文前缀、按内容 hash 增量导入 pgvector、向量 + BM25 用 RRF 融合、可选 rerank、引用编号检查和渲染。最后跑一份只评检索的基线:纯 BM25 在 31 条种子查询上 recall@5 是 0.935,漏掉的两条正好说明为什么还需要向量。
用 uv 建好 SupportPilot 仓库,配上 ruff、pytest、pre-commit,用 pydantic-settings 管配置,Docker 起 Postgres + pgvector。然后造数据:62 篇帮助中心文章、200 个客户的订阅和账单,其中 12 个剧情客户对应 Day 43 访谈里拆出来的退款场景。一条 make data 建好全部。
毕业项目 SupportPilot 开工第一天。先用 JD 数据说清为什么选智能客服工单这个题,再像 FDE 那样从一次模拟客户访谈里拆出需求、非目标和验收指标,最后定架构、目录结构和 12 天排期。今天写的 PRD 是后面每一天的验收依据。
W6 收尾:一张图串起六天的内容,一份按「接口、可靠性、成本、安全、运维」分组的上线检查清单,整合后的完整代码和一个能对公网地址跑的冒烟与压测脚本,一次故障演练,再加本周面试题和踩坑清单。
用 uv 写一个小而安全的 Dockerfile,用 Compose 把 API、worker、Postgres、Redis、Caddy 编排在一起;密钥不进镜像不进 git;给国内轻量云和海外平台各一条部署路线,讲清楚备案这道坎;配一个最小的 GitHub Actions 流水线;最后算一算什么时候值得用 Ollama 或 vLLM 自己跑开源模型。
给工单 Agent 的每个工具定权限等级,让权限检查发生在代码里而不是 prompt 里;数据库账号也按最小权限拆开;Agent 需要跑代码时放进断网、限资源的沙箱;手机号、身份证号在进模型之前替换成占位符;每次敏感操作写进只能追加的审计表。最后对照 OWASP LLM Top 10 做一次自查。
亲手攻击自己的工单 Agent:在工单正文、客户昵称、知识库文章里埋指令,看它会不会乱退款、泄露别人的数据、把信息往外送。然后用「致命三要素」找出真正的风险点,一层层加防御,最后把这些攻击写成测试用例接进 CI。
把一张工单的花费拆到每一次模型调用,按 2026 年 10 月的真实价格算清楚钱花在哪;调整 prompt 结构让缓存命中,让便宜模型做分类、贵模型只做起草,用并行和流式压延迟,把积压工单挪到错峰时段和批处理接口上跑。
把跑十几分钟的批量工单处理从 HTTP 请求里挪到任务队列,用 arq 做异步 worker;分清哪些错误该重试、重试几层;用幂等键保证退款不会因为重试建两次;再用 LangGraph 的 checkpoint 让崩在半路的任务从断点接着跑。
前五周的工单 Agent 一直活在命令行里。今天给它套上 HTTP 接口:用 FastAPI 原生 SSE 把 token、工具调用和审批请求实时推给前端,用 LangGraph 的 Postgres checkpointer 管会话,再处理好并发、超时和用户中途关掉页面这几件事。
把这一周的 adapter、测试集、判题器、评分器、轨迹检查和 tracing 组装成一个评测系统:一条命令跑完三层检查,多进程并发,输出带基线对比的报告(哪些用例新挂了、哪些新修好了),再接进 GitHub Actions,合并请求自动跑,关键检查失败或分数明显下降就拦住。最后是 W5 的面试题和坑清单。
把 W4 的工单 Agent 接进 Langfuse,让每次运行变成一棵能点开的 trace 树,按客户和会话归类,把评测分数和用户反馈写回 trace;再用 OpenTelemetry 按 GenAI 语义约定手动打 span(工作流、模型调用、工具调用),把 token 用量做成指标,同时导出到 Langfuse 和 Jaeger。
只看最终结果会漏掉一半问题:查错了客户、重复调用、先退款后查发票。今天把 Agent 的工具调用序列当成评测对象,写顺序约束、参数校验、越权检查、冗余调用和预算检查;再写一个「模拟客户」和 Agent 多轮对话,照 τ-bench 的思路用数据库最终状态判定任务成没成。
代码断言查不了「回复有没有讲清楚政策」「有没有编造」。今天写一个只判一件事、只给 pass/fail 的 LLM 评分器,用你的人工标注去校准它:算 TPR、TNR 和 Cohen kappa,而不是只看准确率;再用这两个数修正评分器报出来的通过率,最后过一遍位置、冗长、自我偏好这些偏差。
把昨天错误分析的结果变成一份正式的测试集:每条用例有可机器检查的期望,期望值尽量用代码从业务数据里算出来而不是让大模型猜;用「维度组合 → 自然语言」两步法批量合成工单,补上边界和对抗用例,划分开发集和留出集,再算清楚测试集要多大才能分辨 85% 和 90%。
评测的第一步不是写评分器,而是看数据。今天批量生成 100 张工单跑一遍 W4 的 Agent,用一个几十行的 Streamlit 小工具逐条读 trace、写失败笔记,再把笔记归成几类、计数、排优先级,最后决定哪些问题直接修、哪些问题值得写成评测。
W4 做出来的工单 Agent 能跑了,但你改一句 prompt,它是变好了还是变坏了?今天建立评测的整套概念:评测金字塔、离线和在线、能力评测和回归评测、pass@k 和 pass^k,并给 W4 的 Agent 写第一个只有 10 条用例的冒烟评测。
把 W4 拼成一个能跑的工单 Agent:分类、检索帮助中心、按类别给工具、通过 MCP 查 CloudLedger 业务库、退款前停下来等主管审批、输出带引用的回复。附一页知识地图、W4 面试题汇总(含框架原理和何时不用框架)和这一周的坑清单。
同一个查重复扣款的小任务,用 LangChain create_agent、OpenAI Agents SDK、Claude Agent SDK 各写一遍,和手写版本对比。再把这两年新冒出来的概念理清:Agent Skills 是什么、它和 MCP、子 Agent 怎么分工,JD 里的 Agent Harness 指什么,以及面试里最难的那题:框架底层怎么实现、局限在哪、什么时候不用框架。
多 Agent 是最热也最容易被滥用的架构。先读 Anthropic 和 Cognition 两篇观点相反的文章、算清 token 账,再在 CloudLedger 上实现主管派活和专员交接两种拓扑;最后加一节浏览器 Agent,用 Playwright 让模型操作网页,顺便亲眼看一次网页里的提示注入。
给图接上 SQLite checkpointer,让状态落盘;用 interrupt 实现 CloudLedger 的退款人工审批,Agent 起草方案后停下来等主管,进程退出也不丢;再演示时间旅行、三种流式模式和子图。这是 LangGraph 真正比手写循环值钱的地方。
把 Agent 的控制流从一个 while 循环搬到一张图上。用 LangGraph 1.x 重写 Day 9 的 Agent 循环,再写一个工单分类后分支处理的工作流,搞懂 State、reducer、节点、普通边和条件边,以及什么时候值得用图。
造一份云簿 CloudLedger 的假业务库,用 MCP Python SDK 2.x 把查客户、查订阅、查发票、提交退款申请包成四个工具,在 Inspector 里调通、用内存客户端写测试、接进 Claude Code,最后写一段桥接代码把它接到自己的 Agent 循环上。
MCP 把「给 AI 应用接工具」这件事标准化了。今天把 host、client、server 三个角色,tools、resources、prompts 三种能力,JSON-RPC 消息和两种传输方式一次讲清,顺便说明它和 function calling 到底是什么关系。
W3 收官。一页知识地图串起 embedding、切块、pgvector、混合检索、rerank、评估、上下文和记忆;把这一周的代码拼成一个多轮、带引用、会拒答、能一键评估的文档问答 Agent;再过一遍 W3 面试题和踩坑清单。
把视角从 RAG 拉到整个 Agent:上下文窗口里该放什么、放多少;清理工具结果、裁剪、摘要压缩三档手段;子 Agent 隔离上下文;长期记忆;Agentic RAG;最后讲清楚 JD 里高频出现的 Agent Harness 到底是什么。
昨天的对比只有 6 个问题,结论全凭感觉。今天建一份 30 条的评估集,分检索和生成两层打分:检索看 hit@1、recall@k、MRR,生成用大模型当裁判看忠实、完整、该拒答时拒答。然后用它回答「切块多大、k 取几、rerank 值不值」。
纯向量检索遇到 E1042 这种错误码就犯迷糊。今天加上 jieba + BM25 关键词检索,用 RRF 融合两路结果,用 bge-reranker 精排,让大模型改写口语化的问题;最后回到上游,处理 PDF、表格和扫描件的文档解析。
把昨天的 numpy 索引搬进 Postgres。Docker 起 pgvector,建表、写入、用 SQL 做向量检索和按分类过滤,搞懂 HNSW 为什么快、为什么带过滤条件时会「少返回结果」,最后和 Milvus、Qdrant、Chroma、Elasticsearch 做一张取舍表。
不用向量数据库、不用框架,一百多行代码搭出完整的 RAG:造出 CloudLedger 帮助中心的 20 篇文章,切块、向量化、存成 numpy 文件,对问题做检索,再让大模型带着引用出处回答。
W3 第一天。搞懂 embedding 到底是什么,手算一遍余弦相似度,调通一个 embedding API,再用 CloudLedger 的客服问句做一张相似度矩阵,亲眼看到「我想把钱要回来」和「退款政策」挨得有多近。
W2 收尾。一张图串起函数调用、Agent 循环、ReAct 与规划、工具设计、失败处理、workflow 五块内容;然后把它们组装成一个能放进 GitHub 的命令行 Agent:五个精心设计的工具、带防线的循环、多轮对话和花费统计。最后是 W2 面试题汇总和踩坑清单。
通读 Anthropic 的《Building effective agents》,把 prompt chaining、routing、parallelization、orchestrator-workers、evaluator-optimizer 五种 workflow 模式各写一个可运行的最小实现,全部用客服工单做例子。最重要的收获是一个判断:什么时候根本不需要 Agent。
把 Agent 在生产里会遇到的失败分成三层九类,逐类给出代码层面的治法:重试与指数退避、超时、结果截断、步数和 token 预算、循环检测、撞线后的优雅收尾与转人工。最后用一个假模型写离线测试,不花一分钱验证这些防线。
同一个模型,换一组工具定义,表现可以从「到处乱翻」变成「两步命中」。今天对照 Anthropic《Writing effective tools for agents》,把一组能用但难用的笔记工具改造成模型顺手的样子,并用实测的字符数说明为什么返回值要精简。
用纯提示词实现一次 2022 年 ReAct 论文里的 Thought/Action/Observation 循环,看清 stop 序列为什么是关键;再看原生 function calling 和推理模型时代 ReAct 变成了什么,最后实现 plan-and-execute 和 Claude Code 式的待办清单规划。
把昨天的一次往返改成 while 循环,加一个从函数签名自动生成 schema 的工具注册表,得到一个能连续调用多个工具、自己决定何时停下的 Agent。这段代码是面试最常考的手写题,也是后面整门课所有 Agent 的心脏。
拆掉「模型会执行代码」的误会:模型只负责写出要调哪个函数、传什么参数,真正执行的是你的程序。今天把一次工具调用的完整往返跑通,逐字段读懂 tools、tool_calls 和 tool 消息,再对照 Anthropic 的写法。
W1 收尾。先用一张图把这周的知识串起来,再做本周小项目:一个支持多轮、流式、切换厂商、开关思考模式、斜杠命令、会话保存和加载、实时账单的命令行聊天机器人。最后是 W1 的面试题和这一周最容易踩的坑。
程序要的不是一段话,是能直接用的数据。今天讲清 JSON mode 和 Structured Outputs 的区别、各家支持到什么程度,然后写一个通用的 extract 函数:用 pydantic 定义 schema,让模型按 schema 输出,校验失败就把错误信息喂回去让它改。最后用它从客服工单里抽取客户、订单号、诉求和情绪。
提示词工程不是背咒语,是把需求写清楚。今天用一个工单分类任务,从一句话的提示词一路改到第四版:补背景和定义、加 few-shot 示例、让模型先想再答、用 XML 标签隔开材料,每改一版都在 12 条标注数据上量一次准确率。最后讲清楚什么时候提示词已经救不了你。
API 没有记忆,多轮对话是你的程序每次把历史整个重发一遍,所以聊得越久越贵,而且是平方级地贵。今天弄清四种 role 的分工、system prompt 该写什么、怎么裁剪历史,再用 SSE 流式输出把首字延迟压下来,最后封装一个后面整门课都要用的 LLMClient。
把一次 chat completions 的请求和响应逐字段拆开:messages、model、max_tokens、choices、finish_reason、usage。弄清 usage 怎么换算成钱、401/402/429 各是什么意思、SDK 的自动重试替你做了什么,最后写一个改三个环境变量就能换厂商的命令行小工具。
你已经会写 Java、Go 或 JS,只是不熟 Python。今天用对照的方式补上写 Agent 够用的那部分:uv 管项目、类型标注、dataclass 和 pydantic、async/await 并发、httpx、.env 管密钥、pytest。最后写一个并发抓取 + 数据校验 + 单测的小程序。
不讲数学,只讲做 Agent 必须有的模型直觉:模型一次只猜一个 token,它看到的世界只有上下文窗口里那一段,temperature 决定它敢不敢猜冷门答案。幻觉、中文更贵、聊久了忘事,都能从这三件事推出来。
先把岗位看清楚:Agent 工程师每天在干什么、招聘方要什么、2026 年大概能拿多少钱。然后是这 60 天的地图、开课前要装的东西、整门课大概花多少 API 费用,以及两个月能做到和做不到的事。
2026 年 10 月抓了 880 条 AI Agent / 大模型应用工程师的招聘要求,国内 695 条(含 Boss 直聘 435 条、猎聘 140 条)、海外 185 条。两边都要评测、Python 和 RAG;国内更爱问 Agent 内部怎么转,海外更看重把东西交到客户手里。国内挂牌年包中位 48 万,明确卡硕士的约一成,远程比你想的窄。
写给做了好几年前端、后端经验不多、想转 AI Agent 工程师的人。先用 880 条真实 JD 看前端和全栈在 Agent 岗里占多少分量,再讲前端经验在 Agent 工作里值钱的地方、2026 年的 TypeScript Agent 技术栈怎么选、必须补的后端和 Python 短板,以及简历和面试怎么讲。
把 M1 四周加加餐周压成一页:W1 的账本、W2 的计时与 profiler、W3 的实测屋顶、W4 的环境流水线、加餐周的硬件与数值地基。然后合上笔记做 20 道全月自测,把三十天的错题按形状、单位、异步、标称、计费五类归根,对照 Day 0 的目标逐条打勾,最后写 M2 的预告。
拿真实招聘要求对照 Day 0 定的路线:样本从哪来、有多不完整,JD 里反复出现哪些词,哪些是路线图已经覆盖的、哪些是缺口。由此在路线图上加了六个勾,记下薪资快照和四条必须正视的限制。不改骨架,只补缺口。
A100 宣传页写 624 TFLOPS,Day 5 用的却是 312;同样叫 A100 80GB,SXM 和 PCIe 的带宽差 5%,ridge point 一个 153 一个 161;NVLink 和 PCIe 差十倍。把规格表上每个会骗人的数字过一遍,最后把小时价换算成每一百万 token 多少钱,看 batching 在账单上是多大的杠杆。
一个 kernel 是怎么被切成几千个 block 撒到 SM 上跑的,warp 为什么是 32,stream 为什么是有序队列,以及每次 launch 都要付的那笔固定税有多大。把 Day 11 在 timeline 上看到的 gap 追到它的物理来源,顺手给 M5 的 Triton 铺好路。
前面四周所有的「× 2 字节」都默认了 fp16。今天把这 16 个位拆开看:几位给符号、几位给指数、几位给尾数,换一种分法就是另一个格式。然后回答两个实际问题:为什么 T4 跑 bf16 会出事,以及把权重压到 8 位、4 位之后 decode 上限从 150 tok/s 变成多少。
前四周一直在说「算力」和「带宽」,今天把这两个词拆开看里面的零件:算力是多少个 SM 里多少个 tensor core 每个时钟做多少次乘加,带宽是一座五层的存储金字塔里最底下那一层。312 TFLOP/s 和 2039 GB/s 这两个数,今天要能从零件表里亲手算出来。
把 W4 五天的工程活压成一张能打勾的清单:开机前、开机后、收尾三段,每项对应哪个脚本、哪条计费事实。然后做路线图 W4 的五道验收题,把这周三篇文章里口径不一致的地方统一掉,最后整理错题本。W4 结束时的标准只有一句:一条命令起环境,跑完自己消失,钱花在哪一眼可查。
把每一次开机都变成一行记录:日期、实验名、卡型、小时价、时长、花费、一句结论。启动和销毁脚本自动记账,一段 Python 汇总本月,再把小时价换算成每个实验多少钱、每百万 token 多少钱。答不出「这个月花了多少、花在哪」就是看板没做好。
忘记关机是这条路上预算失控的唯一原因,而它不会因为「这次一定记得」而消失。给三种不同的失败方式各配一道保险:任务结束脚本自己销毁实例,GPU 空闲太久看门程序销毁实例,前两层都失效时账户余额兜底。每一层写出来、跑一遍,验收是故意跑完一个任务,然后看实例自己消失。
把「开机之后手工装环境」这件事变成一个幂等的脚本:装依赖、拉代码、配 token、预热模型、打印 nvidia-smi。每一步都计时,找出最慢的那一步。验收标准只有一条:从实例启动到能跑第一行 GPU 代码,全自动,不超过 5 分钟。
租来的机器是一次性的,销毁之后盘上的一切都没了。今天把 RunPod 和 Vast 的几种存储在 stop 和 delete 时的命运搞清楚,算一笔「存着」和「重下」哪个便宜的账,然后给代码、模型权重、实验结果三类东西各定一个去处,画成决策树。
W4 第一天,从免费 Colab 换到按秒计费的租卡。两家平台怎么选、便宜的可中断实例到底便宜在哪、选哪张卡要先算显存再看价,以及第一次 SSH 进去必须做的三件事。全程只充 10 到 20 美元。
把测带宽、测算力、画 roofline、扫 batch、对比标称这五天压成一页笔记:每一步的公式、预期区间和坑放在一起。合上笔记做路线图 W3 的五道验收题,再把这周最容易测错的地方一条条摊开。屋顶从这周起是自己测的,不是抄的。
把 Day 13、14 测出来的带宽和算力跟规格表并排放,算清标称值是怎么来的、实测为什么差那一截。再给每种 kernel 算一遍算术强度,标到 roofline 上:大矩阵乘能碰到屋顶,elementwise、softmax、norm 这些永远贴着斜线的底部,而这正是 M5 要写 fused kernel 的全部理由。
把 batch 开到 1、4、16、64、128,测 decode 每步时间,算吞吐,标到 Day 15 的 roofline 上。W1 预测 batch 到 ridge 附近才碰屋顶,今天要看这条曲线实际在哪弯、为什么弯——弯的原因不是 FLOP 追上了带宽,是 KV cache 的字节跟着 batch 一起涨。
把 Day 13 测出的带宽、Day 14 测出的算力换掉标称值,用 matplotlib 画出自己这张卡的 roofline,再把 Day 9 的 TPOT 换算成图上的一个点。屋顶从此是自己测出来的,不是宣传页上抄来的。
昨天测了斜线,今天测屋顶。用大方阵矩阵乘法把 T4 真正能算多快测出来:FLOPs = 2MNK 除以时间。坑比带宽多:矩阵不够大打不满、fp32 的标称是另一个数、fp16 要真走 tensor core 才对得上 65 TFLOPS、A100 的 624 是稀疏值。顺手算出方阵多大才跨过 ridge point。
W3 开工。标称 320 GB/s 是纸面数字,今天用一次最简单的逐元素加法,把 T4 真正能搬多快测出来,再把这个实测值装回 Day 5 的 decode 下限公式里。顺手踩清三个坑:字节只算读没算写、张量小到落进 L2、没 synchronize。
第一周算账,第二周对账。把 Day 7 到 Day 11 压成一页:计时怎么做才是真的、TTFT 和 TPOT 各自的下限、比值怎么读、profiler 里的 kernel 名怎么对回模型、gap 占比怎么算。然后合上笔记做路线图 W2 的五道验收题,把这周会犯的错一条条摊开。
Day 1 读到的第三种瓶颈 overhead-bound,今天在 Perfetto 的 timeline 上亲眼看到它:GPU 那一行的空白。算清 decode 一步为什么有三百个小 kernel、CPU 为什么发不过来,再看加大 batch 时空白怎么缩,以及两种真正的治法。
计时器只给一个数,profiler 给每个 kernel 的名字和时长。今天把 Day 9 那个比值拆开:一步 decode 里 GPU 真正在跑的是哪几个 kernel,各对应模型的哪一部分,CPU 那边又在干什么。
一次 generate 的耗时里藏着两个性格完全不同的数:首 token 时间和后续每 token 时间。今天把它们拆开,各自算出理论下限,然后用一个比值回答 W1 那张表能不能信。
CPU 把 kernel 扔进队列就往下走,GPU 在后面慢慢干。不加 synchronize,perf_counter 测到的是「派活的时间」,不是「干完活的时间」,能差几个数量级。今天把这件事画成时间线,对比两种正确的计时法,把 Day 7 的计时代码改成以后一年都用的最终版。
W1 一行代码没写,今天开始写。在 Colab 的免费 T4 上加载一个 1.1B 的模型跑通 generate,搞清第一次为什么慢好几倍,再把连续十次运行的延迟方差压到 10% 以内。这周所有实测数字的可信度,从今天的 warmup 开始。
把第一周所有公式和数字压成一页,合上笔记做完五道验收题,再把这周犯过的错一条条摊开。算不出数字就是没过,跟读了几篇文章没关系。
把 7B 模型推理时的显存拆成四项算清楚,再用一次除法算出 decode 的物理上限。最后引出整条路线最重要的一个数:ridge point ≈ 153。附五张卡的 ridge point 对照、量化和 KV cache 读取怎么改这张图。
把 Day 2 数出来的参数量变成两个能算的数:模型跑一遍要做多少次运算,以及 decode 时为了不重算而缓存下来的 k、v 占多少显存。算完会发现 batch 一大,缓存比权重本身还大。附六个模型的 KV cache 对照表和一段从 config.json 自动算账的代码。
把注意力机制拆到能手算的粒度:三个向量各干什么、权重怎么来的、加起来的到底是什么。用一个 3 token、head_dim 2 的例子把整张注意力矩阵算完,再接一段能跑的 numpy。顺带搞清模型为什么只能一个 token 一个 token 地生成,以及这件事怎么直接引出 prefill、decode 和 KV cache。
不靠任何公式表,只用「矩阵形状 = 输入长度 × 输出长度」一条规律,把 Llama-2-7B 的 6.74B 参数从头数到尾,再算出它在 fp16 下占多少显存。同一套算法顺手对账 13B、Llama-3-8B 和 TinyLlama-1.1B。
读 Horace He 的 Brrrr。一段代码跑得慢,只可能卡在三个地方:算力、显存带宽、调度开销。今天学的是怎么判断卡在哪一个,判错了后面所有优化都是白干。附判定流程图、三段式时间线和一个可以在 Colab 上跑的小实验。
开工前把三件事写死:为什么选 AI Infra 而不是 AI 应用层,为什么先攻推理不碰分布式训练,以及 12 个月每一段要交出什么东西。这一篇是整个 365 天系列的地图,也是三个月后动摇时要回来读的那一篇。
One FLOP per byte. That single ratio explains why a batch-size-1 decode step uses under one percent of an A100, and why most "make it faster" instincts are aimed at the wrong resource.