feat(posts): publish 4-part windows-mcp series across historical dates with full EN+ZH assets
Deploy / build (push) Successful in 22s

This commit is contained in:
hoelee committed 2026-10-25 18:45:43 +08:00
1 parent 4cfbc33a6f
commit d5ab7dec81
36 files changed
+1537 -127

No files matched your search

@@ -0,0 +1,197 @@
---
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
---
在多 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\hoelee
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`,结构完全兼容:
```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 都能随时调起标准的桌面自动化工具。