# computer-use-gate **Repository Path**: GALAXYLIYI/computer-use-gate ## Basic Information - **Project Name**: computer-use-gate - **Description**: AgentCtl — 本机电脑控制面:MCP/CLI/面板三态同源 + 安全闸(急停/通行证/租约) - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-12 - **Last Updated**: 2026-10-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
# computer-use-gate ## Windows 版 Computer Use ### 无需显卡 · 任何 AI 都能接 · 你不点头它不动手 **真正让你感受一下 Windows 版的 Computer Use。** **让你的 AI 真正在 Windows 上动手:看屏幕、点按钮、打字、切窗口、操作网页。** **每一下都要你授权,每一下都留证据,按一个键全部停下。** [![License](https://img.shields.io/badge/license-Apache--2.0-blue)](LICENSE) ![Platform](https://img.shields.io/badge/Windows-10%20%2F%2011-0078D6) ![GPU](https://img.shields.io/badge/GPU-不需要-brightgreen) ![MCP](https://img.shields.io/badge/MCP-stdio%20%7C%20HTTP-8A2BE2) ![Vision](https://img.shields.io/badge/视觉-5条通道分层实现-00A4A6) ![Status](https://img.shields.io/badge/status-0.x%20实验版-orange) [5 分钟上手](#5-分钟上手) · [任何 AI 都能接](#任何-ai-都能接) · [为什么不要显卡](#为什么不要显卡) · [视觉是怎么实现的](#视觉是怎么实现的) · [为什么敢让它动手](#为什么敢让它动手) *Computer Use for Windows. No GPU. Works with any agent via MCP, HTTP or CLI. Default-deny, evidence for every action, one-key emergency stop.*
> **TL;DR (English)** — **Computer Use for Windows**, running on your own desktop: your AI agent can see the screen, click, type, switch windows and drive web pages. > - **No GPU needed**: controls are read via Windows UI Automation, built-in Windows OCR and browser CDP, not a local vision model. > - **Layered vision**: UIA first, then pixels (OCR), then icon glyph matching — a VLM (cloud GLM-4V or local Ollama) is only ever a **default-off** last resort. See [视觉是怎么实现的](#视觉是怎么实现的). > - **Works with any agent**: Claude Code, Codex, Gemini CLI, Cursor, Cherry Studio or your own scripts, via **MCP (stdio / HTTP)**, **HTTP API** or **CLI**. > - **Default-deny**: nothing moves until **you** click "Allow" on an on-screen prompt. A pass lasts 30 minutes or 60 actions. > - **Evidence for every action**: before/after screenshots, a hash-chained tamper-evident log, and exportable replay videos. > - **One-key stop**: `Ctrl+Alt+Home` halts everything immediately. > > Experimental 0.x: no SLA, APIs may change. Needs **Windows 10/11 x64 + Python 3.12 + git**. Quick start: [5 分钟上手](#5-分钟上手); scope and limits: [先说清楚适用范围](#先说清楚适用范围). > > *Keywords: computer-use agent · MCP server · Windows automation · desktop action gate · agent safety · audit trail · UIA grounding · Windows OCR · visual fallback.* --- ## 一句话说明 > 别的 Computer Use 方案,要么只能跑在 Linux 虚拟机里,要么要一块好显卡跑视觉模型,要么只认某一家的 AI。 > > **computer-use-gate 直接跑在你自己的 Windows 桌面上,普通笔记本就够用,Claude、Codex、Gemini、Cursor、Cherry Studio,或者你自己写的脚本,都能接。** | | 常见方案 | **computer-use-gate** | |---|---|---| | 跑在哪 | Linux 虚拟机 / 云端沙箱 | **你自己的 Windows 桌面** | | 要不要显卡 | 本地视觉模型要一块好显卡 | **不要**,Windows 自带的能力就够 | | 怎么"看见"屏幕 | 每步截一张图丢给视觉模型去猜 | **五条通道分层**:先问 Windows,再看像素,最后才考虑模型 | | 能接哪个 AI | 通常绑定一家 | **任何 AI**:MCP、HTTP、命令行三种接法 | | 动手前问不问你 | 装好就能动 | **默认全部拒绝**,你点"允许"才放行 | | 它说"成功了" | 动作发出去就算 | **再看一眼屏幕**,画面没变不算成功 | | 想叫停 | 关程序 | **`Ctrl+Alt+Home`**,立刻全停 | | 事后查账 | 基本没有 | **前后截图 + 防篡改日志 + 回放视频** | --- ## 为什么不要显卡 很多 Computer Use 每走一步都要截一张图,丢给视觉模型去猜"按钮在哪"。又慢、又贵,本地跑还得有显卡。 computer-use-gate 换了个思路:**先问 Windows,再看截图。** | 能力 | 用的是什么 | 要不要显卡 | |---|---|---| | 找按钮、读控件 | Windows 自带的 **UI Automation**,直接拿到控件的名字和位置 | ❌ | | 认屏幕上的字 | Windows 自带的 **OCR**,不用下载模型 | ❌ | | 读网页 | 浏览器自带的 **CDP**,直接读页面文字和元素 | ❌ | | 认纯图标按钮 | 系统图标字体的 **码点模板匹配**,零模型 | ❌ | | 截图 | 窗口被挡住也能截 | ❌ | AI 拿到的是"保存按钮在 (812, 430)"这样的准确答案,不用自己从像素里猜。**普通笔记本、核显、轻薄本都能跑。** 这五条能力怎么搭成一条完整的视觉流水线,每一层的实测数字、踩过的坑、兜底纪律,往下看。 --- ## 视觉是怎么实现的 computer-use-gate 没有"一个视觉模型"。它的眼睛是一条**分层流水线**: ``` ┌─ ① UI Automation ── 控件名/类型/矩形/状态(结构化,零像素) ├─ ② Windows OCR ──── 屏幕上的字 → 词框 + 坐标(系统引擎) 看 ────────┼─ ③ 浏览器 CDP ───── 网页 DOM 文字与元素(本机回环) ├─ ④ 图标字体反查 ─── Segoe 码点模板匹配(纯图标按钮) └─ ⑤ 视觉兜底 VLM ─── 云端 GLM-4V / 本地 Ollama(★ 默认关闭) ⇓ 动 ────► 再看一眼屏幕 ──► 三态判词:生效 / 确认没变 / 没测出来 ``` 原则只有一条:**能问 Windows 要结构化答案的,绝不看像素;能看像素解决的,绝不请模型。** 每往下一层,耗时、费用、隐私开销都更高 —— 分层不只是省显卡,更是把"什么时候屏幕会离开你的电脑"变成一个显式决定。 ### 五条通道一览 | 通道 | 用什么实现 | 认什么 | 实测成本 | 看不见什么(如实说) | |---|---|---|---|---| | ① UIA | Windows UI Automation(读屏软件同款 COM 接口) | 控件名/类型/位置/可用状态/交互能力 | 控件树 ~191ms/85 节点;长页面 787 节点 ~393ms | Canvas 自绘、游戏画面、PDF 内嵌渲染、没开无障碍的 Electron | | ② OCR | Windows 自带 `Windows.Media.Ocr` | 屏幕上的文字 + 词框坐标 | 系统引擎,无模型无下载 | 艺术字、极小字号、纯图标 | | ③ CDP | 浏览器 DevTools 协议 | 网页 DOM:文字、元素、精确滚动 | 本机回环 | 非浏览器窗口 | | ④ 图标反查 | Segoe Fluent Icons 码点 + 归一化互相关(纯 numpy) | Windows 界面常见的纯图标按钮 | 模板渲染 + NCC,零模型 | 非 Segoe 体系的第三方图标 | | ⑤ 视觉兜底 | 云端 OpenAI 兼容接口(默认 glm-4v-flash)/ 本地 Ollama(qwen2.5-vl) | 以上全都认不出时的最后手段 | 云热态 ~1s;本地热态 ~2.8s、冷态 ~15s | ——(**默认不启用**,见下文四道闸) | ### ① UI Automation:元素天生有身份 UIA 是 Windows 给读屏软件用的接口,每个控件**天生**带名字、类型、矩形、可用状态和交互能力(Invoke / Toggle / Value…)—— 这些是结构化数据,不是图像。所以: - **元素有短 id**(`e12`、`e42`)。agent 下一步说"点 e42",而不是自己算坐标。同一帧里两个长得一模一样的按钮也不会点错 —— 选择的依据是元素身份,不是像素长相。 - **不受主题、颜色、字体、动画影响**。深色模式换肤、按钮变灰,名字和位置照读。 - 接口还带**视口标注**(`in_view` / `scroll_y`):长页面里 y=17838 的节点会明确告诉你"现在不在这一屏",先滚动再点 —— 屏外节点是"暂时看不见",不是坏数据。 - **边界如实说**:自绘界面(Canvas、游戏、PDF 渲染、未开无障碍的 Electron)UIA 只能拿到外壳甚至全黑。所以这条线是主力而不是全部,②③④⑤ 永远留着。 ### ② OCR:系统引擎 + 实测出来的四条规矩 用 Windows 自带的 `Windows.Media.Ocr`,不下载任何模型。但"能用"和"能用准"之间隔着四条实测规矩: 1. **必须放大 4 倍再认**。原尺寸实测会漏行,4 倍才认全;认完坐标再除回来。 2. **逐字框必须合成词框**。Windows OCR 把中文切成单字(「文件」=「文」+「件」两个框),按"同行 + 紧邻 + 同号(字号一致)"三条判据合并,后续对齐和可点化才有"词"这个粒度。 3. **截图只在内存里走一圈**。PIL → PNG 字节 → WinRT 内存流,不落任何临时文件;默认 1.5 秒超时,到点就返回,绝不挂着调用方。 4. **坐标口径恒定声明**。所有词框坐标都标 `client_physical`(客户区物理像素),成功失败都带这个字段 —— 调用方永远不用猜"这坐标是哪个坐标系"。 **DPI 是最大的坑,也是处理得最严的地方。** 150% 缩放的屏幕上,"感知进程"和"非感知进程"读同一个窗口,尺寸能差 1.5 倍;服务进程必须声明 PER_MONITOR_AWARE,拿到的才是物理像素,而且**绝不**再乘一次缩放系数(双乘就是从这来的)。抓完图还会**立刻复查一次窗口几何**:抓图期间窗口要是移动过,这一帧就被标记"画面不稳定",不许拿去和屏幕坐标对齐。 ### ③ CDP:网页有自己的通道 浏览器场景不走截图识别 —— 通过 DevTools 协议(CDP)直接读 DOM:页面文字、元素位置、精确滚动,全是本机回环通信。Chromium 在检测到无障碍客户端接入后会把整棵 DOM 灌进 UIA 树,所以网页在 ① 和 ③ 两条通道里都可见,互为校验。 ### ④ 图标字体反查:纯图标按钮的确定性识别 Windows 界面图标大量来自 **Segoe Fluent Icons / Segoe MDL2 Assets**,码点是公开的。于是纯图标按钮(设置齿轮、返回箭头、关闭 ×)有了一条**零模型**的识别路: ``` 屏幕上的图标块 → 归一化 → 与按码点渲染的字体模板做归一化互相关(NCC) → 码点 → 语义名 ``` 三条实测纪律: - **模板按目标窗口的 DPI 渲染**:150% 屏上同一个码点是 24px 不是 16px,模板尺寸错了 NCC 必掉分。 - **只对"已知的图标格"工作,不满屏乱扫**:实测满屏乱扫的高置信命中密度只有 0.6%,且全是弧线类字形的系统性误判。 - **输出是"多一条证据",不是结论**:给出码点、语义名、分数和 **margin**(第一名与第二名的分差)。真图标往往是"孤峰",误命中往往是"一片糊"—— margin 比绝对分更能分清这两者,双闸不过就老实报"认不出"。认错一个图标等于点错一个按钮,这里宁可认输。 ### 截图:窗口被挡住也能截 截图兜底用 `PrintWindow(PW_CLIENTONLY | PW_RENDERFULLCONTENT)`:目标窗口被别的窗口压着,也能让它把内容画出来。某些硬件加速窗口对这条路返回全黑,就自动退回按屏幕矩形抓。两条路径输出**统一成同一口径**(客户区物理像素)—— 修之前一个返逻辑尺寸一个返物理尺寸,同一个窗口的坐标能差 1.5 倍。性能上客户区抓帧实测中位 ~24ms(整窗抓帧 ~78ms)。 ### 帧凭据:不许拿旧截图点新画面 "看"的另一半是"什么时候需要重新看"。这块有一套独立的机制: - **每帧带编号,15 秒过期**。动作必须携带新鲜截图的凭据,画面变了凭据作废 —— 拿三秒前的截图点现在的画面,闸门直接拒绝。 - **变化检测是三值的,不是布尔**:真变了 / 确认没变 / **没测出来**。「我没看见」和「我看见了没变」是两件事,永远不说谎 —— 画面退化(全黑帧)时宁可放弃复用也不硬判。 - **判变化不用整屏 hash**。实测屏幕有动画时整屏 hash 变化率 90.6%,等于没有判据;也**不用**"一像素不同就算变"(记事本光标闪烁 0.01% 的像素也算变过)。实际做法:客户区切 64×64 瓦片、灰度降采样做指纹,**差异像素占比超过阈值**才算变;再用形状特征滤掉光标(细长条、窄边 ≤8px)这类噪音;连续 2 帧同结论才上报(滞回)。 - **变化即停,不做固定 sleep**。动作发出后先给 50ms 重绘宽限(实测界面重绘平均晚 ~40ms),然后 25ms 一次轮询指纹,**界面一变立刻停**,最多等 300ms —— 常态下只探一轮就出判词。 ### ⑤ 视觉兜底:真需要模型时才请模型(默认关闭) UIA、OCR、图标反查都看不见的场景(游戏画面、Canvas 自绘、非 Segoe 图标),才轮到视觉模型。这一层是**接口位 + 两个可插拔后端**: - **三态纪律**:找到了 / 有效观测到"画面里没有" / **unobservable(没测出来)**。后两者严格分开 —— 模型超时、回执解析不出、候选不合规,一律归"没测出来",**永不当成功、也永不当"没有"**。 - **默认关闭**:`AGENTCTL_VISION_ASSIST=1` 才启用。装完就开 = 用户的屏幕被送进一条没人审过的通道,不行。 - **本地后端(Ollama,qwen2.5-vl)**:图只发 `127.0.0.1`,不出门。这里有个实测出来的细节:qwen2.5-vl 的预处理会把任何图当作 1920×1080 处理,返回的框是那个"幻觉坐标系"的值 —— 对策是**先把图锚定到 1920×1080 再喂**,模型坐标系与真实像素 1:1,返回的框直接反算回原尺寸。冷启动(含模型加载)实测 ~15s,热查询 ~2.8s。 - **云端后端(OpenAI 兼容接口,默认 glm-4v-flash 免费档)**:四道闸,缺一不发: 1. **双钥匙**:两个环境变量都由人手设才启用; 2. **密钥文件制**:密钥只在文件里,每次调用现读,不进日志、不进命令行、不进代码(提交前扫描兜底); 3. **敏感窗拒发**:授权弹窗等敏感窗口在调用侧直接拒绝,图根本不会离开; 4. **日预算闸(fail-closed)**:默认 ¥2/天,价格未知的模型、账本读不了、预算用尽 —— 全部拒发。 - **敏感窗口只走本地,绝不降级到云**。 - **面板可见**:连的什么模型、调了几次、估了多少费用,悬浮窗可查(从 API 回执实测 token 数记账);**图像本身永不落盘**。 ### 动完再核一眼:像素不判成功 视觉流水线的最后一环在动作之后:**每个动作做完,再看一眼屏幕**,对照动作前后两帧的变化,给出三种判词之一: | 结果 | 代码 | 意思 | |---|---|---| | ✅ 生效 | `0` | 画面确实变了 | | ⚠ 确认没变 | `8` | 动作发出去了,画面没变,**不算成功** | | ❓ 没测出来 | `5` | 没测到或环境不稳,**可以重试**,也不算成功 | 这就是"像素不判成功":动作发出去不算数,**屏幕变了才算**。点错窗口时这一下根本不会发出去,还会告诉你该关掉哪个窗口。 --- ## 任何 AI 都能接 同一套工具,提供三种接法。**支持 MCP 的 AI 直接接;不支持的,用 HTTP 或命令行也能调。** | 接法 | 地址 / 命令 | 适合谁 | |---|---|---| | **MCP stdio** | `agentctl.cmd mcp` | 绝大多数 AI 客户端,最省事 | | **MCP HTTP** | `http://127.0.0.1:8761/mcp` + Bearer 令牌 | 想让多个客户端共用一个常驻服务 | | **HTTP API** | `http://127.0.0.1:8760/v1/...` + `X-AgentCtl-Token` | 自己写的 agent、Python / Node 脚本、工作流工具 | | **命令行** | `agentctl.cmd click --hwnd N --name 保存` | 批处理、PowerShell、人工调试 | 下面的 `<安装目录>` 换成你实际的安装位置。令牌默认在 `%LOCALAPPDATA%\AgentCtl\state\token`,设了 `AGENTCTL_HOME` 的话就在 `%AGENTCTL_HOME%\state\token`。
Claude Code ```powershell claude mcp add agentctl -- "<安装目录>\agentctl.cmd" mcp ```
Codex CLI ```powershell codex mcp add agentctl -- "<安装目录>\agentctl.cmd" mcp ``` 或者接常驻的 HTTP 服务: ```powershell $env:AGENTCTL_MCP_TOKEN = (Get-Content "$env:LOCALAPPDATA\AgentCtl\state\token" -Raw).Trim() codex mcp add agentctl --url http://127.0.0.1:8761/mcp --bearer-token-env-var AGENTCTL_MCP_TOKEN ```
Gemini CLI / Cursor / Cherry Studio / VS Code 等任何 MCP 客户端 在客户端的 MCP 配置里加一个 stdio 服务器。大多数客户端都认这个格式(Gemini CLI 是 `~/.gemini/settings.json`,Cursor 是 `.cursor/mcp.json`,Cherry Studio 在设置界面里填同样的命令和参数): ```json { "mcpServers": { "agentctl": { "command": "<安装目录>\\agentctl.cmd", "args": ["mcp"] } } } ```
不支持 MCP?直接用 HTTP 先启动 HTTP 服务: ```powershell agentctl.cmd serve ``` 然后任何语言都能调,比如 Python: ```python import os import requests token = open(os.path.expandvars(r"%LOCALAPPDATA%\AgentCtl\state\token"), encoding="utf-8").read().strip() api = "http://127.0.0.1:8760/v1" headers = {"X-AgentCtl-Token": token} print(requests.get(f"{api}/status", headers=headers).json()) # 查状态 print(requests.post(f"{api}/perceive/windows", json={}, headers=headers).json()) # 列窗口 ``` 完整接口见 [`docs/AGENT接口.md`](docs/AGENT接口.md)。
--- ## 它能做什么 接上之后,你的 AI 会多出 20 多个桌面工具: | 类别 | 工具 | 用来做什么 | |---|---|---| | 👀 **看** | `ctl_windows` `ctl_shot` `ctl_tree` `ctl_find` `ctl_screen` | 列出窗口;截图(窗口被挡住也能截);读控件名称和位置;按文字找按钮;OCR 认字 | | 🖱 **动** | `ctl_click` `ctl_type` `ctl_fill` `ctl_scroll` `ctl_keys` `ctl_focus` | 点击、打字(中文直接输入)、一步填好输入框、滚动、快捷键、切换窗口 | | 🌐 **网页** | `ctl_browser` | 通过 CDP 读网页文字、找元素、精确滚动 | | 🛡 **管** | `ctl_authorize` `ctl_lease` `ctl_brake` `ctl_preflight` `ctl_status` | 申请授权、一次只让一个 AI 动手、急停、动手前体检、查状态 | | 🧾 **证据** | `ctl_timeline` `ctl_verify` `ctl_replay` `ctl_record` `ctl_witness` | 查动作记录、校验记录有没有被改、导出回放视频、录屏、核对系统时间 | **你可以这样跟 AI 说:** > "打开记事本,写一段会议纪要,存到桌面。" > "把这个网页表格里的数据抄进 Excel。" > "帮我在设置里找到显示缩放,截图给我看现在是多少。" AI 会自己列窗口、找控件、点击、打字,每一步都先过闸门,做完给你看前后截图。 --- ## 为什么敢让它动手 把键鼠直接交给 AI,等于把电脑借给一个没见过面的人。computer-use-gate 在 AI 和键鼠中间加了五道闸,每个动作都要依次通过: ``` ① 你签发通行证 → ② 租约绑定窗口 → ③ 截图必须是新的 → ④ 敏感窗口一律拦 → ⑤ 急停一票否决 ⇓ 每一步都写进证据链(前后截图 + 决策日志) ``` | 闸 | 防的是什么 | 怎么做到 | |---|---|---| | ① **通行证** | AI 偷偷动手 | 装完默认全部拒绝。屏幕弹窗由**你本人**点"允许",一张通行证管 30 分钟或 60 个动作。AI 没法替你点这个弹窗 | | ② **租约** | 几个 AI 同时抢鼠标 | 同一时间只有一个 AI 能动手,其他的只能看 | | ③ **帧凭据** | 拿旧截图点新画面 | 每次点击都要带截图编号,画面已经变了就拒绝(见 [视觉是怎么实现的](#视觉是怎么实现的)) | | ④ **敏感窗口** | AI 去点授权弹窗 | 授权弹窗由服务端直接拦截,给坐标也点不进去 | | ⑤ **急停** | 停不下来 | 面板 ⏹ 按钮、`Ctrl+Alt+Home` 全局快捷键、删除急停文件,任选一种,立刻全停 | 控制期间屏幕四周会亮一圈细边框,你随时知道 AI 正在动手。 ### 它不会骗你说"成功了" 每个动作做完,它都会再看一眼屏幕,给出三种结果之一(详见 [视觉是怎么实现的](#视觉是怎么实现的)): | 结果 | 代码 | 意思 | |---|---|---| | ✅ 生效 | `0` | 画面确实变了 | | ⚠ 确认没变 | `8` | 动作发出去了,画面没变,**不算成功** | | ❓ 没测出来 | `5` | 没测到或环境不稳,**可以重试**,也不算成功 | 点错窗口时,这一下根本不会发出去,它还会告诉你该关掉哪个窗口。 ### 事后能查、能证明 - 每个动作都记进时间线,记录带**哈希链**。改过一个字,`ctl_verify` 就能指出从第几条开始坏的。 - 任意一段操作都能用 `ctl_replay` 导出回放视频,不用装 ffmpeg。 - 复盘、交接、需要留记录的场景都用得上。 --- ## 5 分钟上手 **你需要**:Windows 10/11 x64、Python 3.12、git。**不需要显卡,不需要虚拟机,不需要 Docker。** ### 1. 安装 ```powershell # 国内用 Gitee 镜像;海外换成 https://github.com/GALAXYLLIYI/computer-use-gate git clone https://gitee.com/GALAXYLIYI/computer-use-gate cd computer-use-gate pwsh -File .\install.ps1 ``` 想先看清脚本再运行(推荐): ```powershell irm https://gitee.com/GALAXYLIYI/computer-use-gate/raw/main/install.ps1 -OutFile install.ps1 notepad install.ps1 # 看一眼 .\install.ps1 ``` 从 Release 下载 zip 的话,先核对哈希: ```powershell Get-FileHash .\agentctl.zip -Algorithm SHA256 # 和 agentctl.zip.sha256 里的值逐字比对,不一样就别装 ``` ### 2. 接到你的 AI 按上面 [任何 AI 都能接](#任何-ai-都能接) 选一种方式,一条命令或一段配置就够了。 ### 3. 签发通行证,开始干活 让 AI 调用 `ctl_authorize`,屏幕上会弹出授权窗口,**你本人**点"允许"。接下来 30 分钟或 60 个动作内,它可以在你授权的范围里动手。 想亲自验证"默认全拒"是不是真的: ```powershell python -X utf8 tests\_默认关闭_判据.py ``` > 💡 第一次用,建议拿记事本这类无关紧要的窗口练手,别一上来就在有真实账号的软件上开闸。 --- ## 先说清楚适用范围 **✅ 适合** - 在**自己的 Windows 电脑**上,让 AI 做有人看着的桌面操作 - 需要事后说清楚"AI 到底干了什么"的场景 - 愿意开工前点一下授权的人。这一步就是它的价值所在 **⛔ 不适合** - **无人值守批量点击**:每 30 分钟或 60 个动作要重新授权,这是设计,不是缺陷 - **绕过验证码、风控或权限检查**:不做,也请不要这样用 - **Linux / macOS、云端或远程控制**:目前只支持本机 Windows - **需要 SLA 的生产环境**:这是 0.x 实验项目,接口还会变 **🚧 已知限制** - Canvas、游戏、PDF 内容、没开无障碍的 Electron 应用读不到控件,只能靠截图兜底 - 多显示器和屏幕缩放(125%、150%)的适配还在开发中,点击位置可能偏 - 界面响应超过约 200ms 时,可能误报"确认没变" - OCR 第一次识别要暖机,大约 3 秒 --- ## 隐私:数据不出你的电脑 - **没有遥测,不上传任何数据**,服务只监听 `127.0.0.1` - **视觉默认不出门**:UIA、OCR、CDP、图标反查全在本机;视觉兜底模型默认关闭,开了也分"本地 Ollama(图不出门)/ 云端(四道闸,敏感窗拒发、日预算 fail-closed)"两条路,敏感窗口只走本地 - 证据存在本机 `work\` 目录,**里面有屏幕截图和窗口标题,属于敏感数据**,别提交到仓库,也别随手发给别人 - 授权状态、通行证、急停标志默认存在 `%LOCALAPPDATA%\AgentCtl\`,可以用 `AGENTCTL_HOME` 环境变量改到别的盘 - 通行证密钥只存加盐哈希,不存明文 --- ## 更新与卸载 | 操作 | 命令 | |---|---| | 更新 | 重新运行 `.\install.ps1` | | 卸载(保留数据) | `.\uninstall.ps1` | | 卸载并清空数据 | `.\uninstall.ps1 -Purge` | | 离线安装 | `python -X utf8 tools\pack_dist.py` 生成 zip,目标机运行 `.\install.ps1 -Zip .\agentctl.zip` | --- ## 项目状态 **实验性 0.x,由作者与几位协作者共同维护。** 当前版本 `v0.1.1`(2026-10-24)。 - 设计接近成熟:安全模型、授权租约、帧凭据都经过推演 - 实现还有欠账,接口还会调整 - 判据都在维护者自己的电脑上跑过,**外部用户还很少** 所以最需要的,是**你来把它跑坏**。遇到问题请提 Issue,写清版本、复现步骤、看到了什么、期望看到什么。 本仓已开放 GitHub / Gitee 协作者权限,欢迎提 PR。贡献者名单见 [`CONTRIBUTORS.md`](CONTRIBUTORS.md),贡献流程见 [`CONTRIBUTING.md`](CONTRIBUTING.md)。 **第一次来?照着 [`docs/贡献者上手指南.md`](docs/贡献者上手指南.md) 走**:接受邀请 → 配环境 → 认证 → 切分支 → 提 PR,每一步都有命令和常见坑。 --- ## 文档 | 文档 | 内容 | |---|---| | [`docs/AGENT接口.md`](docs/AGENT接口.md) | 给 AI 的完整接入说明 | | [`docs/开发环境.md`](docs/开发环境.md) | 想改代码的人看这里 | | [`docs/开源声明_隐私与安全边界.md`](docs/开源声明_隐私与安全边界.md) | 隐私、安全、免责的正式声明 | | [`CHANGELOG.md`](CHANGELOG.md) | 更新日志 | | [`SECURITY.md`](SECURITY.md) | 漏洞报告(请走私密渠道,别发公开 Issue) | | [`CONTRIBUTING.md`](CONTRIBUTING.md) | 贡献指南 | | [`CONTRIBUTORS.md`](CONTRIBUTORS.md) | 贡献者名单 | --- ## 免责声明 本项目让 AI 的动作**可以审计**,不保证动作**一定正确**。证据链只能证明"发生了什么",不能证明"这应该发生"。因误点、误填、误删、账号风控等造成的损失,作者不承担责任。请先在测试环境和测试账号上验证。 ## 许可 [Apache License 2.0](LICENSE),允许商用。第三方组件许可见 [`THIRD_PARTY_NOTICES.md`](THIRD_PARTY_NOTICES.md)。 Copyright (c) 2026 GALAXYLLIYI
**无需显卡,任何 AI 长眼睛接管你自己的 Windows。** **觉得有用?点个 ⭐ Star,让更多人用上 Windows 版的 Computer Use。**