返回 2026-08-23 编辑版
原始行动中文优先 · EN 原文Agent 与软件生产

Show HN:Hands 让 Agent 操作 Windows 桌面和日常 Chrome

Hands 让编码 Agent 像用户一样操作 Windows PC 和日常 Chrome 配置:观察屏幕、移动真实鼠标、输入、点击,而不把 Chrome 变成自动化浏览器。它是 Rust 编写的 MCP/CLI;Grok、Codex、Claude Code、OpenCode 等 Harness 可调用 observe、click、type、scroll。observe 返回截图路径和少量元素列表(UIA 与可选 Chrome DOM id),点击通过 OS SendInput 沿贝塞尔路径完成,不是 DevTools 点击。它不使用 Playwright、Puppeteer 或远程调试端口,Chrome 无需额外启动参数;但注入输入仍可能被识别。可选扩展用于融合页面结构,服务工作线程休眠时需重载。适合在自己的桌面做个人研究、读页面、填写 ZIP 邮编和关闭 Cookie 横幅。它不是沙箱,可能点击结账或 Easy Apply;付款前确认只是尽力分类,截图或 DOM 中的提示注入仍是风险;也不是 CAPTCHA 求解器。仅支持 Windows,安装需构建可执行文件、注册原生消息主机、侧载扩展并配置 MCP 客户端;API key 缺失不影响构建,do_task 可选。日志位于 %LOCALAPPDATA%\hands\logs\,扩展因映射当前标签页需要 <all_urls> 权限。仓库以 MIT 许可发布,Pause/Break 是紧急停止键。

查看英文原文

Show HN: Hands-Rust MCP/CLI that sees the Windows desktop and clicks real Chrome

I built Hands because I wanted a coding agent to use this Windows PC and a real Chrome profile the way I do: look at the screen, move the real mouse, type, click , without turning Chrome into an automation browser. It is a Rust MCP&#x2F;CLI. A harness (Grok, Codex, Claude Code, OpenCode, etc.) calls tools like observe, click, type, scroll. Observe is a screenshot path plus a small element list (UIA + optional Chrome DOM ids). Click is OS SendInput on a Bézier path, not a Chrome DevTools click. There is no Playwright, no Puppeteer, no remote debugging port. Daily Chrome is launched with no extra flags, or attached if it’s already open. Sites that key on CDP&#x2F;automation flags mostly don’t see that. They can still see injected input (LLMHF_INJECTED). A tiny unpacked Chrome extension can fuse page structure (chr: ids, listing cards) so the model isn’t guessing from pixels. Sideload is manual. Fusion dies if the service worker goes inactive; reload the card. What it is good for: personal research on your own desk. “Find a Camry on cars.com,” read a page, fill a ZIP, dismiss a cookie banner. What it is not: • Not a sandbox. It can click whatever is on screen, including checkout and Easy Apply. • Confirm-before-money is best-effort classification in the binary, not a guarantee. Prompt injection from the screenshot&#x2F;DOM is real; the binary treats that text as untrusted, the model might not. • Not a CAPTCHA solver on daily Chrome. Two visible tries, then it yields and waits for the puzzle to go away. • Windows only. • Install is: build the exe, register a native-messaging host, sideload the extension, point an MCP client at hands mcp. README is the runbook. Missing an API key does not fail the build; do_task is optional. • Logs live under %LOCALAPPDATA%\hands\logs\. The extension asks for <all_urls> so it can map the tab you’re looking at. Repo: https:&#x2F;&#x2F;github.com&#x2F;Ryan-AI-Studios&#x2F;hands (MIT) Happy to answer how observe&#x2F;fusion&#x2F;the fence work. If you try it, Pause&#x2F;Break is the kill switch.

Agent 从单次调用走向桌面行动、持续上下文和统一工具门户

为什么值得看

当 Agent 开始跨应用长期运行,控制桌面、维护事实真源和统一工具入口会成为一组相互依赖的基础能力。

最强反方

三者都处于项目发布或作者基准阶段;Hands 明确不是沙箱,提示注入、权限边界、上下文陈旧和多 MCP 兼容性均缺少生产数据。

原始出现与传播对照

1 条出现 · 本次 AIHOT 未精确命中

原始行动

Show HN:Hands——能看见 Windows 桌面并点击真实 Chrome 的 Rust MCP/CLI

Hands 让编码 Agent 像用户一样操作 Windows PC 和日常 Chrome 配置:观察屏幕、移动真实鼠标、输入、点击,而不把 Chrome 变成自动化浏览器。它是 Rust 编写的 MCP/CLI;Grok、Codex、Claude Code、OpenCode 等 Harness 可调用 observe、click、type、scroll。observe 返回截图路径和少量元素列表(UIA 与可选 Chrome DOM id),点击通过 OS SendInput 沿贝塞尔路径完成,不是 DevTools 点击。它不使用 Playwright、Puppeteer 或远程调试端口,Chrome 无需额外启动参数;但注入输入仍可能被识别。

查看英文原文

Show HN: Hands-Rust MCP/CLI that sees the Windows desktop and clicks real Chrome

I built Hands because I wanted a coding agent to use this Windows PC and a real Chrome profile the way I do: look at the screen, move the real mouse, type, click , without turning Chrome into an automation browser. It is a Rust MCP&#x2F;CLI. A harness (Grok, Codex, Claude Code, OpenCode, etc.) calls tools like observe, click, type, scroll. Observe is a screenshot path plus a small element list (UIA + optional Chrome DOM ids). Click is OS SendInput on a Bézier path, not a Chrome DevTools click. There is no Playwright, no Puppeteer, no remote debugging port. Daily Chrome is launched with no extra flags, or attached if it’s already open. Sites that key on CDP&#x2F;automation flags mostly don’t see that. They can still see injected input (LLMHF_INJECTED). A tiny unpacked Chrome extension can fuse page structure (chr: ids, listing cards) so the model isn’t guessing from pixels. Sideload is manual. Fusion dies if the service worker goes inactive; reload the card. What it is good for: personal research on your own desk. “Find a Camry on cars.com,” read a page, fill a ZIP, dismiss a cookie banner. What it is not: • Not a sandbox. It can click whatever is on screen, including checkout and Easy Apply. • Confirm-before-money is best-effort classification in the binary, not a guarantee. Prompt injection from the screenshot&#x2F;DOM is real; the binary treats that text as untrusted, the model might not. • Not a CAPTCHA solver on daily Chrome. Two visible tries, then it yields and waits for the puzzle to go away. • Windows only. • Install is: build the exe, register a native-messaging host, sideload the extension, point an MCP client at hands mcp. README is the runbook. Missing an API key does not fail the build; do_task is optional. • Logs live under %LOCALAPPDATA%\hands\logs\. The extension asks for &lt;all_urls&gt; so it can map the tab you’re looking at. Repo: https:&#x2F;&#x2F;github.com&#x2F;Ryan-AI-Studios&#x2F;hands (MIT) Happy to answer how observe&#x2F;fusion&#x2F;the fence work. If you try it, Pause&#x2F;Break is the kill switch.

直接发布标题ryan-b@ryan-b打开该层出处 ↗

Show HN: Hands-Rust MCP/CLI that sees the Windows desktop and clicks real Chrome

直接发布摘要ryan-b@ryan-b打开该层出处 ↗

I built Hands because I wanted a coding agent to use this Windows PC and a real Chrome profile the way I do: look at the screen, move the real mouse, type, click , without turning Chrome into an automation browser.<p>It is a Rust MCP&#x2F;CLI. A harness (Grok, Codex, Claude Code, OpenCode, etc.) calls tools like observe, click, type, scroll. Observe is a screenshot path plus a small element list (UIA + optional Chrome DOM ids). Click is OS SendInput on a Bézier path, not a Chrome DevTools click.<p>There is no Playwright, no Puppeteer, no remote debugging port. Daily Chrome is launched with no extra flags, or attached if it’s already open. Sites that key on CDP&#x2F;automation flags mostly don’t see that. They can still see injected input (LLMHF_INJECTED).<p>A tiny unpacked Chrome extension can fuse page structure (chr: ids, listing cards) so the model isn’t guessing from pixels. Sideload is manual. Fusion dies if the service worker goes inactive; reload the card.<p>What it is good for: personal research on your own desk. “Find a Camry on cars.com,” read a page, fill a ZIP, dismiss a cookie banner.<p>What it is not: • Not a sandbox. It can click whatever is on screen, including checkout and Easy Apply. • Confirm-before-money is best-effort classification in the binary, not a guarantee. Prompt injection from the screenshot&#x2F;DOM is real; the binary treats that text as untrusted, the model might not. • Not a CAPTCHA solver on daily Chrome. Two visible tries, then it yields and waits for the puzzle to go away. • Windows only. • Install is: build the exe, register a native-messaging host, sideload the extension, point an MCP client at hands mcp. README is the runbook. Missing an API key does not fail the build; do_task is optional. • Logs live under %LOCALAPPDATA%\hands\logs\. The extension asks for &lt;all_urls&gt; so it can map the tab you’re looking at.<p>Repo: <a href="https:&#x2F;&#x2F;github.com&#x2F;Ryan-AI-Studios&#x2F;hands" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;Ryan-AI-Studios&#x2F;hands</a> (MIT)<p>Happy to answer how observe&#x2F;fusion&#x2F;the fence work. If you try it, Pause&#x2F;Break is the kill switch.

来源
Show HN · show-hn
证据角色
project_and_comment_discovery
时间状态
known
用户判决
未判
查看该来源原文raw/show-hn.json49bb8e1c9d5762ce8e8265225b216dc54774ac5ad8679deb289465edb77e1e1e
Cluster IDevt_4bf87bae4fc7279cb7c4d8b2精确去重依据canonical_url事件状态未判