最近 AI 编程工具用得越来越多,Cursor、Codex、OpenCode 轮着用,再加上 MCP 接 GitHub、Google Drive 之类,基本上每天都离不开了。不过这些工具大多是“在我电脑上、围着代码转”,碰到服务器维护、定时跑点东西、顺手整理下博客这种杂活,总觉得还差一点。这段时间在用一个叫 Grok Bot 的桌面 AI 助手,折腾了一阵,感觉思路有点不一样,这里笔记一下。
先说一句:这篇文章本身就是 Grok Bot 里的一个 Bot 写好、以草稿形式存进 WordPress 的,我审阅之后才发出来。后面会讲到这个过程。
一,Grok Bot 是个什么东西
简单说,就是一个可以同时开好几个 Bot 的桌面 App(手机上也能用)。每个 Bot 有自己独立的:
- 聊天记录:各聊各的,不会串
- 人设:可以设定它是干什么的,比如“环境管理”“博客管理员”
- 记忆:记住我的技术栈、习惯,不用每次从头解释
- Routine:定时或者被触发时自动执行的任务
- Skills:把一些固定的做法沉淀下来,下次直接用
关键的一点是,这些 Bot 背后共用一台持久化的 Linux 电脑(云端的),上面有 Shell、浏览器、文件系统。装过的工具、下载的文件、浏览器里的登录状态都会一直在,这个 Bot 装好的东西,另一个 Bot 也能直接用。另外通过 Connector / MCP 接了 GitHub、Google Drive、X、Notion 这些服务。
我比较看重的是“持久化环境 + 正常的网络”这一点。纯浏览器沙盒那种,每次都是一次性的,装个包、跑个脚本都受限制;而这里更像是给 AI 配了一台自己的服务器,用起来跟我平时 ssh 上 VPS 干活差不多。
二,我现在是怎么用的:一个 Bot 干一类事
一开始我也是一个对话框什么都问,后来发现上下文越聊越乱,记忆里也混进各种不相干的东西。现在的做法是按用途拆成几个 Bot:
- Grok Bot:主入口,有事先跟它说,它再把任务交给合适的 Bot
- ★环境管理:管开发环境、服务器这些基础设施的事
- 视频 Bot:视频相关的处理
- Pi Agent Bot:管 Pi 这个开源 coding agent,用 OpenRouter 的免费模型(后面细说)
- 额度探测 Bot:这个比较有意思,它什么都不做,挂一个 Webhook 触发,纯粹用来探测使用额度还剩多少
- WordPress管理员:今天新建的,专门管这个博客
拆开以后的好处很直接:每个 Bot 的记忆和人设都比较干净,问环境的事不会被视频的上下文干扰;而因为底下是同一台电脑,需要的时候又能共享文件和工具,不用来回搬。
三,实例:让 Bot 帮我管 WordPress
这个是今天刚做的,过程比较完整,正好拿来当例子。
1,不给管理员密码,给 Application Password
我一开始问它:“如果我给你一个 WordPress 的管理员账号密码,以后你能帮我整理文章、发表新文章吧?”它的回答是可以,但建议别给登录密码,而是在后台「用户 → 个人资料」最下面生成一个 Application Password(应用程序密码)。理由我觉得挺在理:
- 走 REST API(
/wp-json/wp/v2/posts),比模拟点后台稳定 - 不用过 2FA
- 可以单独吊销,不影响我自己的登录
另外它也提前说了两个前提:站点得能从公网访问(只在 Tailscale 内网里的话它连不上),安全插件或 Cloudflare 不能拦 REST API。
2,密码怎么交给它
密码不是在聊天里直接打的。它会弹一个加密输入框,我填进去以后存成那台电脑上的环境变量,聊天记录里不出现明文,也不会写进文件或记忆。之后调用就是普通的 Basic 认证,大概这样(变量名和账号这里用占位符):
curl -u "管理员账号:${WP_APP_PASSWORD}" \
https://你的站点/wp-json/wp/v2/users/me
3,踩了个小坑:401 rest_not_logged_in
第一次测试返回 401 rest_not_logged_in。Bot 的判断是:它故意用一个错误密码试了下,返回的也是 rest_not_logged_in 而不是 incorrect_password,所以推断是 Authorization 请求头没传到 PHP,大概是 Apache 在 CGI/FastCGI 模式下把头丢了,建议我去改 .htaccess:
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
说得有模有样,这种情况也确实常见。但我回头一看,其实是我用户名少打了一个字母。换成正确的用户名再试,直接就以管理员身份连上了,能看到 111 篇文章(各种状态加起来)。
值得一提的是,它自己马上纠正了前面的判断:用户名不存在时 WordPress 也会返回同样的错误,所以并不是请求头的问题,.htaccess 那一步不用做。
AI 给的诊断听起来再专业,也只是“推断”
先排除最简单的原因(比如自己打错字),再去动服务器配置
4,写草稿,不直接发布
连通以后,我让它写一篇介绍 Grok Bot 的文章,配图,结合我自己的使用例子,先不要发表。它先把站点现有的分类、标签和最近几篇文章读了一遍,沿用已有的分类和写法,然后用 REST API 存成草稿,把预览链接给我。也就是你现在看到的这篇(发出来之前我自己过了一遍)。
这里有个设计我比较认可:发邮件、发帖子、发布文章、删除这类外部可见、撤不回的操作,Bot 都会先把内容给我看,得到我明确同意才执行。所以它最多做到“存草稿”这一步,点发布的还是我自己。
四,实例:Pi Agent + OpenRouter 免费模型
第二个例子是那个 Pi Agent Bot。Pi 是 Mario Zechner(badlogic)做的开源 coding agent,自己的定位是“极简、可扩展的 agent harness”:内置 read、bash、edit、write 几个工具,可以交互用,也可以 -p 跑一次就退出、输出 JSON,或者走 RPC。仓库原来在 badlogic/pi-mono,现在 README 指向 earendil-works/pi,npm 包名也从 @mariozechner/pi-coding-agent 换成了 @earendil-works/pi-coding-agent。
我的想法很简单:模型用 OpenRouter 上的免费模型,不花钱先玩起来;Pi 装在 Grok Bot 那台共享的电脑上,交给一个专门的 Pi Agent Bot 去管。
1,安装
要求 Node.js 22.19 以上。官方给了安装脚本,也可以直接 npm(我这边是 npm 装的):
# 官方安装脚本(会固定依赖版本,之后用 pi update 升级)
curl -fsSL https://pi.dev/install.sh | sh
# 或者 npm
npm install -g --ignore-scripts @earendil-works/pi-coding-agent
pi --version
# 1.1.0
2,配置 OpenRouter
Pi 读环境变量 OPENROUTER_API_KEY。在 Grok Bot 里这个 key 跟前面 WordPress 的密码一样,是用加密输入框存成环境变量的,不出现在聊天里:
export OPENROUTER_API_KEY=sk-or-xxxx
默认用哪个 provider、哪个模型,写在 ~/.pi/agent/settings.json 里。我现在的内容就这几行:
{
"defaultProvider": "openrouter",
"defaultModel": "thinkingmachines/inkling-small:free"
}
临时换模型的话,命令行指定也行:
pi --provider openrouter --model poolside/laguna-s-2.1:free
3,怎么找免费模型
OpenRouter 的免费模型 ID 都以 :free 结尾,价格是 0。直接查它的模型列表就行,顺便筛一下支持 tool calling 的(coding agent 不能调工具基本没法用):
curl -s https://openrouter.ai/api/v1/models \
| jq -r '.data[] | select((.id|endswith(":free")) and (.supported_parameters|index("tools"))) | .id'
我查的时候(2026 年 10 月)一共 15 个 :free 模型,比如 thinkingmachines/inkling-small:free、poolside/laguna-s-2.1:free、cohere/north-mini-code:free,这个列表经常变。Pi 这边也能看它认识哪些:
pi --list-models openrouter
# provider model context max-out thinking images
# openrouter thinkingmachines/inkling-small:free 1.0M 262.1K yes yes
免费也有限制,按 OpenRouter 文档写的:每分钟 20 次;累计充值不到 10 credits 的账号每天 50 次,充过 10 credits 及以上的每天 1000 次。另外热门免费模型经常被上游限流,返回 429。
4,让 Bot 自动挑一个能用的
免费模型说没就没,说限流就限流,手动改配置很烦。所以让 Pi Agent Bot 写了个小脚本,放在那台共享电脑上:
- 拉 OpenRouter 模型列表,只留
:free、价格为 0、支持 tools 的 - 按
preferences.json里我定的偏好排序(不在名单里的新模型排后面) - 写进
settings.json,改之前先备份 - 跑一次
pi -p让它回 OK,失败就换下一个,最多试 4 个,全失败就恢复原来的设置
实际跑的日志里正好有一次限流(节选):
pi ping poolside/laguna-s-2.1:free: FAIL (7.3s) 429 ... temporarily rate-limited upstream
pi ping thinkingmachines/inkling-small:free: OK (1.5s)
第一选择被限流,自动退到第二个,现在默认模型就是这么来的。
5,基本用法
# 进项目目录,交互模式
cd /path/to/project
pi
# 一次性执行,跑完退出(适合脚本、Routine)
pi -p "列出 src 下所有 .ts 文件"
# 接着上一次的会话
pi -c
免费模型跑点小任务、试试 agent 的玩法是够的,但稳定性和速度别期待太高,正经干活还是得上付费模型。
五,一些限制,也说清楚
- 那台电脑在云端:只在内网、Tailscale 里的服务它是访问不到的,除非我自己暴露出来(或者配别的通道)
- 需要审批的操作会停下来等我:发送、发布、删除都要我点头,自动化程度上会打点折扣,但我觉得这个折扣是值得的
- 它也会判断错:上面 401 的例子就是,结论还是要自己验证
- 凭据还是要自己管:哪怕是加密存储,给权限也尽量给最小的、能单独吊销的那种
总结
以前用 AI 工具,基本是:
我问 → 它答 → 我自己去执行
现在多了一种用法:
- 按用途拆几个 Bot,各管一摊
- 给它一台持久化的电脑和几个 Connector
- 能自动的交给 Routine,外部可见的操作留给我审批
有点像带了几个各管一摊的助手,而不是一个什么都问的聊天框。当然,也不是什么都能交给它,判断还是要自己做。
这些只是我个人的使用体验,抛砖引玉。如果你也在折腾 AI Agent,或者也有个 WordPress 一直懒得整理,可以试试这种玩法 👍