运行时依赖
安装命令
点击复制技能文档
Focus Guard 长会话会漂移。决策被遗忘,范围悄然扩大。Focus Guard 为会话下锚——记录已决事项,拒绝未被请求的内容,偏离航向时立即标旗。
核心问题 一个以“修这个 bug”开头的会话,可能无声地变成重构三个文件、新增抽象层、再顺手更新 README。没人拍板,它就发生了。
会话如何漂移
- 决策失忆:20 条消息前的决定被悄悄推翻
- 范围膨胀:“顺手”加入未被请求的内容
- 话题锁定:在子问题上越陷越深,忘了最初目标
- 目标替换:解决一个相关却不同的问题,然后宣布完成
Focus Guard 在付出实际代价前让漂移可见。
何时启用 适合:
- 超过 3 个连续步骤的多步任务
- 早期决策会约束后续步骤的会话
- 范围蔓延代价高的任务(重构、迁移、多文件编辑)
- 长调试/调查会话,原问题易丢失
- 协作场景,需对齐已共识内容
跳过:
- 一次性快速任务、单点提问、故意开放范围的探索
协议 步骤 1:会话锚点 多步会话开始时定义锚点: [Session Anchor] Goal: … In scope: … Out of scope: … Done when: …
步骤 2:决策日志 记录每个重大决定: [Decisions] ✓ D1: [决定内容] — [原因] ✓ D2: … 若要推翻已记录决定,先显式标旗:“这将推翻 D2,确认?”
步骤 3:漂移检测 每走一大步,自检:
- 该动作是否推进锚点?
- 是否依赖仍有效的旧决策?
- 属于已共识范围,还是悄悄溜进来的?
步骤 4:范围闸门 中途出现新子任务时评估: 类型 | 动作 ---|--- 目标必需 | 执行,记录 相关但非必需 | 标旗,询问用户是否纳入 话题分支 | 标旗,当前目标完成后再做 超出范围 | 礼貌拒绝,保持航向
规则:仅通过显式决策扩大范围,绝不默认扩展。
步骤 5:进度检查 5 步以上会话,在天然断点简要汇报: [Progress Check] Done: … Next: … Still in scope: [yes / flag if changed] 限 3 行,只在方向可能被质疑时输出。
漂移信号速览
- 未被请求却加错误处理
- 顺手重构邻近代码
- “趁手”把特定方案泛化
- 仅被引用却改样式/格式化
- 为一次性操作创建抽象
这些未必错,但必须是显式选择,而非无声添加。
输出格式 会话开启: [Focus Guard: Active] Goal: … Done when: …
中途标旗: [Scope Flag] 这将新增 X,不在原目标内。是否纳入?[y/n]
会话结束: [Session Complete] Goal achieved: [yes / partial — 剩余事项] Deferred: [被标旗但未做的列表]
最佳搭档 clarity-first — 先定义锚点 task-pilot — 把目标拆成可追踪步骤 honest-critic — 质疑当前方向是否仍正确
openclaw install focus-guard openclaw install clarity-first openclaw install task-pilot