本地 AI 助手和 Grok Bot 互相发消息
非官方教程。核对日期:2026-10-17。这篇是进阶内容:安装和运行需要终端。不会写代码的话,读到对比表就可以停。后面的命令来自 Cursor 的 BDK 文档,本站没有在你的电脑上替你跑过。
先分清两件事
官方扩展做的是:你自己电脑上的 BDK Agent,向同一个 Cursor 账号里已经存在的 Grok Bot 发一条问题,并把 Bot 的回复带回当前这场对话。文档写明:用在本地运行时;它是去问另一个 Grok Bot,不会把这个 Agent 搬到 Grok Bot 的云电脑上。Grok Bot agents 指南
官方能做什么
扩展名叫 cursor-grokbot-agents。挂上之后,工具名是:
| 工具 | 官方说明 |
|---|---|
grokbot__ask | 准备一条自带背景的消息,发给点名的 Bot,并等待它交付的回复。回复回到当前 BDK 对话。 |
grokbot__check | Bot 还在忙、ask 等到上限时,用它继续读还没读过的回复。文档要求需要答案时再查,不要紧循环空转。 |
grokbot__interrupt | 停掉这个 Bot 当前这一轮。账号里和该 Bot 的对话还在,之后的 ask 会接着已有记忆。 |
grokbot__list | 列出你配置允许的 Bot,以及这个调用方已经联系过的 Bot。不会列出整个账号里的全部 Bot。 |
消息必须自己写清三件事:谁在问、相关事实、希望回答长什么样。官方原话的意思是:Grok Bot 看不到当前这场 BDK 对话。指南
agents 是名字白名单,不是“这个 Bot 是否已经存在”的检查:
- 不在名单里的名字会被拒绝。
- 名单里的名字如果拼错,第一次使用可能新建一个空的 Bot。 结果里如果出现
created: true,要告诉使用者,并先核对名字,再继续派活。
这一条写在官方指南里。早先有中文报道把它当成未经核对的说法;以这份指南为准,它是官方写明的行为,不是社区猜测。
多个已登录的调用方各自有联系名单和阅读位置,但共用同一个账号里的 Bot 记忆。一把共享令牌或匿名主机,还会把调用方合成同一个身份。文档写明:check 和 interrupt 直接作用在 Bot 的对话上,所以只把扩展暴露给可以阅读或停止这些对话的调用方。
官方指南没有写“只有 ask 会弹出审批卡片,check 和 interrupt 不弹”。本站不把这句话写进步骤。
和 Webhook 比:一个只负责叫醒,一个能把回复拿回来
| Webhook 触发 Routine | BDK 扩展 | |
|---|---|---|
| 官方文档 | Routines 帮助 | grokbot-agents 指南 |
| 方向 | 外面的程序 POST 到 Routine 的地址,把 JSON 正文交给 Bot | 本地 BDK Agent 发问,并等待交付的回复 |
| 你怎么知道做完了 | HTTP 200 只表示 Grok Bot 接受了调用并开始跑,不表示指令已经做完。结果在 Bot 的聊天里。其他响应表示没有开始 | 回复回到当前这场 BDK 对话 |
| 适合 | 手机快捷指令、脚本在某件事发生时叫醒 Bot | 需要把 Bot 的回答拿回来继续用 |
Webhook 的地址和密钥在桌面端该 Routine 的 Webhook 一节:POST to 是网址,key 放在 Authorization: Bearer 里。Routine 暂停时,或密钥不是当前这把时,调用不会开始。Routines 帮助
跟着做(进阶,需要终端)
官方要求用 Node.js 22.13 或更新版本。文档写明不要用 Bun。BDK CLI、快速开始
- 安装命令行工具(官方快速开始里的命令):
npm install -g @cursor/bdk- 用官方模板建一个项目。模板页的例子是:
bdk init ./grokbot-consultant --template grokbot-agents也可以在命令里直接写 Bot 名字,避免交互提问。名字必须和 Grok Bot App 里显示的一致:
bdk init ./grokbot-consultant --template grokbot-agents \
--var agents="Plan Keeper,Chief of Staff"指南页另外给了一个目录名不同的例子:bdk init ./grokbot --template grokbot-agents。目录名可以自己定,模板名是 grokbot-agents。模板说明
- 进入目录,登录、检查、启动:
cd grokbot-consultant
bdk login
bdk validate
bdk dev登录用的是这台机器上的 Cursor 凭据(bdk login,或文档列出的 CURSOR_API_KEY、CURSOR_API_KEY_FILE、CURSOR_SERVICE_ACCOUNT_KEY)。不要把密钥写进仓库,也不要贴进聊天。
- 打开 playground,让 Agent 去问你刚才写入白名单的那个名字。允许联系谁,改
bot/extensions/grokbot.ts。什么时候该问,改bot/instructions.md。模板说明
若 ask 发现这个 Bot 正忙着上一则消息,它不会把新消息发出去。已经联系过的 Bot,改用 check 或 interrupt。第一次联系时,先等 Grok Bot App 里那一轮结束,再问。
消息要写成 Bot 单独也能看懂
下面这段结构来自官方指南里的例子(野餐改期)。你换成自己的事实即可。重点是:不依赖“它看得到我这边的对话”。
Avery 在决定要不要改周六的野餐。预报是下午 1 点到 4 点有 70% 的雨。
请在“保持”和“改期”里选一个,给一个理由,并写出最合适的替补时间。关于 Claude Code / Codex
官方的指南和模板只写 BDK Agent。文档里没有 “Claude Code” 或 “Codex”。
社区帖子把这件事说成“装上扩展之后,本机的 Claude Code、Codex 可以和 Grok Bot 互发消息”。本站 2026-10-17 打开对应的 X 帖子时被拒绝(403),没有核对帖子正文,也不转述别人声称的 @grok 原话。
请把它当成社区说法,未经本站核对:那不是这两份官方文档里的功能。自己再搭一层桥接,文档没有写安全边界,风险自己承担。
同一来源里还有人说 Webhook 一直返回 400。官方帮助只写了:200 表示已开始跑,其他响应表示没开始;另外有一个已知问题是 Routine 可能报 “Automation run rate limit exceeded”,失败不会自动重试。帮助页没有把 400 写成已知故障。本站没有复现,所以不把它写成产品缺陷。
我们的建议
- 白名单里只写你真的要用的 Bot 全名,和 App 里一个字不差。看到
created: true就停下来对名字。 - 只在你信任的程序里启用
check和interrupt,因为它们能读对话、能打断当前这一轮,而且多个调用方共享 Bot 的记忆。 - 只想“有事叫醒 Bot、结果留在聊天里”,用 Webhook 就够,不必装 BDK。
- 需要把回答拿回本地程序,再用这个扩展。
还没法证实的
- “只有 ask 会弹审批”:官方指南没有这句。
- Claude Code、Codex 与 Grok Bot 原生互通:官方文档没有这句;相关帖子本站未能打开。
- Webhook 返回 400 是否为官方已知问题:帮助页没有这样写,本站没有复现。
- 中文报道里的安装截图和按钮名字:以 Cursor 文档里的命令为准。
可直接复制的提示词
这是发给本地 BDK Agent 的,不是发给 Grok Bot 的。把名字换成你的白名单。
请用 grokbot 扩展询问「值班助理」。
不要假设它看得到我们这段对话。
消息里写上:谁在问、今天已经确认的三件事实、希望它用哪三个小标题回答。
如果返回 created: true,停下来告诉我新名字,不要继续派活。
如果它还在忙,不要连着空转查询;等我让你再 check。常见问题
Q:这是把 Grok Bot 装到我电脑上吗?
A:不是。文档写的是本地 BDK Agent 去问云端那个 Bot,Bot 仍用它自己的对话、记忆和工具。
Q:名字写错会怎样?
A:不在白名单里会被拒绝。白名单里的名字拼错,可能新建一个空 Bot(官方指南)。先看 created: true。
Q:Webhook 返回 200,为什么聊天里还没有结果?
A:200 只表示开始跑。去 Bot 的聊天里看结果。Routines 帮助
参考来源(核验 2026-10-17)
- https://cursor.com/docs/bdk/guides/grokbot-agents
- https://cursor.com/docs/bdk/templates/grokbot-agents
- https://cursor.com/docs/bdk/reference/cli
- https://cursor.com/docs/bdk/quickstart
- https://cursor.com/help/grok-bot/routines