> 关键规则 — 违反将导致工作流中断:
>
> 1. 永远不要在后台运行 midscene 命令。 每个命令必须同步运行,以便你可以读取其输出(尤其是截图),然后再决定下一步操作。后台执行会破坏截图-分析-操作的循环。
> 2. 一次只运行一个 midscene 命令。 等待上一个命令完成,读取截图,然后决定下一步操作。永远不要将多个命令链接在一起。
> 3. 为每个命令留出足够的完成时间。 Midscene 命令涉及 AI 推理和屏幕交互,可能比普通 shell 命令耗时更长。典型命令需要约 1 分钟;复杂的 act 命令可能需要更长时间。
> 4. 完成前始终报告任务结果。 完成自动化任务后,你必须主动向用户总结结果 — 包括找到的关键数据、完成的操作、拍摄的截图以及任何相关发现。永远不要在最后一个自动化步骤后默默结束;用户期望在单次交互中获得完整响应。
> 5. 只最小化窗口,除非明确要求否则不要关闭。 当你需要隐藏或移开窗口时,最小化它而不是关闭。除非用户明确要求,否则不要关闭任何应用或窗口。
使用 npx @midscene/computer@1 控制桌面(macOS、Windows、Linux)。每个 CLI 命令直接映射到一个 MCP 工具 — 你(AI 代理)作为大脑,根据截图决定采取哪些操作。
act 能做什么在桌面上的单次 act 调用中,Midscene 可以移动鼠标、点击、双击、右键点击、拖拽项目、输入或清除文本、滚动、按下单个键或键盘快捷键,并在所选显示器上可见的内容上完成多步交互。
Midscene 需要具有强大视觉定位能力的模型。必须配置以下环境变量 — 可以作为系统环境变量或在当前工作目录的 .env 文件中配置(Midscene 会自动加载 .env):
MIDSCENE_MODEL_API_KEY="your-api-key"
MIDSCENE_MODEL_NAME="model-name"
MIDSCENE_MODEL_BASE_URL="https://..."
MIDSCENE_MODEL_FAMILY="family-identifier"
示例:Gemini (Gemini-3-Flash)
MIDSCENE_MODEL_API_KEY="your-google-api-key"
MIDSCENE_MODEL_NAME="gemini-3-flash"
MIDSCENE_MODEL_BASE_URL="https://generativelanguage.googleapis.com/v1beta/openai/"
MIDSCENE_MODEL_FAMILY="gemini"
示例:通义千问 3.5
MIDSCENE_MODEL_API_KEY="your-aliyun-api-key"
MIDSCENE_MODEL_NAME="qwen3.5-plus"
MIDSCENE_MODEL_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
MIDSCENE_MODEL_FAMILY="qwen3.5"
MIDSCENE_MODEL_REASONING_ENABLED="false"
# 如果使用 OpenRouter,设置:
# MIDSCENE_MODEL_API_KEY="your-openrouter-api-key"
# MIDSCENE_MODEL_NAME="qwen/qwen3.5-plus"
# MIDSCENE_MODEL_BASE_URL="https://openrouter.ai/api/v1"
示例:豆包 Seed 2.0 Lite
MIDSCENE_MODEL_API_KEY="your-doubao-api-key"
MIDSCENE_MODEL_NAME="doubao-seed-2-0-lite"
MIDSCENE_MODEL_BASE_URL="https://ark.cn-beijing.volces.com/api/v3"
MIDSCENE_MODEL_FAMILY="doubao-seed"
常用模型:豆包 Seed 2.0 Lite、通义千问 3.5、智谱 GLM-4.6V、Gemini-3-Pro、Gemini-3-Flash。
如果模型未配置,请要求用户设置。参见模型配置了解支持的提供商。
npx @midscene/computer@1 connect
npx @midscene/computer@1 connect --displayId <id>
npx @midscene/computer@1 list_displays
npx @midscene/computer@1 take_screenshot
截屏后,读取保存的图像文件以了解当前屏幕状态,然后再决定下一步操作。
使用 act 与电脑交互并获取结果。它在内部自主处理所有 UI 交互 — 点击、输入、滚动、等待和导航 — 因此你应该将复杂的高层任务作为整体给出,而不是分解成小步骤。用自然语言描述你想做什么以及期望的效果:
# 具体指令
npx @midscene/computer@1 act --prompt "在搜索框中输入 hello world 并按回车"
npx @midscene/computer@1 act --prompt "将文件图标拖到回收站"
# 或目标导向指令
npx @midscene/computer@1 act --prompt "使用 Chrome 浏览器搜索上海天气,告诉我结果"
当用户提供截图、图标、徽标或参考图像并希望精确视觉匹配时,优先使用 tap --locate 而不是通用的 act --prompt。将 --locate 作为 JSON 传递。prompt 描述目标,images 提供命名参考图像,当图像 URL 可能无法被模型直接访问时,convertHttpImage2Base64: true 很有用。
npx @midscene/computer@1 tap --locate '{
"prompt": "点击包含图像的区域",
"images": [
{
"name": "目标图像",
"url": "https://github.githubassets.com/assets/GitHub-Mark-ea2971cee799.png"
}
],
"convertHttpImage2Base64": true
}'
相同的 locate JSON 格式也适用于其他接受 locate 参数的命令。
npx @midscene/computer@1 disconnect
由于 CLI 命令在调用之间是无状态的,请遵循以下模式:
connect 命令的输出。如果 connect 已执行健康检查(截图和鼠标移动测试),则无需额外检查。如果 connect 未执行健康检查,手动执行:截屏并验证成功,然后将鼠标移动到随机位置(act --prompt "将鼠标移动到随机位置")并验证成功。如果任一步骤失败,停止并排除故障后再继续。只有在两项检查都无错误通过后,才能继续下一步。act 执行所需操作或目标导向指令。connect 命令的输出。如果 connect 已执行健康检查(截图和鼠标移动测试),则无需额外检查。如果没有,手动执行:截屏并移动鼠标到随机位置。两者都必须成功(无错误)才能继续任何进一步操作。这可以尽早发现环境问题。open -a ,Windows 上的 start )。然后截屏确认应用确实在前台。只有在视觉确认后,才能使用此技能进行 UI 自动化。避免通过 midscene 使用 Spotlight、开始菜单搜索或其他基于启动器的方法 — 它们涉及临时 UI、多个 AI 推理步骤,且明显更慢。"Safari 窗口左上角的黄色最小化按钮" 而不是 "按钮"。"菜单栏右上角的图标"、"左侧边栏的第三项")。list_displays 检查可用显示器。你有两个选择:要么将应用窗口移动到当前显示器,要么使用 connect --displayId 切换到应用所在的显示器。act 命令:在同一应用中执行连续操作时,将它们合并到一个 act 提示中,而不是分成多个命令。例如,"搜索 X,点击第一个结果,向下滚动查看更多详情"应该是单个 act 调用,而不是三个。这减少了往返,避免不必要的截图-分析循环,且明显更快。PATH(macOS):在 macOS 上,如果 PATH 不完整,某些命令(例如 system_profiler)可能找不到。在运行任何 midscene 命令之前,确保 PATH 包含标准系统目录:```bash
export PATH="/usr/sbin:/usr/bin:/bin:/sbin:$PATH"
```
这可以防止因缺少系统工具而导致的截图失败。
tap --locate:如果用户分享截图、图标或徽标并希望精确定位该视觉目标,使用 tap --locate 和多模态 locate JSON 对象,如 { "prompt": "...", "images": [...] },而不是仅依赖 act --prompt。示例 — 上下文菜单交互:
npx @midscene/computer@1 act --prompt "右键点击文件图标并从上下文菜单中选择删除"
npx @midscene/computer@1 take_screenshot
示例 — 下拉菜单:
npx @midscene/computer@1 act --prompt "打开文件菜单并点击新建窗口"
npx @midscene/computer@1 take_screenshot
你的终端应用没有无障碍访问权限:
xcode-select --install
检查 .env 文件包含 MIDSCENE_MODEL_API_KEY=。
system_profiler 未找到如果 take_screenshot 失败并显示类似 system_profiler: command not found 的错误,PATH 环境变量可能不完整。通过运行以下命令修复:
export PATH="/usr/sbin:/usr/bin:/bin:/sbin:$PATH"
然后重试截图命令。
如果 take_screenshot 返回完全黑色的图像,Mac 可能已锁定(例如屏幕在登录/锁定窗口)。这是系统级限制 — macOS 禁止在会话锁定时捕获屏幕内容,因此应用层没有解决方法。
推荐修复: 使用屏幕保护程序而不是锁定屏幕。屏幕保护程序保持用户会话活动且未锁定,允许截图正常捕获。
@midscene/* 依赖版本过旧npm ls @midscene/computer @midscene/core @midscene/shared(或 pnpm why @midscene/computer)。npm view @midscene/computer version、npm view @midscene/core version、npm view @midscene/shared version。npm i @midscene/computer@latest @midscene/core@latest @midscene/shared@latest。共 1 个版本