mcpField
B
bot-process-control

bot-process-control

github.com/terrylica云与 DevOps1116 次安装今天更新
代码仓库

关于 bot-process-control

bot-process-control 是面向 Gmail Commander 运维人员的操作技能,说明 Bot 和摘要任务的运行位置、健康检查方式,以及为何不能启动第二个轮询器。

主要功能

  1. 01说明已部署进程的职责
  2. 02操作前检查本地轮询器
  3. 03通过 Telegram /status 检查状态
  4. 04提示避免重复轮询
  5. 05列出可用的 Telegram 命令

适用场景

  1. 01检查已部署 Bot 是否响应
  2. 02避免启动冲突的本地轮询器
  3. 03查找适当的升级处理途径

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/terrylica/cc-skills --skill bot-process-control

安装后在 Claude Code 中输入/bot-process-control确认已加载。

附带文件references/evolution-log.md

详细介绍

Bot 进程控制

Gmail Commander bot 和定时摘要运行在哪里、如何确认它们运行正常,以及绝不能在工作站上启动什么。

自我演进技能:此技能会在使用过程中不断改进。如果说明有误、参数发生偏移,或需要采用变通方案,请立即修复此文件,不要拖延。仅针对真实且可复现的问题进行更新。

进程运行位置

这两个进程都不在工作站上运行。它们都运行在一台始终开机的 Mac mini 上的私有 Restate 租户中,并从私有仓库部署:

服务角色
GmailBot管理 Telegram getUpdates 链(一个持久且会自行重新挂起的轮询),并分发每条更新
GmailBotChat使用此插件的 buildBot() 构建的 grammY bot,按每个聊天的顺序处理一条更新
GmailDigest每天多次向 Telegram 发送定时邮件摘要(由其自身实现,不属于此插件)
GmailAuth根据部署密钥存储中的刷新令牌,按需生成 Gmail 访问令牌

启动、停止、重启、部署、读取日志、轮换密钥和重新进行 OAuth 授权,全部通过该仓库的运行手册完成。 此公开技能有意不包含主机名、部署命令或凭据路径。如果你无法访问该仓库,请停止操作并询问操作员。

笔记本电脑上的 launchd 作业 com.example.gmail-commander-bot 和 com.example.gmail-commander-digest 已于 2026-09-24 停用。不要重新创建它们的 plist、启动脚本或环境文件。

强制预检

步骤 1:确认本地没有进程在运行(只读)
echo "=== Local gmail-commander launchd jobs (expected: none) ==="
launchctl list | grep -F gmail-commander || echo "none"

echo ""
echo "=== Local gmail-commander plists (expected: none) ==="
ls ~/Library/LaunchAgents 2>/dev/null | grep -F gmail-commander || echo "none"

echo ""
echo "=== Local standalone bot process (expected: none) ==="
pgrep -fl "gmail-commander/scripts/bot.ts" || echo "none"

如果其中任何一项发现了相关内容,请报告给操作员,不要自行加载、卸载或终止进程:本地轮询器正在使用同一个 bot 令牌与租户竞争。

步骤 2:从用户侧检查已部署的 bot

唯一无需部署访问权限的检查方式:在 Telegram 聊天中向 bot 发送 /status。如果它回复了运行时间和计数器,就说明 GmailBotChat 正在处理更新。如果一分钟内没有回复,则说明轮询链或租户已停止运行——请通过运行手册升级处理。

绝不要启动第二个轮询器

scripts/bot.ts 仍包含独立的长轮询 main(),并由 import.meta.main 保护,因此导入 buildBot() 时绝不会启动轮询。不要使用生产 bot 令牌运行它。 Telegram 每个令牌只允许一个 getUpdates 消费者;第二个消费者会导致 Telegram 返回 409 Conflict,使两个轮询器都变得不可靠,并且租户检测到此冲突时会通知操作员。

此独立入口供此公开插件的其他安装使用,并使用各自的 bot 令牌。它会在 /tmp/gmail-commander-bot.pid 获取 PID 锁,并读取 插件 CLAUDE.md 中列出的变量。此插件不再附带用于它的进程监督器模板。

Telegram 命令

命令说明
/inbox显示最近的收件箱邮件
/search搜索邮件(Gmail 查询语法)
/read按 ID 读取邮件
/compose撰写新邮件
/reply回复邮件
/abort取消当前撰写或回复操作
/drafts列出草稿邮件
/digest立即整理最近 N 小时的邮件(默认为 6 小时)
/statusBot 状态和统计信息
/help显示所有命令

注意:/abort 会取消任何正在进行的撰写或回复会话。在流程的任何步骤都有效。

部署中的 OAuth 故障

当 Google 拒绝部署的刷新令牌(invalid_grant)时,GmailAuth 会通知运维人员。恢复需要在工作站上通过浏览器授权,并在部署中更新密钥,具体步骤都记录在私有运行手册中。CLI 在工作站上自行恢复 invalid_grant 时涉及的是另一个令牌,相关说明请参阅 gmail-access。

变更后检查清单

  • YAML frontmatter 有效(描述中没有冒号)
  • 触发关键词是最新的
  • 路径模式使用 $HOME,而不是硬编码路径
  • 未重新引入 launchd 模板、主机名或凭据路径
  • 插件 CLAUDE.md 中的 buildBot() 合约仍与 scripts/bot.ts 一致

执行后复盘

此技能执行完毕后,请在结束任务前进行复盘:

  1. 确定位置。 — 编辑前,找到此 SKILL.md 的规范路径。
  2. 哪里失败了? — 修正导致问题的指令。
  3. 哪些地方比预期更好? — 将其提升为推荐做法。
  4. 哪些内容偏离了实际情况? — 修正不再符合实际情况的脚本、参考资料或依赖项。
  5. 记录下来。 — 在演进日志中记录触发原因、修复措施和证据。

不要拖延。下一次调用会继承你留下的一切。

评论

支持 Markdown