放弃云端 Computer Use,我用 Python 手搓了一个带“物理防呆”的本地 GUI Agent 底座

在体验了市面上的云端 Computer Use 后,我总觉得差点意思:延迟高(每步 3-5 秒)、按 Token 极度烧钱、大模型经常产生坐标幻觉瞎点,而且极度不安全。

为了打造一个真正能"安全接管电脑"的 AI,我爆肝了几个日夜,从零手搓了一个带本地视觉、多线程并发、军工级防呆的底层执行引擎:moray-ghost。

👇 先看一个震撼的实操:它用真实的物理鼠标,在 Windows 画图里一笔一划复刻出了《DeepSeek 鲸鱼娘》


💥 一、 我们如何打穿现有 Agent 框架的痛点?

现有的 GUI 框架大多停留在"截图 -> 发给大模型 -> 返回坐标 -> PyAutoGUI 点击"的原始阶段,在真实生产中完全不可用。moray-ghost 的解法是:

  1. 彻底消灭坐标幻觉(GUI RAG 检索增强)

    • 不再让大模型去干算坐标这种苦力活。底层先用 OCR + OpenCV 把屏幕上的控件全抓出来,生成带 ID 的 JSON 目录。
    • 模型只需要回答"点击 ID: 3",底层再去映射真实坐标,精准度直接拉满。
  2. 快慢双系统(System 1 / System 2)

    • 遇到垃圾广告弹窗、软件更新提示,底层内置的微型反射脑毫秒级自动点掉。
    • 遇到复杂的业务逻辑,再挂起(degraded)交由大模型(如 MoRay 主仓)决策。
  3. 工业级物理绘图引擎

    • 内置 sketch_from_image 接口:传入一张图片路径,底层自动用 OpenCV 提取轮廓、K-Means 聚类配色,然后调用底层多段路径(subpaths)和真实鼠标轨迹,把画完美"印"在屏幕上。这次的鲸鱼娘就是这么画出来的。
  4. 真后台无感并发(虚拟通道)

    • 传统方案必须抢用户的鼠标。我们实现了底层虚拟消息通道(如 WM_CHAR),可以在后台静默向指定 hwnd 发送键盘输入,用户依然能自由使用物理鼠标,互不干扰。
  5. 军工级安全防线(Ghost Guard)

    • 能力白名单:Agent 必须携带合法的 Capabilities Token,且经过签名校验,否则连一个像素都点不了。
    • 物理级拦截:遇到 UAC 提权弹窗、系统锁屏、高危敏感词(如转账/删除),物理层直接拉闸,绝不盲点。

🛠️ 二、 核心架构拆解

  • 感知层:多模态大模型(本地 2B/7B) + GUI RAG + OCR。
  • 调度层:FastAPI + 细粒度窗口锁(支持多任务并发执行)。
  • 执行层:原生 Win32 API 注入 + Chaikin 轨迹平滑 + 底层 Fail-Safe 熔断。
  • 接入层 :原生支持 MCP (Model Context Protocol) ,插上 Cursor 就能直接用!

🩸 三、 踩坑实录(全是血泪)

做底层 GUI 自动化,远远没有想象中那么简单:

  1. Win11 的 UWP 应用反人类:新版画图(WinUI)和计算器,根本不吃普通的鼠标消息,甚至对 ctypes 的模拟注入免疫。我们只能用底层真实鼠标事件硬刚。
  2. DPI 缩放的灾难:如果你的主屏是 100%,副屏是 150%,默认的 PyAutoGUI 坐标会直接飞掉。我们重写了基于物理像素的坐标系转换。
  3. OCR 冷启动与死锁:处理高分辨率屏幕时,第一帧的 OCR 经常因为模型加载导致阻塞。我们加了后台预热和硬性 Timeout 才彻底解决。
  4. 中文输入法吞键 :在 Windows 注入中文,极容易被输入法拦截(返回 VK_PROCESSKEY)。我们最后切到了底层的 KEYEVENTF_UNICODE 才完美解决。

🧪 四、 离谱的测试覆盖率

为了避免 AI 把用户的电脑搞坏,我写了 500+ 项自动化测试用例 。

包括但不限于:并发抢锁测试、显存泄漏压测、极端错误恢复测试、异常降级测试。

这已经不是一个玩具,而是一个随时可以上生产线的基建。


🚀 五、 如何体验?

项目完全开源,代码已放在 GitHub。只要你有 Python 环境:

bash

bash 复制代码
git clone https://github.com/aliangmo2026/moray-ghost.git
cd moray-ghost
.\start.ps1

启动后,你就可以在 Cursor 或自己的 Agent 代码里,通过 SDK 让它接管电脑了。

GitHub 链接:github.com/aliangmo202...

如果你也觉得未来的 Agent 必须有安全的双手,欢迎点个 Star ⭐️ 支持一下!有任何底层技术的疑问,我们评论区见!

相关推荐
用户29914221968028 分钟前
GitHub 热榜项目:日榜(2026-11-07)
人工智能·开源·github
青少儿编程课堂2 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:Bellman-Ford与SPFA含负权最短路及负环检测全解析
c++·python·算法·bfs·信息学竞赛
小小张说故事2 小时前
Python 的 __init__ 到底是不是构造函数?拆开 __new__ 先造对象、那次被跳过的初始化和必须返回 None 的规矩
python
拖累斯2 小时前
Jenkins + Python 全自动跑通「禅道任务/BUG 导出 → 月度开发考核表」
python·jenkins·bug
特立独行的猫A2 小时前
13MB 单文件、一条命令变服务:把仓颉写的 cjh 内嵌进你的应用,当它的 AI 大脑
java·后端·python
deepseek233 小时前
Agent任务中途断线,怎么避免重复执行?SQLite检查点实测
python·sqlite·任务调度·幂等性·ai agent
2401_868534784 小时前
【网络安全
网络·python
miofly4 小时前
GitHub 日榜趋势速报 | 2026-11-07
开源·github
❁满城风絮*14 小时前
Claude Code 学习总结
python·agent·claude