返回首页
一周热榜
嗨,HN,Anders 和 Tom 在这里。两个月前,我们发布了一篇关于我们的 AI 测试自动化框架的文章,获得了相当不错的关注(<a href="https://news.ycombinator.com/item?id=43796003">https://news.ycombinator.com/item?id=43796003</a>)。<p>我们收到了社区的很多优秀反馈,其中最积极的反应是关于我们在浏览器代理中使用的以视觉为先的设计理念。然而,许多人希望能够在测试领域之外使用底层代理。因此,今天我们发布了功能齐全的 AI 浏览器自动化框架。<p>您可以使用它来自动化网页上的任务,在没有 API 的情况下进行应用之间的集成,提取数据,测试您的网页应用,或者作为您自己浏览器代理的构建模块。<p>传统上,浏览器自动化只能通过 DOM 完成,尽管这并不是人类使用浏览器的方式。大多数浏览器代理仍然停留在这种范式中。通过以视觉为先的方法,我们避免依赖不稳定的 DOM 导航,并在各种网站中处理复杂交互时表现更好,例如:<p>- 拖放交互<p>- 数据可视化、图表和表格<p>- 带有嵌套 iframe 的遗留应用<p>- 以 Canvas 和 WebGL 为重的网站(如设计工具或照片编辑)<p>- 通过浏览器流式传输的远程桌面<p>为了准确与浏览器进行交互,我们使用视觉基础模型根据像素坐标执行精确操作。Magnitude 使用的模型必须足够智能以规划操作,同时也能够执行这些操作。并不是很多模型既聪明又具备视觉基础。我们强烈推荐 Claude Sonnet 4 以获得最佳性能,但如果您更喜欢开源,我们也支持 Qwen-2.5-VL 72B。<p>大多数浏览器代理从未进入生产环境。这是因为(1)上述提到的不稳定的 DOM 导航,以及(2)大多数浏览器代理提供的控制能力不足。主流范式是您给代理一个高层次的任务 + 工具,然后希望能顺利完成。这对于需要可靠和具体的生产自动化来说,很快就会崩溃。使用 Magnitude,您可以通过我们的 `act()` 和 `extract()` 语法对代理进行细粒度控制,并根据需要与您自己的代码混合。您还可以在操作和代理级别完全控制提示。<p>```ts<p>// Magnitude 可以处理高层次任务<p>await agent.act('创建一个问题', {<p><pre><code> // 可选地传递代理将在适当的地方使用的数据
data: {
title: '使用 Magnitude',
description: '运行 "npx create-magnitude-app" 并按照说明进行操作',
},
</code></pre>
});<p>// 它也可以处理低层次的操作<p>await agent.act('将 "使用 Magnitude" 拖动到进行中的列顶部');<p>// 根据与提供的 zod 模式匹配的 DOM 内容智能提取数据<p>const tasks = await agent.extract(<p><pre><code> '列出进行中的问题',
z.array(z.object({
title: z.string(),
description: z.string(),
// 代理可以提取现有数据或新的见解
difficulty: z.number().describe('将难度评分为 1-5')
})),
</code></pre>
);<p>```<p>我们有一个设置脚本,可以轻松开始使用示例,只需运行 "npx create-magnitude-app"。我们很想听听您的想法!<p>仓库: <a href="https://github.com/magnitudedev/magnitude">https://github.com/magnitudedev/magnitude</a>
我制作了一个名为 Sink 的工具。它是一个简单的小工具,可以在两个设备之间持续同步文件夹。无需云存储、电子邮件、闪存驱动器,也没有其他繁琐的步骤。
它只使用您的本地 Wi-Fi。在您的设备上运行它,让它们互相信任,这样就可以了。如果您同时编辑同一个文件,它会处理冲突并保存两个副本。
对于那些只想在 A 点和 B 点之间传输文件而不想麻烦的人来说,这个工具非常实用。希望它能让您的生活少一些烦恼。
GitHub: [https://github.com/sirbread/sink](https://github.com/sirbread/sink)
二进制文件: [https://github.com/sirbread/sink/releases/tag/v0.1](https://github.com/sirbread/sink/releases/tag/v0.1)