agentleFS
konglong87konglong87/enjoy_harness_ai/skills/harness-goal/SKILL.md

harness-goal

Skill0 starsChanged 8 months agoMITView on GitHub

目标追踪技能,防止任务偏离目标,确保任务执行符合SMART原则

The file

Files
SKILL.md

harness-goal 目标追踪技能

核心能力

  1. 检查前置条件(harness-init已完成)
  2. 创建SMART目标文件(目标开始时强制)
  3. 更新目标里程碑(阶段性完成时)
  4. 调整目标(用户修改需求时强制)
  5. 验证目标达成(任务完成时强制)
  6. 防止目标偏离(持续监控,自治模式下不中断执行)

前置条件

  • harness-init 已完成
  • Git仓库已初始化

执行步骤

Step 1: 检查前置条件

使用 Read 工具读取:.EnjoyHarness/SKILL_REGISTRY.md

检查条件:

  • harness-init 已标记为完成

如果未完成:

❌ 错误: 系统未初始化
💡 请先运行: harness-init

Step 2: 判断用户意图

根据当前状态和用户消息,判断需要执行的操作:

同时读取:.EnjoyHarness/EXECUTION_CONTRACT.md

自治模式规则:

  • 如果 mode: autonomous_after_confirmation 且 requirements_confirmed: true,默认继续当前目标链路,不向用户发起新的执行确认。
  • 仅当用户明确提出“需求变更”且这发生在最终确认之前,才进入“调整目标”分支。
  • 在自治模式下发现附加优化项或范围外事项时,记录为后续候选,不中断当前目标执行。

意图分类

  1. 创建目标:用户提出新任务,当前无pending目标
  2. 调整目标:用户修改需求,当前有pending目标
  3. 验证目标:AI认为完成,需要验证目标达成情况
  4. 更新里程碑:阶段性完成,记录进度
  5. 查询/对话:纯信息查询,无需创建目标

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 工具更新目标文件:

  1. 增加 version 计数(version: N → version: N+1)
  2. 在"目标调整历史"中记录:
    • 调整时间
    • 调整原因
    • 新的SMART目标

示例:

## 目标调整历史

### 版本 2 (2026-03-28 11:00)
**调整原因**:用户补充需求,需要支持动态调整目标

**新的SMART目标**:
- Specific: 实现自动目标追踪、验证和动态调整机制
- Measurable: 任务记录、会话结束前验证、未达成继续执行、实时调整目标

Step 6: 验证目标达成(强制触发)

触发条件:

  • AI认为"完成了"、"做好了"
  • 准备提交代码、创建PR
  • 准备结束会话

强制动作:

使用 Read 工具读取目标文件,对比原始目标 vs 实际完成情况。

验证清单:

  • Specific目标是否完全达成
  • Measurable指标是否满足
  • 所有里程碑是否完成

验证结果处理:

✅ 目标达成:

  • 使用 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 ""

成功标准

  • 目标文件创建成功(符合SMART原则)
  • 目标文件包含完整的5个维度
  • 里程碑分解清晰(3-5个关键节点)
  • 全局状态已更新
  • 事件已记录到EVENT_LOG.md
  • 迭代计数已更新
  • 技能已标记为完成

失败兜底

  • 前置条件未满足 → 终止执行,提示运行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,数据库优化不在当前目标范围
  • 在自治模式下记录为后续候选目标,不中断当前执行

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.