ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

cc-haha Computer Use 架构解析:macOS 原生 Swift 运行时如何实现非占用式光标控制

cc-haha Computer Use 架构解析:macOS 原生 Swift 运行时如何实现非占用式光标控制 人工智能AI 应用AI Agent代码智能体桌面应用开发工具GUI 自动化【免费下载链接】cc-hahaLocal-first cross-platform desktop workspace for Claude Code / agents: multi-agent, Git worktrees, code diffs, skill marketplace, multi-model, Computer Use, task-aware desktop pets, with WeChat, Feishu, DingTalk, Telegram, WhatsApp and H5 access.项目地址https://gitcode.com/NanmiCoder/cc-haha点击查看免费下载cc-haha 是一款本地优先的跨平台 AI 编程桌面工作台它的 Computer Use电脑操控功能让 Claude 能截图、点击、输入替你操作那些没有 API 的桌面应用。在 macOS 上cc-haha 用一个原生 Swift 运行时cu-helper实现了非占用式光标控制Agent 干活时你的真实鼠标纹丝不动屏幕上滑动的只是一枚虚拟光标——你可以一边让 AI 操作备忘录一边用自己的鼠标继续写代码。这篇文章拆解它背后的架构与关键实现。为什么传统方案会抢走你的鼠标早期的 AI 电脑操控包括 cc-haha 最初的兼容执行器大多基于 Python 的 pyautogui。它在 macOS 底层把鼠标/键盘事件注入到HID 硬件事件层CGEventPost(kCGHIDEventTap)后果是系统只有一个物理光标注入等于把真光标拖走用户无法同时操作事件只能落在当前前台窗口目标应用必须亮在最前全局生效无法定向投递到某个后台 App。这正是用户核心诉求的反面我想一边自己工作一边让 Agent 在另一个应用上跑自动化。cc-haha 为此把最底层的 Python helper 换成了原生 Swift 二进制 cu-helper上层安全体系与工具协议完全不动。整体架构只换最底一层Computer Use 是一条 6 层链路MCP 工具定义 → 九层安全关卡 → 会话绑定 → 宿主集成 → 进程调用边界Bridge→ 平台执行运行时。Swift 化的精妙之处在于只替换了最底层的执行运行时旧的 mac_helper.py 与新的 cu-helper 遵守完全相同的 JSON 命令行协议command --payload jsonstdout 返回{ok, result}上层的 Python Bridge 调用边界 几乎零改动即可在 Python 与 Swift 之间热切换。非占用式控制的三件套1. 按 PID 定向注入事件不经过系统光标新执行器有一条绝对规则所有鼠标/键盘事件一律用CGEvent.postToPid(targetPid)即CGEventPostToPid投递给目标应用进程永远不调用 HID 层注入也永远不调用CGWarpMouseCursorPosition之类的位移 API。事件上虽然还带有坐标但那只是让目标应用做命中测试点中正确的按钮投递带坐标的事件并不会移动硬件光标。这条规则写在 Injection.swift 的文件头注释里是整个注入引擎的宪法。2. 虚拟光标你自己画一个假光标给用户看真光标不动了用户就看不到 AI 在点哪里。cu-helper 的答案是自绘覆盖层每块屏幕上一个无边框、透明、点击穿透的浮层窗口光标是一枚随逻辑坐标平滑滑动ease-out 缓动的动画元素点击时播放涟漪动效被操控的窗口还会有一圈柔和光晕跟随。关键实现约束覆盖层不抢焦点、不出现在 Dock、不吃鼠标事件也不会出现在截图里否则模型会看到自己的光标形成反馈回路。逻辑位置就是唯一的光标状态源见 VirtualCursor.swift。3. AccessibilityAX兜底点按钮不必真的点postToPid对部分应用不够可靠所以 cu-helper 对按钮、菜单、文本框提供 AX 控件级路径通过坐标找到命中控件直接执行按下动作或给文本框赋值。策略与业界一致CGEvent 优先更像真实交互AX 兜底。后台窗口截图目标应用不必在最前配合不抢光标截图也换了引擎Capture.swift 基于 macOS 14 的 ScreenCaptureKit直接抓取指定显示器或窗口的图层内容。窗口被遮挡、不在最前、甚至在另一块屏幕上都能抓到——这就是你在 App B 工作Agent 却在驱动 App A的底气。人机共存如何确认没有人和 Agent 抢输入一个容易被忽略的安全问题Agent 操作到一半真人碰了鼠标怎么办早期实现用只读事件监听listen-only event tap结果踩了个大坑监听键盘事件需要第三个系统权限输入监控而授权卡片从未请求过它——新装机上所有操作直接失败。现在的方案优雅得多改读HID 系统事件计数器CGEventSource.counterForEventType(.hidSystemState)零权限、不可失效且实测postToPid注入的合成为事件不会污染计数器。每次动作前后比对计数器纪元一旦真人动过输入立即让位中止。实现见 PhysicalInputEpochMonitor.swift 与 ForegroundLease.swift。九道安全关卡每一次动作都要过检非占用不等于无边界。每次动作执行前都要串过 9 层检查全局开关 → TCC 系统权限辅助功能 屏幕录制→ 会话互斥锁 → 应用隐藏 → 前台应用白名单 → 三级权限徽章read / click / full→ 受保护剪贴板 → 像素新鲜度校验 → 才轮到执行。任何一环失败动作被拒。cc-haha 自己、终端和浏览器也在默认拒绝名单内防止 Agent 反向操控宿主。如何开启与使用对普通用户你只需要知道两件事只需两项系统权限「辅助功能」发点击和输入「屏幕录制」截屏。输入监控永远不该出现在任何提示里。授权后需完全退出并重新打开应用入口打开「设置 → Computer Use」开启然后给任务写清边界只在备忘录里操作比笼统目标靠谱得多。日常用法、已知边界与排查方法见功能指南 docs/desktop/computer-use.md。关键文件路径速查模块说明docs/internals/computer-use.mdComputer Use 完整架构文档分层、授权、Teach 工作流docs/internals/computer-use-native-swift-design.md原生化 Swift 设计方案与逆向证据docs/internals/computer-use-native-manual-qa.md真机验证清单虚拟光标、注入契约、安全边界Injection.swift按 PID 事件注入引擎绝对规则见文件头VirtualCursor.swift虚拟光标覆盖层与动画Capture.swiftScreenCaptureKit 后台窗口截图PhysicalInputEpochMonitor.swift零权限真人输入检测src/utils/computerUse/pythonBridge.ts进程调用边界Python / Swift 双执行器切换点小结cc-haha 的 Computer Use 用三个替换解决了一个大问题事件按 PID 定向投递不动真光标、自绘虚拟光标让用户看得见 AI 在干嘛、AX 控件兜底后台应用也能操作再配上 ScreenCaptureKit 后台截图和 HID 计数器人机共存检测——整套原生 Swift 运行时的协议边界与旧 Python helper 完全一致上层安全体系一行未改。这也是只换最底一层架构的胜利能力升级了复杂度却没有扩散。赞分享人工智能AI 应用AI Agent代码智能体桌面应用开发工具GUI 自动化【免费下载链接】cc-hahaLocal-first cross-platform desktop workspace for Claude Code / agents: multi-agent, Git worktrees, code diffs, skill marketplace, multi-model, Computer Use, task-aware desktop pets, with WeChat, Feishu, DingTalk, Telegram, WhatsApp and H5 access.项目地址https://gitcode.com/NanmiCoder/cc-haha点击查看免费下载相关推荐从 pyautogui 到 Swift cu-helperclaude-code-haha Computer Use 的 macOS 原生化「不抢鼠标」架构从 pyautogui 到 Swift cu helperclaude code haha Computer Use 的 macOS 原生化「不抢鼠标」架构人工智能AI 应用桌面应用代码智能体MCP Clients深度解析 cc-haha 原生 macOS Computer Use 助手 cu-helper虚拟光标架构、NDJSON 守护进程协议与 TCC 稳定签名实践深度解析 cc haha 原生 macOS Computer Use 助手 cu helper虚拟光标架构、NDJSON 守护进程协议与 TCC 稳定签名实践人工智能AI 应用桌面应用代码智能体MCP Clientscc-haha 桌面端 Codex 原生 Computer Use 兼容契约深度解析cc haha 桌面端 Codex 原生 Computer Use 兼容契约深度解析 导读 本文以 docs/en/internals/computer use人工智能AI 应用桌面应用代码智能体MCP Clients创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表