用途
skill-repair 用于自动诊断并修复失败或退化的技能。它的核心取向是“系统性优先”:当多个技能的失败聚集在同一错误特征上时,优先寻找一个共享修复,而不是为每个技能分别打补丁。
主要能力
- 分诊(Triage):读取问题索引与 cron 状态,筛选出连续失败、成功率过低、近期失败或质量评分退化的候选技能。
- 系统性聚类:按归一化后的错误特征与问题类别聚类;若 2 个以上技能共享同一特征,或属于 api-change、rate-limit、missing-secret、sandbox-limitation 等类别,则切换到系统性模式,提交或更新一个共享问题,并在可单点修复时开一个 PR。
- 诊断档案(Dossier):在改动任何文件前,收集技能文件、cron 状态、回归嫌疑提交、最近失败运行日志与注解、历史日志、质量趋势、输出规范、已有问题等多方信息,并区分“一致性失败”(可能是确定性 bug、密钥或 API 变更)与“间歇性失败”(可能是限流或上游不稳定)。
- 按类别修复:依据诊断结果匹配最具体的类别并套用对应 playbook,例如 api-change 需抓取实时 API 规范并引用来源、rate-limit 需加退避或降频、timeout 需拆分阶段或降级模型、prompt-bug 需最小化插入约束、missing-secret 不改工作流只登记问题等。
- 风险分级:将改动分为 LOW、MED、HIGH;HIGH 风险 PR 必须加 manual-review 标签且不得自动合并。
- 验证计划:每个 PR 附带操作者可执行的验证步骤,包括手动触发方式、预期结果与失败后的二次处理方式。
- 问题跟踪与冷却:PR 打开后把问题标记为 fix-pending(不写 resolved),并记录冷却时间,避免对未生效的修复反复重试。
使用方式
- 通过变量指定要修复的技能名;留空则运行系统性分诊并自动挑选最严重的可修复目标。
- 变量加
dry-run:前缀时仅做诊断,不写 PR。 - 流程阶段为:PREFLIGHT → TRIAGE → DIAGNOSE → REPAIR → VERIFY → LOG,任一阶段无可执行事项时按对应退出码提前停止。
- 退出码包括:REPAIR_OK_FIXED、REPAIR_OK_SYSTEMIC、REPAIR_DIAGNOSED_NO_FIX、REPAIR_NO_TARGETS、REPAIR_DRY_RUN、REPAIR_BLOCKED。
适用场景
- 定时任务中技能持续失败或输出质量下降,需要自动定位根因并尝试修复。
- 多个技能因同一上游变更(如 API 变更、限流)同时失败,需要统一处理。
- 需要在不直接改动主分支的前提下,通过分支加 PR 的方式提交修复并附带验证方案。
限制
- 每次运行只处理一个目标或一个系统性聚类,不打包无关修复。
- 遵循最小改动原则,diff 尽量小。
- 绝不修改密钥或工作流文件(.github/workflows/aeon.yml、messages.yml、scheduler.yml、chain-runner.yml)。
- 绝不直接推送到 main,始终走分支加 PR。
- HIGH 风险 PR 不自动合并。
- 若某技能失败超过 7 天且根因不明、类别未知,只能在问题与通知中建议
enabled: false,未经操作者明确批准不得实际应用。 - 目标在 24 小时内已被修复时会跳过,除非操作者清除冷却记录。
- 关于收费、价格、平台支持等具体信息,资料中暂未提供。