SuperAPI AI 工具集

retrospect-external-babysitter-run

智能体与模型

查看项目

更新于 10-15 09:46

技能介绍

用途

Retrospect External Babysitter Run 用于分析存放在外部公共仓库中的 babysitter 运行,采用与仓库内 /babysitter:retrospect 命令相同的分析视角,产出一份书面回顾,并向流程作者(若洞察具有普遍性,则向 babysitter 项目本身)提出具体建议。

何时使用

  • 用户指定一个外部仓库并要求做回顾。
  • 用户要求“找一个 babysitter 运行来做回顾”(可与 catalog-babysitter-users 技能配合挑选)。
  • 用户询问“其他人如何使用 babysitter 流程?他们常犯什么错误?”。

前提条件

  • gh CLI 已认证。
  • docs/repo-with-babysitter-processes.md 存在(若不存在,先运行 catalog-babysitter-users 技能)。
  • 一个可浅克隆外部仓库的工作目录(默认:/tmp/babysitter-retrospect/ 或 .a5c/tmp/external-runs/)。

使用方式(分阶段流程)

阶段 1 — 目标选择

读取 docs/repo-with-babysitter-processes.md,列出 Active 仓库及其 star 数与描述。若用户已指定仓库,跳到第 3 步。询问用户要对哪个仓库做回顾(交互模式用 AskUserQuestion;非交互模式则选择最近 30 天未被回顾过的 star 最高的 Active 仓库,通过 docs/retrospectives/<owner>-<name>/log.md 跟踪)。克隆前与用户确认目标。

阶段 2 — 发现流程与运行

浅克隆目标仓库:

mkdir -p .a5c/tmp/external-runs
cd .a5c/tmp/external-runs
gh repo clone <owner>/<name> -- --depth 50 --single-branch
cd <name>

定位:

  • 流程文件:从 @a5c-ai/babysitter-sdk 导入 defineTask 的文件。使用 Grep:grep -rl "from '@a5c-ai/babysitter-sdk'" -- . --include='*.js' --include='*.ts'。
  • 已提交的运行:.a5c/runs/<runId>/ 目录。许多仓库会完全 gitignore .a5c/runs/,这没关系;记录下来并继续做仅流程回顾。当运行被提交时,查找 run.json、journal/、tasks/、state/output.json。
  • 通过 git log 查找历史运行:git log --all --diff-filter=A --name-only -- '.a5c/runs/' 可发现曾在某个提交中存在、即使后来被清理的运行。若需要 journal 内容,可检出引入该运行的提交。

向用户汇总:按顶层目录统计发现的 N 个流程文件;HEAD 中存在的 M 个运行目录;通过 git 历史可达的 P 个额外历史运行;哪些运行完成、哪些失败(在 journal 中 grep RUN_COMPLETED / RUN_FAILED)。

阶段 3 — 挑选要回顾的运行

若存在多个运行,询问用户(交互)或默认(非交互)选择:最近一次失败的运行(对流程改进信号最强),或若无失败则选最近一次完成的运行。若完全没有提交任何运行,则切换为仅流程回顾:在没有运行证据的情况下分析流程文件的质量问题,并在输出中明确标注为 process-only。

阶段 4 — 加载运行

按顺序检查:

  • .a5c/runs/<runId>/run.json — processId、entrypoint、prompt、createdAt
  • .a5c/runs/<runId>/inputs.json — 用户意图
  • .a5c/runs/<runId>/journal/*.json — 事件流(RUN_CREATED、EFFECT_REQUESTED、EFFECT_RESOLVED、RUN_COMPLETED / RUN_FAILED)。阅读每一条 journal 记录;它是权威记录。
  • .a5c/runs/<runId>/tasks/<effectId>/task.json + result.json — 每个 effect 的定义与结果
  • .a5c/runs/<runId>/state/output.json(若存在)— 最终输出
  • run.json.entrypoint 引用的流程文件 — 与 journal 交叉比对,看作者意图与实际发生情况的差异。

阶段 5 — 回顾分析

仿照仓库内 /babysitter:retrospect 工作流,在以下标题下产出笔记:

5.1 结果:成功 / 部分成功 / 失败;总迭代次数、时长、不同 effect 数量、重试次数;最终输出质量(依据 state/output.json 的结构与内容)。

5.2 做得好的地方:首次即解决的 effect;输入/输出清晰且无重跑的流程段落;在问题扩散前捕获真实问题的有用断点。

5.3 做得不好的地方:被重新派发的 effect(相同 invocationKey 或相似 taskId 反复出现);EFFECT_REQUESTED 与 EFFECT_RESOLVED 之间的长间隔(外部瓶颈);循环的断点(approval -> reject -> retry -> reject);崩溃的任务及其错误类别(Configuration / Validation / Runtime / External / Internal);任何 RUN_FAILED:追踪最后几个事件与抛出的错误。

5.4 流程质量审查:依据以下标准评估流程文件本身——确定性(每个 effect 是否有稳定的 invocation key,如 processId:stepId:taskId;是否存在基于墙钟时间、随机数或未固定环境变量的非确定性分支);effect 粒度(任务是否过粗或过细);幂等性(流程能否安全重跑;是否对所有副作用使用 ctx.task(),还是在任务之外写文件);断点纪律(断点是否用于把关不可逆操作;是否遵循健壮的拒绝模式,即带反馈的循环);错误暴露(流程是否抛出带有用上下文的错误,还是吞掉错误);标签(任务标签是否有意义且一致,便于过滤/可观测);复用(是否有段落可替换为 library/processes/shared/ 中的共享组件)。

5.5 建议:分三类给出具体可执行的建议——针对运行(若仍在进行中):先重试、回滚或修复什么;针对流程(始终):对流程文件的具体修改,如拆分某任务、增加某断点、把某副作用移入任务内、在此处使用 stableKey;能否泛化为可复用模式或流程库中的库流程(也可使用 /babysitter:contrib library ...);针对 babysitter 上游(当洞察具有普遍性时):缺失的原语、令人困惑的 SDK 行为、值得通过 /babysitter:contrib 提交的文档缺口。每条建议都必须引用证据——某个 journal 事件、某个文件路径、某个行范围。

阶段 6 — 撰写回顾

写入 docs/retrospectives/<owner>-<name>/<runId-or-process-name>.md,结构如下:

# Retrospective: <owner>/<name> -- <runId or process name>

Date: YYYY-MM-DD
Source commit: <sha>
Process: <relative path>
Run: <runId or "process-only">
Outcome: <success | failure | process-only>

## Context
<1-3 sentences on what the process is trying to do and the user intent from inputs.json>

## Timeline
<bullet timeline of key journal events with timestamps and durations>

## What went well
...

## What went poorly
...

## Process-quality review
...

## Suggestions
### For the run
### For the process
### For babysitter upstream

## Evidence
<links to specific journal event files, task.json files, line-anchored process file refs>

同时向 docs/retrospectives/<owner>-<name>/log.md 追加一行记录,包含日期、runId 与结果,避免对同一运行重复回顾。

阶段 7 — 清理与回调

将浅克隆保留在 .a5c/tmp/external-runs/ 下(成本很低)。若有磁盘压力,向用户说明;不要自动删除。建议用户对任何值得上游化的洞察使用 /babysitter:contrib:流程/技能改进想法 -> /babysitter:contrib library contribution: [description];SDK/CLI bug 或缺失原语 -> /babysitter:contrib bug report: [description];绊倒外部作者的文档缺口 -> /babysitter:contrib documentation question: [what was unclear]。若能找到流程作者(仓库所有者、流程文件的 git 作者),建议在其仓库开 issue 并指向回顾文档。

注意事项

  • 在回顾中引用代码时遵守目标仓库的 LICENSE。分析用的短摘录属于合理使用;不要将流程文件整体复制到本仓库。
  • 绝不执行外部流程——回顾是只读分析。
  • 若运行 journal 非常大(超过 500 个事件),进行采样:前 20 条、后 20 条,加上每个转为 resolved 或 failed 的 EFFECT。

限制

该技能依赖 gh CLI 认证与 docs/repo-with-babysitter-processes.md 的存在;若目标仓库未提交任何运行,只能进行仅流程回顾,无法基于运行证据分析。其余具体收费、平台支持等信息暂未提供。