关于 Uindow
Uindow 是本地浏览器自动化应用,通过真实鼠标、键盘输入和原生文件对话框控制已签名的 Chromium/Electron 浏览器。它支持无代码录制和 JavaScript 模块,也可由 AI 助手控制。
主要功能
- 01自动化操作真实 Chromium/Electron 浏览器
- 02无需编写代码即可录制工作流
- 03创建并调试 JavaScript 模块
- 04使用内置自动补全和代码检查
- 05通过 CLI 命令运行应用
适用场景
- 01录制可重复执行的浏览器工作流
- 02让 AI 助手编写自动化模块
- 03编写并调试自定义浏览器自动化
- 04在 CI/CD 流水线中运行浏览器自动化
MCP 相关
本地 MCP 服务通过 stdio 通信,使兼容客户端能够在 Uindow 中列出、创建和运行自动化模块。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
38收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| query | string | 否 | (可选)不区分大小写的搜索查询。省略时,此工具会返回可用的美元符号($)对象属性和方法列表。不允许使用通配符或正则表达式,但一次最多可搜索 10 个词项,以竖线分隔。示例:"navigate|load page|visit url" |
| maxResults | integer | 否 | (可选)结果的最大数量(1 到 10 之间的数字)。增大此值可获取更多结果,但可能会占用更多上下文内存。 |
详细介绍
Uindow - 免受提示词注入的 AI 浏览器
Uindow 驱动的是一款真实、经过签名的 Chromium/Electron 浏览器,通过真正的操作系统级输入进行控制——实际的光标移动、真实的按键输入和原生文件对话框,而非合成的页面事件。它完全运行在你自己的机器和网络上,并且它执行的每一行代码都清晰地展示在这个代码仓库中。
三种自动化方式:
- 无需编写代码 - 在集成编辑器中构建自动化,并录制复杂的工作流。
- 通过任意 AI 助手使用 - Uindow 附带一个本地 MCP 服务,因此 Claude、Cursor、VS Code 或任何 兼容 MCP 的客户端都可以直接列出、创建和运行自动化模块。 请参阅通过 AI 助手控制 Uindow。
- 使用纯 JavaScript 编写自动化 - 使用集成开发环境轻松编写、测试和 调试自动化。内置自动补全、代码修复、JavaScript 解析和代码检查功能。
运行 Uindow
要使用此应用,请在 uindow.com 免费创建账号, 并按照屏幕上的说明操作。
选项 1 - 预构建二进制文件(推荐)
我们直接从 dist
源代码构建适用于 macOS、Windows 和 Linux 的签名二进制文件,并将其托管在 GitHub Releases
页面(当前版本和旧版本)以及 Uindow 安装页面上。
选项 2 - npx
一条命令即可获取 CLI 并启动应用:
npx -y @uindow/cli@latest app:start
其他生命周期命令:
npx @uindow/cli app:status # check whether the app is running
npx @uindow/cli app:stop # stop the app
选项 3 - 从源代码运行
克隆代码仓库并直接从源代码启动应用。
git clone https://github.com/uindow/uindow.git uindow
cd ./uindow/
npm install
npm start
通过 AI 助手控制 Uindow(MCP)
Uindow 提供本地的 Model Context Protocol 服务, 因此任何兼容 MCP 的客户端都可以直接驱动网页自动化 Agent。 该服务通过 stdio 安全通信,并由 AI 助手按需启动。
**要求:**Node.js 18+,且 npx 位于 PATH 中。
npx -y @uindow/cli@latest mcp
快速参考
Uindow 为最常用的 AI 助手提供一键连接器。
前往 Uindow > AI 助手 > 连接
| AI 助手 | 即时连接 | 根键 | 配置位置 |
|---|---|---|---|
| Claude Code(CLI + 桌面版 Code) | ✅ 是 | mcpServers | ~/.claude.json |
| Claude Desktop(Chat / Cowork) | ✅ 是 | mcpServers | claude_desktop_config.json |
| Cursor | ✅ 是 | mcpServers | ~/.cursor/mcp.json |
| VS Code(Copilot) | ✅ 是 | servers | mcp.json(MCP: Open User Configuration) |
| Windsurf | ✅ 是 | mcpServers | ~/.codeium/windsurf/mcp_config.json |
| Zed | ✅ 是 | context_servers | settings.json |
| Codex | ✅ 是 | TOML [mcp_servers.*] | ~/.codex/config.toml |
| Gemini CLI | ✅ 是 | mcpServers | ~/.gemini/settings.json |
| Cline | ✅ 是 | mcpServers | cline_mcp_settings.json |
| Goose | ✅ 是 | YAML extensions | ~/.config/goose/config.yaml |
JetBrains AI Assistant
前往 Settings > Tools > AI Assistant > Model Context Protocol (MCP),点击 Add,然后粘贴 JSON。在同一对话框中,将范围设为 Global,而不是 项目范围,这样该服务就能在你打开的每个项目中使用,然后点击 Apply 启动它。
{
"mcpServers": {
"uindow": {
"command": "npx",
"args": ["-y", "@uindow/cli@latest", "mcp"]
}
}
}
其他 AI 助手
大多数其他 AI 助手都接受放在 mcpServers 下的同一对象。请在主目录(~/.<client>/...)中查找配置文件,
而不是在项目根目录中查找——主目录中的副本是全局配置:
{
"mcpServers": {
"uindow": {
"command": "npx",
"args": ["-y", "@uindow/cli@latest", "mcp"]
}
}
}
将 AI 助手指向命令 npx,并使用参数 -y @uindow/cli@latest mcp。
如果 AI 助手要求明确指定传输字段,请使用 "type": "stdio"。
验证连接
先手动运行启动命令——这是区分“Uindow 出了问题”和“AI 助手无法启动它”最快的方法:
npx -y @uindow/cli@latest mcp
stdio 服务不会输出任何内容,并会保持阻塞。终端静默且卡住,表示它已正确启动;按 Ctrl-C,然后返回 AI 助手。在这里看到的任何堆栈跟踪,才是 AI 助手一直隐藏的真正错误。
然后确认作用范围设置已生效:从不同于配置该服务的目录启动 AI 助手,并检查 Uindow 的工具是否仍列在其中。如果工具消失了,说明条目被写入了项目本地配置。
故障排除
-
服务在一个项目中正常工作,在另一个项目中却不行。
- 这是典型的作用范围问题——该条目是项目本地配置。在 Claude Code 中,从另一个目录运行
claude mcp list会显示为空;使用--scope user重新添加。在 Gemini CLI 中,使用-s user重新添加。在 Cursor 和 VS Code 中,将条目从.cursor/mcp.json或.vscode/mcp.json移到~/.cursor/mcp.json或用户配置文件中的mcp.json。
- 这是典型的作用范围问题——该条目是项目本地配置。在 Claude Code 中,从另一个目录运行
-
GUI 应用中出现
spawn npx ENOENT/ 服务无法启动。- 桌面应用不会继承 shell 的
PATH,这会影响任何使用 nvm、asdf 或 Volta 的人。运行which npx(在 Windows 上运行where npx),并在command中填入绝对路径。
- 桌面应用不会继承 shell 的
-
配置已保存,但没有任何反应。
- 大多数桌面 AI 助手只会在完全重启后重新加载 MCP 配置——请彻底退出应用(macOS:Cmd+Q;Windows:从系统托盘图标退出),而不是只关闭窗口。
-
添加服务后缺少工具。
- 根据上表检查根键:VS Code 使用
servers,Zed 使用context_servers,Codex 的 TOML 使用mcp_servers,其他所有应用使用mcpServers。大多数 AI 助手会静默忽略错误的键。
- 根据上表检查根键:VS Code 使用
-
条目重复或被覆盖。
- 有些 AI 助手会优先采用项目配置,而不是全局配置,因此旧的项目本地
uindow条目会静默覆盖新的全局条目。请删除过期条目,而不是同时编辑两处配置。
- 有些 AI 助手会优先采用项目配置,而不是全局配置,因此旧的项目本地
-
服务已连接,但没有使用工具。
- 在 Claude Code 中,MCP 工具默认会延后到工具搜索时按需加载,因此它们可能不会出现在初始工具列表中。按名称请求 Uindow 工具,或在服务条目中设置
"alwaysLoad": true,以便在会话开始时加载其工具。
- 在 Claude Code 中,MCP 工具默认会延后到工具搜索时按需加载,因此它们可能不会出现在初始工具列表中。按名称请求 Uindow 工具,或在服务条目中设置
-
接下来查看哪里。
claude mcp list和/mcp(Claude Code)、Output 面板 > MCP Logs(Cursor)、Output > MCP(VS Code)、~/Library/Logs/Claude/mcp*.log或%APPDATA%\Claude\logs\mcp*.log(Claude Desktop)。
命令行界面
你可以通过任何 CI/CD 流水线或命令行界面运行 Uindow。
npx -y @uindow/cli@latest --help
或者,你可以使用 node dist/bin.js --help,而不是 npx @uindow/cli --help,以获得更快的响应。
USAGE
$ npx @uindow/cli <command> [options]
AVAILABLE COMMANDS
$ npx @uindow/cli mcp Uindow MCP server (stdio)
$ npx @uindow/cli app_docs Query SDK documentation
$ npx @uindow/cli app_status Get application status
$ npx @uindow/cli app_start Start application
$ npx @uindow/cli app_stop Stop application
$ npx @uindow/cli agent_list List agents
$ npx @uindow/cli agent_create Create agent
$ npx @uindow/cli agent_update Update agent
$ npx @uindow/cli agent_delete Delete agent
$ npx @uindow/cli agent_status Get agent status
$ npx @uindow/cli agent_start Start agent
$ npx @uindow/cli agent_stop Stop agent
$ npx @uindow/cli agent_screenshot Grab agent screenshot
$ npx @uindow/cli agent_viewport Scan agent viewport
$ npx @uindow/cli agent_execute Execute code in an agent
$ npx @uindow/cli agent_logs Get agent logs
$ npx @uindow/cli agent_settings_get Get settings
$ npx @uindow/cli agent_settings_set Update settings
$ npx @uindow/cli agent_results_get Get latest results
$ npx @uindow/cli src_sample Module: get sample (yaml)
$ npx @uindow/cli src_export Module: get source (yaml)
$ npx @uindow/cli src_code_get Module: get state or function code
$ npx @uindow/cli src_code_set Module: set state or function code
$ npx @uindow/cli src_keys_list Module: list item keys
$ npx @uindow/cli src_keys_reorder Module: reorder item keys
$ npx @uindow/cli src_keys_update Module: update item key
$ npx @uindow/cli src_keys_delete Module: delete item
$ npx @uindow/cli src_input_get Module: get input
$ npx @uindow/cli src_input_set_bool Module: set boolean input
$ npx @uindow/cli src_input_set_int Module: set integer input
$ npx @uindow/cli src_input_set_string Module: set string input
$ npx @uindow/cli src_input_set_files Module: set files input
$ npx @uindow/cli src_input_set_table Module: set table input
$ npx @uindow/cli src_output_get Module: get output
$ npx @uindow/cli src_output_set_bool Module: set boolean output
$ npx @uindow/cli src_output_set_int Module: set integer output
$ npx @uindow/cli src_output_set_string Module: set string output
$ npx @uindow/cli src_output_set_files Module: set files output
$ npx @uindow/cli src_output_set_table Module: set table output
OPTIONS
--help Help menu for a specific command
--version Package version
创建模块
构建模块有三种方式,请按以下顺序尝试:
-
录制——零学习成本。 打开集成录制器,像平时一样使用浏览器:指向、点击、滚动、上传和下载文件。录制器会立即将你的操作转换为 JavaScript——确定性执行,不使用任何 AI。所见即所得。
-
让 AI 助手通过 MCP 编写。 想要实现更复杂的功能?通过 MCP 将控制权交给本地 AI 助手,让它代你编写模块。描述预期结果,让它为你生成代码。你始终可以掌控自己的自动化,也可以使用内置 IDE 调试代码。
-
用纯 JavaScript 自行编写。 如果录制器和 AI 驱动的方式都无法满足需求,就直接动手:
- 访问 Uindow SDK 参考
- 下载示例模块并将其导入 Uindow
- 试用美元符号方法——集成编辑器提供自动补全、代码提示、格式化和代码检查
对大多数人来说,学习成本为零——你只需使用录制器。如果你决定深入使用,学习曲线依然平缓:需要时再使用 SDK,不必提前接触。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。