分享一个基于autohotkey的gpt操作windows的pi extension

仅限gpt 5.4 5.5 vibe coding了一个 pi extension,让模型可以通过autohotkey操作windows, pi-computer-use-ahk.zip (110.3 KB) 思路来自于 Computer use | OpenAI API 里面有个Option 2:...
分享一个基于autohotkey的gpt操作windows的pi extension
分享一个基于autohotkey的gpt操作windows的pi extension

仅限gpt 5.4 5.5

vibe coding了一个 pi extension,让模型可以通过autohotkey操作windows,
pi-computer-use-ahk.zip (110.3 KB)

思路来自于Computer use | OpenAI API
里面有个Option 2: Use a custom tool or harness

试下来有点出乎我的意料,原本以为没法用的 :joy:,当然也没那么有用

项目目录里面有:

  • README.md:使用说明
  • 关键设计决策.txt:主要设计取舍
  • index.ts / actions.ts / screenshot.ts:pi extension 代码
  • test-computer-use.js: 测试脚本
  • computer-use.ahk:AutoHotkey 控制鼠标键盘
  • screenshot-helper/ 以及 bin/screenshot-helper:.NET 截图 helper 源码及exe
  • build-screenshot-helper.ps1:构建截图 helper
  • install-extension.ps1:复制到 pi extension 目录

大概思路

这个扩展注册了一个 computer_use 工具,模型可以调用它执行一组 UI 动作:

  • screenshot
  • click
  • double_click
  • move
  • scroll
  • type
  • keypress
  • drag
  • wait

整体流程是:

  1. 模型先请求截图;
  2. 扩展返回当前桌面截图;
  3. 模型根据截图决定点击、输入、快捷键等动作;
  4. AHK 执行动作;
  5. 动作后再截图返回给模型;
  6. 如此循环。

进程与管道设计

底层有两个常驻子进程:

  1. AutoHotkey v1 进程

    • 负责鼠标、键盘、拖拽、滚动、粘贴输入。
    • pi extension 在 session 启动时 spawn 一次。
    • 后续每个动作通过 stdin 发命令给 AHK。
    • AHK 执行完后通过 stdout 返回结果。
  2. .NET 10 screenshot helper

    • 负责截图。
    • 同样是常驻进程。
    • 也是通过 stdin/stdout 管道通信。
    • 避免每次截图都 spawn PowerShell。

管道协议很简单,大概是这种形式:

stdin:
id|action|param1|param2|...

stdout:
id|ok
id|error|message

例如:

1|click|500|300
2|keypress|Ctrl|Shift|Esc
3|screenshot

截图 helper 返回时大概是:

id|ok|width|height|base64_png

这样做的好处是:

  • AHK 和截图 helper 都是常驻进程;
  • 不需要每次工具调用都重新 spawn;
  • 延迟低;
  • 协议简单;
  • 出错时可以根据 id 对应 pending command;
  • session 结束时统一发 exit 关闭。

如果 .NET helper 没构建,截图会回退到 PowerShell,但会慢一些。

前置要求

需要提前安装:

  1. pi coding agent
  2. .NET 10
  3. AutoHotkey v1

注意:
AutoHotkey 脚本是按 v1 写的,我本机测试用的是 v1。
v2 没测试过,不保证可用。

.NET helper 目标框架是:

net10.0-windows

所以需要本机有 .NET 10 运行环境。

启用方式

扩展默认是关闭的,不会自动注册tool。

需要设置环境变量:

$env:CUA_ENABLED = "1"
pi

如果 pi 已经启动,需要重启 pi。

安装方式

把目录解压后,在项目目录运行install-extension.ps1

install-extension.ps1 会复制文件到:

C:\Users\<你的用户名>\.pi\agent\extensions\computer-use-ahk

当然也可以自己手动复制过去

然后启动 pi

AutoHotkey 路径

默认会检测常见路径,例如:

D:/Program Files/AutoHotkey/AutoHotkeyU64.exe
C:/Program Files/AutoHotkey/AutoHotkeyU64.exe

也会检查 PATH。

如果你的 AHK 不在默认位置,可以设置:

$env:AUTOHOTKEY_EXE = "D:\Program Files\AutoHotkey\AutoHotkeyU64.exe"

安全方面

没有在tool prompt里面设置安全护栏

其他说明

这不是OpenAI 官方那种内置 Computer Use

更详细的设计可以看目录里的:

README.md
关键设计决策.txt

欢迎大家看看设计思路,也欢迎提建议。

1 个帖子 - 1 位参与者

阅读完整话题

来源: LinuxDo 最新话题查看原文