| name | goal_engineering |
| description | 开发任务统一入口:把模糊想法编排成"询问→写方案→执行"三阶段闸门流程。 当用户说"做个功能""重构XX""开发XX""帮我定目标""goal engineering"、 任何涉及开发/重构/新功能的需求时使用。先调研追问(路由 grill-me),再写融合 Harness 的 spec(路由 spec),审核通过后拆 tasks 执行到底(路由 tasks + implement),执行阶段不再询问。引用 dev/leader 的目标七问和五种死法心法。 触发词:goal engineering、目标工程、做个功能、重构、开发、帮我定目标、定义目标、 让 agent 自己跑、开发新功能。
|
Goal Engineering · 目标工程编排入口
开发任务的统一入口。把"模糊想法→自主完成"编排成三阶段闸门流程,每阶段有明确完成态,阶段间用 AskUserQuestion 做硬闸门。
核心信念
Harness 比 Goal 更重要。 详见 dev/leader skill。本编排把 Leader 的目标七问 + 五种死法融入流程,确保产出的 spec 既有 Goal 也有 Harness。
前置判断:是否走本流程
接到开发需求时先判断:
- 目标模糊、需澄清 → 走本 skill 全流程
- 目标清晰、要自主跑 → 走本 skill(跳过部分追问,直接写方案)
- 小修小补(改 bug、调参数、加一行)→ 走
anti-hallucination,不走本 skill
三阶段流程
阶段 1:询问阶段(Ask)
目标:把模糊想法变成方向取舍记录。
1.1 调研(Leader 心法:自己能查的一律不问)
- 有代码库就实测:命令是否存在、基线数字、文档与实际差异(README 写的命令不存在、lint 是 echo 占位的假绿灯、没被 import 的文件从覆盖率消失——都是真坑)
- 行业知识联网查,查不到标"假设,未验证"
- 摸不到环境就把自测写成任务 0
1.2 追问(路由到 grill-me)
- 一次只问一个问题,每个问题附推荐答案
- 沿 design tree 逐个解决决策依赖
- 只问查不到且会改变任务书的:方向取舍、验收裁量、风险偏好、时间盒
- 用 AskUserQuestion 工具,每个问题给 2-4 选项加推荐
1.3 拍板(Leader 心法:≤5 个问题,该做/不该做各一波)
- 每个问题给 2-4 选项加推荐
- 用户不在场按默认走、标"猜的"、写进"我替领导拍的板"一节——沉默替领导拍板是越权,摆到明面是尽职
完成态:方向取舍记录写入 .agents/specs/{feature}/design-decisions.md
闸门:AskUserQuestion 确认"方向已清晰,进入写方案"——选项「继续写方案(推荐)」/「再追问几个问题」/「取消」
阶段 2:写方案阶段(Spec)
目标:产出融合 Harness 的 spec 文档。
步骤(路由到 spec,产物结构见该 skill 的融合模板):
- 按 Leader 六节(目的/完成态/证据/反作弊/边界/取舍)+ spec 模板写 spec
- 写入
.agents/specs/{feature}/spec.md
- 自检(Leader 发出前自检):
- 分型对吗?命令亲手跑过?没问的都写进"我替领导拍的板"带默认值?
- 验收全是命令?防作弊、反向验证、三道止损、PROGRESS.md/BLOCKED.md 机制齐?
- 全文无"来找我"?大白话?零多余玩笑?
完成态:.agents/specs/{feature}/spec.md 存在且通过自检
闸门:AskUserQuestion 确认"方案审核通过,进入执行"——选项「通过,开始执行(推荐)」/「方案需修改」/「取消」。这是关键闸门,通过后进入执行阶段不再询问。
阶段 3:执行阶段(Execute)
目标:拆任务 + 实现到底,不再打扰用户。
3.1 拆任务(路由到 tasks)
- 把 spec 拆成 tracer-bullet tickets(vertical slice,贯穿所有层)
- 写入
.agents/specs/{feature}/tasks.md,按依赖顺序编号,声明 blocked_by
- 不再询问用户拆分粒度——按 tasks 的 vertical slice 规则自行决策
3.2 实现(路由到 implement)
- 按依赖图领 frontier ticket(blockers 都 completed 的)
- TDD 实现(路由
dev/tdd),提交,更新 tasks.md 状态
- 循环领取下一个 frontier ticket,直到全部完成
完成态:所有 ticket 状态 = completed
不再询问:执行阶段遇到问题按 spec 的 Harness 规则自行决策:
- 三道止损:同一验收连败 3 次换项、结果比基线差回滚如实报告、量出数字对不上就停
- 拿不准的写进
.agents/specs/{feature}/BLOCKED.md,跳过继续做别的
- 绝不回头问用户(执行阶段不再询问是硬规则)
上下文压缩防护(执行阶段硬规则)
执行阶段极易触发上下文压缩。压缩后 agent 容易误判"压缩历史次要"而重拆任务——这是严重错误。
真源层级(从高到低):
.agents/specs/{feature}/spec.md + tasks.md —— 方案与任务真源
- 压缩历史中的用户明确要求 —— 用户意图权威
- 压缩历史中的 agent 中间产物 —— 可重建,非权威
硬规则:
- 上下文压缩后,醒来第一步读
spec.md 和 tasks.md,对照当前 ticket 状态续跑
- 禁止因压缩而重写 spec.md 或重拆 tasks.md,除非用户明确要求"重新规划"
- 每完成一个 ticket,立刻更新 tasks.md 的 Status 字段(ready→in_progress→completed)作为恢复锚点
- 详见 AGENTS.md「上下文压缩防护」小节
阶段间路由总结
| 阶段 | 路由到 | 产物 | 闸门 |
|---|
| 询问 | grill-me(追问)+ dev/leader(心法) | design-decisions.md | AskUserQuestion 确认方向 |
| 写方案 | spec(融合 Harness) | spec.md | AskUserQuestion 审核通过 |
| 执行 | tasks + implement | tasks.md + 代码 | 无闸门,做到底 |
关键规则
- Harness 不可省:spec 必须有 Anti-Cheat 节,点名禁止偷懒姿势,配反向验证
- 执行阶段不询问:方案审核通过后,不再用 AskUserQuestion 打断用户,除非全部完成或遇 BLOCKED
- 压缩后读真源:压缩后先读 spec.md + tasks.md 续跑,不重拆不重写
- 法与情报分家:"不许"是法(违反即不合格),"建议"是情报(可走更好的路,PROGRESS.md 记一句)
- 富规格优先:仓库已有的测试套件/schema/验收脚本直接写路径当规格,别用散文复述
与其他 skill 的关系
- 引用:
dev/leader(七问 + 五种死法心法)、grill-me(追问执行)、spec(写 spec)、tasks(拆任务)、implement(实现)、dev/tdd(TDD)
- 被路由:AGENTS.md 的 Skill 触发机制把开发类任务指向本 skill