上行链路:AI浏览器桥🛰️
上行链路 是一个强大的工具,可以将您的本地AI代理连接到您的web浏览器。它充当桥梁,允许AI模型(通过模型上下文协议-MCP)像人类用户一样读取、控制开放网络并与之交互。
🚀 什么是上行链路?
Uplink允许您的AI编码助手或代理:
- 看 你所看到的(阅读页面内容,截图)。
- 互动 使用网站(点击、键入、提交表单)。
- 调试 web应用程序(读取控制台日志、本地存储)。
- 记录 您的会话(通过视频录制
tabCapture). - 自动化 跨多个选项卡和框架的复杂工作流。
- 规模 支持多代理(在不同端口上运行多个独立的浏览器会话)。
它由两部分组成:
- Python MCP服务器:在本地运行,将“工具”暴露给您的AI。
- 浏览器扩展:通过WebSocket连接到服务器,以在Chrome/Edge/BBrave中执行命令。
✨ 主要特点
- 完整的DOM控制:
click,type,execute_script,get_html. - 多框架支撑:自动查找内部元素 ``s
- 视觉反馈:在单击或键入之前突出显示元素,以便您看到AI正在做什么。
- 安全第一:
- 紧急按钮:立即阻止仪表板上的所有AI命令。 - 用户阻止列表:防止AI访问特定域(例如。, *bank.com). - 速率限制:可配置延迟以防止机器人检测。 - 安全日志记录:敏感输入(如密码)会自动从日志中删除。 - 硬编码安全:阻止访问 chrome:// 和 file:// (除非启用)。
- 交叉平台的:适用于Windows、macOS和Linux。
🛠️ 安装
1.下载代码
目前,在发布稳定版本之前,您需要下载源代码:
- 克隆存储库:
git clone https://github.com/hackafterdark/uplink.git - 或:下载 最新ZIP 并将其提取出来。
将此代码放在您选择的目录中,但请记住将其放在哪里,因为您需要配置您的AI代理以指向正确的路径。
2.设置MCP服务器
你只需要 Python 3.10+ 安装。提供的启动脚本在第一次运行时会自动处理其他所有事情(创建虚拟环境和安装依赖关系)。
\[!注意\] 你通常 不需要手动运行这些脚本.MCP兼容的应用程序(如Antigravity、Claude Desktop、Cursor或Roo Code)将根据您的配置为您执行它们。
3.安装扩展件
Chrome和Firefox的预构建版本可在 dist/ 目录,以处理其不同的清单要求(服务工作者与事件页面)。
Chrome/Edge/Brave:
- 导航至
chrome://extensions. - 启用 开发者模式.
- 点击 装载未包装.
- 选择
dist/chrome文件夹。
火狐/自由狼:
- 导航至
about:debugging#/runtime/this-firefox. - 点击 加载临时加载项。。。.
- 选择其中的任何文件
dist/firefox文件夹。
4.连接你的AI
将MCP服务器添加到您的AI代理配置中(例如,Claude Desktop配置、Cursor或Roo代码)。
重要:代理使用 command 字段以自动启动服务器并安装依赖项。您不需要自己运行脚本。
基本配置(默认端口8765): *(Windows)*
{
"mcpServers": {
"uplink": {
"command": "C:/path/to/uplink/start_server.bat",
"args": []
}
}
}*(macOS/Linux)*
{
"mcpServers": {
"uplink": {
"command": "/path/to/uplink/start_server.sh",
"args": []
}
}
}高级配置(自定义端口): 如果需要运行多个实例或避免端口冲突,请传递 --port 争论。
{
"mcpServers": {
"uplink-secondary": {
"command": "C:/path/to/uplink/start_server.bat",
"args": ["--port", "8766"]
}
}
}*注意:如果更改服务器端口,请记住更新 服务器端口 在浏览器扩展仪表板中设置为匹配。*
🛡️ 安全
Uplink为您的浏览器提供了人工智能控制,因此安全性至关重要。
- 仅限本地:服务器绑定到
127.0.0.1,阻止网络访问。 - 令牌认证:需要特定的令牌才能连接到WebSocket。
- 隐私:密码从日志中编辑。
- 控制:您可以切换“允许本地文件”并直接从扩展仪表板管理被阻止的域。
🎮 仪表盘
单击扩展图标打开 上行链路控制 仪表板。
- 活动日志:实时查看AI正在做什么。
- 紧急按钮:立即停止AI。
- 安全设置:配置速率限制和阻止列表。
- 媒体捕获:屏幕截图和录像。
- 工具文档:参见 docs/TOOLS.md 查看可用工具的完整列表。
👥 多代理和高级配置
自定义端口(运行多个代理)
要运行多个独立代理,您可以在MCP配置中指定不同的端口:
"uplink-researcher": {
"command": "path/to/start_server.sh",
"args": ["--port", "8766"]
}然后,在 扩展仪表板 在您希望该代理控制的浏览器实例中,输入 8766 在 服务器端口 现场。
自定义下载目录
您可以通过添加以下内容将所有媒体(屏幕截图、录制)重定向到特定文件夹 --downloads 配置参数:
"args": ["--downloads", "/your/custom/path"]*注意:该工具返回可点击 file:/// 链接便于访问。*
🌐 多浏览器支持
Uplink支持同时在多个浏览器(如Chrome、Edge、Firefox)中安装扩展程序。您可以通过两种方式使用它:
1.顺序(一个代理,多个浏览器)
如果你只有 一 AI代理正在运行(端口8765上有一个MCP服务器),您可以动态切换它控制的浏览器。
- 最后一个获胜:如果您打开新浏览器或重新加载扩展程序,它将自动声明连接,断开上一个连接。
- 排他性控制:AI默认控制最后一个“活动”浏览器。您可以手动单击 身份徽章 在扩展仪表板中断开/重新连接特定浏览器。
2.并行(多个代理,多个浏览器)
您可以同时运行多个AI代理,每个代理控制一个不同的浏览器(例如,一个代理用于Chrome的研究,另一个用于Firefox的测试)。
- 在端口上启动服务器A
8765->连接Chrome(默认端口)。 - 在端口上启动服务器B
8766->连接Firefox(在仪表板中更新端口->8766)。
这允许同时独立控制多个浏览器会话。
👨💻 开发与建筑
这 extension/ 目录包含源代码。然而,Chrome和Firefox需要不同的 manifest.json 配置。
为了避免维护两个单独的代码库,我们使用构建脚本来生成分发文件夹。
如果对源代码进行更改:
- 编辑文件
extension/. - 运行构建脚本:
python build_package.py- 这将更新:
- dist/chrome (服务人员清单) - dist/firefox (事件页面清单)
- 在浏览器中重新加载扩展程序以查看更改。
🔍 故障排除
连接有问题吗?请按照以下步骤操作:
1.检查服务器日志
Python服务器将所有内容记录到旁边的文件中 server.py:
- 文件:
server.log(与服务器位于同一目录中) - 寻找什么:检查
🌍 Browser Connected!或❌ Browser Disconnected。如果您看到与以下内容相关的错误AttributeError或websockets,尝试更新您的依赖关系(pip install -r requirements.txt).
2.检查浏览器日志
该扩展有自己的日志,可以揭示通信或CSP问题:
- 打开Chrome扩展程序(
chrome://extensions)或Firefox调试(about:debugging). - 点击 服务工作者 (Chrome)或 检查 (Firefox)用于上行链路扩展。
- 在控制台中查找“已连接到MCP服务器”或红色错误消息。
3.检查端口冲突
一次只能有一台服务器监听一个端口。如果服务器无法启动,请检查另一个实例是否已在运行:
- 视窗:
netstat -ano | findstr :8765- Linux/macOS:
lsof -i :8765如果发现一个进程。, --port 8767).
4.常见修复方法
- “浏览器未连接”:确保扩展仪表板显示绿色的“已连接”状态。如果它是红色的,请检查仪表板中的端口是否与服务器的端口匹配
--port. - “安全令牌处于活动状态”:如果手动编辑
AUTH_TOKEN在server.py,确保扩展也已更新或重新加载。
______________________________________________________________________
📜 许可证
MIT许可证-请参阅 许可证 了解详情。
