Repository navigation
Releases
v0.4.0 — 可信赖 + 生态开放
Skills 系统
兼容 browsing-skills 标准的 SKILL.md 技能系统。5 个内置技能(Amazon/GitHub/Google/百度/Wikipedia)自动预装,访问匹配域名时 agent 自动加载对应工具,无需多轮 DOM 探索。支持 URL 导入、toggle 启用/禁用、browsing-skills 注册表互通。内置安全验证(禁止 fetch/XHR/sendBeacon)。
MCP Client
Goby 现在可以调外部 Streamable HTTP MCP server(Cloudflare docs/Supabase/Sentry 等)。工具以 mcp__{server}__{tool} 命名合并到 nativeTools。三种扩展点统一路由:native → Skills → MCP。~80 行 vanilla JS 客户端,零 npm 依赖。
已知限制: MV3 限制 stdio 不可用(filesystem/fetch 等官方 server 不兼容)。只做 Tools,不做 OAuth/Resources/Prompts。
ISOLATED World 持久化脚本
两个新工具:
page_observe— ISOLATED world MutationObserver 持久监听 selector,不受页面 CSP 影响page_inject_watch— MAIN world 注入任意 JS 持久脚本(受 CSP 限制,但灵活)page_stop_watch— 按 ID 停止并清理
_watcherBridgeListener 实现 MAIN ↔ ISOLATED world CustomEvent 桥接。watcher 事件通过 SW 附到工具结果末尾通知 agent。
Spike 04 — Record→NL→LLM(方向验证)
录制回放 spike 完成。核心结论:纯选择器硬编码重放在新数据上会误操作;record→NL→LLM(录制转自然语言指令,复用 Goby agent loop)是唯一鲁棒路线。record.js 录制层 MVP 已写。
里程碑总览:12 phases,25 plans,51 tasks。v0.4.0 归档详情见 .planning/milestones/v0.4.0-ROADMAP.md。
v0.3.5 — Agent 行为调优 + 索引制点击
Agent behavior tuning + index-based clicking. This release focuses on making the agent more disciplined and reliable, driven by real-world failure cases.
🇺🇸 English
New tool
page_click_by_index— Click by the index returned frompage_list_elements. Borrowed from Alibaba PageAgent's index-based design: list elements first, then click by index — no need to reverse-engineer CSS selectors. More reliable on dynamic class / AI-generated DOM.
System prompt overhaul (8 commits)
- [HIGHEST PRIORITY · Goal Anchoring] — Restate the user's original goal before every tool call. If you notice yourself changing direction (jumping pages, unrelated search, new task), STOP and ask the user. Prevents the agent from drifting off-task after hitting an obstacle (e.g. 404 → wandering into summarizing an unrelated article).
- No assumptions · surgical precision — Never fabricate selectors / URLs / attributes. Do only what was asked.
- Completeness + pre-completion verification — Execution tasks (translate all / replace / batch) must fully cover the scope. Before declaring done, verify with a tool (e.g. re-scan for residual text) — don't claim "done" based on a feeling.
- Act or state clearly · no spinning — Every reply must either call a tool or state the conclusion/obstacle in a sentence or two. No long pure-reasoning monologues. When hitting a fundamental obstacle (React/Vue re-rendering overwrites DOM edits, CSP, cross-origin), stop and tell the user — don't keep retrying an impossible direction.
- Tool list moved out of prompt — Tool schemas now go via the API
toolsparameter only, not duplicated in the prompt text. Saves ~800 tokens/turn (learned from Claude Code / OpenClaw).
Bug fixes
- Session recovery after
page_clicknavigation —navigatedByAgentflag was set but not persisted to storage bysaveSession; navigating to a PDF / new page then returning lost the session. Fixed both the flag-setting and the persistence.
🇨🇳 中文
新工具
page_click_by_index— 按page_list_elements返回的 index 点击。借鉴 Alibaba PageAgent 索引制:先列出元素,再按 index 点击,无需反推 CSS 选择器。对动态 class / AI 生成 DOM 更可靠。
System prompt 大改(8 个 commit)
- 【最高优先·目标锚定】 — 每步工具调用前默念用户原始目标。发现自己在换方向(跳页、无关搜索、转新任务)立即停下问用户。防止 agent 遇障碍后目标漂移(如 404 后跑去总结无关文章)。
- 不臆测·精准执行 — 不脑补选择器/URL/属性;只做用户要求的。
- 完整性 + 完成前验证 — 执行类任务(翻译全文/替换/批量)必须完整覆盖。宣告完成前用工具反向验证(如替换后扫残留),别凭感觉说做完了。
- 行动或明示·不空转不硬撑 — 每轮要么调工具,要么一两句明确告知结论/障碍,不要大段纯推理空转。遇根本性障碍(React/Vue 重渲染覆盖 DOM、CSP、跨域)停下问用户,不在不可能的方向硬撑。
- 工具列表移出 prompt — 工具 schema 只走 API
tools参数,不再重复进 prompt 文本。每轮省 ~800 token(借鉴 Claude Code / OpenClaw)。
Bug 修复
- page_click 导航后 session 丢失 —
navigatedByAgent标记设了但saveSession没持久化;导航到 PDF/新页面后回退丢会话。标记设置和持久化两层都修了。
v0.3.4 — MCP Client 工具集成
MCP Client — Goby can now call external MCP servers. Connect Tavily, GitHub, Supabase and more.
🇺🇸 English
- MCP tools integration — Goby agent loop loads tools from configured Streamable HTTP MCP servers and presents them alongside native tools.
mcp__{serverName}__{toolName}naming, sorted after native tools. - Settings panel UI — New "MCP Servers" tab. Add/edit/delete server configs (name, endpoint, Bearer token). Server-level toggle. Auto-connection verification with status display.
- Vanilla JS MCP client (
lib/mcp-client.js) — 200 lines, Streamable HTTP (JSON-RPC 2.0 over HTTP/SSE). No SDK deps. 15s timeout. - SW integration —
importScriptsloads in Service Worker. 2 new handlers (mcp-list-tools,mcp-call-tool). - 62 new tests covering client, CRUD, SW handlers, CS integration, UI. All passing.
🇨🇳 中文
MCP Client —— Goby 现在能调外部 MCP server 了。连接 Tavily、GitHub、Supabase。
- MCP 工具集成 — Goby agent 循环从 Streamable HTTP MCP server 加载工具,与内置工具合并。命名
mcp__{serverName}__{toolName},排在原生工具之后。 - 设置面板 UI — 新增「MCP Servers」标签页。添加/编辑/删除配置。Server 级开关。保存时自动验证连接状态。
- Vanilla JS MCP 客户端(
lib/mcp-client.js)— 200 行,Streamable HTTP。无 SDK 依赖。15s 超时。 - SW 集成 —
importScripts加载到 Service Worker。新增 2 个 handler。 - 62 个新测试全部通过。
v0.3.3 — Bookmarks tools
Bookmarks tools — let the LLM search the user's Chrome bookmarks.
🇺🇸 English
- 3 new tools:
bookmarks_search(keyword match on title + URL, top 50 default, max 200),bookmarks_list_tree(folder tree, default root depth=1, max depth=3),bookmarks_recent(most recently added, default 20, max 100). All three go through the Service Worker —chrome.bookmarksis only available there. - New
bookmarkspermission inmanifest.json. Chrome shows the user the standard "read your bookmarks" warning on install/upgrade; the API is read-only. - Token-budget guards: search returns a count, tree defaults to one level (depth=max 3), recent is capped at 100. A 500+ bookmark user no longer blows the context window on a single dump.
🇨🇳 中文
书签工具 —— 让 LLM 能检索用户的 Chrome 收藏夹。
- 新增 3 个工具:
bookmarks_search(按关键词匹配标题 + URL,默认前 50 条,最大 200)、bookmarks_list_tree(文件夹树,默认根目录 depth=1,最大 depth=3)、bookmarks_recent(最近添加,默认 20,最大 100)。3 个都走 Service Worker ——chrome.bookmarks仅 SW 可用。 - manifest 新增
bookmarks权限。Chrome 会在安装/升级时显示标准的「读取您的书签」提示;API 只读。 - Token 预算防护:search 报告总匹配数、tree 默认仅展开一层子节点(最大 3 层)、recent 上限 100。500+ 书签的用户单次 dump 不再撑爆上下文。
Tests: tests/bookmarks-tools.test.js — 16/16 PASS
Verified: goal-backward verifier 7/7 dimensions PASS
v0.3.2 — CSP-resilient tooling | 工具链 CSP 兼容性修复
v0.3.2 — 2026-06-27
🇺🇸 English
CSP-resilient tooling — page_evaluate and uploaded skills now work on strict-CSP sites (HN, GitHub, Twitter, etc.).
page_evaluateruns in the page's MAIN world via Service Worker — useschrome.scripting.executeScript({world:'MAIN'}), which is a Chrome extension privilege and bypasses page CSP entirely. v0.3.1 used ISOLATED-worldeval(), which strict CSPs reject.- Uploaded skills compile via
new Functionin ISOLATED world — rawCode is passed as a string (not a Function object) so structured clone doesn't strip it. On strict-CSP sites wherenew Functionfails, the new SYSTEM_PROMPT rule (below) tells the LLM to fall back to built-in tools. - SYSTEM_PROMPT rule #6 — "switch paths on tool failure" — when a tool returns
CSP/执行失败/timeout, the LLM immediately switches to built-in DOM tools (page_query/page_list_elements/page_click/page_fill) instead of retrying the same call 3 times. - Better
page_evaluateresult serialization — DOM elements →outerHTML(truncated to 2000 chars); objects →JSON.stringify. Previously returned useless[object HTMLDivElement]. - Imported skills take effect immediately — no page refresh needed.
page_querydescription nudges LLM towardindex=-1batch queries — saves tool calls and tokens when extracting lists (e.g. HN front page titles).
v0.3.1 — Draggable ball & resizable panel | 悬浮球拖拽 + 面板调整大小
v0.3.1 — 2026-06-27
🇺🇸 English
UI: Draggable ball & resizable panel.
- Floating ball is now draggable. Move it anywhere on the screen — position persists across sessions and page reloads. A 5px threshold cleanly separates clicks (toggle panel) from drags (relocate ball).
- Panel is now resizable from any edge or corner. Eight handles (n / s / e / w / ne / nw / se / sw) with appropriate cursor hints. Minimum size 320×360. Width, height, and position all persist.
- Both ball and panel snap back into the viewport if you resize the window underneath them.
Under the hood: pointer events (mouse + touch), gobyBallPosition and gobyPanelGeometry storage keys, removed the legacy single-handle bottom resize bar.
v0.3.0 — 自主导航
v0.3.0 — 自主导航
跨页面/跨标签页自主完成任务。Agent 可以导航到不同网页、打开新标签、在其中执行工作流并将结果返回。
新功能
跨页面工作流
- page_open_tab — 在新标签页打开 URL 并自动执行任务,完成后结果返回 Chat Tab
- page_finish_workflow — Worker Tab 完成任务后回传结果给 Chat Tab
- 实时进度转发 — Worker Tab 每轮工具调用实时显示在 Chat Tab([W-xxx] 前缀)
- Worker Tab 关闭自动恢复 — 手动关闭 Worker Tab 后 Chat Tab 立即收到错误通知
标签页导航
- page_navigate — 当前标签页导航到指定 URL(同域/跨域)
- page_list_tabs / page_close_tab — 列出和关闭标签页
- 跨域会话继承 — 导航到新域名自动继承上下文
- 导航后自动 resume — agent loop 跨域导航后继续执行任务
UI 改进
- 发送按钮执行中变为红色停止按钮(■),可终止 agent
- 会话清除一键广播所有标签页
- i18n 中英双语切换
修复
- MAX_LOOPS 15 → 50
- page_finish_workflow 多层兜底
- 跨域导航 session 不丢失
- page_screenshot worker Tab 正确截图
- HTTP 400 messages 顺序错位修复
- panel 收起 bug 修复
- 新建会话 toolCallCounter 重置
- data: URL 硬拦截
v0.2.0 — Goby AI 浏览器助手
Goby v0.2.0 — AI 浏览器助手 / AI Browser Assistant
用自然语言操控网页。首个完整可用版本。
Control web pages with natural language. First complete release.
新功能 / Features
- Agent 循环 / Agent Loop — 流式 SSE 响应 + 15 轮工具调用自动编排 / Streaming SSE + 15-round tool orchestration
- 15 个内置工具 / 15 Built-in Tools — query / list / wait / evaluate / fill / click / check / select / submit / analyze / screenshot / calculator / clipboard_read / clipboard_write / get_current_time
- 浮动球 + 面板 / Floating Ball + Panel — 44px 悬浮球唤出 400x480 Shadow DOM 面板 / Click to open 400x480 Shadow DOM chat panel
- 中英双语 / Bilingual UI — 设置中切换 中文/English,面板、工具、系统提示词全部双语 / Toggle Chinese/English in settings, full UI + system prompt coverage
- 多 API 配置 / Multi-Profile — 多组 Profile (Base URL / Key / Model) 自由切换 / Switch profiles on the fly, OpenAI/DeepSeek/Qwen compatible
- 会话管理 / Session Management — 按域名自动保存/恢复,50 个会话 LRU 淘汰 / Auto-save by domain, 50-session LRU, sidebar search
- 截图放大 / Screenshot Overlay — 缩略图 + 全屏遮罩 / Thumbnail + full-screen lightbox, ESC/click/X to close
- 安全保护 / Security — API Key 仅存本地沙盒 / local-only, LLM 输出 DOMPurify 消毒 / sanitized, textContent 注入
已知问题 / Known Issues
chrome:///about:页面无法使用 — Chrome 限制扩展注入 / Chrome blocks content scripts on internal pages- 严格 CSP 站点可能阻止
page_evaluate— 其他 DOM 工具不受影响 / Strict CSP sites may block evaluate, other tools unaffected - 仅操作当前标签页 — 无 navigate/open_tab / Current tab only, no navigation tool
- 需标签页焦点 — 无后台自动化 / Tab must be focused, no background automation
安装 / Install
git clone https://github.com/juguang/Goby.git
Chrome → chrome://extensions → Developer mode → Load unpacked → Select folder