SuperAPI AI 工具集

aeon-doctor

部署与运维

查看项目

更新于 10-15 10:06

技能介绍

用途

aeon-doctor 是 Aeon 实例的“配置医生”,负责静态检查配置本身的正确性。其他健康类技能(heartbeat、skill-health)读取的是运行结果——技能是否触发、是否通过;而 aeon-doctor 在一切运行之前读取配置,专门捕捉“技能被静默错误配置、永远不会触发”这一类 bug:没有错误、没有失败运行、Actions 标签页里也没有任何可注意的内容。这类问题按设计对基于运行结果的可观测性完全不可见,也是 Aeon 实例悄悄停止执行操作者预期行为的最常见原因。

该技能不修复任何东西——检查配置的诊断工具绝不能修改配置。它只呈现精确、可操作的发现项,由操作者(或 skill-repair)应用修复。

主要能力(检查项)

  1. 未加引号的 schedule(critical / warn):仅当 scripts/parse-aeon-config.sh 缺失时适用。旧的正则调度器要求 schedule 值用双引号包裹,未加引号的值会被读为空,技能每个 tick 都被跳过,且文件仍是合法 YAML,其他机制不会察觉。
  2. 重复的技能键(critical):skills: 映射下重复的技能名会静默禁用第一份(YAML 后者胜出)。
  3. 磁盘上存在但未配置(warn):有 SKILL.md 但没有 aeon.yml 条目的技能默认禁用,“未配置”与“故意关闭”看起来一样。
  4. 已启用但缺少 SKILL.md(critical):aeon.yml 条目指向不存在的技能目录。
  5. requires 条目被白名单静默丢弃(warn):scripts/skill_requires.sh 只注入匹配 ^[A-Z][A-Z0-9_]{2,}$ 的名称(允许尾部 ? 表示可选),不符合的条目被静默丢弃,导致技能声明了却收不到凭据。
  6. mode 拼写错误(critical):未知的 mode 值会回退到 write,而非更安全的层级;合法值只有 read-only 和 write。
  7. .mcp.json 中未解析的 ${VAR}(warn):在 Claude harness 上,一个解析不到密钥的 ${VAR} 会禁用该次运行的所有 MCP 服务器。
  8. 多行 aeon.yml 条目(warn):按技能的 model/harness 覆盖通过单行 grep 读取,跨行条目会退回全局默认值。
  9. SKILL.md frontmatter 中误导性的 schedule/cron(warn):调度只存在于 aeon.yml,scheduler.yml 从不读取 SKILL.md。
  10. 未加引号的按技能 harness/model 覆盖(warn):覆盖读取要求双引号,未加引号会被静默忽略。
  11. category 不在六个允许值内(warn):必须是 core、evolution、basics、dev、crypto、productivity 之一,否则目录 CI 门禁变红。
  12. 每日日志标题不是 ### <slug>(warn):CLAUDE.md 要求每个技能在 ### <slug> 标题下追加日志条目,健康循环按此形状解析。

使用方式

通过 ${var} 解析检查范围:为空(默认)时检查整个实例配置(aeon.yml + 每个 skills/*/SKILL.md + .mcp.json);传入技能 slug(如 digest)时只检查该技能的 aeon.yml 条目及其 SKILL.md。

每次运行先读取 memory/MEMORY.md 获取上下文,并扫描最近约 3 天的 memory/logs/,丢弃已报告过的发现项,避免重复提醒。所有检查都是纯本地文件读取(grep、sort、head、tail、wc、cat、jq、node),无网络、无密钥、无 GitHub API。若引用的脚本缺失,则跳过该检查并注明,绝不让单个检查失败阻断其他检查。

报告方式:无发现时不发送任何内容并退出(干净的配置是常见情况,沉默是正确的)。有发现时,通过一次合并的 ./notify 发送,最严重的排在最前,正文写入临时文件并用 -f 发送,按严重程度分组,每条发现给出技能名、一行说明哪里坏了(以及它是静默的)、以及精确的一条命令修复。存在 critical 时以其开头。

适用场景

适用于 Aeon 实例的配置维护与排障,尤其是排查“技能看起来配置了却从不触发”这类静默故障。

限制

契约上只读——检查配置,绝不修改;无 Write / Edit / git / gh。每条发现必须引用确切的文件与行号,并提供可复制粘贴的修复;没有修复的配置发现是噪音。不编造问题,只报告检查实际匹配到的内容。完全本地运行。运行结果健康属于 skill-health 的职责,实时关注属于 heartbeat 的职责,本技能只负责静态配置。由于是只读技能,工作流的只读守卫会从捕获的输出写入其 ### aeon-doctor 日志条目,技能自身不应追加到 memory/logs/。结束状态:AEON_DOCTOR_CLEAN、AEON_DOCTOR_FINDINGS、AEON_DOCTOR_ERROR。