--- title: "把 Windows 桌面控制接进 4 款 AI Agent:Hermes、OpenCode、Claw 与 Claude 的实战架构" description: "详解如何为 Hermes Agent、OpenCode、Claw Code 与 Claude Code 统一接入 windows-mcp 桌面自动化服务,实现零配置漂移。" pubDate: 2025-12-23 updatedDate: 2026-10-25 category: ai tags: ["windows", "mcp", "ai-agents", "hermes", "opencode", "claw-code"] ogImage: /og/zh-plugging-windows-desktop-control-into-four-ai-agents.jpg banner: /banners/plugging-windows-desktop-control-into-four-ai-agents.jpg draft: false dynamicCta: true --- 在多 Agent 协同的日常开发体系中,针对不同场景调度专用 Agent 已成为常态。在我管理的这台 Windows 工作站上,常驻着 4 款不同的 AI 代码助手: - **Hermes Agent**:Nous Research 开发的主力 Agent,具备强大的多模态调度与终端工具链。 - **OpenCode**:自带 TUI 界面的开源多模型编程 Agent。 - **Claw Code**:基于 Rust 重写的 Claude Code 纯净分支(`claw.exe`)。 - **Claude Code**:Anthropic 官方的代码助手。 虽然它们在编写代码、调用终端命令和修改文件上表现出色,但当面对没有 REST API 也没有 CLI 接口的老旧 Windows 客户端、系统级原生文件对话框或桌面弹窗时,它们默认都无法直接操作。 开源的 `windows-mcp` 正好填补了这一空白,它通过 Model Context Protocol 暴露了 Windows 原生 UIAutomation、鼠标键盘模拟以及窗口管理工具。以下是我如何在 4 个 Agent 客户端中统一接入并避免配置漂移的完整实录。 --- ## Python 3.14+ 运行基线 `windows-mcp` 有一个明确的硬性环境要求:**必须使用 Python 3.14+**。在 Windows 机器上手工安装多版本 Python 并维护软链接极易发生环境变量冲突。 最稳妥的方案是借助 `uv` 的瞬态执行器 `uvx`。各个 Agent 统一通过以下命令启动: ```bash uvx windows-mcp serve ``` `uvx` 会按需拉取隔离环境、预装 PyWin32 与 Pydantic 依赖,通过标准输入输出(`stdio`)管道与 Agent 进程通信,完全不污染系统的全局 Python 环境。 --- ## 1. Hermes Agent 接入 Hermes 内置原生 MCP 客户端,配置收敛在 `~/.hermes/config.yaml` 中。 可以直接使用 Hermes CLI 的工具发现命令一键注册: ```bash printf 'y\n' | hermes mcp add windows-mcp --command uvx \ --env WINDOWS_MCP_CONTROL=false WINDOWS_MCP_SCREENSHOT_SCALE=0.5 WINDOWS_MCP_DISABLE_FLASH=1 WINDOWS_MCP_EXCLUDE_PROCESSES=Code.exe,Cursor.exe ANONYMIZED_TELEMETRY=false \ --args windows-mcp serve --exclude-tools PowerShell,Registry ``` 该命令会自动向 `~/.hermes/config.yaml` 写入如下规范结构: ```yaml mcp_servers: windows-mcp: command: uvx args: - windows-mcp - serve - --exclude-tools - PowerShell,Registry env: WINDOWS_MCP_CONTROL: "false" WINDOWS_MCP_SCREENSHOT_SCALE: "0.5" WINDOWS_MCP_DISABLE_FLASH: "1" WINDOWS_MCP_EXCLUDE_PROCESSES: Code.exe,Cursor.exe ANONYMIZED_TELEMETRY: "false" ``` 验证连接: ```bash $ hermes mcp list MCP Servers: Name Transport Tools Status ──────────────── ────────────────────── ──────── ────────── windows-mcp uvx windows-mcp serve all ✓ enabled ``` --- ## 2. OpenCode 接入 OpenCode 统一读取 `~/.config/opencode/opencode.jsonc` 配置文件。 在根节点的 `"mcp"` 对象中追加 `windows-mcp` 本地服务配置: ```jsonc { "$schema": "https://opencode.ai/config.json", "mcp": { "windows-mcp": { "type": "local", "command": ["uvx", "windows-mcp", "serve", "--exclude-tools", "PowerShell,Registry"], "enabled": true, "environment": { "WINDOWS_MCP_CONTROL": "false", "WINDOWS_MCP_SCREENSHOT_SCALE": "0.5", "WINDOWS_MCP_DISABLE_FLASH": "1", "WINDOWS_MCP_EXCLUDE_PROCESSES": "Code.exe,Cursor.exe", "ANONYMIZED_TELEMETRY": "false" } } } } ``` 验证 OpenCode 连接状态: ```bash $ opencode mcp list ┌ MCP Servers │ ● ✓ windows-mcp connected │ uvx windows-mcp serve --exclude-tools PowerShell,Registry │ └ 1 server(s) ``` --- ## 3. Claw Code (claw.exe) 接入 Claw Code(v0.1.7)支持在项目目录的 `.claw/settings.json` 或用户主目录的 `~/.claw/settings.json` 中配置 MCP: ```json { "mcpServers": { "windows-mcp": { "command": "uvx", "args": [ "windows-mcp", "serve", "--exclude-tools", "PowerShell,Registry" ], "env": { "WINDOWS_MCP_CONTROL": "false", "WINDOWS_MCP_SCREENSHOT_SCALE": "0.5", "WINDOWS_MCP_DISABLE_FLASH": "1", "WINDOWS_MCP_EXCLUDE_PROCESSES": "Code.exe,Cursor.exe", "ANONYMIZED_TELEMETRY": "false" } } } } ``` 在终端中验证 Claw Code 状态: ```bash $ claw mcp MCP Working directory C:\Users\workstation Configured servers 1 Total entries 1 Invalid entries 0 windows-mcp stdio user uvx windows-mcp serve --exclude-tools PowerShell,Registry ``` --- ## 4. Claude Code 接入 Claude Code 的全局配置文件为 `~/.claude.json`,结构与 Claw 完全兼容。直接将上述 `windows-mcp` 块镜像写入 `~/.claude.json` 即可: ```json { "mcpServers": { "windows-mcp": { "command": "uvx", "args": ["windows-mcp", "serve", "--exclude-tools", "PowerShell,Registry"], "env": { "WINDOWS_MCP_CONTROL": "false", "WINDOWS_MCP_SCREENSHOT_SCALE": "0.5", "WINDOWS_MCP_DISABLE_FLASH": "1", "WINDOWS_MCP_EXCLUDE_PROCESSES": "Code.exe,Cursor.exe", "ANONYMIZED_TELEMETRY": "false" } } } } ``` --- ## 端到端实跑验收 在完成 4 处配置写入后,我编写了一段 Python 探针脚本,通过标准 `mcp` 客户端对真实工具进行了全链路测试: 1. **`DisplayInventory`**:准确识别出本机双屏幕布局(1080p 主屏 + 1440p 扩展屏,虚拟桌面边界为 `left: -313, top: -1440, right: 2247, bottom: 1080`)。 2. **`Screenshot`**:成功完成按 0.5 比例下采样的屏幕截图捕获,并如实返回了物理鼠标位置(`1318, -714`)。 3. **`Notification`**:在 Windows 11 操作中心成功弹出发起一条原生 Toast 提示。 通过保持命令参数与环境变量在 4 款 Agent 之间的一致对齐,无论当前在哪一个终端或界面中工作,当代码与命令行无法触达原生桌面软件时,Agent 都能随时调起标准的桌面自动化工具。