drill 是 theplenkov/bro 中的一个技能,定位为策略层:所有机制都由基于 bd 的 bro CLI 实现,技能本身只规定使用规则。一个 drill 帧就是一个带有 drill 标签的 bead,嵌套借助 bd 原生的 --parent 层级完成;没有 .drills/ 目录树,也没有 claim.json,beads 本身就是记忆系统。
使用前提:bro 需在 PATH 中,或通过 npx -y @broject/bro@0 调用;并且已经执行过 bd init。
主要命令与用途:
- bro work drill down <title> [--under ID] [--ephemeral]:在当前叶子帧(或某个根)下新建子帧;--ephemeral 表示 wisp,不保留审计轨迹。
- bro work drill up --result T [--prevent T]… [--evidence R]… [--report]:关闭当前帧。--result 为必填,由 CLI 强制;当本次钻取发现错误、缺口或可复用经验时,按策略必须提供 --prevent,每一项都会生成一个带有 prevention 标签的任务,并以 discovered-from 关联到该帧;--evidence 用于记录来源引用(如 sha 或 PR);--report 还会把报告写入 <drill.report.dir>/<id>.md(默认为 drills/),作为有意执行钻取时的持久 Markdown 产物(含 frontmatter 及 result/prevention/trail)。
- bro unwind …:drill up 的别名,把一个已解决的帧折叠回父级。
- bro work drill current:显示当前活跃的叶子帧(最深的一条开放路径)。
- bro work drill tree:显示所有 drill 层级(● 表示开放,○ 表示已关闭)。
- bro work drill list:列出开放的帧。
- bro work drill report:显示 drill.report.dir(默认为 drills/)下已发布的报告。
- bro work drill distill ID:执行 bd mol distill,把一次成功的 drill 树转成可复用的 proto/formula。
策略要点:流程是“收窄、调查、上升、预防”,只能进入严格更窄的问题。一个没有返回任何结果的帧不产生任何经验,因此 CLI 会在缺少 --result 时拒绝 drill up。如果找到了根因或可复用经验,--prevent 属于策略要求而非建议:CLI 无法判断是否存在经验,这需要使用者自己判断;一旦存在,每一项都应成为 beads 中的后续工作,而不是脚注。隔离方面,子帧只获得与任务相关的上下文;整理后的备忘作为 bd note 落在已关闭的子帧上(预防项成为以 discovered-from 关联到它的 bead),而不是原始对话记录。存在未关闭的子帧时不能上升,bd 会阻止关闭,需要自底向上逐层收束。
学习闭环为 drill → distill → formula:一次顺利解决问题的 drill 树可被蒸馏为 proto,下次再通过 bd mol pour/bd mol wisp 复用。报告是有意为之的产物:beads 始终是协作的基础载体,而提交到 drill.report.dir(默认 drills/)下的 <id>.md 是用于事后复盘与审计的持久输出。--report 会强制生成;drill.report.mode 始终只覆盖持久帧,在 TTY 上会询问,非交互环境下则关闭。启用发布时,drill up 只写文件而不提交,文件随分支一起流转。
持久帧的生命周期可审计:下降时 claim,上升时 handoff,证据引用作为来源事件记录(bd provenance log <id>)。--ephemeral 的 wisp 会跳过所有来源记录,按设计不留下审计轨迹。
适用场景:需要对一个问题做逐层收窄的调查、需要强制记录结论与预防措施,或希望把成功调查沉淀为可复用流程时。限制:依赖 bro 与已初始化的 bd 环境;没有结果不能关闭帧;有未关闭子帧时不能上升;临时帧不产生审计轨迹。