跳转到内容

中途接手

项目放了两周,或者你是全新的 agent session,对它没记忆。别一上来读文件猜你在哪。

/flow resume

中途进入项目第一个要打的动词。只读,不拿锁,用磁盘上已有的状态拼一份 session-story 简报:

  • 上个 session,只报命令名——永远不报原始参数
  • in-flight card 和它晾了多久(dwell)
  • 当前 gate 状态
  • 恰好一行 NEXT ->

读 NEXT -> 那行,照做。它和 /flow status 用同一个决策 helper 产出,两个永远不打架。

这个对话里你已经有活上下文,就跳过——刚跑完 next 或 card 一分钟的你,再跑一次没意义。它给冷进入用,不给每条命令用。

/flow

裸 /flow 就是 status:你在哪、什么拦着、当前 stage dwell、card 清单(十张之后压成摘要)、一行记忆摘要。重进用 resume,干活用 status。

/flow recall

stage 或 card 开工前跑,先别写任何东西。它读回持久层:open debt、最近 retro、上张 card 的 scope、harness 摩擦和 backlog、审计健康、promote 过的 playbook。输出当上下文用,不是噪音,开工先看到以前的痛,而不是重新发现。

捕获是引擎触发的,不是自愿的:走过 stage 01 种一个 intake,通过的 card check 记一条 tier 打分的 trace,故意的 skip 记它的 debt。status 给一行记忆摘要;card 自动注入上张 card 的 scope。改进也是机械的:harness audit 给熵和漂移打分,harness propose 把重复摩擦挖成改进 backlog(pattern 触发两次及以上),harness decision outcome 闭合预测对实际的环。

对话窗口会忘,持久记录不会。

教训大过一个项目,就提上去:

/flow promote <playbook.md>

拷进跨项目知识库 ~/.claude/flow/playbooks。从此 recall 到处都能翻到它,不只在学到它的地方。

循环是捕获、复用、改进:next 和 check 自动写记录,recall 读回来,promote 分享挣到资格的。

额外引擎(Codex 和 Antigravity)和持久循环的其余部分,见Agent 编排。

flow 一个项目只许一个 session。两个 session 共享一份计划会互踩状态。runner 拿 flow/.lock:next、card、skip、auto 这类改状态的命令拒绝陌生的新锁,status 告警,锁按 TTL 自动回收——FLOW_LOCK_TTL,默认 900 秒。

/flow unlock

只在对方 session 真死了用——挂掉的终端、丢下的窗口。对方还活着,停下,找跑它的人协调。永远别 force 过活锁;并发跑坏计划。

FLOW_FORCE=1 接管你确定死了的锁。/flow unlock 清掉它。runner 报 BLOCKED by another session’s lock,停下协调——永远别 FLOW_FORCE 过活 session。

要硬保护而不是告警,每个 session 导出一次稳定 session id,每次调用都带上:

Terminal window
export FLOW_SESSION_ID=$(uuidgen)
FLOW_SESSION_ID=$FLOW_SESSION_ID bash ~/.claude/skills/flow/runner/flow.sh next

不带它 runner 证明不了对方是不同 session,只能告警,永远不自己拦。

有代码、没 flow/ 目录的项目是 brownfield。还没有 session story 可恢复,别从 resume 开始。已有代码库不从 Idea stage 开始。/flow assess 脚手架并设 gate 于 flow/00-inspect.md——一张现状图——任何规划 stage 开之前。已有系统的规划要扎在实际有的东西上,不是仓库 README 声称的东西上。

greenfield 项目跳过这个,从 /flow next(Idea)开始。

  1. 在项目根跑:

    /flow assess

    第一次跑把 inspect 模板拷到 flow/00-inspect.md,种自动扫描(技术栈、CI、上下文文件、ranked surface),种 law 文件。gate 这会儿还不让过。

  2. 每节都从证据填(读代码):

    • 技术栈 / 构建 / 测试 / 运行命令,看真实文件
    • 主要组件、模块、入口
    • 当前功能(可用 / 半残 / stub / 缺失),带文件证据
    • UI/UX 状态对照产品既定目标,或注明“无 UI”
    • 头号风险、技术债、已知问题
    • 测试和质量基线(覆盖了什么、套件怎么跑)
    • 一个 Verdict:代码库健康到够在其上构建吗,先修什么?
  3. 从 Ranked surfaces 自动扫描开始功能和风险 pass。这些文件是杠杆最高的代码——代码库最依赖的面,跨切面风险最可能藏的地方。

  4. Functionality / Risks / Verdict 里每个实质断言都在 Evidence ledger 打标签。除非标签是 Authoritative,别把产品政策写成事实。

    标签 意思
    Authoritative 指令、已接受的决策、产品契约、书面流程
    Observed 代码/配置/测试显示当前行为
    Derived 观察到的实现的直接运维推论
    Decision required 规范性/产品选择,还没权威
    Unknown 仓库没给出答案
  5. 人审这份评估。brownfield 是操作者设 gate。teach 模式 agent 只汇报,不打勾、不替你写产物。

  6. 重跑 /flow assess。机械 PASS 意思是没 [FILL] 残留、gate 框全打勾。FAIL 列出剩下的洞;从证据填,跑。

  7. 机械 PASS 之后,规划之前先施加语义挑战:

    • 实质断言都打了 Authoritative / Observed / Derived / Decision required / Unknown 标签吗?
    • 有没有 Observed 或 Derived 断言被悄悄提拔成必须 build 的产品法则,却没有操作者背书?
    • Decision required / Unknown 项列给操作者了吗——没编进 Scope/PRD 吧?
    • 空 ledger,或框打了勾却只有 [FILL] 行,是空洞:报机械过了但质量虚。
  8. 两层都点头,用 /flow next 进规划。

可以用 scout / researcher(或 bmad-document-project)收集证据。gate 照样审判,操作者照样评审。

在 frontend/ 这类没自己 flow/ 的子目录跑 flow,它认最近祖先的 flow 项目,往 stderr 打印一行说明,不另起 fragmented 的第二根。自己有 flow/ 或 cards/ 的子目录永远被尊重,显式的 FLOW_PROJECT_ROOT 也一样。


维护者文件(不在公开页):skills/flow/SKILL.md、skills/flow/references/command-dispatch.md、skills/flow/_templates/00-inspect.md、skills/flow/references/gate-rules.md。