说起来你可能不信,我写了个跑在浏览器里的 ai agent 框架

大家好啊我是 HOHO,最近搞了个小玩意出来给大家汇报一下。

前言

这两年大家一聊 agent 开发,默认脑子里浮现出来的基本都是服务端方案:

开发大头都在后端、上任务队列、上数据库、云函数、代理层,再来一套复杂到第二天自己都看不懂的编排系统。然后前端负责做个聊天框,点一下按钮,把请求发上去,把响应 show 出来就结束了。

当然哈,也不是说这种方案不对。但假设说,有些能力不在服务端呢?

比如说目前非常流行的各种 coding cli,本质上就是一个客户端 agent,各种逻辑和编排都是在本地处理的,而服务端只有很薄的一层 llm 封装。

为什么这么搞?因为能力都在客户端上,终端在本地、代码在本地、用户决策需要本地完成。你把这些逻辑放在后端,相当于绕了个大圈去解决问题。

那 web 端呢?

  • 阅读当前页面、告诉用户现在是在看什么,下一步该干什么。
  • 告诉用户他想要的功能在哪个路由
  • 直接调用前端已经有的 api 封装,直接代替 CURD 列表页
  • 利用一些注入特殊能力的 JS API(例如浏览器插件、office 插件)完成特定领域的任务
  • ...

诶?那么有没有一个 agent 框架,能够在浏览器这个客户端就把这些需求闭环掉?

所以这个项目就出来了:

它是干嘛的?

简单说,web-agent-runtime 是一个面向浏览器宿主环境的 agent runtime。

它就是用来实现上面提到的需求的。你可以把它理解成一个 coding agent,只不过跑在浏览器里。这个框架把一套 agent 真正跑起来时最麻烦的那部分东西准备好了,比如:

  • agent loop
  • 事件流
  • tool call
  • session 管理
  • 上下文压缩、分叉、steer、followup
  • 浏览器端持久化

但与此同时,它又该死的灵活和开放:

  • UI 你自己决定,框架只提供内核级的 api 和一套发布订阅的事件机制。React、Vue、Svelte、原生 js 都行。
  • 模型接入你自己决定,内置只给了一个方便本地验证的 OpenAI 兼容 provider。
  • 工具定义你自己决定,想操作页面、导航路由,调用 API都可以。
  • 数据存储你自己决定,开箱即用的提供一个基于 Indexdb 的存储,但是你可以通过接口把数据保存到任何位置。

怎么上手?

上手其实很直接:

bash 复制代码
npm install web-agent-runtime

然后你可以先用内置的 provider 和本地工具快速把东西跑起来:

ts 复制代码
import { createAgentRuntime } from "web-agent-runtime";
import { createLocalStorageTools } from "web-agent-runtime/local-storage";
import { createUnsafeOpenAiProvider } from "web-agent-runtime/unsafe-openai";

const agent = await createAgentRuntime({
  model: { id: "gpt-4.1-mini" },
  llmProvider: createUnsafeOpenAiProvider({
    apiKey: "your-api-key",
    baseUrl: "https://api.openai.com/v1",
  }),
  tools: createLocalStorageTools(),
});

这样一个可以自由读写 localstorage 的 agent 就开发好了:

ts 复制代码
const unsubscribe = agent.subscribe((event) => {
  console.log("assistant message:", event);
});

await agent.prompt("往 localStorage 里写入 demo:greeting=hello");

unsubscribe();
await agent.destroy();

当然这里要说清楚,createUnsafeOpenAiProvider 这个只是让你可以快速开发原型的哈,永远不要让 key 出现在前端逻辑里。生产环境你需要自己搞一个 llmProvider 对接到你的后端服务。

更多的什么会话管理、上下文操作这里就不赘述了,各位可以看项目或者直接让 ai 读 ts 声明。

你啥都提供了,我用这个包还需要干什么?

首先第一点,你需要根据后端接口开发一个 llm provider。

然后你需要根据自己的场景,写 system 提示词和开发一套 tool set。然后慢慢调教知道能满足你的业务需求。

就这些。这个包只实现了 agent 运行所需要的核心逻辑,业务层则完全交给你发挥创意。

用了什么技术?

项目整体是 TypeScript,核心包零运行时依赖 ,构建用 tsup,测试用 vitest

另外仓库里还带了一个 demo,可以直接拿来验证:

  • 浏览器侧工具调用
  • runtime event 流
  • session 创建和持久化
  • 模型输出渲染

如果你准备把它接进自己的产品里,先跑一下 demo,基本就能很快判断这套抽象是不是你要的。

最后

最后还要提一下,这个包并不是希望做一个新时代的 langchain 或者其他大包大揽的 ai 框架。它只是给在浏览器(以及各种 webview 或者纯 js 环境)提供一个运行 agent 的底层能力支持。

后端当然重要,但不是所有问题都该用同一套方案去解决。真正做过服务端 agent 的人应该都知道实现后台会话运行和用户确认有多恶心。

如果你正好就在做浏览器插件、内部系统助手,或者任何一种"能力主要长在前端"的 agent 产品,那这个项目可能能帮你少走不少弯路。

欢迎尝试,有问题随时 issue 或者评论区交流。

相关推荐
奈斯先生Vector14 小时前
AI 辅助线上排障工作台:从故障证据、Codex 协作到可回放修复
人工智能·架构·开源·aigc·midjourney
小小工匠15 小时前
给模型一套设计词汇:Impeccable 如何把「AI 味」变成可检测、可修复的工程问题
人工智能·agent·impeccable·ui skill
CoovallyAIHub15 小时前
一个集装箱从船到火车的两个小时,AI 搭档 Coco在中间做了什么
操作系统·agent·资讯
JaydenAI15 小时前
[基于OpenEvals的自动化评估-07]评估Agent输出文本的质量[下篇]
ai·langchain·agent·evaluation·openevals
u01027894016 小时前
GPT-Image-2 图片编辑:一键改色换背景,AI视觉创作的效率革命
人工智能·gpt·ai作画·aigc
JaydenAI17 小时前
[基于OpenEvals的自动化评估-08]对Agent的输出和输入进行安全性评估
ai·langchain·agent·evaluation·openevals
用户8471810541917 小时前
DeepAgents.js 教程 06—— 跨会话长期记忆(Memory与AGENTS.md)
javascript·agent
神奇霸王龙18 小时前
CC Switch 配置 Claude Desktop+ selltoken 中转 API 实测教程(2026 年 8 月更新)
人工智能·ai·aigc·agent·ai编程·claude
前端开发江鸟19 小时前
Agent 已经能测、能追踪了,我才发现这还不等于能上线
aigc·agent
网易云信19 小时前
权威认可!网易智企帝王蟹入选信通院《2026 智能体创新实践汇编》
人工智能·agent