用途
unattended-run 用于让 feature-delivery-pipeline 及其阶段技能在无人值守的情况下从开始运行到结束。代理代替用户回答各阶段中的检查点、访谈轮次和选择类问题,并按授权范围执行向外动作。
授权范围
代理先阅读一次请求,并在 .scratchpad/<slug>/unattended-decisions.md 开头写明:
- 起点:基础分支与需要工作的分支。
- 终点:例如“打开 PR,不审批、不合并”,涵盖流水线中仍需运行直至回顾的每个阶段;跳过的阶段记为 Q- 条目。
- 允许的对外动作:push、PR、issue、评论,仅限请求中明确或清楚暗示的内容。
- 允许使用的技能,例如“仅 YesYak 技能”。
- 是否需要技能反馈:使用技能时是否记录问题。
未列入该清单的事项一律禁止,包括合并、审批、强制推送、删除分支、部署、在其他仓库发帖、在仓库外写文件。
如何回答问题
每当技能要求“询问用户”“等待用户”或出现检查点时:
- 按实际询问方式写出问题,附选项,推荐选项在前。
- 做出选择:优先推荐项;当代码、请求或先前回答给出理由时可选其他项。
- 向 unattended-decisions.md 追加一条记录,格式包含稳定编号、阶段与技能、问题、选项、所选、理由、是否可逆。
决策编号从 Q-01 起稳定递增。可能被审查者质疑的决策还需记录 ADR,其来源字段填写对应 Q- 编号。代理需在同一消息中继续,不在检查点停止,也不结束回合等待测试、构建或子代理。
可选步骤
流水线将某些步骤标为可选(如魔鬼代言人、工作项、浏览器测试)。无人值守运行时无人可询问,代理在请求要求“完整流程”或功能需要时执行可选步骤。当变更包含验收标准所描述的用户界面时,需要浏览器测试,应运行 browser-acceptance-testing,该技能接受此决策代替用户请求。无论是否执行,都记入 Q- 条目。
检查点转为进度记录
每个阶段结束时不再向用户发问,而是更新 progress.md,记录阶段、产物与提交,并在对话中发一条简短状态行,说明下一个运行的技能,以便用户跟踪和中断。
何时仍然停止
仅在以下情况停止并等待:用户指定的内容缺失(分支、文件、issue),说明缺失内容并等待,不去其他仓库或全 GitHub 搜索;下一步超出用户授权;动作不可撤销且请求未覆盖;用户给出的两个来源互相矛盾,且每种选择都会损失用户要求的内容。
技能反馈
用户需要技能反馈时,维护 .scratchpad/<slug>/skill-feedback.md,记录技能、遇到的问题与建议的修改。不编辑已安装的技能(其可能是指向共享技能仓库的符号链接)。仅针对本项目的修改写入 customize-yak。
结束时
告知用户独自做出的决策数量及日志位置。由于 .scratchpad/ 不在仓库中,且云会话随容器丢失,需在 PR 中加入简短的“未由用户做出的决策”章节,列出最重要的 Q- 条目。