用途
opsbot-core 是运维机器人(ops bot)的循环核心。它在一个长期存活的智能体会话中运行自定节奏的循环,让机器人按周期检查各个数据流、处理待办事项,并在无事可做时保持空闲而不调用模型。
主要能力
循环结构:一个循环为 begin → check → act,或“没有新内容” → end → 计算下次唤醒。空闲路径只有一条命令和一行输出,模型不参与,直到检查表明有事情要做。
检查(check):运行 opsbot.d/heartbeat.d/ 下的每个脚本,记录已见键、写日志并提交。退出码含义:0 表示没有新内容;10 表示有新内容(摘要,每项完整并标注其会话和 GROUP 或 DM);20 表示降级(按名称列出失败的输入,以及能读取到的内容);2 表示无法运行。降级状态绝不能当作“没有新内容”处理。
循环结束(cycle end):将水位线固定到本次循环检查的时间(而非当前时间),因此循环中途到达的内容会在下次被读取。它会拒绝未来时间、倒退移动,或自加锁以来没有检查的循环。
唤醒(wake):使用会话自身的自定节奏调用安排下次唤醒,逐字使用循环提示词。只有一个时钟:绝不创建 cron 或第二个循环。nudge 是重启已停止循环的唯一方式。next-delay 命令可单独打印唤醒时间,默认值包括:最近 15 分钟有内容到达为 3 分钟;夜间 45 分钟;最近一小时有内容为 10 分钟;工作时段安静为 10 分钟;其他安静时段为 30 分钟;绝不超过上限(45 分钟,低于一小时缓存)。所有值和时段都在 opsbot.json 中配置。
冷启动与压缩:hook install 注册两个 Claude Code 钩子。在每次会话开始、恢复、清除和压缩时,cold-start --write 将重新落地包(reground pack)写入 ~/.cache/<bot>/reground.md 并设置待处理标志;在整包被完整读取(无 offset 或 limit 的 Read)之前,gate check 会拒绝所有其他工具。包内按顺序包含:规则卡(完整)、每个 opsbot.d/wake.d/ 脚本一个章节、最近 48 小时的循环日志(计数、最长间隔、最后一次降级循环、中断),以及“此点之前的记忆不可信:开口前先打开来源”的提示。
生命周期目录(opsbot.d/):核心不维护各环节贡献者的列表,而是像 /etc/*.d 一样按字典序(NN-name)运行目录中的每个可执行文件,跳过点文件和非可执行文件。目录包括:heartbeat.d/(每次检查,输出 NDJSON 项)、monitor.d/(始终开启的监视器或探针)、cycle.d/begin/(加锁后、检查前)、cycle.d/end/(提交前)、wake.d/(每次冷启动)、escalate.d/(核心需要联系操作员时)。每个脚本会获得 OPSBOT_ROOT、OPSBOT_CONFIG、OPSBOT_NAME、OPSBOT_MARK、OPSBOT_HOOK 等环境变量;heartbeat 脚本还会获得 OPSBOT_SINCE、OPSBOT_SEEN、OPSBOT_WATERMARK。
设置(opsbot.json):一个已提交的文件保存所有循环值。将 templates/opsbot.json 复制到仓库根目录、填写、提交,然后运行 settings validate。它会拒绝未知键、缺失的必需键(name、mark、loop.prompt、runtime.agent)以及超过上限的节奏值。
状态保存:logs/cycle.jsonl(每循环一行)、logs/intake/seen 与 logs/intake/watermark(已见键与水位线)、logs/outages.jsonl(中断及其结束)、.git/opsbot-cycle.lock(写入锁,从不提交)。
保持存活:infra install 从 opsbot.json 渲染 systemd 用户单元:看门狗(在 watchdog_minutes 内没有循环记录时,通过 escalate.d/ 通知操作员一次并记录)、nudge(当循环安静、未加锁、超过冷却且空闲时,向指定运行时智能体重新发出 loop.prompt),以及每个 monitor.d/ 脚本一个单元。会话必须在运行时(herdr)中作为命名智能体运行,nudge 才能到达它。
使用方式
主要命令包括:cycle begin、check、cycle end、next-delay、cold-start、gate check、lock status/release、outage record/end/list、log tail、watchdog、nudge、infra install/uninstall/status、hook install/uninstall/status、hooks list、settings validate。若输出显示以 opsbot-core 开头的后续命令,请以 scripts/opsbot-core …(从本技能目录)或输出打印的路径运行——CLI 不在 PATH 上。
适用场景
适用于需要长期存活、按周期检查多个数据流(聊天、邮件、日志等)并处理待办事项的运维机器人。
限制
当另一个写入者持有检出(rebase、merge、cherry-pick、revert、bisect 进行中,index.lock,或另一个活动循环的锁)时,cycle begin 会拒绝并打印 wait · <who> · next <seconds> <reason>,退出码 30。水位线固定到检查时间,拒绝未来时间、倒退移动或无检查的循环。gate check 在整包未读完前拒绝其他工具。具体收费、价格、平台支持范围等资料暂未提供。