WiseriaAI/pie-ai-agent

GitHub: WiseriaAI/pie-ai-agent

一款基于 Chrome 扩展的 AI 浏览器自动化代理,通过自然语言驱动 DOM 操作与跨标签页编排,并以确认卡机制保障高风险操作的可控性。

Stars: 0 | Forks: 0

Pie

Pie

Browser-automation agent for Chrome — natural-language tasks executed through native tool calling, scoped Skills, CDP keyboard control, and a confirm-before-act security model.

English · 简体中文

Install · Configure · Privacy · Changelog · Roadmap · Architecture

## 为什么选择 Pie Pie 将 Chrome 变成了一个浏览器自动化代理。用自然语言描述任务;LLM 会规划步骤并通过类型化的工具注册表来执行它们 —— 包括 DOM 操作、跨标签页编排,以及针对不响应标准 DOM 事件的画布编辑器的 CDP 级别键盘输入。工作流可以被保存为带有明确工具白名单的 Skills(技能)。每一个不可逆或跨域的步骤都会通过确认卡片进行拦截,让你始终保持充分知情且可控的状态。BYOK(自带密钥):粘贴来自八个 LLM 提供商之一的你自己的 API 密钥 —— 在本地加密,无 Pie 后端参与,无遥测数据。 - **通过原生工具调用进行浏览器自动化。** LLM 使用 Anthropic 的 `tool_use` 块或 OpenAI 的 `function_calling` 来驱动类型化的工具注册表 —— DOM 操作(点击、输入、选择、滚动、结构化快照)、跨标签页编排(列出/激活/关闭/分组/移动/获取可读内容),以及针对 Lark Docs 和 Google Docs 等画布编辑器的可选 CDP 键盘注入(`Input.dispatchKeyEvent`、`Input.insertText`)。 - **Skills(技能)作为一等对象。** 保存一个带有作用域工具白名单的提示模板;通过输入 `/skill_name` 来运行它。Agent 也可以编写自己的技能 —— 但会受到 8 道防线的能力边界的限制,使它们无法扩展自身的权限。 - **先询问,后执行。** 每一个高风险操作(表单提交、敏感字段、原始 CDP 输入、跨域标签页操作、关闭固定标签页)都会在执行前弹出确认卡片拦截,展示具体的工具、原始参数以及受影响的域 —— 让你始终保持充分知情且可控的状态。 - **多会话与持久化。** 对话在 Service Worker 重启后依然保留;归档的会话会在存储压力下被驱逐(LRU 算法 + 30 天硬删除)。 - **侧边栏,而非弹窗。** Pie 位于 Chrome 的侧边栏中,在你浏览时始终保持打开 —— 聊天、运行代理任务、管理标签页而不会丢失上下文。 - **BYOK。** 使用来自八个 LLM 提供商之一的你自己的 API 密钥。在 `chrome.storage.local` 中使用 AES-GCM 进行静态加密。无 Pie 后端,无遥测,无代理。参见 [PRIVACY.md](PRIVACY.md)。 ## 功能特性 ### 页面理解 针对你当前所在的页面提出问题。Pie 会提取可见文本(对凭据字段进行强化过滤),并仅将这部分文本发送给 LLM。页面片段在提示词中会被包裹在 `` 标记内,以抵御来自页面 DOM 的提示注入攻击。 ### 使用工具调用的 Agent 自动化 用自然语言描述一个任务。LLM 会规划步骤并通过 Pie 的工具注册表执行它们,使用你的提供商的原生工具调用协议 —— Anthropic 针对 Claude 的 `tool_use` 块,以及针对其他提供商的 OpenAI `function_calling`。内置的工具集包括: - **DOM 操作** —— 点击、输入、选择、滚动、交互元素(链接、按钮、输入框)的结构化快照 - **跨标签页工具** —— 列出、激活、关闭、分组/取消分组、移动、从另一个标签页获取可读内容 - **CDP 键盘**(可选加入,默认关闭) —— 针对不响应标准 DOM 事件的 Lark Docs 和 Google Docs 等基于画布的编辑器的 `Input.dispatchKeyEvent` 和 `Input.insertText` - **Skill 元工具** —— Agent 可以创建/更新/删除/列出自己的技能(参见下文的 *Skill 系统*) 内置了三个跨标签页技能:`auto_group_tabs`、`close_duplicate_tabs`、`close_inactive_tabs`。 ### Skill 系统 Skills 是保存了明确工具白名单的提示模板。打开 **Settings → Skills** 来创建、编辑或删除你自己的技能 —— 包括名称、提示模板、参数 JSON 模式,以及该技能允许调用的精确工具集。在聊天中输入 `/skill_name` 即可运行任何技能。 Agent 本身也可以通过 `create_skill` / `update_skill` / `delete_skill` 元工具来编写技能 —— 这对于捕获模型刚刚走过的工作流非常有用,以便在下一个会话中重放。Agent 编写的技能会被标记为 `author='agent'`,并在首次运行时触发一次确认卡片;模型发明的技能绝不会在下一次悄无声息地执行。 技能无法逃脱其声明的工具白名单。每次技能变更都会强制执行八项能力授予不变量 —— 严格的容量上限(≤8 KB 的提示模板,≤2 KB 的参数模式)、禁止元工具嵌套、每次安装 1 MB 的存储预算、针对实时工具注册表的名称验证 —— 因此失控的技能无法扩大自身的权限。 ### 高风险操作审批 Pie 会在每个工具调用运行前对其进行分类。任何不可逆或跨域的操作都需要你首先批准确认卡片。 **高风险**触发条件包括:提交表单、在密码/支付/邮箱字段中输入、通过 CDP 的原始键盘输入、关闭固定标签页,以及任何跨域的标签页操作。 确认卡片会向你展示: - 确切的工具名称以及 Agent 打算传递的原始参数(以便你在运行前发现错误或页面 DOM 中被提示注入的指令) - 每个受影响标签页的域名和标签标题,当操作将跨越原始任务的固定域名时,会单独标出 - 一对 **Approve**(批准)/ **Reject**(拒绝)选项,以及一个任务级别的 **Discard**(丢弃)选项,适用于当你想完全放弃 Agent 计划的时候 CDP 键盘模拟功能**默认是关闭的** —— 你需要先在设置中选择开启,然后它才能被附加使用。如果你对同一任务拒绝了三次操作,Pie 会自动终止该任务,而不是在你已经不同意的计划上浪费你的 token。 ### 支持的提供商 | 提供商 | 备注 | |---|---| | Anthropic Claude | 原生 API + 原生 `tool_use` | | OpenAI | OpenAI `function_calling` | | Gemini | 原生 API | | OpenRouter | 兼容 OpenAI | | DeepSeek | 兼容 OpenAI | | MiniMax | 兼容 OpenAI | | ZhiPu (智谱) | 兼容 OpenAI | | Bailian (百炼) | 兼容 OpenAI | 添加一个提供商只需一个注册表条目和一个主机权限。本地 Ollama 已在 [roadmap](docs/ROADMAP.md) 中。 ## 安装 Pie 提供两个面向终端用户的渠道和一个源码构建渠道。请选择适合你的一种。 需要具备支持侧边栏的基于 Chromium 的浏览器 —— Chrome 114+、Edge、Brave、Arc 等。 ### 选项 1 — Chrome Web Store(推荐) 点击 **Add to Chrome**,然后将 Pie 固定到工具栏。 ### 选项 2 — GitHub Release zip(解压安装) 适用于想要在不使用 Web Store 的情况下安装同一构件的用户,或者在 listing 仍在审核期间: 1. 从 [Releases page](https://github.com/WiseriaAI/pie-ai-agent/releases) 下载最新的 `pie-x.y.z.zip` 2. 将其解压到一个你会保留的目录(Chrome 在运行时会从此目录读取 —— 安装后不要删除它) 3. 打开 `chrome://extensions` 4. 启用右上角的 **Developer mode** 5. 点击 **Load unpacked** 并选择解压后的目录 6. 将 Pie 固定到工具栏;点击图标以打开侧边栏 #### 无损升级 Chrome 从解压目录的路径派生扩展 ID,你的会话 / 加密的 API 密钥 / Skills 都在 `chrome.storage.local` 中归属于该 ID。为了在版本迭代中保留这些数据,请**在原处升级** —— 不要将新版本解压到其他文件夹。 1. 打开 `chrome://extensions` 并找到 Pie 的卡片。记下解压目录的路径(显示在卡片下方,或通过 **Details** → "Source" 查看) 2. 删除该目录的内容,但保留目录本身 3. 将新的 `pie-x.y.z.zip` 解压到同一个目录中 4. 点击 Pie 卡片上的 **↻ reload** 图标 Web Store 用户(一旦选项 1 可用)可以跳过此部分 —— Chrome 会自动更新扩展并且存储会自动结转。 ### 选项 3 — 从源码构建(贡献者) 如果你想要 HMR,正在提交 PR,或者只是不信任预构建的二进制文件: ``` git clone https://github.com/WiseriaAI/pie-ai-agent.git cd Pie pnpm install pnpm build ``` 然后将生成的 `dist/` 目录作为解压的扩展加载(上述步骤 3–6)。关于内部开发循环,请参见下文的 [Development](#development)。 ## 配置 1. 打开侧边栏并切换到 **Settings** 标签页 2. 添加一个提供商条目 —— 粘贴你的 API 密钥,选择一个模型 3. 切换回 **Chat** 并发送一条消息 你的密钥在存入 `chrome.storage.local` 之前会被加密。加密密钥本身在首次运行时于本地生成,并且永远不会离开设备。 ## 隐私与安全 - BYOK:你的 API 密钥永远不会离开设备,除非作为直接向提供商 API 发起调用时的 `Authorization` 请求头 - 所有发送给 LLM 的页面内容都被包裹在 `` 标签中,强化了抵御来自页面 DOM 提示注入的能力 - 跨域标签页操作和高风险 DOM 操作需要显式的确认卡片 —— Pie 会在运行前准确向你展示将会发生什么,以及发生在哪个域上 - 无遥测,无分析,无第三方参与 完整策略:[PRIVACY.md](PRIVACY.md)。 ## 开发 ``` pnpm install pnpm dev # Vite dev server with HMR pnpm test # Vitest, single run pnpm test:watch # Vitest, watch mode pnpm build # Production build to dist/ ``` 在开发时,从 `dist/` 加载解压的扩展(在第一次运行 `pnpm dev` 之后),并在每次更改 service-worker 后点击 `chrome://extensions` 中的 **Reload** 按钮。 ### 技术栈 - Chrome Extension Manifest V3 - React 19 + TypeScript 6 - TailwindCSS 4 (Vite plugin, 无配置文件) - Vite 8 + `@crxjs/vite-plugin` 2.4 - pnpm ### 项目布局 | 路径 | 用途 | |---|---| | `src/background/` | Service Worker —— 消息路由,Agent 循环调度,保持活跃 | | `src/sidepanel/` | React 侧边栏 UI (Chat, Settings, 会话抽屉) | | `src/lib/model-router/` | 统一的 LLM 接口;每个提供商的流式处理 + 工具调用 | | `src/lib/agent/` | ReAct 循环,工具注册表,风险分类器,提示词构建器 | | `src/lib/dom-actions/` | 通过 `executeScript` 注入的独立 DOM 操作函数 | | `src/lib/skills/` | 技能框架:类型,存储,内置技能 | | `src/lib/sessions/` | 会话生命周期:持久化,归档,多会话沙箱 | 架构说明和不变量追踪位于 `docs/solutions/` 中。项目的复合工程说明和贡献者指南位于 [`CLAUDE.md`](CLAUDE.md) 中。 ## 路线图 请参见 [`docs/ROADMAP.md`](docs/ROADMAP.md) 了解推迟的里程碑待办事项。亮点: - 通过 Ollama 支持本地模型 - 键盘快捷键 - 页面 URL 匹配的技能自动触发 - 操作录制 → 技能自动生成 ## 版本控制与发布 Pie 遵循 [Semantic Versioning](https://semver.org)。发布说明位于 [CHANGELOG.md](CHANGELOG.md) 中。 ## 许可证 根据 [Apache License, Version 2.0](LICENSE) 授权 — © 2026 Pie Project Contributors。
标签:AI助手, Anthropic Claude, BYOK, CDP, Chrome DevTools Protocol, DeepSeek, DLL 劫持, DOM操作, LLM代理, OpenAI GPT, RPA, Skills工作流, 前端自动化, 办公自动化, 大语言模型, 安全确认机制, 工具调用, 数字取证, 无后端本地应用, 浏览器代理, 浏览器自动化, 熵值分析, 自动化攻击, 自动化脚本, 跨标签页管理, 键盘输入控制