SuperAPI AI 工具集

bot-process-control

部署与运维

查看项目

更新于 10-16 00:21

技能介绍

用途:说明 Gmail Commander 机器人与定时摘要进程运行在哪里、如何判断其健康状况,以及哪些内容绝不应在工作站上启动。

运行位置:两个进程都不在工作站上运行,而是运行于常开 Mac mini 上的私有 Restate 租户,从私有仓库部署。服务包括 GmailBot(持有 Telegram getUpdates 链,一条持久自重新武装的轮询并分发更新)、GmailBotChat(按聊天顺序通过插件 buildBot() 构建的 grammY 机器人处理单条更新)、GmailDigest(每日多次向 Telegram 发送定时摘要,自带实现)与 GmailAuth(按需用部署密钥库中的刷新令牌铸造 Gmail 访问令牌)。启动、停止、重启、部署、读日志、轮换密钥与 OAuth 重新授权均通过该私有仓库的 runbook 完成;本公开技能不包含主机名、部署命令或凭据路径。若无该仓库访问权限,应停下并询问操作者。笔记本 launchd 作业 com.terryli.gmail-commander-bot 与 com.terryli.gmail-commander-digest 已于 2026-09-24 退役,不要重建其 plist、启动脚本或 env 文件。

强制预检:第一步,确认本地没有运行任何相关进程(只读),依次检查本地 launchd 作业、plist 与独立机器人进程,预期均为 none;若发现任何一项,应报告操作者,不要自行加载、卸载或杀死,因为本地活跃轮询器会与租户竞争同一 bot token。第二步,从用户侧检查已部署机器人:在 Telegram 聊天中发送 /status,若回复含 uptime 和计数器说明 GmailBotChat 正在处理更新;一分钟内无回复说明轮询链或租户宕机,按 runbook 升级处理。

切勿启动第二个轮询器:scripts/bot.ts 仍有独立长轮询 main(),由 import.meta.main 保护,导入 buildBot() 不会轮询。不要用生产 bot token 运行它。Telegram 每个 token 只允许一个 getUpdates 消费者,第二个会导致 409 Conflict,两个轮询器都不可靠,租户发现冲突时会通知操作者。独立入口供其他安装使用各自的 bot token,它在 /tmp/gmail-commander-bot.pid 取 PID 锁并读取插件 CLAUDE.md 列出的变量;本插件不再为其提供进程监督模板。

Telegram 命令:/inbox 显示最近收件箱邮件;/search 用 Gmail 查询语法搜索邮件;/read 按 ID 读取邮件;/compose 撰写新邮件;/reply 回复邮件;/abort 取消当前撰写或回复操作(任意步骤可用);/drafts 列出草稿;/digest 立即分诊最近 N 小时(默认 6);/status 查看机器人状态与统计;/help 显示全部命令。

OAuth 失败:当 Google 拒绝部署刷新令牌(invalid_grant)时,GmailAuth 会通知操作者。恢复需在工作站浏览器同意并在部署中更新密钥,详见私有 runbook;CLI 自身在工作站的 invalid_grant 恢复涉及不同令牌,见 gmail-access。

变更后清单:YAML frontmatter 有效(description 中无冒号)、触发关键词为最新、路径模式使用 $HOME 而非硬编码路径、未重新引入 launchd 模板/主机名/凭据路径、插件 CLAUDE.md 中 buildBot() 契约仍与 scripts/bot.ts 一致。

限制:本技能为公开版本,刻意不携带主机名、部署命令或凭据路径,无私有仓库访问权限时无法完成启动、部署与密钥轮换等操作。