steer-once 是一个用于把“反复纠正智能体”转化为持久修复的技能。资料强调:智能体的道歉改变不了下一次会话,只有被合并的规则才有用。它针对你输入过一次以上的纠正,寻找本可阻止这些问题的层级,在该层级落地最小的持久改动并附证据,一周后检查纠正是否真的停止;若没停止,就上升一层;若规则使情况变坏,则提出回滚。
用途与适用时机
- 快速路径:会话中你刚重复了某条纠正(如“again”“I told you”“why did you stop”“didn't I give you a skill”),立即处理这一条。
- 批量路径:“mine my corrections”、每周回顾,或提示镜像报告中某类在 ≥3 个会话累计 ≥N 次。
- 团队变体:仓库中智能体提交的 PR 上反复出现的评审反馈(见 Sources)。
- 不适用:一次性偏好、单个坏回合,或已有开放的 steer-once PR 正在处理的问题。
主要能力
- 采集与分类纠正:通过 prompt-mirror 的提取器从你输入的消息中挖掘(本地、脱敏、按来源过滤),命令为 python3 <skills-dir>/prompt-mirror/scripts/mine_sessions.py --since 21d [--repo owner/name];使用 correction_classes、repeated_correction_phrases 及各消息的 classes/flags,并读取 messages.jsonl 查看实例。分类包括 gate(凭空发明审批、锁定、预检、“精确 GO”措辞)、over_ask(索要已有之物)、premature_stop(把里程碑当完成)、polling(空等而非并行工作)、status_gap(让人轮询状态)、verification_theatre(以检查替代交付)、stale_claim(基于过期克隆或缓存推理)、shallow_fix(压制症状)、letter_of_law(缩水雄心需求)、scope_creep(做未要求的支线)、process_default(缺少团队默认流程)、runtime_gap(提示词无法修复的问题)。同时统计同类上的让步开场白(“You're right”“Agreed”“Good catch”),让步后再次重复是最强的“规则缺失或未加载”信号。
- 发现复现:同类别、同底层期望,在窗口内 ≥N 次、跨 ≥2 个会话(默认 N=3);合并近重复项,每个期望只留一条规则。
- 检查既有规则:搜索 .github/copilot-instructions.md、.github/instructions/.instructions.md(applyTo 范围)、AGENTS.md、.github/skills//SKILL.md、.github/lever.yml 及个人 ~/.copilot/copilot-instructions.md。规则已存在却仍复现,则结论为“规则存在但薄弱、放错位置或未加载”,先修位置或措辞,或升级层级,而不是继续堆文字。
- 选择最便宜的持久层:个人姿态→个人指令;仓库级默认姿态→.github/copilot-instructions.md(一行,含原因);权限或自治→.github/lever.yml 中的旋钮而非文字;任务特定流程→限定范围的指令或技能规则;可机械检测→lint 或 CI 检查;行为性→今天会失败的测试;时序或活性→钩子或自动化;超出智能体控制→产品或基础设施缺陷报告。集中在某一旋钮的纠正应改为旋钮变更,而不是新增规则。
- 写规则:正面、具体、含原因与范围,最多 3 行,标明所设旋钮;不用全大写、不用“NEVER”墙,绝不为防关卡而加关卡。
- 开 PR 或提 issue:正文附证据块,包含类别、窗口/范围、计数、让步次数、现有规则、脱敏引语(每条 ≤20 词,3–5 条)、层级及取舍理由、保持门槛、未达标时的升级去向。个人指令无 PR:展示差异,仅在你同意或有记录授权时应用;发布到共享仓库前先给你看确切证据文本。
- 按自治旋钮落地:默认 L2 为人工合并的就绪 PR;仅指令类 PR 常属 L3 授权(“文档与指令 PR 绿灯可自合并”);记录适用级别。
- 台账与复测:记录类别、规则、层级、PR、基线率、复测日期;K 天后(且在范围内至少 M 条输入消息)重跑提取器,按每 100 条输入消息的类别率与基线及前 4 周周间波动比较。显著下降则保留并在 PR 评论结果;未降则上升一层并与旧 PR 关联;相邻类别上升则给出数字并提出回滚或改写。
旋钮默认值
检测阈值 N=3 次、≥2 会话、21 天;模式为开放 PR(L2,人工合并);目标为共享期望放仓库、姿态放个人;证据为脱敏引语加计数并在发布前给你看;复测 K=7 天且范围内 ≥150 条输入消息;保持门槛为 ≤基线的 50% 且超出噪声;最多 3 个开放 steer-once PR;严重度加权默认关闭。
输出
每个反复期望一个小 PR 或 issue,带 steer-once 标签和证据块;个人台账条目(默认 ~/.copilot/lever/steer-once.ledger.md,含保留、升级或回滚及前后比率);原 PR 上的复测评论。
自反馈与防止的失败模式
按规则跟踪每 100 条输入消息的类别率前后变化;跨规则看保留、升级、回滚的比例,让步开场白应下降,从首次出现到合并修复的时间应缩短。若多数规则被升级,说明层级选得太便宜;若规则抬高了相邻类别,说明规则过宽。它防止:把“You're right”当作修复;用文字规则处理应归检查、测试、旋钮或缺陷报告的事;规则膨胀、重复、矛盾且无人复测;把个人姿态硬编码进共享仓库;未经你同意把私密文本作为“证据”发布。
资料给出的实例:某重度用户会话中智能体以“You're right”等开场 75 次,同类纠正持续数天,直到变成合并的指令或技能变更才停止;从沮丧消息到合并运营模型 PR 最快 16 分钟,而一条仅停留口头的纠正约 18 天才成为默认;挖掘约 200 条输入消息重写技能后,“why did you stop”从 27 降到 0,智能体消息中的关卡措辞从 31% 降至 3%,状态询问从约 24% 降至 7%,同时其消息量从每天约 50 条升至 87 条。部分纠正是缺陷报告:“重启停滞会话”在指令存在后仍复现 8 次,因为被中断会话属提示词无法修复的运行时缺口。