Opensteer
让 AI 智能体通过简短 Python 命令操控本地或云端浏览器。
- Star 数
- ★ 203
- 最近更新
- 2 个月前
- License
- MIT
- 主语言
- Python
- FA 评分
- 49/100 · 缺口较多
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台
- 费用
- 免费,无需付费服务
- 上手难度
- 低 · 几分钟可跑通
- 开始前需要
- 典型场景
- 需要让 AI 智能体在 Chrome 或 Edge 中导航、点击、输入并读取页面状态的自动化开发者。
- 不适合
- 不能允许智能体执行本地 Python 或 JavaScript 的团队
- 希望无 API 密钥使用 Opensteer Cloud 的用户
- 要求读取操作自动创建云端浏览器的工作流
这个 Agent 能做什么,适合哪些场景?
Opensteer 是一个浏览器自动化框架,为 AI 智能体提供精简的 Python 命令接口以及可直接导入的辅助函数。它负责 CDP 通信、本地及云端浏览器连接、命名会话、标签页、截图、JavaScript 执行、点击、输入和滚动等底层能力。用户可通过 `opensteer -c` 执行短脚本,也可从 `opensteer.helpers` 导入函数编写可复用代码。项目目录则作为专用 harness,容纳 `AGENTS.md`、选择器、数据、API 客户端和自定义 Python 函数,使通用浏览器能力适配具体业务流程。它可以连接本地 Chrome 或 Edge,也能在配置 `OPENSTEER_API_KEY` 后连接 Opensteer Cloud 浏览器;浏览器传输位置与会话创建行为均可显式控制。
典型流程从 opensteer -c 执行 Python 片段开始:通过 open_browser()、use_browser() 或 list_browsers() 创建、选择或查看浏览器,随后用 new_tab() 和 wait_for_load() 打开并等待页面。智能体可调用 page_info() 检查页面,使用 goto_url()、click_at_xy()、type_text()、滚动及标签页操作与页面交互,也可通过 js() 执行 JavaScript、调用原始 CDP 方法或捕获截图。多个浏览器同时运行时,代码保留 open_browser() 返回的句柄,并通过可读标签区分会话。对于专用工作流,当前目录中的 tools.py、selectors.py、数据文件和 Markdown 指令提供领域逻辑,命令可直接导入这些本地模块并输出函数返回值、页面信息或截图。执行边界可选本地应用中的 auto、inapp、local 或 cloud;云端执行仅支持 auto 和 cloud。
- 需要让 AI 智能体在 Chrome 或 Edge 中导航、点击、输入并读取页面状态的自动化开发者。
- 为客服系统构建专用 harness 的团队,可将客户页面操作封装在
tools.py中。 - 需要通过 JavaScript、截图和原始 CDP 方法检查网页行为的 QA 或浏览器测试团队。
- 希望用命名会话分别保持研究、工作或不同网站浏览器上下文的多任务智能体开发者。
- 需要让多个销售、数据录入或研究工作流共享浏览器底层能力,同时各自维护选择器和数据的团队。
如何安装或部署这个 Agent?
在 shell 中运行官方安装脚本:
curl -fsSL https://opensteer.com/install.sh | sh安装后执行诊断,并尝试读取当前页面:
opensteer --doctor
opensteer -c "print(page_info())"如果本地浏览器尚未允许远程调试,运行设置向导;它会引导 Chrome 或 Edge 为当前配置文件启用远程调试:
opensteer --setup只有使用 Opensteer Cloud 浏览器时才需要配置 OPENSTEER_API_KEY;来源没有提供该变量的具体赋值命令。
如何使用这个 Agent?
打开网页、等待加载并打印页面信息:
opensteer -c "new_tab('https://example.com'); wait_for_load(); print(page_info())"在可复用 Python 代码中导入浏览器辅助函数:
from opensteer.helpers import goto_url, js, click_at_xy, type_text, wait_for_load同时使用多个浏览器时,保存返回的句柄:
opensteer -c "linkedin = open_browser(label='linkedin', profile='fresh'); linkedin.new_tab('https://linkedin.com')"配置 OPENSTEER_API_KEY 后,可以创建或连接云端浏览器:
opensteer -c "open_browser(label='research', profile='fresh'); new_tab('https://example.com')"opensteer -c "browser = open_browser(label='work', profileId='bp_...'); print(browser.page_info())"若只想查看或选择现有浏览器而不新建会话:
opensteer -c "print(list_browsers())"
opensteer -c "research = use_browser('research'); research.new_tab('https://example.com')"本地执行的智能体也可以明确请求云端浏览器:
opensteer -c "open_browser(label='research', profile='fresh', location='cloud')"专用 harness 可在工作目录中定义函数并由 CLI 直接导入:
# tools.py
from opensteer.helpers import goto_url, js, type_text, wait_for_load
def open_customer(customer_id):
goto_url(f"https://support.example.com/customers/{customer_id}")
wait_for_load()
return js("document.title")cd support-harness
opensteer -c "from tools import open_customer; print(open_customer('cus_123'))"这个 Agent 有哪些优点和局限?
- 同一套辅助函数覆盖 CDP、本地与云端连接、会话、截图、JavaScript 和常见页面交互,减少自行搭建浏览器桥接层的工作。
- 既提供适合短任务的
opensteer -c,也允许从opensteer.helpers导入函数,便于从实验脚本过渡到可复用代码。 - 浏览器层与工作流层明确分离:通用传输和交互由 Opensteer 负责,站点选择器、数据及业务函数保留在项目目录。
- 命名浏览器与显式句柄支持同时管理多个浏览器,会话复用与新建行为也可通过
mode控制。
- 本地连接依赖 Chrome 或 Edge 的远程调试配置;无法直接连接时需要额外运行
opensteer --setup。 - 云端浏览器需要
OPENSTEER_API_KEY,且云端执行不接受设备专用位置,只支持auto和cloud。 - 专用自动化不会开箱即用;采用者仍需自行维护
AGENTS.md、选择器、数据文件和业务函数。 - 该接口允许执行 Python、页面 JavaScript 和原始 CDP 调用,部署方必须自行管理这些高权限能力的执行边界。
- 来源未说明支持哪些 AI 模型平台,也未提供 ChatGPT、Codex、Claude 或其 API 的原生适配证据。
这个 Agent 与同类方案有什么区别?
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| Opensteer 当前 | 49 · 缺口较多 | 命令行工具免费 | ★ 203 | 2 个月前 | Python | — |
| Obscura 无头浏览器 | 75 · 表现良好 | 命令行工具免费 | ★ 28k | 2 天前 | Rust | Claude.ai |
| Open Browser | 47 · 缺口较多 | 命令行工具免费 + 模型费 | ★ 9.6k | 6 个月前 | TypeScript | ChatGPT · Claude.ai · OpenAI API · Claude API |
| Browser4 智能浏览器自动化 | 47 · 缺口较多 | 命令行工具免费 + 模型费 | ★ 1.1k | 2 天前 | Kotlin | OpenAI API |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
传输位置和会话创建在部分场景中需要显式选择,严格云环境中的只读助手也不会隐式配置浏览器,因此最小权限获得少量支持;但框架允许任意 Python、JavaScript、原始 CDP、点击和输入,未见权限细分、域名限制或执行前确认机制。README 区分本地与云端浏览器并说明 API 密钥配置,但没有完整说明截图、页面内容、凭据及遥测的数据流、存储和保留方式,也没有密钥保护或脱敏指南。运行时依赖固定到具体版本,发布工作流使用受限权限和 OIDC,但未展示漏洞扫描、依赖审计或更新政策。外部写操作能力被明确列出,却没有副作用分级、确认门或回滚方案。MIT 文件提供了项目级归属,但发布者身份仍无法由材料核验。
README、包元数据、命令入口及版本信息总体一致,安装、诊断和浏览器控制叙述能够形成连贯产品;但材料未包含实现代码或测试结果,故不能给满分。依赖名称、固定版本、Python 版本要求和构建后端均已声明,普通安装具备可解析基础;然而 curl 管道安装器的内容及服务可用性无法从材料验证。`--doctor`、`--setup` 和不支持位置会被拒绝提供了基础故障路径,但没有错误目录、恢复步骤或具体失败消息示例。
材料明确面向需要浏览器控制、研究、销售、QA、客服和数据录入工作流的代理,并展示项目专用 harness 的扩展方式;场景覆盖充分但不是完整操作指南。浏览器层与工作流层、本地与云端传输以及支持的位置被清楚区分,不过任意 Python、JavaScript 和 CDP 的安全边界未进一步约束。操作由显式 CLI/Python 调用触发,`reuse` 为默认模式且 `new` 表示有意新建会话;但没有更细的动作策略或歧义处理。Python 3.11、本地 Chrome/Edge、云密钥和设置命令均有说明,仍缺少操作系统兼容矩阵、无头环境要求及网络前提。
README 按安装、能力、专用 harness、职责划分和验证组织,信息结构清晰,但缺少完整 API 参考和故障排查。安装仅给出远程脚本管道命令,没有校验、卸载、虚拟环境或平台先决条件,因此较薄。包名、CLI、入口点和示例 API 一致,版本也明确,但没有兼容性或弃用承诺。示例覆盖常见浏览器及扩展流程,却没有 FAQ。能力边界有所记录,但已知限制、安全限制和云端约束并未系统汇总。MIT 文本完整,因而许可证满分。项目有语义化版本字段和校验发布标签的流程,但没有变更日志或迁移说明。版权主体和发布流程可见,维护者、支持渠道、责任人及更新承诺不明。
短 Python 命令、可导入助手、命名浏览器和 harness 模式能产出可直接用于自动化的结果,验证命令也提升可用性;但缺少结构化输出约定、端到端成果示例和错误恢复说明。相较自行搭建 CDP 桥接层,该项目整合本地/云端附加、会话、截图和交互助手,显示出实际增量价值;不过材料没有比较证据或实现细节。命令表面较小且复用性良好,但云端费用、资源消耗、延迟、安装风险和维护成本均未披露,因此成本收益只能获得有限分数。
主要能力声明由命令示例支持,但未提供实现文件、API 文档或测试材料来逐项追踪,故可追溯性较弱。README 中的包名、Python 要求和 CLI 与 pyproject 一致,版本发布由工作流交叉支持;云功能和浏览器行为则没有独立文件佐证。文本通常把产品主张直接陈述为事实,没有标示哪些是设计目标、限制条件或已验证事实,因此事实与推断分离不足。
- 源码中未见:执行前用户确认开启或自行加上执行前确认;先在沙箱或测试环境跑通,确认行为后再接入真实数据。
- 源码中未见:回滚或恢复路径运行前先备份,或在 git 分支、快照上操作,确保改动可以撤销。
- 安装方式会把网络获取的脚本直接交给 shell;使用前应固定并审查安装脚本内容或改用可校验的软件包。
- 该框架能够执行任意 Python、页面 JavaScript、原始 CDP、点击和输入;应在隔离配置文件及低权限环境中运行,并对有副作用的动作增加人工确认。
- 不要在缺少额外数据处理说明时假定页面内容、截图、浏览器配置文件或 `OPENSTEER_API_KEY` 的存储、传输和保留方式安全。
- 未提供回滚机制、系统化已知限制、变更日志、漏洞扫描证据或完整故障恢复指南。
常见问题
必须使用 Opensteer Cloud 吗?
OPENSTEER_API_KEY 后可用的另一种路径。读取页面信息会自动创建浏览器吗?
open_browser(),或用 use_browser() 选择现有会话。mode='reuse' 和 mode='new' 有什么区别?
reuse 是安全默认值,用于复用逻辑会话;new 会有意创建另一个逻辑会话。可读标签用于识别浏览器,云端会话 ID 和运行范围由平台管理。