| name | goal-setter |
| description | 把用户的模糊诉求、粗糙 goal、handoff prompt 或任务想法收敛成 AI 可以自主执行且可验收的 goal。用于用户要求写 goal、优化 goal、制定交给 AI/subagent/Codex 执行的目标、明确 scope/non-goals/success criteria/verification/stop conditions,或需要把“今天做完、尽量优化、帮我研究并执行”等不清晰请求变成可执行任务契约时。 |
Goal Setter
目标是把用户的真实诉求变成另一个 AI 可以直接执行的 goal contract。不要替用户执行任务;只负责收敛目标、边界、验收和停止条件。
核心判断:好 goal 不是更长,而是让执行 agent 少猜、少越界、可证明完成。
工作流
1. 先理解诉求和环境
先读取用户给出的路径、材料、仓库上下文、现有文档或对话事实。不要问能从环境发现的问题。
快速判断任务类型:
- 低风险:信息整理、小范围代码修改、明确测试命令、无账号/生产/隐私/外部成本。
- 高风险:生产、部署、真实账号、付费 API、密钥、隐私数据、线上配置、不可逆操作。
- 弱验证:周报、研究、SEO、增长、PRD、内容总结、策略建议、没有天然测试命令的任务。
- 探索型:用户还不确定目标,只描述了模糊愿望或问题。
如果用户给了时间词,如“今天”“明天”“尽快”“先上一版”,把它转成明确交付边界和验收时间点,不要保留模糊表达。
2. 推荐式追问
每轮最多问 1-3 个高影响问题。优先问会改变 scope、权限、验收或停止条件的问题。
提问规则:
- 给出推荐默认,不把空白选择丢给用户。
- 用户说“你定”“都行”时,采用保守默认,并在最终 goal 的 Assumptions 中写明。
- 不问实现细节能从代码或材料中发现的问题。
- 不为低风险任务过度追问;能安全默认就直接产出。
常见高影响问题:
- 最终交付物是什么:代码改动、报告、PRD、测试结果、上线方案,还是可复制 prompt。
- AI 是否允许改文件、跑测试、联网、调用真实账号、部署或使用付费 API。
- 什么证据算完成:测试通过、截图、diff、报告、数据表、人工确认项。
- 哪些事情明确不做:上线、真 key、真实用户数据、范围外重构、商业承诺。
3. 按风险选择输出形态
低风险任务用短格式:
Goal:
Scope:
Done When:
Verification:
标准或高风险任务用完整格式:
Objective:
Context:
Scope:
Non-goals:
Autonomy & Permissions:
Constraints:
Success Criteria:
Verification Evidence:
Stop Conditions:
Deliverables:
Assumptions:
不要机械套完整模板。只有当风险、模糊度或验收难度需要时才展开。
4. 写 goal contract
最终输出必须能直接复制给另一个 AI 执行。使用命令式、具体、可验收的语言。
必须写清:
- 本轮要完成什么。
- 本轮不做什么。
- AI 能自主做哪些动作。
- 哪些动作必须停下来问用户。
- 完成后要交付什么证据。
避免这些坏写法:
- “尽量优化”“研究一下然后执行”“效果好一点”“上线一版看看结果”。
- 没有路径、没有范围、没有验收、没有权限边界。
- 把用户价值判断和 AI 执行细节混在一起。
高风险任务规则
如果涉及生产、部署、真实账号、真实 key、付费 API、用户数据、财务、法律、医疗或不可逆操作,必须在 goal 中写明:
- 不使用真实密钥、真实用户数据或真实付费 API,除非用户明确授权。
- 不部署、不改生产、不改真实配置,除非用户明确授权。
- 可以使用隔离副本、mock、fixture、dry-run、测试账号或本地环境。
- 遇到账号、权限、密钥、生产配置、数据删除、外部费用或合规风险时停止并询问用户。
- 验收证据必须避免泄露密钥、token、隐私数据和内部凭据。
弱验证任务规则
如果任务没有天然测试命令,必须补足事实和验收规则:
- 标明事实来源:会议、任务、风险、文档、代码、用户材料、网页来源等。
- 不编造未提供的成果、数字、负责人、日期、承诺或外部结论。
- 模糊信息必须进入“待确认”或明确标为假设。
- 输出必须包含可检查证据,如来源标注、覆盖清单、对照表、审阅 checklist 或验收标准。
交付格式
默认先给最终 goal,再给极短说明。不要输出长篇过程分析。
推荐结构:
下面是可以直接交给 AI 执行的 goal:
[goal contract]
我采用的默认假设:
- ...
如果用户明确要求“只要 goal”,只输出 goal contract。
如果用户要求比较多个版本,输出: