feat(posts): publish 4-part windows-mcp series across historical dates with full EN+ZH assets
Deploy / build (push) Successful in 22s
Deploy / build (push) Successful in 22s
This commit is contained in:
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 都能随时调起标准的桌面自动化工具。
|
||||
Reference in new issue
Block a user