十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

前端老兵的48天AI Agent实战:从TypeScript到技能封装落地

前端老兵的48天AI Agent实战:从TypeScript到技能封装落地 在职前端今年第48天的状态可能很多人都没想到会变成这样。我自己干了七年多前端后来带小团队最近这段时间却把大部分精力都投到了AI Agent上。不是追热点是被逼的——前端这个岗位本身没消失但只写页面前端的天花板越来越低2026年的面试题已经开始往“你会不会搭Agent”这个方向偏了。与其等着被八股文卷死不如用自己的老本行去接住这波新东西。这篇文章不卖焦虑也不讲“三天转行”之类的鬼话。我就是一个在职的前端Leader用每天下班后的时间从TypeScript出发把Agent的搭建、工具调用、技能封装到业务落地这条链路完整走了一遍。这篇文章会把这48天的路线、踩过的坑、跑通的最小实现、以及对2026年前端与Agent融合的判断全部讲透适合正在观望的前端同学、想带团队往Agent方向靠的Leader以及所有把Agent当成“另一个后端”来看的人。1. 为什么一个前端Leader会All in AI Agent1.1 前端岗位的结构性变化不只是“卷”这两年前端面试的题目越来越怪从框架原理问到源码实现再问到底层编译这还是“前端开发”吗说实话这是行业进入存量期的典型信号。过去随便一个页面项目都需要两三个前端现在低代码、组件库、AI生成UI把大量重复开发直接干掉了。这不是说岗位会消失而是说“只会写页面的前端”会越来越难。我团队里的新人一年前的重心还在CSS布局和状态管理现在已经开始被我要求看LLM的Function Calling。原因是客户的需求变了——以前说“帮我做个后台管理系统”现在说“能不能做个内部知识库机器人自动把Excel里的数据喂给模型还能自己调用函数生成报表”。这种需求不再是“页面问题”而是一个Agent需求。前端如果不往上长就会被新入场的人替代。这里说的替代者不一定是后端很可能是“更懂UI的Agent工程师”。1.2 Agent不是另一种后端而是“界面逻辑智能”的融合体很多人一听Agent就以为要转行去做后端、研究算法。这是今年最大的误解。Agent的本质是什么是一个能自己思考、自己决定调哪个工具、然后执行并反馈的程序。它需要模型推理能力但更需要工程化能力怎么定义工具、怎么解析模型输出、怎么管理多轮消息、怎么在业务系统里嵌入。这些工程化能力恰恰是前端的强项。前端的日常就是跟异步、状态、组件、用户交互打交道。Agent的循环本质就是一次很长的异步流程Agent在不同工具之间切换本质上就是状态机管理Agent最终要跟人交互就需要一个对话界面或可视化操作面板。所以我的判断是Agent开发不是后端的前沿也不是算法工程师的专属地盘。它是一个“UI工程异步调度模型协议”的交叉领域而前端人做这个交叉领域有天然的肌肉记忆。1.3 前端手里的隐性筹码组件化、DevTools和用户感知先说组件化思维。一个Agent系统要稳定工具必须像组件一样高内聚低耦合。我在设计工具注册表的时候脑子里全是多年写React组件的经验每个工具要有清晰的props参数定义、要有默认值、要能mock、要能单独测试。这不是新知识是把老知识换了个场景用。再说DevTools。前端天天用浏览器的开发者工具可你知道这些工具背后是Chrome DevTools ProtocolCDP吗这玩意儿本身就是一个巨大的自动化接口。我用它做过页面性能巡检Agent让Agent自己去跑Lighthouse、去收集LCP、CLS然后给出优化建议。这种浏览器自动化能力在未来UI Agent里就是核心基础设施。最后说用户感知。后端写接口关心的是数据对不对前端写交互关心的是人用起来顺不顺。Agent最终是给人用的它的回答流式输出怎么渲染、思考过程要不要展示、出错了怎么优雅回退这些前端关心的问题恰恰是Agent产品能不能规模化落地的关键。2. 48天学习路线复盘具体怎么学不浪费一天2.1 第一阶段先忘掉“训练模型”学会“消费模型”我一开始也差点走弯路想去啃深度学习、学怎么微调模型。后来被一个做算法的朋友拦住了你现在需要的是“消费模型”不是“生产模型”。这句话救了我。所谓消费模型就是调用别人已经训练好的大模型API理解什么是Token、什么是上下文窗口、什么是temperature、什么是System Prompt。这阶段做的事情很基础但决定了后面所有环节能不能跑通。学会调用OpenAI、DeepSeek或通义的API写一个最朴素的“输入-输出”请求理解消息结构system、user、assistant三条消息各有什么用途理解Token计算知道一次请求大概花多少钱理解temperature和top_p对输出随机性的影响学会用流式输出知道stream对前端渲染的意义。这一阶段我花了大概10天每天的产出是一个越来越长的本地测试脚本。关键心得不要贪多不要一上来就套框架。先把API裸调明白后面看任何框架的源码都不慌。2.2 第二阶段从“调用API”到“让Agent自己行动”能调API以后就要进入Agent的核心逻辑ReAct模式也就是“思考-行动-观察”的循环。这是李博杰那本《深入理解AI Agent》里讲得最透彻的部分我看完以后最大的收获是——Agent不是“一次性问答”而是一个“带反馈循环的执行器”。一个最简单的Agent循环可以拆成四步把用户问题和工具定义一起发给大模型模型判断需要调用哪个工具并返回工具名和参数Function Calling程序执行这个工具把结果拿回来把工具结果作为“观察”追加到消息列表里再发回给模型直到模型不再需要调用工具。这个循环听着简单但每一步都有魔鬼细节。比如工具参数怎么解析才能不崩、工具结果太长怎么办、循环最多只能迭代几次、模型连续出错要不要强制退出。这些细节决定了一个Agent是玩具还是能上生产的东西。这一阶段我用了大概12天把市面上主流的Agent框架源码翻了一遍。说实话框架的实现逻辑大同小异核心都是消息循环差别主要在处理工具协议和记忆管理上。读完框架再看自己的代码能明显感觉到“会写了”。2.3 第三阶段Skill和工具链——把前端领域知识变成Agent能力过了基础循环之后真正拉开差距的地方是Skill也就是技能包。你光有一个会“思考”的Agent没用它得会干活而干活的能力就来自你注册给它的工具集和相关指令。热门词里总提“agent ai skill”“前端开发skills”很多人一脸懵。其实这个概念不复杂Skill是“一组工具一段使用说明”的打包。比如我做了一个叫“前端性能巡检”的Skill里面包含通过CDP获取页面性能指标的脚本一个分析指标含义的工具函数一段提示词告诉Agent拿到指标后应该按什么思路给出优化建议。组装好以后Agent拿到一个网址就能自己打开浏览器、跑性能采集、分析数据、输出可执行的优化清单。这个Skill的本质就是把过去人工操作DevTools、阅读文档、写报告的这一整套经验变成了Agent可以调用的能力。这一阶段我花了10天左右。最大的感悟是Skill设计的核心是面向“高频重复操作”而非“花哨能力”。不要试图让Agent什么都干先让它把一件事情干得又稳又准。2.4 第四阶段多Agent协作与业务落地最后一个阶段我开始思考多Agent协作和真实业务怎么衔接。多Agent不是“多个Agent聊来聊去”而是把一个大任务拆成几个子任务分别交给不同角色的Agent去执行最后由一个编排器汇总结果。比如我做过一个“代码评审Agent”的雏形分三个角色一个负责静态扫描一个负责查性能隐患一个负责总结评审意见。这三个Agent之间的消息传递、任务拆分、结果合并本质上跟前端的状态机管理没什么区别。拆得好系统稳定拆得不好就是线上事故。这一阶段我花的时间最长因为要考虑的东西已经不光是模型推理还包括安全性、并发控制、超时重试、成本预算这些工程问题。也是从这个阶段起我开始觉得前端Leader干这个事特别顺手因为这些本来就是工程管理的活。3. Agent是怎么跑起来的手写一个最小可落地的带Skill的Agent3.1 整体结构不要被框架束缚很多人一学Agent就开始上LangChain、AutoGen这些重框架。我不是反对框架而是建议先在框架之外亲手实现一遍。原因很简单只有亲手写过一遍消息循环你才能理解框架里每个抽象到底解决了什么问题出了问题也知道往哪排查。一个最小Agent的结构只有四块消息列表、工具注册表、模型客户端、循环控制器。消息列表负责保存上下文工具注册表负责描述“能干哪些活”模型客户端负责跟大模型通信循环控制器负责判断“什么时候该停”。我先用TypeScript把这四块写出来不用任何Agent框架。语言选择很重要为什么用TypeScript因为我是前端NestJS、Next.js这些我都熟Agent最后要嵌入到前端业务系统里JS/TS生态是成本最低的。当然如果后续你要做复杂的RAG数据清洗、向量模型训练Python会更好。但作为前端转型TS是完全够用的。3.2 核心代码TypeScript实现一个Function Calling循环下面是一个最简版的Agent循环这段代码可以直接在Node.js环境里跑需要安装openai这个npm包。import OpenAI from openai; const client new OpenAI({ apiKey: process.env.OPENAI_API_KEY }); // 工具注册表描述Agent有哪些技能 const tools [ { type: function, function: { name: searchDocs, description: 在本地前端知识库中搜索相关文档, parameters: { type: object, properties: { query: { type: string, description: 搜索关键词 }, limit: { type: number, description: 返回条数默认3 } }, required: [query] } } } ]; // 工具执行函数实际去搜ES索引 async function searchDocs(query: string, limit 3) { // 这里替换成你自己的数据库/ES/向量检索逻辑 return JSON.stringify({ query, results: [关于${query}的文档1, 关于${query}的文档2] }); } function shouldUseTool(result: any): boolean { return Array.isArray(result.tool_calls) result.tool_calls.length 0; } async function runAgent(userInput: string, maxLoop 5) { const messages: any[] [{ role: user, content: userInput }]; for (let i 0; i maxLoop; i) { const response await client.chat.completions.create({ model: gpt-4o-mini, messages, tools, }); const result response.choices[0].message; messages.push(result); if (!shouldUseTool(result)) { return result.content; } for (const call of result.tool_calls || []) { const { name, arguments: argsStr } call.function; const args JSON.parse(argsStr); let toolResult ; if (name searchDocs) { toolResult await searchDocs(args.query, args.limit); } // 关键把工具执行结果作为function消息追加回消息列表 messages.push({ role: tool, tool_call_id: call.id, content: toolResult, }); } } return 达到最大循环次数提前终止; } // 调用示例 runAgent(帮我查一下前端项目里关于权限路由的文档).then(console.log);这段代码最核心的地方是每次工具调用完以后必须把结果推入messages数组并且带上tool_call_id作为关联。很多人写Agent崩溃就是因为漏了这一步模型看到的信息不连贯自然就胡说八道。这个循环自己跑通以后你对主流框架的理解会直接上一个台阶。什么LangChain、MCP说白了都是在消息循环外面包一层更复杂的协议和抽象核心还是那台会跑的“消息-调用-反馈”机器。3.3 一个真实的前端Skill浏览器性能巡检光有搜索文档的Agent还不够刺激来一个贴合前端本行的Skill——让Agent自己去跑Chrome性能检测并给出优化建议。这里我不放完整代码讲一下思路和核心接口。你要用CDPChrome DevTools Protocol连接一个无头浏览器然后通过PubSub订阅性能事件。代码层面大概是这样interface PerformanceMetrics { lcp: number; cls: number; fid: number; tti: number; } // 工具注册 const perfTool { type: function, function: { name: auditPage, description: 分析一个网页的核心性能指标, parameters: { type: object, properties: { url: { type: string } }, required: [url] } } }; // 执行审计 async function auditPage(url: string): Promisestring { // 1. 启动headless浏览器 // 2. 打开指定URL // 3. 用PerformanceObserver收集指标 // 4. 返回结构化指标 return JSON.stringify(performAudit(url)); }这个Skill注册进Agent以后你只要说“看一下example.com的LCP为什么这么慢”Agent就会自己去打开页面、采集数据然后给出分析结果。很神奇吗其实核心还是前面那个消息循环只是工具函数从searchDocs换成了auditPage。这件事最大的启发是所谓Agent技能包就是把一个可复用的“经验型操作”封装成函数加说明书。前端的性能优化、代码评审、组件生成、接口调试每一样都可以做成一个Skill。这也是为什么我觉得“前端开发skills”这个方向特别适合前端人切进去。3.4 把Agent接进前端工程SSE、WebSocket与Docker部署写完Agent逻辑下一个问题就是前端页面怎么跟Agent服务通信常用的方案有三种短轮询、SSEServer-Sent Events、WebSocket/SignalR。如果只是单次的“提问-回答”用SSE就够了。模型输出是流式的SSE可以一条一条把token推给前端实现打字机效果连接管理也简单。如果要做多Agent协作、任务状态实时推送、后台长任务跑完通知前端就需要WebSocket或SignalR。SignalR在.NET后端配合得很好我团队之前有人问过“signalr前端应该怎么获取数据”其实就是建立一个Hub连接以后前端通过invoke发消息、通过.on监听事件。跟我写法差不多const connection new signalR.HubConnectionBuilder() .withUrl(/agentHub) .build(); connection.on(agentProgress, (step: string, status: string) { console.log(当前步骤${step}状态${status}); }); await connection.start();项目上线时Agent服务我用Docker部署。目标是把整个Node服务打进镜像用nginx反向代理暴露出来跟前端静态资源放同一套环境。前端同学如果已经会Docker部署Vue项目那部署Agent服务其实是同一套流程无非多几个环境变量比如模型API的Key、TOKEN预算限制。不要被“AI服务”四个字吓到它在你服务器上也只是一个进程而已。4. 48天踩过的坑从Token失控到内存泄漏4.1 上下文越长越蠢Token开销失控Agent跑起来以后第一个冒出来的问题就是Token开销失控。很多人心想把整个项目文档一股脑塞进System Prompt模型肯定更懂业务。但实际测试下来上下文越长模型注意力越分散回答质量反而不升反降还会让单次调用成本直线上升。我的做法是给Agent加一个“上下文窗口管理”。核心思路是长期记忆放外部存储比如向量数据库或本地JSON短期记忆只保留最近几轮对话摘要。在进入大模型之前先对消息列表做一轮裁剪能够直接把过期的工具结果删掉只保留结论性摘要。另外System Prompt不是越长越好。一个Skill的提示词控制在50行以内重在“规则清晰”不需要把业务背景全塞进去。这个真金白银的教训让我在后面设计所有Agent时都先把“成本”放在第一优先级。4.2 工具调用不稳定JSON解析和参数幻觉第二个坑是工具调用有时候会返回乱七八糟的JSON。模型在Function Calling时偶尔会给出无法解析的参数甚至凭空编造出来不存在的字段业内管这叫“参数幻觉”。一旦前端直接对这个字符串做JSON.parse整个Agent循环就崩了。我现在所有的工具函数入口都有一层严格的JSON Schema校验解析失败就返回一个固定的错误提示给模型让它“修正参数后重试”。同时还要设置最大重试次数防止模型在一个工具上无限纠缠。看似是一个小兜底实际上生产环境里90%的Agent稳定性问题都出在这一层。4.3 前端通信链路里的坑流式解析和连接中断把Agent接到页面上以后问题更多了。首先是SSE流式输出的解析前端EventSource默认只支持GET如果你要把用户输入POST过去就得用fetch加ReadableStream或者直接用流式响应库不然会被卡得很痛苦。其次是连接中断。Agent执行一个长任务可能持续几十秒甚至几分钟如果网络抖动一下SSE断了整个任务就“凭空消失”。我的建议是所有长任务都有服务端持久化标识前端断线后可以通过sessionId重新连接查询任务状态。还有一个前端的经典问题就是大文件上传。团队有人问过“前端使用Worker上传大文件”其实这跟Agent也有关系——当Agent要处理大型Excel、图片批量识别时就涉及把大文件内容喂给模型。我用Web Worker来处理文件分片拿到单独的Buffer对象再逐步发送给Agent服务端避免阻塞主线程导致页面卡死。4.4 内存泄漏与并发前端Leader的稳定红线我做了这几年前端对内存泄漏尤其敏感。Agent页面比普通后台系统更容易产生内存泄漏因为流式输出会不断向页面追加内容如果之前的事件监听器没有解绑、DOM节点不断累积页面跑一晚上内存直接翻倍。排查思路其实跟传统前端排查内存泄漏差不多打开Performance面板记录堆快照做对比分析找“不断增长的Detached DOM节点”定位到是哪个事件订阅导致的。具体操作上可以用--trace-gc启动Node服务注意每次SSE连接要确保stream.destroy()被调用WebSocket要记得在beforeunload和组件卸载时主动关闭连接。并发控制也是大头。多个用户同时触发Agent如果不做队列限制模型API的并发配额会瞬间被打爆。我在Agent服务里加了一个简单的信号量机制同时最多只允许跑5个Agent循环剩下的进队列等待。这个在普通业务里可能不是刚需但做Agent系统几乎是必须的。4.5 多Agent协作的调度问题谁先跑、谁失败、谁收场多Agent看着很酷但落地时最大的问题其实是“没有收敛感”。有时候三个Agent互相传递消息任务死了没人知道是哪一个环节出了问题。我的做法是给每个子Agent增加一个“工作日志”把所有关键动作写进日志系统。编排器有一个全局超时机制任何子任务超过30秒没有返回就自动标记为失败并进入重试队列。这样能保证整个系统不会因为单个Agent卡死而整体瘫痪。说白了多Agent的调度跟团队项目一样不是人越多越好而是要有明确的Owner、明确的Deadline、明确的失败兜底。少一个都不行。5. 2026年前端与Agent融合的几条确定性判断5.1 Agent开发正在“前端化”技术成熟窗口已经打开今年大模型、多模态交互这些技术已经不再停留在Demo阶段了。企业内部的知识库问答、客服工单自动处理、销售线索挖掘、UI自动化巡检都在用Agent技术解决真实问题。“技术成熟窗口”这个词我很喜欢。它不是指“技术终极成熟”而是指“在业务中落地已经划算”。2026年我判断是Agent从概念验证走向量产落地的分水岭。这个阶段行业最缺的不是研究Agent的人而是能把Agent工程化、产品化、插进现有业务系统里的人。这类人不需要自己训练模型但必须懂模型怎么用、工具怎么封装、系统怎么衔接。前端工程师正好卡在这个位置上既懂业务界面又懂工程化还愿意折腾新工具。5.2 前端衍生岗位与技能组合会怎么变以后的前端岗位大概率会分化出几个方向。第一个是“Agent前端工程师”专门做Agent交互界面、流式渲染、思考可视化第二个是“Skill/Prompt工程师”负责把业务知识沉淀成Agent技能包第三个是“模型应用工程师”负责把大模型嵌入到现有系统的全流程里这个角色既偏前端又偏后端但核心还是人机交互的整体体验。这些方向都不要求你从零学算法但都要求你理解Agent的运行逻辑。所以2026年面试题里我预判AI Agent的比例会大幅上升。以前问“手写一个防抖有什么意义”以后会问“一个Agent循环里工具调用失败应该怎么设计重试机制”。这其实是好事起码不用再靠背八股文区分人了。5.3 前端面试的新风向从八股文到场景题这两年十份前端简历里可能简历上都写“熟悉React原理了解Vue源码”一到问Agent的时候就开始支支吾吾。我判断2026年的前端面试会越来越偏向场景化比如“如果要设计一个前端页面能实时看到Agent执行过程你会怎么做”或者“给一个Agent加一个记忆功能方案怎么设计”。这种题没有标准答案但考察的核心是你懂不懂消息流、懂不懂异步调度、懂不懂状态管理、懂不懂服务端如何跟前端协同。而这些恰恰都是前端老本行里的东西。前端八股文会被“Agent场景题”越来越多地替代反而是那些平时闷头写业务、不关注新技术的人会最先被淘汰。6. 给想转/想学的前端同学48天实操建议6.1 学习节奏别辞职用“在职复利”去滚我身边不止一个人为了学Agent裸辞我的建议是别这么干。在职的好处是你有真实的业务场景可以练手学完马上用在团队项目里反馈周期快还能被逼着考虑成本和稳定性这些是纯学习时练不出来的。我的节奏是工作日每晚1.5小时周六抽半天集中敲代码。第一个月主要看API文档、读框架源码、手写循环第二个月开始我把团队里一个“自动生成优化建议”的内部小需求拿出来练手用Agent去读代码仓库里的性能报告再生成优化方案直接解决了重复劳动。学习路线按这个顺序来第一步精通API调用和Prompt第二步手写Agent消息循环第三步做工具注册和Skill封装第四步再做RAG和多Agent。每一步不要贪快能跑通一个小项目再进下一步。6.2 不用报课但要用作品说话Agent领域的信息差很大很多付费课程教的还是基础概念你自己去看一遍文档就有。真正拉开差距的是“作品集”。面试官要的是看到你真刀真枪地跑通过一个Agent哪怕是一个很简单的“代码评审Agent”或“内部文档问答机器人”。把做过的项目整理成GitHub仓库写好README带上工具注册表和演示截图。技术社区里“在职期间做了一个Agent工具”比“考了一个AI证书”值钱得多。我也建议每天用博客或笔记记录“DAYxx”的进度不是为了给别人看而是强制自己把知识输出成体系。我自己就是这么记录过来的到了第48天回看会发现成长轨迹清晰得可怕。6.3 Leader视角的额外提醒算好成本和效能账如果你是团队Leader除了技术本身还要算清楚Agent到底值不值得做。我一般看三个指标第一任务是否高频重复第二是否规则相对明确第三出错后的损伤是否可控。三条都满足才值得上Agent。成本方面不只是API费还包括开发人力、调试时间、服务器资源。我在团队里定了一个原则Agent跑出来的结果必须有人抽查质量初期抽检率100%稳定后再逐步放松。每一位团队成员都要对Agent的“幻觉”保持警惕不能负责人不在Agent就在那儿一本正经地胡说八道。最后再分享一个我自己的小习惯无论多忙每周都留出半天去读一遍主流Agent框架的更新日志。这个领域半年一变一周不跟可能就看不懂别人的新玩法了。前端技术你还有多年的积累撑着Agent技术你必须靠持续跟踪才能站稳。写到这天又开始亮了。第48天我最大的感受不是“我学会了什么”而是“原来前端那些年被嘲笑的经验积累在Agent这里全都变成了加分项”。这种知识复利的快感很久没有出现过了。下一步我计划把手里的内部Agent工具再往“UI自动化”方向推一步让它能自动操作公司的后台系统真正把重复劳动力解放出来。前端这碗饭还远远没到凉的时候。
返回列表