ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

gbrain Measure Before You Fix:用秒表而非代码改动终结超时与陈旧告警

gbrain Measure Before You Fix:用秒表而非代码改动终结超时与陈旧告警 人工智能RAGAgent 记忆MCP 服务知识管理【免费下载链接】gbrainGarrys Opinionated OpenClaw/Hermes Agent Brain项目地址https://gitcode.com/gh_mirrors/gb/gbrain点击查看免费下载导读measure-before-you-fix是 gbrain 中处理时间类告警stale / timeout / freshness / wedged / N hours behind的运维分流技能当gbrain doctor、autopilot 周期告警、sync 失速看门狗或基于它们搭建的 cron 监控反复报警时它要求先用一次秒表测量被指控的步骤再谈任何代码改动。读完本文你将掌握一套可复用的测量优先排障契约——如何为具体实体计时、如何对比实测 vs 预算的超时、如何识别监控阈值与权威审计线错配导致的假告警以及在什么情况下应该把问题移交给investigate做真正的根因调试。技能定位时间类告警的测量优先闸门该技能定义在 skills/measure-before-you-fix/SKILL.md其 frontmatter 明确标注mutating: false、writes_pages: false——它不修改任何超时、阈值或代码只产出一份用于给修复定尺寸的测量结论真正的修复是另一项此刻已掌握数据的变更。技能的触发词覆盖了典型的时间类抱怨keeps timing out、ETIMEDOUT、why is this data stale、freshness alert、wedged、job is slow、sync is stuck、raise the timeout。它的适用面包括gbrain doctor的陈旧度检查sync freshness、cycle freshnessautopilot 周期告警sync 失速看门狗reason: stall_timeout以及构建在上述机制之上的任何 cron 监控。从路由评测数据看skills/measure-before-you-fix/routing-eval.jsonl 中全部正例都是用户想直接上结构修复的时间类告警——should I just raise the timeout、bump the timeout and rerun、rewrite the wrapper、split the step so it cant starve——而代码调试类意图Why is this function returning undefined?明确路由为null交给 GStack investigate健康检查类意图则与maintain标记为ambiguous_with边界由对话内容裁定。核心规则一次秒表测量先于任何代码改动技能的核心规则只有一句话在改动任何代码之前先对被指控的步骤做一次秒表测量。如果无法说出你认为很慢的那个东西的实测时长你就还没有掌握根因——此时写出的任何修复都只是穿着 diff 外衣的猜测a guess wearing a diff。契约本技能保证什么该技能对使用者保证五条纪律任何结构修复抬高超时、拆分步骤、重排流水线、重写 wrapper提出之前必须存在被指控步骤的实测时长测量必须对准告警点名的具体实体而非聚合——--all会掩盖到底是哪个成员慢在宣布系统不健康之前必须把告警阈值与权威阈值gbrain doctor的 warn/fail 线做对比结论必须明确区分需要更多时间与真的卡死wedged——两者的修复方向完全相反只读不改变任何超时、阈值或代码输出的是为修复定尺寸的测量结论。这套契约之所以成立是因为路由是 harness 层面的约定而非机械保证——让纪律真正生效的是契约本身。操作流程五步测量排障第 1 步先读告警自带的数字告警文本里往往已经自相矛盾。例如输出里有Locks: none就说明不是锁竞争——记下这一点并砍掉这个排查分支不要继续在锁上花时间。第 2 步直接给被指控步骤计时隔离告警归咎的最小单元带表跑一次time gbrain sync --source source-a --no-embed关键要求是跑在告警点名的具体实体上而不是聚合上。全脑运行会掩盖哪个成员慢而--source source-a直接回答这个问题。随后用gbrain sources status交叉核对每个 source 的同步滞后per-source sync lag。第 3 步实测 vs 预算对比在 wrapper 或 cron 脚本里 grep每一个超时配置而不是只看 helper 签名里的默认值grep -n timeoutMs\|timeout: the wrapper or cron script一次慷慨的 per-call 覆盖会让 helper 的默认值形同虚设——归咎默认值之前先检查调用点。第 4 步把告警阈值与权威阈值对比在得出系统坏了的结论之前先确认告警方与审计方对什么算坏的定义一致。gbrain doctor的 sync-freshness 检查默认24h warn / 72h fail一个 12h 就分页的 cron 监控是在权威 warn 线之下发言。监控行动得早是对的但监控在自己的行动线上发声就是假告警发生器。第 5 步只有现在才设计修复——对着你测出来的数字前四步没有完成不进入修复设计阶段。阈值不匹配失败模式act 线与 alert 线必须分离cron 监控合法地比 doctor 更早行动是为了把漂移挡在 FAIL 区间之外——这是好设计。真正的 bug 是把行动阈值复用为告警阈值act 与 warn 之间的全部区间都会变成关于健康系统的重复分页。正确做法是把两个常量分开在激进的行动线上动手act在权威线上发声speakconst ACT_HOURS Number(env.MONITOR_ACT_HOURS || 12); // act early — fine const ALERT_HOURS Math.max(ACT_HOURS, DOCTOR_WARN_HOURS); // speak at the audits line需要一眼识别的症状一个重复出现的告警其数字低于 doctor 自己的 warn 线而底层资源直接查询时看起来完全正常。这条规则在 gbrain 源码里有对应的权威定义。在 src/core/source-health.ts 中陈旧度天花板通过resolveStalenessCeilingSeconds()解析GBRAIN_STALENESS_CEILING_HOURS可覆盖否则默认跟随GBRAIN_SYNC_FRESHNESS_FAIL_HOURS默认 72——天花板与读取它的检查默认不会漂移事故期间仍可分离。同文件注释进一步说明src/core/source-health.ts这个值ramp爬坡而非 step阶跃是因为federation_health在 24h 失败、sync_freshness在 24h warn / 72h fail、buildSyncStatusReport按硬编码 24/72 分桶——阶跃会让两个检查在同一瞬间同时触发跳过 warn 层级这正是告警风暴的形状max(0, wallClock - ceiling)连续增长则保证 warn 先于 fail、各表面按序升级。这与技能的act 线 vs alert 线规则互相印证。gbrain doctor的 24h/72h 规则在状态报告侧同样可见src/core/sync-status-report.ts 中stalenessHours 24判为fresh、 72判为stale超过 72h 则输出SEVERELY stale (72h)的 WARNING 并建议gbrain sync --allsrc/core/sync-status-report.ts。你在理论化而非诊断的危险信号你有一个根因但没有实测时长你的修复是一次重写而该步骤你一次都没跑过你在两次修订之间没有重新测量就修改了理论告警说 no recovery in flight——先验证恢复是否真的在跑再相信它用ps查 worker检查启动标志用gbrain jobs list查看排队任务步骤输出显示 Already up to date——这个步骤不是你的瓶颈。反模式清单用抬高超时来修卡死stall如果步骤真的挂死更大的预算只会挂得更久。先测量再在需要更多时间与真的卡死之间做决定——两者的修复方向相反。gbrain 的 sync 失速看门狗原生就做同样的区分它按前进进度forward progress而非流逝时间触发。对应实现见 src/core/embed-stall.ts#4599embed drain 的进度键控看门狗sync 的镜像其触发条件是成功的进度推进、以reason: stall_timeout错误结果结束并释放锁src/core/embed-retry.ts 也印证了每个 SETTLED 的 embed 尝试都会 tick 这个看门狗。基于未测量的饥饿理论重写流水线为并不存在的饥饿问题拆分步骤只会增加表面积修不了任何东西。轻信告警的因果断言告警对症状报得准、对原因报得差。陈旧度数字是真的上面附带的原因是猜测。把未测量的根因固化成技能或剧本把自信的错误诊断写进 playbook比原来的 bug 更糟。已处理的典型失败案例三连错的 freshness 告警诊断一次 freshness 告警反复分页两个 sourcesource-a、source-b报告落后数小时。在没有任何测量之前连续有三个根因被断言、一个 wrapper 重写获得批准。测量结果time gbrain sync --source source-a --no-embed # 单数秒内完成输出 Already up to datesource-b 同样 gbrain sources status # 每个 source 都在当天早上同步过所有理论在同一时刻全部死亡。真正的原因是监控在自己的 act 阈值上告警比gbrain doctor的权威 warn 线低了数小时。修复是两行代码ALERT_HOURS max(ACT_HOURS, WARN_HOURS)而不是重写。教训当一个重复分页的系统测量起来是健康的先怀疑阈值再怀疑系统本身。同一轮还顺带击破了竞争理论对一个被nice降优先级的步骤的 CPU 竞争担忧同样没有依据——在主机持续高并发负载下该步骤几秒内就完成了。竞争理论需要与陈旧理论同样的秒表。输出格式测量结论Measurement Verdict输出是会话级别的测量结论本技能不写 brain 页面。只有在结论之后才允许提出基于实测数字定尺寸的修复## Measurement verdict - Alert: 告警文本及由哪个监控发出 - Claim: 时间类断言如 source-a 14h stale - Measured: 精确命令 → 时长 (关键输出如 Already up to date) - Budgeted: 超时常量 任何调用点覆盖file:line - Thresholds: monitor act-line Xh vs doctor warn-line Yh → match | MISMATCH - Verdict: false page on healthy system | needs more time | wedged | genuine regression - Fix: 由实测数字支撑的变更——或 none; adjust the alert line与其他技能/约定的边界DedupGStackinvestigate——针对代码 bug 的系统性调试为什么坏了、500 错误、错误输出。边界investigate根因定位代码行为本技能是时间类运维告警在任何超时或阈值被触碰之前的测量优先闸门。如果秒表确认了真实的缓慢或回归带着实测数字移交给investigate。skills/maintain/SKILL.md——运行大脑健康检查与修复doctor、extraction、dream cycle。边界maintain产出并作用于健康输出本技能规范的是当这些检查分页时如何响应发生在预算或 wrapper 被改动之前。smoke-test宿主侧——二进制重启后的健康检查并带自动修复。边界smoke-test 回答重启后它起来了吗本技能回答这个缓慢/陈旧的说法本身是真的吗。skills/cron-scheduler/SKILL.md——调度监控与任务。边界cron-scheduler 决定监控何时运行本技能提供它们的阈值必须编码的act 线与 alert 线规则。skills/conventions/test-before-bulk.md——变更前的试运行纪律。同种精神证据先于行动对象不同该约定闸门管控批量写入本技能管控超时/阈值/流水线变更。此外技能开头的约定指向 skills/conventions/brain-first.md在重新推导诊断之前先searchbrain 里同告警的历史事件——重复出现的告警通常已有记录在案的结论。这使测量优先纪律与 brain-first 的检索习惯衔接避免每次都在无历史上下文中重新发明诊断。结语measure-before-you-fix的精髓是把排障从理论竞赛拉回测量优先时间类告警天然诱惑人直接上结构修复但一次针对具体实体的秒表测量几乎总是比修复便宜而且经常直接否掉修复方案。配合 gbrain 源码侧的三重佐证——doctor 的 24h/72h 权威阈值src/core/source-health.ts、状态报告的 fresh/stale/SEVERE 分级src/core/sync-status-report.ts、进度键控而非时间键控的失速看门狗src/core/embed-stall.ts——你就能在抬高超时和重写流水线之外用一行阈值修正结束一个反复分页的假告警。赞分享人工智能RAGAgent 记忆MCP 服务知识管理【免费下载链接】gbrainGarrys Opinionated OpenClaw/Hermes Agent Brain项目地址https://gitcode.com/gh_mirrors/gb/gbrain点击查看免费下载相关推荐gbrain 测量优先排障法measure-before-you-fix 技能全解析gbrain 测量优先排障法measure before you fix 技能全解析 本文聚焦 gbrain 仓库中 measure before you f人工智能RAGAgent 记忆MCP 服务知识管理gbrain 的「先测量再修复」运维纪律用秒表终结时效告警的猜测式修复gbrain 的「先测量再修复」运维纪律用秒表终结时效告警的猜测式修复 导读 本文深度解析 gbrain 仓库中的 measure before you f人工智能RAGAgent 记忆MCP 服务知识管理Temporal Python SDK活动超时告警告警分组配置Temporal Python SDK活动超时告警告警分组配置 在分布式系统开发中活动Activity超时是常见问题可能导致工作流延迟甚至失败。Tem上一篇River与Xwayland兼容性无缝运行传统X11应用的完整指南下一篇WaveTerm插件开发实战3种方式打造你的专属终端工具集创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表