
从今天开始我切换一下视角用实际从业者的口吻来写这篇Day 69的记录。我是一名在职前端Leader带过一个中型前端团队做了六年多工程化、组件库、性能优化、安全防护这些事。今天是我系统学习并尝试转行AI Agent方向的第69天这个节点刚好卡在一个很微妙的位置基础概念已经不再陌生主流架构也啃过一轮但真正能落地的工程经验才刚刚开始积累。这篇文章不写流水账我把第69天这个时点的思考、踩坑、认知升级以及前端背景怎么往Agent方向迁移完整复盘一遍。1. 为什么我把第69天当成转型分水岭1.1 前68天我到底在做什么先说学习路线不然很多人会误以为69天都在看概念。我拆成了三个阶段前两周是“消除陌生感”把AI Agent相关的热搜词全部过了一遍包括AI Agent搭建、AI Agent主流架构、AI Agent token是什么意思、部署方式、主流框架等。中间三周是“动手仿写”拿一些成熟的开源项目反复改造比如Open WebUI、Dify这类带前后端界面的Agent平台前端的底子让我在UI层几乎没有成本真正花时间的是搞明白后端服务、数据库、消息队列为什么存在。最近三周进入“工程化验证”开始把团队内部的小工具往Agent形态迁移也在这段时间把阿里云AI Agent白皮书、主流LangChain和Rust生态里的Agent项目都拿来对照直接对比不同实现思路的取舍。1.2 第69天的核心认知Agent不是“更强的聊天框”而是“倒过来的前端工程”这句话是我在Day 69想明白的。过去我们做前端关注的是UI层、交互层、请求层、状态管理、权限控制、极端状态处理Agent产品把这些东西全都保留了但重心完全翻转了。前端工程里最核心的“用户怎么操作”变成了“模型怎么决策”请求参数校验变成了工具参数校验组件复用在Agent里对应的是Skill和提示模板的复用。如果你从纯前端视角看Agent会觉得它就是个API调用加上一个聊天窗口但真正上手做才知道Agent系统的复杂度不在看得见的UI而在看不见的“决策循环、工具调度、上下文管理、安全边界”这些层。提示对前端出身的人来说最大的优势不是会写界面而是你天然理解“系统分层、模块边界、状态机”这套工程方法论这些能力移到Agent工程里几乎无缝衔接。2. 前端Leader转AI Agent到底转什么核心能力迁移对照2.1 组件库到Skill与提示模板前端Leader最熟的东西之一是组件库维护。控件怎么抽离、怎么保证接口稳定、怎么做版本兼容、怎么让团队其他人愿意用这套方法论直接对应AI Agent里的Skill机制。所谓Skill可以理解为给模型准备的一系列“可复用能力包”比如一个“日报生成Skill”、一个“代码审查Skill”、一个“SQL查询Skill”每个Skill都包含提示词模板、输入输出约定、调用条件、错误处理方式。我在团队内部做过一次分享直接把组件库和Skill做了对比组件有propsSkill有输入Schema组件有默认插槽Skill有默认回退策略组件有版本迭代Skill有提示词版本管理组件写得好能让业务方快速拼页面Skill写得好能让Agent在不同场景下稳定复用你封装好的能力。所以如果你带过组件库团队你其实已经具备了做Agent“能力层”的管理心智只需要把“按钮、表单、弹窗”的颗粒度换成“工具调用、提示词模板、数据校验规则”。2.2 请求封装到MCP工具层前端Leader每天面对的网络请求层在Agent工程里的对应物就是工具层。我们现在用大模型做复杂任务模型本身不直接操作外部系统它需要通过工具层去查询数据库、调用内部API、读取文档、操作浏览器。这里有一个很热的概念叫MCPModel Context Protocol简单理解就是给大模型一套统一的“USB接口”一端插各种数据源和工具一端插模型框架。我在Day 69之前一直在纠结一个问题为什么不能像前端写fetch一样直接让模型调接口后来明白了模型生成的是“意图”不是“请求”它需要框架帮它把意图翻译成真实的工具调用然后再把结果塞回上下文让模型决定下一步动作。这个“翻译-调用-回填-再决策”的过程本质上就是你写过的拦截器、统一请求层、错误重试机制只是状态机更复杂决策链条更长而已。2.3 状态管理到上下文编排前端的状态管理解决的是“数据流在界面各组件之间怎么同步”Agent的上下文编排解决的是“信息在模型、工具、记忆之间怎么流转”。这两件事在抽象层面是极其相似的。我们团队曾经为了让一个复杂表单跨步骤保存草稿设计了很严格的reducer到了Agent场景你需要为一次任务维护“任务上下文”比如多轮交互记录、工具返回结果、用户目标、中间产出物等。这些东西放在一个上下文窗口里让模型一次性读入还是分层存储、按需召回直接决定了Agent的稳定性和成本。我在实测一个自动化测试Agent时发现如果上下文里塞入太多历史记录模型会被无关信息干扰反而容易出错。后来照着前端状态管理的思路做了“上下文瘦身”核心信息存短期记忆汇总信息存长期记忆只有必要时才通过检索把历史拉回主流程。这个思路治好了我很多焦虑原来前端Leader讲的“最小状态原则”在Agent上下文设计里竟然是同一个原理。2.4 前端安全思维到Agent安全边界这是我最想强调的部分。前端Leader普遍对XSS、CSRF、内容安全策略、防爬虫、防页面源码泄露、加密传输这些安全措施有丰富经验这些看似和Agent毫无关系但在Agent系统里反而成为稀缺能力。Agent的安全威胁比传统Web应用更复杂提示注入攻击用户故意在输入里塞恶意指令诱导模型越权执行、上下文中毒外部数据夹带恶意示例污染模型判断、工具权限绕过模型被诱导调用不应调用的内部API、数据泄露私有数据被拼进上下文后输出给第三方等。我用前端安全那套“最小权限、输入校验、输出转义”的原则做Agent安全设计用户消息要过滤危险指令模式工具调用前做权限校验工具返回内容做无害化处理敏感字段脱敏后再进入上下文。目前看下来是有效的说明安全思维是可以跨域迁移的而且在这个圈子还很稀缺。2.5 前端发布灰度到Agent评估观测前端Leader做发布时一定会做灰度、监控、回滚这些思路在Agent系统里有对应玩法把一次Agent改造当成一次“算法发布”不要直接替换线上逻辑而是先让Agent在测试集上跑一遍对比输出质量上线后用日志追踪每一次工具调用链路出现异常可以随时关停或回退到规则版本。Day 69我在内部做了简单的观测看板记录每轮任务的Token消耗、工具调用次数、成功率和用户反馈用这些数据反向优化提示词。这套东西就是前端可观测性体系在Agent工程里的翻版思维完全是通的。3. 主流Agent架构拆解给前端口味定制的理解版3.1 单Agent与多Agent选型刚开始学习时会看到各种架构图有人推荐用单个Agent解决所有任务有人强调必须上多Agent协作到底谁对我的理解是看“领域边界”。单Agent适合任务链条清晰、不需要太多专业领域切换的场景比如“把一段口语描述整理成规范日报”多Agent适合复杂任务比如“从需求文档生成前端页面代码”这种任务涉及解析、设计、编码、自测等多个环节每一步都有不同的技能要求让一个Agent从头跑到尾上下文会越来越乱工具权也难以收敛。我个人的选型原则是能用单Agent就坚决不上多Agent多Agent会带来消息传递成本、状态同步成本、错误定位难度上升。真正需要多Agent时可以采用“主管-员工”模式由一个主Agent负责拆解任务把子任务分给专门Agent再收集结果统一输出。这种架构和前端“容器组件-业务组件-基础组件”的划分逻辑是一模一样的。3.2 三层架构规划层、工具层、记忆层我把目前主流的Agent架构简化成三层来看这样前端同事也能秒懂。最上层是规划层负责思考“现在该做什么”对应前端的路由与页面编排中间是工具层负责提供“能做什么”对应前端的业务API层底层是记忆层负责记住“之前做了什么”对应前端的本地存储与全局状态。规划层最常见的实现是ReAct模式也就是让模型交替执行“思考-行动-观察”的循环工具层现在越来越标准化MCP协议就是在解决“工具接进来太麻烦”的问题记忆层则分为短期工作记忆和长期知识库跟前端SessionStorage和IndexedDB的定位很像。做Agent本质上就是把这层的深度做扎实。你有前端多任务路由和状态同步的经验理解这个架构会非常顺。3.3 让“Rust写Agent”和“Token成本”这两个热搜词落地热搜词里有一个是“基于Rust语言AI Agent”还有一个是“ai agent token是什么意思”。这两个我都认真钻研过。Rust在Agent生态里属于“性能敏感的基础设施”方向因为Agent运行时涉及大量并发工具调用、流式输出、内存安全边界Rust非常适合做运行时底座很多框架的底层组件就是用Rust写的。但对我来说前端Leader去学Rust的投入产出比不高我更倾向于“看懂架构、能调接口、知道哪一层用Rust是合理优化”把主要精力放在应用层编排。关于Token你一定要把它当成“预算”而不是“概念”。Token是大模型处理文本的最小单位中文一个字大概对应1到2个Token上下文窗口再大也是有限的。在实际工程里Token消耗直接决定成本很多Agent方案跑不动就是因为每一步都想塞很多信息Token预算快速被打满。我常用生活类比来给团队解释Token就像外卖配送费的起送金额你点得越多越贵但只点一两个菜又可能不够吃好的Agent设计就是让每次“点单”刚刚好满足需求不浪费也不缺失。4. 第69天我实际落地的Agent工程从后端服务到前端入口4.1 复用“若依前后端分离”的既有思维热搜词里有人问“若依前后端分离前端代码在哪里”这是一个典型的前端工程问题。若依是Java系后台管理框架前后端分离后前端代码通常独立放在一个目录仓里通过接口联调打通。这个场景给了我一个特别大的启发做Agent系统和做前后端分离后台在“系统边界”上非常像。后端负责数据持久化和业务逻辑前端负责交互展示在Agent系统里模型服务相当于新的“后端”只是它不产生稳定结果而是产生动态决策前端依然负责把人机交互做顺。我在实际落地一个“用户反馈自动分类Agent”时就刻意采用了这种前后端分离思维前端是一个极简的管理后台负责上传反馈、展示分类结果、人工纠错后端是Agent运行时负责调用模型、解析结果、写数据库。两条链路的连接点只有一套明确的数据结构。这种设计让我这个前端Leader没有迷失在Agent的“黑魔法”里一切都还是我熟悉的工程边界。4.2 Open WebUI的后端依赖教训纯前端部署的边界热搜词里有一条提到“open webui 需要后端服务仅运行前端服务是不支持的”这条直接把很多前端同事的希望打碎了明明界面都出来了为什么不能纯前端部署我在学习中也踩过这个坑。原因很简单Open WebUI这类产品不只是“显示聊天记录”它要做用户体系、会话持久化、API密钥管理、多模型路由、RAG知识库检索这些功能在没有后端的情况下无法安全实现。浏览器环境里你无法安全保存密钥也无法直接跨域访问内部数据源更无法做审计。这个教训很重要做Agent产品纯前端部署注定只是演示级方案。前端Leader学Agent时最容易犯的错就是想用纯前端把所有事情搞定实际生产环境必须有一个后端服务来做凭证存储、调度中心、安全审计。这也是我Day 69之后心态转变的分水岭不再纠结“能不能前端全包”而是接受“前端负责体验层Agent后端负责决策层”的明确分工。4.3 完整的工程链路服务注册表、工具定义、运行时、UI外壳我在Day 69前后沉淀了一套可复用的Agent工程落地清单包括四层。第一层是服务注册表把团队内部所有可被Agent调用的能力统一登记包括数据库查询接口、内部文档、监控平台、工单系统第二层是工具定义把每个注册表中的服务包装成带输入Schema和输出格式的工具并写好明确的描述让模型知道什么时候该调用哪个工具第三层是Agent运行时负责会话管理、模型调用、工具执行、错误处理和重试第四层是UI外壳也就是前端同事最擅长的部分但必须包含调试面板、Token用量展示、工具调用时间线、人工介入按钮。这套结构我试过最费时间的不是第四层而是第二层工具定义。模型完全靠工具描述来判断“什么场景该调什么”描述写得不清晰Agent就会频繁调用无关工具浪费Token还容易出错。我举个例子团队有一个内部“获取员工信息”的API最初工具描述写的是“获取员工详情”模型经常在用户随便聊到某个名字时就去调这个接口后来我把描述改成“当用户明确询问某员工的组织架构、联系方式或岗位信息时使用闲聊场景不要调用调用前必须确认用户身份”误调率立刻大幅下降。这就是前端的“组件使用文档”思维迁移到Agent工具层非常好用。4.4 前端Worker上传大文件带来的启发Agent长任务并发与重试热搜词里有一条“前端使用worker上传大文件”这其实是一个非常实用的前端工程话题但我发现它和Agent长任务处理有强烈的映射关系。前端用Web Worker解决的是“不让大文件上传阻塞主线程”的问题把任务扔给后台线程通过消息机制上报进度失败时断点续传。Agent在做长任务时也会遇到类似问题一次任务可能要跑几分钟甚至更久中途可能模型服务超时、工具调用失败、上下文被撑爆用户不能干等着必须有任务队列、实时进度、失败重试、中途打断恢复。Day 69我review了团队一个大文件转换Agent最初实现是用户发起任务后同步等待结果经常超时报错。后来我直接套用前端Worker的成熟方案把长任务提交到队列返回任务ID前端轮询或通过SSE监听进度Agent后端把任务分成多个子步骤每完成一步记录状态失败时只重跑失败子步骤。这个设计让我从前端的“并发与任务拆分”思路里直接解决了Agent工程的“长时任务可靠性”问题。5. 团队落地路线不以裁员为目的以效率底线换工作空间5.1 第一步把Agent当“实习前端”很多前端Leader学完Agent后会遇到一个尴尬想往团队里推同事觉得你搞的新玩意只是在抢饭碗。我的经验是不要把Agent当“替代者”要把它当“实习前端”。实习生来了你要给什么要给非常明确的、有验收标准的任务比如“把某个JSON字段转换成表格”“把所有弹窗标题前后加固定前缀”“批量替换某类API调用写法”。Agent也是这样从那些重复度高、容错率高的任务开始让它跑出结果后由正式员工review。我团队的第一批Agent任务就是“把接口返回的旧字段名批量映射到新字段名”以及“根据设计稿生成基础页面结构”。这些任务的共同点是失败影响小、结果可验证、规则相对清晰。等同事发现Agent能帮他们省掉大量重复劳动而不是抢工作推进阻力自然就会变小。5.2 第二步让Agent拥有公司内部工具的“SDK”前端同事都熟悉公司内部的业务SDK但Agent能不能用这些SDK是一个关键盲区。我在Day 69前后开始推动的事情是把团队内部的高频能力快速包装成Agent可调用的工具相当于给Agent开通一个有限权限的“内部SDK”。比如自动登录测试环境、查询测试数据、创建缺陷单、拉取代码分支等。每一步包装都要明确权限边界和审计日志避免Agent在无人监督的情况下操作生产数据。这里的阻力往往不在技术而在“职责边界不清晰”。建议把Agent工具的权限按照“只读优先、写操作需二次确认”来设计就像前端里做危险操作前的弹窗确认一样。我自己的体会是先让Agent做只读类查询是最容易见效的比如“查一下某个用户今天的反馈记录”“查一下某个接口近期错误率”这类场景零风险同事用一次就会留下印象。5.3 第三步制定安全红线哪怕是内部工具不少团队在接入Agent时会把安全机制放到最后这其实是最大的错误。我在前端安全领域踩过的坑告诉我宁可一上来就卡得紧也不要在事故之后再补救。具体红线包括Agent调用外部网络接口时必须通过后端白名单代理所有Agent能接触到的数据必须按权限模型过滤不允许Agent直接执行数据库写操作只允许通过受控API执行每一次工具调用都要留痕并支持审计预览。你可能觉得这些条条框框拖慢效率但真实情况是明确的安全红线反而让同事更愿意尝试因为他们知道“出了问题有人挡着有规则可以追溯”。这和我做前端CSP策略是一样的逻辑先严格后放宽比先宽松后收紧要容易十倍。5.4 关于学习路线和面试题DAY69之后的清单热搜词里有很多前端面试题、前端学习路线也有人问Agent面试怎么准备。我这里给一个真实的前端Leader视角清单。第一阶段至少熟练掌握提示词的输入输出设计、工具调用的参数校验、上下文窗口管理、Token成本估算第二阶段必须动手实现一个完整的单Agent应用包含后端服务、前端交互、工具注册、错误处理和日志分析第三阶段要能回答架构题为什么用多Agent、消息如何在Agent之间传递、长任务如何做状态持久化、安全边界如何设计。前端本身的底子不能丢很多Agent场景的最后交互层还是要把你最好的前端功底拿出来用。6. 常见问题与避坑实录6.1 提示词写了很久结果却不稳定是不是要回前端这类问题我遇到过太多次。最大原因不是提示词写不好而是缺少“输出约束”。光靠提示词让模型“做得更好”是非常脆弱的必须搭配结构化输出、校验规则、失败回退。现在我写工具描述时一定带上枚举允许值、参数格式示例、以及“不确定时不要猜测而是直接说明原因”。前端Leader做表单校验时的习惯在Agent里是核心竞争力。6.2 Token烧得太快怎么办先看上下文管理再看任务拆解。一边是多轮对话塞满了历史一边是工具返回结果冗长却没有截断。我的习惯是工具返回内容先做摘要再进入上下文多轮对话只保留最近几轮的核心信息早期内容有需要时再检索如果任务不需要模型做推理就不要用大模型处理直接用规则处理更快更省钱。6.3 Agent结果不可复现这是工程化落地的头号杀手。同一个问题变量没变模型输出却不一致。解决办法是固定模型版本和温度参数同时把“模型输出”和“解析逻辑”分离模型只负责产出标签、JSON结构等中间结果不要让它直接产出最终展示文案最终文案由代码模板统一拼接。这就像前端把“接口返回数据”和“组件展示逻辑”分离一样。6.4 团队同事抗拒使用Agent不要急着讲大道理而是找一个具体的、高频的、大家都烦的琐事用Agent把它解决掉然后当场展示。我团队最早突破的是一个每周要花一小时整理的跨部门需求同步表Agent把抓取、去重、格式化的活全干了同事只需要review。Demo的冲击力永远比理念灌输大。最后分享一个Day 69我自己的体会这条转型路线与其说是从“前端Leader”转行到“AI Agent工程师”不如说是用前端Leader的工程思维去接管一个“模型驱动的复杂系统”。你过去处理过的组件边界、状态管理、安全防护、任务调度在Agent工程里全部都有对应的新形态。69天只是一个中间节点真正的分水岭是你什么时候能接受“Agent不是前端产品的附属品而是需要被前端工程化方法严格治理的新物种”。这个心态一旦建立后续的学习速度会快得超出你自己的预期。