AI 主页
一个替你阅读互联网的新标签页。
AI 主页取代 Chrome 的新标签页,为你呈现一个专属于你的页面。一个 agent 会查看你实际浏览的内容,打开你关注的页面(以你的登录状态),并根据它在那里发现的内容撰写一个全新的主页。它会在后台自行重建,因此每次打开新标签页都是最新的。
示意图。你的主页由你自己的浏览记录构建,因此内容会有所不同。
晨报只是其中一种样式。你可以描述任何样式,下一次构建就会照做:安静的单栏摘要、信息密集的仪表盘、黑底绿字的终端、一本 zine(独立刊物)。
隐私,放在最前面。 为构建你的主页,该扩展会将你的浏览历史摘要(热门域名、访问次数、少量页面标题)以及最多 8 个页面的清理后 HTML 发送到 Anthropic API,使用的是你自己的 API key。这些页面是在你已登录的浏览器中加载的,因此可能包含私密内容。每次构建结束后,agent 会话和所有上传的页面都会被删除。你的 API key 保存在扩展的本地存储中。更多细节见 ARCHITECTURE.md。
安装
你需要 Chrome(或其他 Chromium 浏览器)、Node.js 20+,以及一个 Anthropic API key。
git clone https://github.com/ThariqS/ai-newtab.git
cd ai-newtab
npx pnpm@10.11.1 install
npx pnpm@10.11.1 build
(如果你已安装 pnpm,直接 pnpm install && pnpm build 也可以。)
然后将其加载到 Chrome 中:
- 打开
chrome://extensions。 - 打开右上角的开发者模式。
- 点击加载已解压的扩展程序,选择
apps/extension/.output/chrome-mv3。
如果 Chrome 询问是否保留被修改的新标签页,请选择保留。
你的第一个主页
- 打开一个新标签页,粘贴你的 Anthropic API key。
- 点击 Build today’s homepage(构建今日主页)。
- 观察它工作。进度视图会逐步展示每个环节:准备 agent、读取你的历史记录、在浏览器中打开页面、分析它们,然后撰写你的主页。
首次构建需要几分钟。构建运行期间你可以关闭标签页,因为构建在扩展的后台 worker 中进行,并会出现在你之后打开的任何新标签页中。
个性化定制
在新标签页上点击 ⚙️ Settings(设置)。
Instructions(指令)。 你在此处写下的任何内容都会进入每次构建,并优先于 agent 自身的默认行为。这个输入框同时决定内容和外观:
| 你写 | 你得到 |
|---|---|
| “一份晨报。衬线字体,大报头,头条新闻,一栏简讯。” | 一份大报头版 |
| “一个安静的单栏。不要图片。五篇值得一读的文章,各配一句推荐理由。” | 一份安静的阅读清单 |
| “信息密集的仪表盘:先放 GitHub PR 和 issue,然后是 Hacker News,最后是其他内容。” | 一个工作驾驶舱 |
| “黑底绿字的终端,等宽字体,像 1980 年代的 BBS。” | 正是如此 |
| “跳过体育和政治。始终显示天气和我接下来的三个日程。” | 你的规则,每天生效 |
点击 Save & rebuild(保存并重建)即可立即生效。
Agent 永不读取的站点。 每行输入一个主机名;包含子域名,支持 *.example.com 格式。可编辑的默认列表涵盖常见的网页邮箱、登录和文档站点。Save & rebuild 会保存该列表,并将其应用于历史摘要以及通过 getPageHtml 请求的 URL。重定向到被屏蔽主机的页面会在其内容上传前被丢弃。本地网络地址(localhost、私有 IP、.local 和 .internal 主机)始终被屏蔽。
模型。 选择由哪个 Claude 模型撰写你的页面:
- Claude Sonnet 5.5(默认):质量与成本的最佳平衡。
- Claude Haiku 5.5:最快、最便宜。
- Claude Opus 5.5:最严谨的编辑,也最贵。
新模型从你的下一次构建开始生效。
自动重建。 默认开启。当你的主页超过你所选的时间间隔(6、12、24 或 48 小时)后,扩展会在后台静默重建。它只在你手动构建过一次之后才会启动,且在下个时间间隔之前不会重试失败的构建,因此绝不会陷入循环。
右上角的 ↻ Rebuild(重建)可立即重建。
须知
- 成本。 每次构建都是一个单独的 agent 会话,计入你的 API key。费用取决于模型和它读取的内容量。Haiku 是最便宜的选择,你也可以关闭自动重建,只在需要时构建。
- 它能看到什么。 它会对历史记录中的网站进行排序,每次构建最多打开 8 个。它会跳过搜索引擎、网页邮箱、银行网站和未登录的营销页面。任何它无法打开的页面都会被报告,而不是被隐藏。
- 链接都是真实的。 页面上的每个链接都来自 agent 实际读取过的页面。它被要求绝不编造 URL。
- 中断的构建。 如果 Chrome 在构建过程中关闭,下次打开新标签页时会提供 Resume interrupted build(恢复中断的构建)选项。
- 更新。 拉取新代码后,再次运行
npx pnpm@10.11.1 build,然后在chrome://extensions中点击扩展的刷新图标。
工作原理
getHistory:agent 获取你最常访问域名的排序摘要。getPageHtml:它挑选最多 8 个页面,扩展会在后台窗口中打开这些页面,清理后作为文件挂载到 agent 的沙箱中。grep/read:agent 在沙箱内从这些文件中提取标题、帖子和链接。write:它编写一个 React 组件,由新标签页渲染。
扩展的后台 worker 直接驱动 Claude Managed Agents 会话,中间没有任何服务器。两个自定义工具在扩展中运行,因为它们需要 chrome.history 和 chrome.tabs。其余一切都在 agent 的沙箱中进行,那里禁用了 shell 访问:抓取的页面被视为不可信输入。
详见 ARCHITECTURE.md,了解事件流程、架构布局以及值得注意的坑。
开发
packages/agent-core agent 循环:与宿主无关,不依赖 chrome.* 或 node:*
apps/extension MV3 扩展(WXT + React)
harness 在 Chrome 之外运行 agent-core 的 Bun 脚本,并测试构建好的扩展
pnpm dev # WXT 热重载
pnpm typecheck # 所有包
pnpm test # 单元测试(无 API 调用;需要 Bun)
pnpm extension:test # 将构建好的扩展加载到无头 Chrome 中(无 API 调用)
cp .env.example .env # 填入 ANTHROPIC_API_KEY,然后:
pnpm agent:run # 使用固定历史数据对真实 API 进行完整构建
pnpm agent:verify # 检查输出是否真的能渲染
状态
早期实验阶段。这是一个需要你自己用自己的 key 运行的工具。不要将其直接发布到应用商店:任何能访问浏览器配置文件的人都可以读取存储的 API key。
许可证
MIT