| name | harness-goal |
| description | 目标追踪技能,防止任务偏离目标,确保任务执行符合SMART原则 |
| trigger_words | ["harness-goal","目标追踪","goal","目标管理"] |
| priority | HIGH |
| dependencies | ["harness-init"] |
| version | v3.0.0 |
harness-goal 目标追踪技能
核心能力
- 检查前置条件(harness-init已完成)
- 创建SMART目标文件(目标开始时强制)
- 更新目标里程碑(阶段性完成时)
- 调整目标(用户修改需求时强制)
- 验证目标达成(任务完成时强制)
- 防止目标偏离(持续监控,自治模式下不中断执行)
前置条件
- harness-init 已完成
- Git仓库已初始化
执行步骤
Step 1: 检查前置条件
使用 Read 工具读取:.EnjoyHarness/SKILL_REGISTRY.md
检查条件:
如果未完成:
❌ 错误: 系统未初始化
💡 请先运行: harness-init
Step 2: 判断用户意图
根据当前状态和用户消息,判断需要执行的操作:
同时读取:.EnjoyHarness/EXECUTION_CONTRACT.md
自治模式规则:
- 如果
mode: autonomous_after_confirmation 且 requirements_confirmed: true,默认继续当前目标链路,不向用户发起新的执行确认。
- 仅当用户明确提出“需求变更”且这发生在最终确认之前,才进入“调整目标”分支。
- 在自治模式下发现附加优化项或范围外事项时,记录为后续候选,不中断当前目标执行。
意图分类
- 创建目标:用户提出新任务,当前无pending目标
- 调整目标:用户修改需求,当前有pending目标
- 验证目标:AI认为完成,需要验证目标达成情况
- 更新里程碑:阶段性完成,记录进度
- 查询/对话:纯信息查询,无需创建目标
Step 3: 创建SMART目标(强制触发)
触发条件:
- 用户消息包含行动指令(实现、修复、重构、优化等)
- 多步骤需求(需要2+步骤完成)
- 涉及代码编写、文件修改
- 当前无pending目标
强制动作:
使用 Bash 工具获取当前时间:
TIMESTAMP=$(date +"%Y-%m-%d_%H%M")
DATE=$(date +"%Y-%m-%d")
TIME=$(date +"%H:%M:%S")
echo "时间戳: $TIMESTAMP"
echo "日期: $DATE $TIME"
使用 Write 工具创建目标文件:memory/goals/${TIMESTAMP}_${目标关键词}.md
内容模板:
---
goal_id: GOAL-${TIMESTAMP}
created_at: ${DATE} ${TIME}
status: pending
version: 1
session_id: ${SESSION_ID}
---
# 目标文件
## 原始需求
{用户原始表述}
## SMART 目标提取
### Specific(具体的)
{明确要达成什么}
### Measurable(可衡量的)
{量化指标和成功标准}
### Achievable(可实现的)
{资源和能力可行性分析}
### Relevant(相关性的)
{与大局目标的关系}
### Time-bound(有时限的)
{明确的截止时间}
## 关键里程碑
- M1: {第一个里程碑} - 预计完成时间
- M2: {第二个里程碑} - 预计完成时间
- M3: {最终完成} - 预计完成时间
## 目标调整历史
无(初始版本)
## 验证记录
暂无
## 最终状态
pending
Step 4: 更新里程碑
触发条件:阶段性完成
使用 Edit 工具更新目标文件:
将里程碑状态从 - [ ] 改为 - [x]
示例:
- [x] M1: 完成脚本开发 - 2026-03-28 10:30 ✅
- [ ] M2: 完成测试 - 预计 2026-03-28 11:00
Step 5: 调整目标(强制触发)
触发条件:
- 用户明确修改需求("算了"、"改成"、"加一个")
- 用户补充新的要求或约束
- 环境变化导致目标不可行
强制动作:
使用 Edit 工具更新目标文件:
- 增加 version 计数(version: N → version: N+1)
- 在"目标调整历史"中记录:
示例:
## 目标调整历史
### 版本 2 (2026-03-28 11:00)
**调整原因**:用户补充需求,需要支持动态调整目标
**新的SMART目标**:
- Specific: 实现自动目标追踪、验证和动态调整机制
- Measurable: 任务记录、会话结束前验证、未达成继续执行、实时调整目标
Step 6: 验证目标达成(强制触发)
触发条件:
- AI认为"完成了"、"做好了"
- 准备提交代码、创建PR
- 准备结束会话
强制动作:
使用 Read 工具读取目标文件,对比原始目标 vs 实际完成情况。
验证清单:
验证结果处理:
✅ 目标达成:
- 使用 Edit 工具更新目标文件:
- status: completed
- 最终状态: completed
- 完成时间: {当前时间}
❌ 目标未达成:
- 必须继续执行缺失部分
- 不得声称"基本完成"
- 记录缺失项并继续执行
- 在自治模式下直接触发后续执行或 loop-back,不等待用户确认
Step 7: 记录目标事件
使用 Edit 工具追加到:.EnjoyHarness/EVENT_LOG.md
事件格式:
{TIMESTAMP} | GOAL_{ACTION} | harness-goal | {目标ID} - {动作描述} | {SUCCESS/FAILURE}
示例:
2026-03-28T10:30:00 | GOAL_CREATE | harness-goal | GOAL-20260328_1030 - 创建目标 | SUCCESS
2026-03-28T11:00:00 | GOAL_ADJUST | harness-goal | GOAL-20260328_1030 - 调整目标(v2) | SUCCESS
2026-03-28T12:00:00 | GOAL_VERIFY | harness-goal | GOAL-20260328_1030 - 验证通过 | SUCCESS
Step 8: 更新全局状态
使用 Edit 工具更新:.EnjoyHarness/GLOBAL_STATE.md
更新当前任务状态:
## 当前任务
- 任务ID: {目标ID}
- 状态: {pending/in_progress/completed}
- 开始时间: {创建时间}
Step 9: 更新迭代计数
使用 Edit 工具更新:.EnjoyHarness/ITERATION_COUNTER.md
增加计数(本技能约6次迭代:Write 1次 + Edit 5次 + Bash 1次):
current_iteration: N+6
Step 10: 标记技能完成
使用 Edit 工具更新:.EnjoyHarness/SKILL_REGISTRY.md
将本技能标记为已完成:
- [x] harness-goal - 目标追踪技能 ✅
Step 11: 输出完成信息
使用 Bash 工具输出:
echo ""
echo "✅ harness-goal 执行完成!"
echo ""
echo "📋 目标文件: memory/goals/${TIMESTAMP}_${关键词}.md"
echo "🎯 目标状态: {pending/in_progress/completed}"
echo ""
echo "📌 SMART目标:"
echo " - Specific: {具体目标}"
echo " - Measurable: {衡量标准}"
echo ""
echo "🔍 下一步:"
echo " - 继续执行任务,定期检查目标偏离"
echo " - 阶段性完成时更新里程碑"
echo " - 任务完成时验证目标达成"
echo ""
成功标准
失败兜底
- 前置条件未满足 → 终止执行,提示运行harness-init
- 目标文件创建失败 → 记录错误,触发harness-handle-failure
- 目标验证失败 → 继续执行缺失部分,不得声称"基本完成"
- 范围外新增想法 → 记录为后续目标候选,不打断当前自治执行
联动关系
- 前置技能: harness-init
- 失败触发: harness-handle-failure
- 真实阻塞升级: harness-escalate-to-human(目标长期无法达成)
迭代计数
本技能执行预计迭代次数: 约6次(Write 1次 + Edit 5次 + Bash 1次)
测试用例
测试场景1:创建目标
输入:
用户: 修复飞书API认证失败的问题
预期输出:
- 创建目标文件:
memory/goals/20260328_1030_修复飞书API认证.md
- 目标包含SMART维度
- 记录创建事件到EVENT_LOG.md
测试场景2:调整目标
输入:
用户: 对了,还要支持企业微信的通知
预期输出:
- 更新目标文件,version: 2
- 记录调整历史
- 新增企业微信相关目标
测试场景3:验证目标
输入:
AI: 完成了,代码已经提交
预期输出:
- 读取目标文件,对比原始目标
- 验证所有里程碑是否完成
- 如果未完成,继续执行缺失部分
测试场景4:防止偏离
输入:
用户: 顺便优化一下数据库查询性能
预期输出:
- 提示:当前目标为修复飞书API,数据库优化不在当前目标范围
- 在自治模式下记录为后续候选目标,不中断当前执行