Poke Gate
Let your Poke AI assistant access your machine.
A community project — not affiliated with Poke or The Interaction Company.
______________________________________________________________________
在Mac上运行Poke Gate,然后从iMessage、Telegram或SMS发送Poke消息,以在您的机器上运行命令、读取文件、截图等。
安装
家酿 (推荐)
brew install f/tap/poke-gate通过npx安装
如果你安装了Node.js,你可以用一个命令下载并安装macOS应用程序:
npx poke-gate download-macos这将从GitHub Release下载最新的DMG,并将应用程序安装到 /Applications,并自动清除隔离标志。
没有Node.js? 先安装:
# Option 1: Homebrew
brew install node
# Option 2: Download from https://nodejs.org手动下载
下载最新 Poke.macOS。闸门.dmg 从 发布,打开它,然后拖动到“应用程序”。由于该应用程序未经过公证,您可能需要运行:
xattr -cr /Applications/Poke\ macOS\ Gate.app仅限CLI (不需要macOS应用程序)
如果你只想在没有菜单栏应用程序的情况下从终端运行poke-gate:
npx poke-gate设置
- 从菜单栏打开Poke Gate
- 这 设置视图 指导您选择访问模式和授予辅助功能权限
- 在提示时使用Poke OAuth登录——浏览器窗口会自动打开
该应用程序会自动连接,并在准备就绪时显示一个绿点。
运作原理
flowchart TD
A["You message Poke\nfrom iMessage / Telegram / SMS"] --> B["Poke Agent"]
B --> C["Agent calls MCP tool"]
C --> D["MCP Tunnel (WebSocket)"]
D --> E["Poke Gate on your Mac"]
E --> F["Runs command / reads file / takes screenshot"]
F --> D
D --> B
B --> APoke Gate运行一个本地MCP服务器,并将其隧道传输到Poke的云端。当你向Poke询问需要你的机器的东西时,代理会调用工具,Poke Gate会在本地执行它们,结果会反馈到你的聊天中。
工具
| 工具 | 它做什么 |
|---|---|
run_command | 执行任何shell命令(ls、git、brew、python、curl……) |
read_file | 读取文本文件 |
read_image | 读取图像文件并将其作为base64返回 |
write_file | 将内容写入文件 |
list_directory | 列出文件和目录 |
system_info | 操作系统、主机名、架构、正常运行时间、内存 |
take_screenshot | 捕获屏幕(需要屏幕录制权限) |
示例
从iMessage或Telegram,问Poke:
- “3000端口上运行的是什么?”
- “显示我项目中最后5个git提交”
- “我还有多少磁盘空间?”
- “阅读我的~/.zshrc并提出改进建议”
- “截取我的屏幕截图”
- “在我的桌面上创建一个名为notes.txt的文件”
macOS应用程序
原生SwiftUI菜单栏应用程序管理一切:
- 首次运行设置 --引导入职人员选择访问模式并授予无障碍权限
- 状态 --连接时为绿点,连接时为黄色,错误时为红色
- 个性化 --显示“已连接到您的Poke,\[姓名\]”
- 访问模式 --从“设置”或弹出窗口在“完整”、“有限”和“沙盒”之间切换
- 可访问性优先 --带有实时状态更新的辅助功能权限提示(自动化所需)
- 自动启动 --如果通过OAuth登录,则在启动时连接
- 自动重启 --如果连接中断,则自动重新连接
- 日志 --查看带有沙盒状态的实时工具调用
- 关于 --从应用程序包中动态提取的版本
该应用程序仅在菜单栏中运行(没有Dock图标)。退出是阻止它的唯一方法。
从源头构建
需要macOS 15+和Xcode 26+。
git clone https://github.com/f/poke-gate.git
cd poke-gate/clients/Poke\ macOS\ Gate
open Poke\ macOS\ Gate.xcodeproj击打 跑 在Xcode中,或从命令行构建:
./build.shCLI使用情况
CLI需要 18或更晚。如果没有,请通过安装 brew install node 或从以下网址下载 .
启动闸门:
npx poke-gate首次运行时,Poke OAuth会在您的浏览器中打开。添加 --verbose 实时查看工具调用:
npx poke-gate --verbose使用设置访问模式 --mode:
npx poke-gate --mode limited
npx poke-gate --mode sandbox安装或更新macOS应用程序:
npx poke-gate download-macos配置存储在 ~/.config/poke-gate/config.json.
代理
代理是在后台自动运行的计划脚本。他们住在 ~/.config/poke-gate/agents/ 并遵循一个简单的命名约定:
..js| 文件 | 运行 |
|---|---|
beeper.1h.js | 每小时 |
backup.2h.js | 每2小时 |
health.10m.js | 每10分钟 |
cleanup.30m.js | 每30分钟 |
间隔: Nm (分钟)或 Nh (小时)。最少10分钟。
安装代理
从存储库下载社区代理:
npx poke-gate agent get beeper此下载 beeper.1h.js 和 .env.beeper 到 ~/.config/poke-gate/agents/。使用您的凭据编辑env文件并对其进行测试:
nano ~/.config/poke-gate/agents/.env.beeper
npx poke-gate run-agent beeper每个代理的环境变量文件
每个代理都可以有一个 .env. 机密文件:
~/.config/poke-gate/agents/.env.beeperBEEPER_TOKEN=your_token_here变量会自动注入代理进程。
代理前台
每个代理文件都以JSDoc样式的frontmatter块开头:
/**
* @agent beeper
* @name Beeper Message Digest
* @description Fetches messages from the last hour and sends a summary to Poke.
* @interval 1h
* @env BEEPER_TOKEN - Beeper Desktop local API token
* @author f
*/创建自己的代理
代理只是一个使用Node.JS运行的JS文件。它可以访问:
process.env--变量来自.env.poke包装--import { Poke, getToken } from "poke"- 全局安装或通过npx安装的任何npm包
/**
* @agent my-agent
* @name My Custom Agent
* @description Does something useful every 30 minutes.
* @interval 30m
*/
import { Poke, getToken } from "poke";
const poke = new Poke({ apiKey: getToken() });
await poke.sendMessage("Hello from my agent!");另存为 ~/.config/poke-gate/agents/my-agent.30m.js 当插门连接时,它会自动运行。
代理在poke-gate连接时开始运行,并在启动时立即运行一次。
访问模式
Poke Gate支持三种访问模式,可以控制您的代理可以做什么:
| 模式 | 描述 |
|---|---|
| 满的 (默认) | 所有可用工具无需批准。代理可以直接运行命令、编写文件和截图。 |
| 有限的 | 只读工具加上一组精心策划的安全命令(ls, cat, grep, curl等等)。 write_file 和 take_screenshot 被禁用。 |
| 沙盒 | 比Limited更广泛的命令支持,但写入仅限于 ~/Downloads 和 /tmp 通过macOS sandbox-exec. |
通过CLI标志、环境变量或macOS应用程序设置设置模式:
npx poke-gate --mode sandbox
# or
POKE_GATE_PERMISSION_MODE=limited npx poke-gate安全
在完全模式下,Poke Gate授予您的Poke代理完全的shell访问权限。 这意味着:
- 任何命令都可以在用户的权限下运行
- 文件可以在用户有权访问的任何地方读写
- 有风险的工具在执行前需要在聊天中获得批准
- 只有你的Poke代理(通过Poke OAuth认证)才能到达隧道
仅在您信任的机器和网络上运行Poke Gate。使用 limited 或 sandbox 如果你想要更严格的限制,请选择模式。
学分
许可证
麻省理工学院
