goal-heartbeat-engine

Verified·Scanned 2/19/2026

多目标轮转心跳引擎。当 cron 心跳触发、或 Agent 需要自主决定下一步行动时自动调用。提供:骰子随机模式选择、目标健康度追踪、防重复机制、接力棒续跑、产出质量红线。适用于任何需要在多个长期目标间智能轮转、持续产出的 AI Agent 系统。

from clawhub.ai·vfc4ac4c·11.8 KB·0 installs
Scanned from 1.0.0 at fc4ac4c · Transparency log ↗
$ vett add clawhub.ai/wilsonliu95/goal-heartbeat-engine

Goal Heartbeat Engine

铁律:每次心跳 = 至少一个有形产出。"什么都不做"是不可达状态。


概述

心跳引擎是一个多目标轮转状态机,让 AI Agent 在多个长期目标间智能分配注意力,确保每次执行都有实质性产出。

运行时数据位置(本 Skill 只定义算法,数据在 workspace 下):

  • workspace/memory/PULSE.md — 状态机(轮转计数、接力棒、防重复记录)
  • workspace/memory/GOALS.md — 目标看板(G1-G4 里程碑 + 子任务进度)

核心机制

  • 🎲 骰子随机 — 5 种模式等概率分配,避免路径依赖
  • 📊 健康度追踪 — STARVED/COLD/OK/HOT 四级预警
  • 🔄 防重复 — 硬性规则阻止重复劳动
  • 🏃 接力棒 — 跨心跳任务续跑

触发方式:cron 自动触发(非人工调用)


心跳执行算法(六步状态机)

Step 0: 读取状态(强制)

读 PULSE.md:
  - 上次心跳做了什么?
  - 哪个目标最饥饿?
  - 接力棒是什么?等了几次?
  - 近10次产出有没有重复模式?

读 GOALS.md:
  - 有没有未勾选的子任务?
  - 健康仪表盘哪个目标 STARVED?

检查紧急事项:
  - 主人有未回复消息?→ 立即回复(≤30秒)
  - 有任务失败/异常?→ 处理

Step 1: 掷骰子,决定模式

执行: date +%s
取末两位数字作为 dice_roll (00-99)

模式决策表:
  00-19 (20%): 🚀「大力出奇迹」— 做一件大胆的、可能改变轨迹的事
  20-39 (20%): 🎲「随机深潜」— 从种子关键词表随机选,探索未知
  40-59 (20%): 🏃「接力续跑」— 执行 PULSE.md 中的接力棒
  60-79 (20%): 📈「补位推进」— 服务最饥饿(STARVED/COLD)的目标
  80-99 (20%): 🎁「给主人惊喜」— 创造主人没想到但会喜欢的价值

⚠️ 覆盖规则(优先级高于骰子):
  - 接力棒等了 > 3次心跳 → 强制「接力续跑」
  - 某目标24h内0次服务 → 强制该目标
  - 防重复规则触发 → 切换目标或类型

Step 2: 选定行动

根据模式选择具体行动:

  • 🚀 大力出奇迹 → 参见 references/action-protocols.md 大力出奇迹协议
  • 🎲 随机深潜 → 参见 references/seed-keywords.md,用 dice_roll 选关键词
  • 🏃 接力续跑 → 执行 PULSE.md 中记录的接力棒
  • 📈 补位推进 → 找 GOALS.md 中最饥饿目标的第一个未勾选子任务
  • 🎁 给主人惊喜 → 参见 references/action-protocols.md 惊喜协议

Step 3: 立即执行(≥5分钟深度工作)

不是"计划做",是"已经做了"
不是搜一次就完,是搜透、读透、产出

最低标准:
  - 搜索 5+ 次(中英双语)
  - 精读 2+ 篇全文
  - 产出可保存的文件

Step 4: 交付产出(必须有!至少一个)

产出类型(每次至少一个):
  📄 调研笔记 / 竞品分析 / 论文摘要
  🔧 脚本 / 工具 / 自动化改进
  💡 洞察文档 + 行动建议
  📊 数据整理 / 对比表
  🎨 创意方案 / 产品 idea
  🛠️ 原型 / demo / PoC

文件命名:{主题}-{YYYY-MM-DD-HHMM}.md

Step 5: 更新状态(闭环)

必须全部完成:
  ✏️ 更新 PULSE.md:
    - 「上次心跳」区块
    - 目标轮转计数器(+1)
    - 最近10次记录(追加,超10删最早)
    - 接力棒状态
  ✏️ 更新 GOALS.md: 勾选完成的子任务
  ✏️ 写入 memory(学到了什么)
  📱 值得告诉主人?→ 通知 ≤3行

Step 6: 自检

□ 我产出了什么具体的东西?
□ 产出保存到了哪个文件?
□ PULSE.md 已更新?
□ 接力棒已写入?
□ GOALS.md 更新了?
□ 有值得告诉主人的发现吗?

六个都打勾才算完成。少一个 = 没完成,补上再退出。

质量红线

✅ 合格的心跳产出

  • 搜索 5+ 次(中英双语),精读 2+ 篇全文
  • 产出可保存的文件
  • 有新的 insight,不是重复已知信息
  • 推进了某个目标的具体进度
  • PULSE.md 已正确更新

❌ 不合格(必须重做)

  • "检查了一下,没什么新的" ← 不存在
  • "计划下次做 XX" ← 计划不是产出
  • 搜了 1-2 次就下结论 ← 不够深
  • 和上次心跳做了一模一样的事 ← 没进步
  • 没更新 PULSE.md ← 流程违规

PULSE.md 模板

新用户初始化时,在 workspace/memory/ 下创建 PULSE.md

# PULSE.md - 心跳状态机

_每次心跳第一步:读这个文件。最后一步:更新这个文件。_

---

## 上次心跳

- **时间**: (等待第一次心跳)
- **服务目标**: -
- **执行动作**: -
- **产出文件**: -
- **接力棒**: 系统初始化,任选一个目标开始

---

## 目标轮转计数器

| 目标 | 上次服务 | 7日服务次数 | 健康度 |
|------|---------|-----------|--------|
| (从 GOALS.md 读取目标列表填入) |

**健康度规则**:
- 🔴 STARVED (< 2次/7天) → 必须优先
- 🟡 COLD (2-3次) → 关注
- 🟢 OK (4-7次) → 正常轮转
- 🔵 HOT (8+次) → 让位

---

## 最近10次心跳记录

| # | 时间 | 目标 | 产出 | 类型 |
|---|------|------|------|------|
| (等待第一次心跳) |

---

## 防重复规则(硬性执行)

1. 连续3次同一目标 → 必须切换
2. 连续3次同类型产出 → 必须切换
3. 近10次中「调研」>5次 → 下次必须是脚本/工具/原型/创意
4. 接力棒等>3次心跳 → 强制「接力续跑」

---

## 接力棒状态

- **当前接力棒**: (初始化)
- **等待心跳数**: 0
- **来源**: 初始化

通知规则

  • 有价值的发现 → 简短通知(≤3行)
  • 日常推进 → 只记录,不打扰
  • 重大发现 → 立即通知
  • 安静时间 (23:00—08:00) → 不发通知,早上汇总

永不空转保底

如果走完 Step 0-2 仍无法决定,执行紧急协议:

date +%s 取末位 (0-9):
0: 搜最新 AI 论文总结
1: 随机选一个竞品做深度调研
2: 分析今天最佳产品发布
3: 试用 GitHub trending 排名第一的 AI 仓库
4: 整理本地周末活动推荐
5: 写一个自动化脚本
6: 搜一条新技术洞察
7: 读 Hacker News 头条写分析
8: 试用一个没用过的已安装 Skill
9: 搜最新相关专利

这是最后防线。必须选一个。"没事可做"不是选项。


参考文档

  • references/action-protocols.md — 大力出奇迹协议 + 惊喜协议
  • references/seed-keywords.md — 随机深潜种子关键词表(用户自定义)