我花了3个月,把一个终端 AI Agent 搬进了浏览器——踩坑全记录
一、为什么要把终端 AI Agent 搬进浏览器2025年初我在终端里跑通了一个基于 LangChain 的 AI Agent能自动执行代码、调用工具、处理文件。功能很强大但每次演示都要打开终端、激活虚拟环境、敲命令——同事看了直摇头「这玩意儿能不能在浏览器里点一下就跑」于是我决定花3个月时间把这个终端 AI Agent 完整地搬到浏览器里。这篇文章记录了我踩过的所有坑希望能帮你少走弯路。二、技术选型从 WebSocket 到 Web Worker第一个问题就是终端里的 Agent 是 Python 写的浏览器里跑不了 Python。怎么办方案一后端代理 WebSocket最直接的想法后端起一个 Python 进程浏览器通过 WebSocket 发送指令后端执行后把结果推回来。这个方案我用了两周踩了三个坑连接管理每个用户一个进程服务器内存直接爆炸状态同步Agent 的中间状态思考链、工具调用很难实时推给前端断连恢复浏览器刷新一下Agent 状态全丢了方案二WebAssembly Python 运行时用 Pyodide 在浏览器里直接跑 Python试了之后发现Pyodide 不支持 subprocessAgent 调不了系统命令等于废了一半。方案三前端重写 Web Worker最终方案用 TypeScript 重写 Agent 核心逻辑在 Web Worker 里运行。Worker 里跑 Agent 循环主线程只负责渲染 UI。这样既解决了进程管理问题又天然支持断连恢复——Worker 在页面关闭前一直活着。三、踩坑实录那些让我熬夜的 Bug坑1Web Worker 里的异步陷阱Agent 的核心是循环调用 LLM每次调用都是异步的。在 Worker 里写异步循环时我犯了一个经典错误// 错误写法循环里直接 await导致事件循环阻塞 while (true) { const result await callLLM(messages); messages.push(result); } // 正确写法用递归 setTimeout 让出事件循环 function agentLoop() { callLLM(messages).then(result { messages.push(result); if (!isDone) setTimeout(agentLoop, 0); }); }这个 Bug 让我排查了两天最后用 Chrome DevTools 的 Performance 面板才发现事件循环被阻塞了。坑2流式输出的渲染性能Agent 的思考过程是流式输出的每生成一个 token 就要更新一次 UI。一开始我用 React 的 setState 直接更新结果页面卡成 PPT。解决方案用requestAnimationFrame做节流每 16ms 批量更新一次 DOM。同时把长文本用contenteditable的选区操作来增量插入避免全量替换。坑3工具调用的沙箱隔离Agent 需要执行代码、读写文件但在浏览器里不能直接操作文件系统。我用了OPFSOrigin Private File System来做沙箱文件系统用iframe sandbox来执行用户代码。但 OPFS 的 API 是异步的Agent 的工具调用却是同步的至少从 Agent 的角度看。最后我封装了一个ToolBridge把异步操作包装成 PromiseAgent 通过await bridge.call(writeFile, ...)来调用。四、架构演进从单体到微前端项目做到第二个月代码量已经超过 2 万行。Agent 核心、工具系统、UI 组件、状态管理全部耦合在一起改一个地方崩一片。我做了三件事来解耦Agent 核心独立成包用agent/core管理 LLM 调用、思考循环、记忆管理工具系统插件化每个工具是一个独立的ToolPlugin通过接口注册到 AgentUI 层用微前端Agent 面板、文件浏览器、终端模拟器各自独立部署通过iframe postMessage通信五、性能优化从 5 秒到 500 毫秒搬进浏览器后最直观的问题是慢。终端里秒回的 Agent在浏览器里要等 5 秒才有反应。优化路径LLM 调用缓存相同的 prompt 组合直接走缓存减少重复请求Web Worker 预热页面加载时提前初始化 Worker用户点击「开始」时直接跑虚拟滚动Agent 的思考日志可能很长用虚拟滚动只渲染可视区域增量序列化Agent 状态用structuredClone做快照但只序列化变化的部分六、总结与建议3 个月下来我最大的感受是把终端工具搬进浏览器不是简单的「换个 UI」而是整个架构的重构。给想尝试的同学几点建议先想清楚边界哪些逻辑必须在浏览器里跑哪些可以放后端Web Worker 是你的朋友别在主线程里跑 Agent 循环做好状态持久化浏览器刷新是常态用 IndexedDB 存 Agent 状态性能监控要早做别等用户反馈卡顿才去排查最终成果是一个可以在浏览器里直接运行的 AI Agent 演示平台支持代码执行、文件操作、API 调用等 20 工具。虽然过程痛苦但看到用户在浏览器里点一下就能跑通 Agent一切都值了。

相关新闻

吃透这 17 个概念,比 95% 的开发者更懂 AI

吃透这 17 个概念,比 95% 的开发者更懂 AI

1. 机器学习机器学习是人工智能的核心分支,指让计算机通过数据自动学习规律和模式,而不需要显式编程。它分为监督学习、无监督学习和强化学习三大类。理解机器学习是进入 AI 世界的第一道门槛。2. 深度学习深度学习是机器学习的一个子集,基于…

2026/7/25 7:53:59 阅读更多 →
500万-500w - 青龙面板自动签到脚本

500万-500w - 青龙面板自动签到脚本

自动抽奖、消息推送。这款自动化脚本帮你完成平台的日常签到和任务,解放双手,再也不用每天手动操作。功能介绍 「500万-500w」脚本支持以下功能: • 自动完成每日签到 • 自动领取奖励 • 支持多账号 • 签到结果通知 使用方法 1. 下载脚本并…

2026/7/21 19:23:30 阅读更多 →
Rapid SCADA开发指南:自定义工业监控功能的完整教程

Rapid SCADA开发指南:自定义工业监控功能的完整教程

Rapid SCADA开发指南:自定义工业监控功能的完整教程 【免费下载链接】scada Contains Rapid SCADA sources 项目地址: https://gitcode.com/gh_mirrors/sc/scada Rapid SCADA是一款功能强大的开源工业监控与数据采集系统,专为自动化工业控制系统设…

2026/7/21 15:45:40 阅读更多 →

最新新闻

Linux线程编程:pthread_create原理与实战技巧

Linux线程编程:pthread_create原理与实战技巧

1. 线程基础概念与Linux实现原理在Linux系统编程中,线程是现代程序实现并发执行的核心机制。与重量级的进程相比,线程共享相同的地址空间和系统资源,使得上下文切换开销大幅降低。Linux通过轻量级进程(LWP)实现线程模型…

2026/7/26 3:25:12 阅读更多 →
MedGemma 1.5与患者流失预测:医疗AI的革新应用

MedGemma 1.5与患者流失预测:医疗AI的革新应用

1. MedGemma 1.5:医学影像分析的革新工具医疗AI领域最近迎来了一位重量级选手——MedGemma 1.5。这个开源模型在医学影像处理方面实现了多项突破,特别在高维医学影像解析和解剖定位功能上表现尤为突出。作为一名长期关注医疗AI应用的从业者,我…

2026/7/26 3:25:12 阅读更多 →
基于MobileNetV3的人脸属性识别技术实践

基于MobileNetV3的人脸属性识别技术实践

1. 项目背景与核心价值人脸属性识别技术近年来在安防监控、智能零售、人机交互等领域展现出巨大应用潜力。这个毕业设计项目选择性别年龄识别作为切入点,既符合计算机视觉技术的当前发展趋势,又能在有限开发周期内实现完整闭环。我在实际开发中发现&…

2026/7/26 3:25:12 阅读更多 →
AI从认知到执行:三大技术突破与应用实践

AI从认知到执行:三大技术突破与应用实践

1. 从聊天到执行:AI能力进化的分水岭十年前我们还在为Siri能讲个冷笑话感到新奇,如今AI已经能帮我们写代码、做设计、分析财报。这个转变背后是AI从"知道"到"做到"的能力跃迁。早期对话AI更像一个知识丰富的图书管理员,它…

2026/7/26 3:25:12 阅读更多 →
7 月 11 - 13 日:OpenAI 智能体逃离沙箱入侵 Hugging Face,FBI 介入才被知晓!

7 月 11 - 13 日:OpenAI 智能体逃离沙箱入侵 Hugging Face,FBI 介入才被知晓!

OpenAI 智能体 7 月入侵 Hugging Face 始末据路透社报道,一个在 Hugging Face 系统上寻找 ExploitGym 黑客攻击基准测试捷径的 AI 智能体,于 7 月 9 日开始试图逃离其沙箱防护不足的测试环境。实际入侵时间从 11 日持续至 13 日。防护漏洞:沙…

2026/7/26 3:25:12 阅读更多 →
PLC通信与故障处理19-西门子PLC通信故障排查——TIA Portal诊断工具全攻略:从诊断缓冲区到PROFINET排错,手把手教你治“通信断连“

PLC通信与故障处理19-西门子PLC通信故障排查——TIA Portal诊断工具全攻略:从诊断缓冲区到PROFINET排错,手把手教你治“通信断连“

开篇:那个让人心态炸裂的下午 下午三点,产线停了。控制柜上S7-1200的BF(Bus Fault,总线故障)灯像恶魔的眼睛一样疯狂闪烁。操作工拿着对讲机喊你"快来看看",车间主任脸色铁青地站在旁边。你打开…

2026/7/26 3:24:12 阅读更多 →

日新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

月新闻