实战指南:调查报告、完成门控与实施交付)
【免费下载链接】firstmateTalk to one agent. Ship with a crew.项目地址https://gitcode.com/gh_mirrors/fi/firstmate点击查看免费下载导读本指南围绕 firstmate 仓库中scout-completion技能.agents/skills/scout-completion/SKILL.md展开讲解侦察型scout任务完成后的一整套收尾与晋升promotion机制如何以自包含报告为唯一交付物安全回收临时工作树、如何通过 captain-hold 共享完成门控放行清理、视觉类成果如何遵循 crew 托管的 Lavish 看板契约以及在实施被单独授权时如何用bin/fm-promote.sh原地晋升而非重复派单。读完本文你将掌握 firstmate 中 scout→ship 全生命周期中每一个判定点、命令行参数与底层守卫的完整用法。一、背景scout 任务在 firstmate 中的定位firstmate 是Talk to one agent. Ship with a crew.的 Agent 发行版你只与 firstmate 对话由它调度整个 crewREADME.md。在任务形态上firstmate 明确区分两种任务README.mdShip交付型交付经授权的代码变更产物是 PR、本地合并或按项目模式落地的变更Scout侦察型交付的是知识而不是代码变更。按 AGENTS.md 的正式定义scout 任务的产物是data/id/report.md独立调查报告绝不产出 PR。它适用于以下场景船长明确要求独立的知识型/设计型交付物或存在会实质影响做什么、是否做的不确定性——即调查、诊断、规划、复现、审计类工作。scout 任务在底层由bin/fm-spawn.sh --scout创建并在任务元数据中记录kindscoutbin/fm-spawn.sh。与 ship 任务的关键差异在于scout 不记录任何交付姿态mode / yolo / ship branch它的工作树被声明为**临时scratch**性质唯一的工作产品是报告文件。二、完成即报告自包含报告是丢弃工作树的唯一前提scout-completion技能的第一条硬性约束是A completed scout must leave a self-contained report before its scratch worktree can be discarded.也就是说scout 的临时工作树只有在报告已存在的情况下才允许被丢弃。这一约束在清理脚本中有对应的实现证据bin/fm-teardown.sh 的头部注释明确写道Scout tasks (kindscout in meta) carve out of that check: their worktree is declared scratch and the report atdata/task-id/report.mdis the work product. Teardown proceeds only once the report exists and the shared unresolved-decision completion gate verifies its captain-held inventory.对应地teardown 在关闭任务时以--report $data_relative/$ID/report.md将报告写入积压任务的完成字段bin/fm-teardown.shdata/id/report.md就是 scout 的完成链接。自包含self-contained的实操含义报告必须承载调查的全部结论、证据与后续建议因为工作树随即被回收一切留在工作树里而未写进报告的信息都会永久丢失。firstmate 对信息边界的规范也与此一致——任务级备注属于积压条目而调查发现必须进入 scout 报告AGENTS.md。三、收尾三动作读取转达、记录 Done artifact、重新评估队列技能规定 scout 完成后 firstmate 需要依次执行三个动作读取并转达read and relay完整读取data/id/report.md将调查发现转达给相关方。注意角色约束——ship 与 scout worker 从不直接与船长对话所有通信都经 firstmate 中转AGENTS.md。将报告记录为 Done artifact报告本身即为该任务的完成产物见上文 teardown 的--report写入路径。重新评估队列re-evaluate the queue调查往往会改变后续待办——某个问题被排除了、某个方案被证实不可行、或产生新的实施建议因此 scout 收尾后应结合报告重新审视 backlog 队列。四、报告只能建议实施绝不授权实施技能中有一条容易被忽略、但极其关键的权力边界A report may recommend implementation but does not authorize it.scout 报告的定位是知识交付物它可以建议实施某项修复、可以描述复现步骤与根因但它本身不构成实施授权。实施是一项独立的授权决策必须由船长或按项目既定授权流程另行批准。这条边界的意义在于防止调查结论被自动当作开工令——在 firstmate 的项目边界设计中crew 对项目的一切代码变更都必须位于配置好的合并授权merge authority之后。五、共享完成门控先加载 captain-hold-lifecycle技能要求在把调查或任何视觉评审视为完成之前必须加载captain-hold-lifecycleteardown 会强制执行这一共享完成门shared completion gate。这条要求的实质是scout 的调查结论可能触发或关联船长决策captain call。在 firstmate 中决策不是独立实体而是被船长持有的普通积压任务docs/captain-hold-lifecycle.md。因此scout 的清理流程必须经过bin/fm-captain-hold.sh的verify子命令——它是专为 scout teardown 设计的只读检查docs/captain-hold-lifecycle.md在移除任何源码状态之前、检查报告之后运行校验三件事记录的 attestation已验证清单存在清单中每个条目的 captain-held 任务仍然持久要么仍处于活动 hold 状态要么已带有记录的 answer自上次complete之后没有新开启的 keyed 状态决策。其中第三项一旦失败verify即拒绝放行修复方式是重新运行complete--force则是船长明确批准的丢弃逃生通道但它不会解除推迟deferral也不会代替船长回答——它授权丢弃未落地的工作绝不授权丢弃船长的提问docs/captain-hold-lifecycle.md。从源码结构看这一门控被设计为共享verify是只读的通用检查任何一处会销毁 scout 源码状态的清理路径都必须经过它从而保证船长决策未被回答/复核时调查源码绝不会被静默抹除。该机制的完整回归套件位于 tests/fm-captain-hold-lifecycle.test.sh其中明确覆盖了仅报告、未解决船长决策的 scout 拒绝--none完成与非强制的 scout teardown 始终要求持久清单校验两类场景docs/captain-hold-lifecycle.md。六、视觉成果遵循 crew 托管的 Lavish 看板契约当 scout 的交付物是一个供船长迭代的视觉 artifact如 HTML 报告、看板卡片时技能要求keep it alive and follow the crew-hosted Lavish board contract indocs/configuration.mdrather than arming or polling the board from firstmate.其核心原则是所有权归属托管 Lavish 看板的活跃任务worker拥有该看板的 listenerfirstmate 作为调度方绝不亲自 arm 或轮询看板。具体契约记载于 docs/configuration.md要点如下环节操作说明打开 artifactlavish-axi打开artifact.html保存会话以识别看板所在服务器轮询前必须存在有效会话证据武装armbin/fm-procevent-lavish.sh arm artifact.html --for task-id仅 worker 执行arm在 process-event 所有者确认 listener 已运行后才打印armed任务无有效端点元数据时拒绝武装确认一轮re-arm同一 owner 再次arm即对该轮捕获的确认可携带--agent-reply-file path暂存 agent 回复结束终轮concludebin/fm-procevent.sh handled source-id sequence终态结果含session_ended、空 End送达 owner 并附带停止指令handled是唯一收尾与退役方式要点提醒武装时若同看板的旧 listener 在确认窗口内仍持有看板arm以still-listening而非armed退出新注册需等源退役后重新武装才生效捕获结果以不可变的 task-owner 路由证据直接投递到该任务的 steering inbox不需要 firstmate 的check唤醒只要存在未确认的捕获轮一切退役路径含 runner 的终态退役与显式retire都会拒绝并点名需要先确认的轮次若托管 worker 无法恢复先重启 worker 重新托管firstmate 的守卫式接管仅作为最后手段且必须先证明旧声明已死亡。这一契约的意图很明确看板的反馈回路归 worker 所有firstmate 只负责在结果产生后读取与决策从而避免调度方与执行方对同一设备的并发争用。七、晋升路径用 fm-promote.sh 原地晋升绝不重复派单当实施被单独授权后技能给出的路径是promote the existing scout throughbin/fm-promote.shrather than creating a duplicate task.晋升promotion的核心理念是原地换约in-place contract flipworker 的窗口、工作树、已加载上下文全部保留只有契约发生变化。bin/fm-promote.sh头部注释对此有精确描述bin/fm-promote.sh。7.1 命令用法fm-promote.sh task-id --mode no-mistakes|direct-PR|local-only --yolo on|off [--branch-prefix prefix]三个关键参数的含义与取值规则参数取值说明--modeno-mistakes/direct-PR/local-only该任务的交付模式。scout 不记录交付姿态因此晋升是决定交付契约的时点必须在晋升时显式决定脚本拒绝猜测--yoloon/off该任务的合并自主权同样是任务级决策而非项目查询--branch-prefix任意合法 git 分支前缀默认fm/与任务 id 拼成 ship 分支名fm/task-id必须通过git check-ref-format校验值得注意的边界规则均有源码级守卫no-mistakes-prod-only是注册表registry策略而非任务模式晋升时拒绝须将任务表面分类解析为no-mistakes或direct-PR没有--forge参数forge 绑定来自注册表bin/fm-project-mode.sh --forge project属于项目事实而非逐任务决策对未绑定项目的任务forge 为noneGerrit forge 下--yolo on被拒绝Code-Review2是具名人类批准的正面声明firstmate 不得伪造船长 2026-09-15 决策见 bin/fm-promote.sh晋升参与生命周期串行化先取 control 锁再取 meta 锁任何其他生命周期动作进行中时晋升会被拒绝bin/fm-promote.sh晋升前提是任务元数据中存在kindscout否则拒绝。7.2 晋升前的 brief 守卫晋升会读取 scout 的 briefdata/id/brief.md并做多项内容校验bin/fm-promote.sh拒绝残留的{TASK}/{FIRSTMATE_SPEC}占位符——船长的原始诉求必须保存在## Captains intent中## Captains intent与## Firstmate spec必须非空## Captains intent不得含有以 Captain 标签或地址开头的行标题已记录出处正文不得重复身份标注未采用小节化结构的旧式 scout brief只把显式标记为船长话语的 Task 行计入 intent且读取范围排除围栏代码块与缩进示例防止被引用的Captain:样例冒充船长指令通过出处门bin/fm-dod-lib.sh。7.3 晋升写入了什么晋升在元数据与文档两个层面完成契约翻转元数据翻转bin/fm-promote.sh以原子方式把kindscout替换为kindship并写入mode、yolo、branch三行——这正是 scout 缺失、由晋升时点决定的交付契约。同时通过fm_backlog_atomic_transition发布保证记录发布是原子、可重放的。Ship 指令生成晋升生成data/task-id/ship-instructions.md结构为bin/fm-promote.sh# Task→## Captains intent完整保留 scout brief 中的船长原话## Firstmate spec晋升期的 ship 指令即下文第七节 7 步义务# Current delivery mode contractmode forge、ship 安全规则fm_ship_rule_one、no-mistakes 模式下的 ask-user 升级块、以及由单一所有者bin/fm-dod-lib.sh渲染的模式专属 Definition of donefm_dod_block。关键设计被晋升的 worker 收到的交付契约与普通 ship brief 完全一致包括 no-mistakes 模式的 ask-user 升级规则与--yes禁令——脚本注释明确指出被晋升的 no-mistakes worker 从未收到 ask-user 升级规则与--yes禁令正是旧实现遗留的交付漏洞bin/fm-promote.sh。Brief 追加同一份当前 ship 契约也被追加进brief.md确保未来任何 relaunch 都以新契约为准无法复活旧的 scout 交付规则bin/fm-promote.sh。交付指令脚本末尾打印FM_HOME... bin/fm-send.sh fm-id $(cat ship-instructions)即把 ship 指令投递给当前 worker 的确切命令bin/fm-promote.sh。对 secondmate 场景还会打印 public-followup 的 rechain 提示。八、被晋升 worker 的七步交付义务技能规定被晋升的 worker 必须完成以下义务链先验证隔离Verify isolation before anything else运行pwd -P与git rev-parse --show-toplevel两者必须解析到启动时所在的临时任务工作树如 treehouse 池路径或 Orca 管理的工作树而非 firstmate 操作的主检出任一项不符即停止并升级给 firstmate。盘点临时状态Inventory this worktrees scratch state改动任何东西之前先用git status和git log清点工作树的临时改动。回到干净的默认分支基线再创建分支git checkout -b branch --branch 即晋升时写入的 ship 分支。只携带预期的修复变更把临时提交scratch commits、调试编辑、实验文件全部留在身后。复现的 bug 转成回归测试若 scout 复现了 bug该复现必须变成回归测试随修复交付。scout 期 spec 降级为调查上下文scout 期的## Firstmate spec与任何未标记的旧式# Task文本只作为调查上下文不再是船长意图或当前 ship 指令。其余原指令原样生效状态协议、指令收件箱及确认、升级规则含 ask-user及所有安全规则继续适用除非当前交付契约明确替换了 scout 专属交付规则。这套义务在 bin/fm-promote.sh 中被完整渲染进PROMOTION_SHIP_SPEC并在 relaunch 时同样生效测试 tests/fm-control-relaunch.test.sh 覆盖了被晋升 scout 的 relaunch 使用记录的自定义分支与被晋升 scout 的 relaunch 收到当前交付契约而非陈旧 scout 交付文本两类场景。九、验证与测试证据该机制的关键行为均有自动化回归覆盖行为测试位置scout 报告存在 共享完成门通过后teardown 才移除工作树tests/fm-backend-orca.test.sh如test_scout_teardown_removes_orca_worktree_via_helper船长决策完成门verify / complete / answer 路径tests/fm-captain-hold-lifecycle.test.sh晋升的锁串行化、promoted scout 的 relaunch 契约继承tests/fm-control-relaunch.test.sh晋升对 brief 占位符与 Captain 出处门的校验tests/fm-dod-lib.test.sh从源码结构看这些测试共同钉住了一条核心不变量没有报告、没有通过船长决策门任何 scout 源码状态都不得被销毁有了授权晋升必须原地完成且新 worker 拿到的契约与普通 ship 完全一致。十、常见误区与最佳实践小结报告 ≠ 开工令scout 报告可以建议实施但实施必须单独授权未经授权就把调查结论当成实施任务会绕过 firstmate 的合并授权边界。先完成门控再谈清理任何调查已完成的判断都必须先加载captain-hold-lifecycle并满足verify校验--force不能替代船长回答。看板归 worker不归 firstmate视觉 artifact 场景下firstmate 只消费结果绝不 arm/poll 看板武装、确认、收尾都按 docs/configuration.md 的 crew 托管契约执行。晋升不重复派单实施获授权时用bin/fm-promote.sh task-id --mode ... --yolo ...原地晋升并显式给出--mode与--yolo——脚本拒绝猜测。临时状态必须隔离在 ship 分支之外被晋升 worker 先盘点、回默认分支基线、再建fm/task-id分支只携带预期修复把复现转成回归测试。通过以上机制firstmate 在调查与实施之间划出了清晰且可验证的边界知识由报告沉淀授权由契约翻转承载源码安全由共享完成门兜底——这正是 scout→ship 全生命周期可审计、可恢复、不丢工作的底层原因。深入源码可从 bin/fm-promote.sh、bin/fm-teardown.sh、docs/captain-hold-lifecycle.md 三个入口继续研读。赞分享【免费下载链接】firstmateTalk to one agent. Ship with a crew.项目地址https://gitcode.com/gh_mirrors/fi/firstmate点击查看免费下载相关推荐opencodex 稳定版发布从 preview 到 latest 的晋升promotion实战指南opencodex 稳定版发布从 preview 到 latest 的晋升promotion实战指南 本文以 opencodex 仓库发布流程档案 040零成本晋升监控专家NewRelic/Datadog认证实战指南零成本晋升监控专家NewRelic/Datadog认证实战指南 想要在云原生监控领域快速提升竞争力通过New Relic和Datadog的免费认证你完全可文档教程教育微调评估工程师Fine-Tuning Eval Engineer构建评估基准与检查点晋升门禁的完整实战指南微调评估工程师Fine Tuning Eval Engineer构建评估基准与检查点晋升门禁的完整实战指南 在 LLM 微调生命周期中评估往往被当成AI 插件AI 技能开发工具上一篇3步解锁WeMod高级功能开源Wand-Enhancer完整指南下一篇如何免费解锁WeMod高级功能开源增强工具的完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考