最好的 Windows MCP,其实就在 Codex 上

最好的 Windows MCP,其实就在 Codex 上

先说个结论:我把 Codex 里那套桌面操作能力抠出来做成了 MCP,然后做的第一件事不是写文章,是让我自己的 agent 拿它去干活。干完之后我让它反馈一下使用感受,它说的东西比我预想的有意思。

0. 起因

我一直觉得 Codex 桌面版里藏着一套很好的东西,它能让 AI 真的去操作你的 Windows,看窗口、点按钮、打字、拖拽。问题是这套东西只在 Codex 自己肚子里能用,外面的人碰不到。所以我花了点功夫把它解出来封成了 MCP,这样我的 agent(就是 Claude Code 里那个)就能直接用。解的过程挺折腾,但那是另一篇文章的事,今天想说的不是"我怎么做的",是"它用起来到底怎么样"。

1. 我给它派了个活

我让它做一件真事:把这篇文章写出来,然后发到我的博客上。不是演示,是真发,要用到打开软件、点按钮、填表单、点发布一整套。它做完了。然后我问它:你觉得用起来怎么样?

2. agent 的反馈

下面这些是它自己说的,我基本原样记下来。

它说光标是移过去的,不是跳过去的。这件事对它不只是好看看——它能看见自己的动作,所以能确认自己点对了地方,而不是靠点完之后再截图去验尸。这个是 Codex 本来就有的,我自己用的时候只觉得顺眼,没想到对它来说意味着这个。

它说树是元素级的,不是碎成一片一片的。之前用社区的一个方案,一个按钮上的三个字会被拆成三个节点,读起来又长又碎,还容易点错地方。

它说点击会自动把窗口带到前面,省了它一大堆啰嗦步骤。之前那个方案要它先手动激活窗口,再算坐标,还要处理屏幕缩放,光是把一个按钮按下去就要好几步。

有一句我没料到,它说它反而更敢动手了。因为知道按一下 Esc 就能把我按住,所以它操作起来更放得开。这个也是本来就有:物理 Esc 是硬急停,它一检测到就会中断操作,并且告诉 agent"停手,别再动了"。还有一条,只要我一碰鼠标它就会停,它说这让它不用担心跟我抢电脑,我随时可以插手。

3. 那我这边看起来怎么样

说实话这是我最在意的部分,因为它操作的是我的电脑。

能看出来它在干嘛。 鼠标是一路滑过去的,中间还带一点加速和减速,它停下的时候我能看出它瞄准了哪个按钮。之前那个方案是瞬移的,鼠标"啪"一下就到了别处,我经常不知道刚才那下点在哪了。

它干活的时候,我能看到它在想什么。 这是我给它加的。Codex 原生那套东西有个缺口——它接管我鼠标键盘的时候,Claude Code 的聊天窗被压在后面,我看不见,也没法跟它说话。所以我加了一块常驻的小面板,一直在屏幕边上:它想告诉我什么就往上面丢一条,它干到第几步了底下一行进度,它要问我什么面板上直接弹出来,我点一下、或者打几个字回它。有了这块面板,我才第一次觉得"让它操作我电脑"这件事是在我眼皮底下发生的,而不是黑箱。

它卡住或者要我拿主意的时候,会自己停下来问。 这个是真的有用,中间有一次它问我"目标目录里已经有同名文件了,要覆盖吗",我点了个跳过。如果没有这块面板,它要么得瞎猜,要么只能干等,而我根本不知道它在等。

4. 和我之前用的那个方案比

在把它做出来之前我用的是社区开源的 windows-mcp,能用,但我用着难受。

Codex(现在用的) 社区方案
鼠标 滑过去,看得清轨迹 瞬移,经常不知道点哪了
接管时有没有提示 有覆盖层,还能改颜色文案 什么都没有
读界面的粒度 元素级 碎成一个个字,还占 token
点按钮 自动把窗口带前面 要我管焦点、算缩放
我要紧急停 按 Esc 没有
我碰鼠标时 它自动让开 会跟我抢

最让我受不了的是没提示那一条。它接管鼠标之后屏幕上什么都没有,我不知道它是在干活还是已经卡死了,又不敢碰鼠标,怕把它的操作搞乱。那种感觉很难形容,就是你把自己的电脑交出去了,但没有任何东西告诉你它还好不好。

5. 我补的那块

所以回头看,我做的其实就两件事:一是把它从笼子里放出来,那套能力本来就很好,只是锁在 Codex 里出不来;二是给它开了扇窗,让它在接管我电脑的时候还能跟我说话。

代码在这里:github.com/Bcy2020/codex-cua-mcp,MIT 许可,只支持 Windows。需要你自己去装一份 Codex 桌面版(免费的),脚本会把里面需要的那部分抽出来接上。

顺便说一句,这篇文章就是它自己发上去的,包括新建、填标题、贴正文、点保存。我全程就看着鼠标在屏幕上滑来滑去,然后文章就出现了。