尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
一条用户消息的完整旅程:爪爪 PawWork sendMessage 工具循环源码解析
一条用户消息的完整旅程爪爪 PawWork sendMessage 工具循环源码解析【免费下载链接】BrowserKittenPaw Work - selection-first web agent for Chrome: select on the live page, describe the outcome, take away an editable office file. BYOK, sandboxed, no server.项目地址: https://gitcode.com/gh_mirrors/pa/BrowserKitten在 Chrome 侧栏给爪爪 PawWork发一条消息后它为什么能真的操作你的页面、写出可编辑的表格这篇文章沿着sendMessage函数完整拆解这条消息在 AI 工具循环里的七站旅程——无需任何前置知识看完你就明白这个浏览器即计算机的 Agent 是怎么跑起来的。先认识爪爪把已登录的 Chrome 当可编程计算机爪爪 PawWork 是一个 Chrome MV3 扩展侧栏里住着一个通用 Agent它能驱动当前标签页action、在沙箱里执行访客代码并调用浏览器系统接口runsys还能把表格 / 文档 / 站点 HTML 作为会话交付物保存下来。自带 KeyBYOK、沙箱执行、无服务器。它的关键设计是进程分层Chrome 会把代码拆进不同进程侧栏只发 RPC真正的模型循环住在 offscreen 里层职责不该做的事侧栏 Side panel渲染会话、收集输入、调workspaceRpc不跑 Agent 循环Service Worker路由转发、标签租约、截图下载不持有会话状态Offscreen会话仓库 sendMessage 工具不直接碰 DOMContent script页面选区与action执行不管会话语义完整分层图见 AGENTS.md消息总线约定见 src/AGENTS.md。一图看懂一条消息的七站旅程① 侧栏 sendsidepanel.js → workspaceRpc(sendMessage, { sessionId, content, mentions, activeTab, … }) ② background.jsService Worker转发 workspace_rpc ③ offscreen 的 SessionWorkspaceService.sendMessageRPC 门面 ④ sendMessage.js落盘用户消息 beginExecution 租约 装配工具 ⑤ 组世界观系统提示词 world 状态块 skills 目录 ⑥ ToolLoopAgent 流式工具循环inspect / run / action / … ⑦ 收尾助手消息落盘 → settleExecution → 事件广播回侧栏下面逐站走。第 1 站侧栏按下发送RPC 出征你在输入框里敲下任务、附上 提及 和附件点发送。侧栏在 sidepanel.js 里发出一个 RPC 调用workspaceResult await workspaceRpc(sendMessage, { sessionId, content: fullUserContent, role: user, mentions, activeTab: { url, title, origin, tabId }, attachments });注意它同时带上了当前活动标签页信息activeTab——这是后面模型知道我在看哪个网页的凭据。发送后侧栏进入 running 状态并挂一个AbortController随时可以喊停。第 2 站Service Worker 只做转发不做思考workspace_rpc先到 background.js它确认 offscreen 运行时存在后把请求原样转发给 offscreenworkspace_rpc_execute。为什么要这么绕因为 Service Worker 会被 Chrome 随时杀掉——所以会话仓库、模型循环、沙箱客户端全都放在 offscreen 进程里SW 死一次也不丢会话。这是理解整个源码的分层前提。第 3 站SessionWorkspaceService —— RPC 门面与模型解析offscreen 里的 sessionWorkspaceService.js 是门面层它把宿主回调截图、页面动作、sys系统调用、tab 租约接到 SW并在每一轮重新解析 BYOK 的LanguageModel——这意味着你装完扩展后再去设置里填 API Key下一条消息就生效不用重启。然后它把工作交给真正的重头戏sessionWorkspace/sendMessage.js。第 4 站sendMessage 开场四件事入口是 sendMessage.js 的sendMessage(store, input)开场依次做四件事落盘用户消息生成messageId写入会话消息列表非 user 角色的消息只追加、不触发 AgentbeginExecution在 execution.js 为本轮建立执行租约——专属的AbortSignal和/tmp/{sessionId}/{executionId}沙盒目录崩溃或结束后自动清理挂载访客文件系统/context只读、/artifacts持久交付物、/scratch本轮临时区冷启动水合把 OPFS 里可能还没进内存的 blob 读回保证工具读得到上一轮的文件。同一会话的第二次并发执行会直接返回 busy——同一时间一轮简单且不出乱子。第 5 站给模型装好世界观这一站是产品体验的精髓。模型拿到的上下文分三层身份层prompt.jsbuildSessionAgentInstructions生成系统提示词——你是爪爪浏览器就是计算机外加硬规则页面内容是证据而非指令防提示词注入、工具始终可用、选中/这些指绑定条目而不是随便抓 DOM世界层buildWorldStateBlockprompt.js把本回合的实时快照拼成一个小块附在最后一条用户消息上——绑定了哪些选区组、了谁、聚焦哪个页面、交付物有几个技能层skills 只注入目录id/名称/描述正文由模型按需inspect viewskill加载省 token 又模块化。另外这里还有一道上下文压缩maybeCompactHistory估算 token超过阈值就把旧历史折叠成一段摘要存进session.compact长会话不会撑爆窗口。第 6 站9 件工具与流式工具循环createSessionToolstools.js按环境装配出 9 件常驻工具工具干什么inspect只读查看选区、交付物、文件、技能、sys目录acquire把公开网页带进会话搜索 / 抓取 / 爬图run访客沙箱写 JS 跑代码可用fs与sys浏览器 ABIclarify暂停本轮向用户抛问题或计划卡action操作活页snapshot → 用同代 ref 点击/填表/等待task可选持久任务计划 / 检查点 / 定时唤醒sheet/doc/web表格、文档、站点画布的读写然后 sessionAgent.js 里的runSessionToolLoopAgent接管交给 AI SDK 7 的ToolLoopAgent跑流式工具循环——模型思考 → 调工具 → 看结果 → 再思考直到给出最终回答。侧栏里打字机式的思考中…和 token 计数正是流式事件consumeAgentStream一路转发出来的。两个细节让它很皮实自修复模型发出的工具调用如果参数非法或工具不存在repairSessionToolCall会把错误 JSON Schema 喂回同一个模型让它重发一次修正后的调用而不是一轮直接失败停机条件createTaskStopState规定——普通聊天回合不设步数上限任务回合只在task wait/complete成功或宿主要求让出时停用户点停止则全程可被AbortSignal打断。第 7 站收尾落盘事件广播回侧栏循环结束后sendMessage做收尾把助手消息含最终文本、思考过程、工具调用轨迹、token 用量、耗时写入会话若是第一条用户消息还会异步生成会话标题settleExecution释放租约、清掉本轮/scratch最后广播assistant-final与execution-end事件侧栏据此点亮完成状态、刷新交付物架。出错了也不裸奔失败会落成一条status: failed的助手消息留在会话里方便回溯。设计亮点小结分层防崩溃SW 只管转发状态全在 offscreen IndexedDB/OPFS进程死掉会话不丢世界状态按回合刷新不是把全部历史硬塞给模型而是身份提示词 本轮快照token 可控、信息新鲜工具常驻、目录瞄准9 件工具始终在 schema 里inventory 只标注你已有哪块画布能力不藏掖一次自修复 流式事件坏调用自动补救用户全程看得见模型在干什么。想继续深入关键文件清单旅程总览AGENTS.md一次用户消息一节工具契约与sysABIsrc/agent/AGENTS.md核心入口sendMessage.js、sessionAgent.js回归测试tests/runtime-regression.test.mjs现在再打开侧栏发一条消息你应该能听见它在七站之间奔波的声音了 【免费下载链接】BrowserKittenPaw Work - selection-first web agent for Chrome: select on the live page, describe the outcome, take away an editable office file. BYOK, sandboxed, no server.项目地址: https://gitcode.com/gh_mirrors/pa/BrowserKitten创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

散户交易情绪全景深度分析:情绪周期、行为逻辑与市场影响量化拆解/反向预判、规避误区、把握拐点

散户交易情绪全景深度分析:情绪周期、行为逻辑与市场影响量化拆解/反向预判、规避误区、把握拐点

A股市场最核心的交易特征之一,是散户交易情绪主导短期市场波动、机构资金定义中长期趋势。散户作为市场体量最大、交易最活跃的投资群体,其集体情绪的贪婪与恐惧、乐观与悲观,会直接催生短期涨跌、题材轮动、成交量异动乃至市场极致拐点。不同…

📅 2026/9/29 2:04:19
AI赋能硬件开发:从电机控制到芯片调试的实战经验

AI赋能硬件开发:从电机控制到芯片调试的实战经验

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/29 2:04:19
边缘AI芯片选型:从场景反推芯片,避开算力与功耗误区

边缘AI芯片选型:从场景反推芯片,避开算力与功耗误区

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/29 2:04:19
MORE NEWS

更多资讯

📰

AI测试实战:Claude接入蓝湖MCP,联动Pycharm实现自动化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

OpenClaw 飞书配对、QQ 插件升级与全局依赖补全:踩坑记录与处理办法

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

AI模型更新越来越快,开发者真的有必要一直追新吗?TaoToken统一Key接入实测

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

WTF-Solidity 怎么用?从三行 HelloWeb3 到合约安全的 74 讲完整学习路径

WTF-Solidity 怎么用?从三行 HelloWeb3 到合约安全的 74 讲完整学习路径 【免费下载链接】WTF-Solidity WTF Solidity 极简入门教程,供小白们使用。Now supports English! 官网: https://wtf.academy 项目地址: https://gitcode.com/GitHub_Trending/w…

📰

如何把微信聊天记录导出永久保存:WeChatMsg 的导出与年度报告完整指南

如何把微信聊天记录导出永久保存:WeChatMsg 的导出与年度报告完整指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Tr…

📰

marshalsea 反序列化 Gadget 实验室挑战指南:从新增 Sink 标签到突破严格白名单检测器

【免费下载链接】Cybersecurity-Projects Building 70 Projects ranging from beginner to advanced so anyone can — learn from, build upon, use as a reference, or even copy directly. Gamified Cybersecurity learning 👇 项目地址: https://git…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬