{
  "schemaVersion": "1.0",
  "item": {
    "slug": "heartbeat-manager",
    "name": "Heartbeat Manager",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/zeron-G/heartbeat-manager",
    "canonicalUrl": "https://clawhub.ai/zeron-G/heartbeat-manager",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/heartbeat-manager",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=heartbeat-manager",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "_meta.json",
      "config/settings.yaml",
      "templates/daily_template.md",
      "tools/__init__.py",
      "tools/canvas_monitor.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/heartbeat-manager"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/heartbeat-manager",
    "agentPageUrl": "https://openagent3.xyz/skills/heartbeat-manager/agent",
    "manifestUrl": "https://openagent3.xyz/skills/heartbeat-manager/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/heartbeat-manager/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Heartbeat Manager",
        "body": "自动化任务监控 · 智能超时分析 · 日报/周报 · 健康度评分"
      },
      {
        "title": "Git / subprocess 声明",
        "body": "本 Skill 在 tools/git_ops.py 中使用 subprocess.run 调用系统 git 命令（git add、git commit、git push）。\n\n默认行为：Git 功能完全关闭（git.enabled: false），不会执行任何 git 操作，除非你在 config/settings.yaml 中显式开启。\n\n安全措施：\n\n所有 subprocess.run 使用参数列表，禁止 shell=True（杜绝 shell 注入）\ncommit message 经过净化，移除控制字符\nauto_push 单独开关，默认同样关闭"
      },
      {
        "title": "凭证声明",
        "body": "本 Skill 不内置、不存储任何邮件凭证。邮件功能（告警、日报、周报）需要你在安装后自行配置：\n\n提供一个 Gmail 账号及其 App Password\n填入 config/.env（该文件永远不会被上传或共享）\n\n若不配置邮件，Skill 仍可正常运行心跳检查（任务监控、健康度评分），仅邮件通知功能不可用。"
      },
      {
        "title": "副作用声明",
        "body": "本 Skill 会在运行时产生以下副作用：\n\n操作说明可关闭写入本地文件更新 workspace/ 下的 MASTER.md、state.json 等❌ 核心功能写入日志追加 logs/heartbeat.log✅ settings.yamlIMAP 读取邮件检查指定邮箱未读邮件✅ email.enabled: falseSMTP 发送邮件发送告警、日报、周报✅ email.enabled: falseGit commit + push自动提交工作区变更至远程✅ git.enabled: false（默认关闭）"
      },
      {
        "title": "1. 安装依赖",
        "body": "pip install pyyaml jinja2 python-dotenv\n# 或使用 uv（推荐）\nuv venv .venv && uv pip install --python .venv/bin/python pyyaml jinja2 python-dotenv"
      },
      {
        "title": "2. 配置邮件（可选，但强烈推荐）",
        "body": "cp config/.env.example config/.env\n\n编辑 config/.env：\n\n# Gmail 发件账号\nEMAIL_SENDER=your-agent@gmail.com\n# Gmail 应用专用密码（非登录密码）\n# 获取方式：Google 账号 → 安全性 → 两步验证 → 应用专用密码\nEMAIL_APP_PASSWORD=xxxx xxxx xxxx xxxx\n# 收件人列表（逗号分隔）\nEMAIL_RECIPIENTS=you@example.com\n\n如何获取 Gmail App Password：\n\n开启 Google 账号两步验证\n访问 myaccount.google.com/apppasswords\n生成一个应用专用密码并粘贴到上方"
      },
      {
        "title": "3. 调整配置（可选）",
        "body": "编辑 config/settings.yaml：\n\nemail:\n  enabled: true          # 改为 false 可完全禁用邮件功能\n\ngit:\n  enabled: false         # 改为 true 可开启 Git 同步（默认关闭）\n  auto_push: false       # 改为 true 可开启自动推送"
      },
      {
        "title": "4. 配置 Git 同步（可选，默认关闭）",
        "body": "⚠️ Git 功能会调用系统 git 命令向远程仓库推送内容，请确认你了解并信任此操作后再开启。\n\n如需开启，编辑 config/settings.yaml：\n\ngit:\n  enabled: true       # 第一步：开启 git 功能\n  auto_commit: true   # 每次心跳自动 commit\n  auto_push: false    # 推送到远程（确认 remote 已配置后再开启）\n\n开启前请确认：\n\n当前目录已初始化 git 仓库（git status）\n已配置远程 remote（git remote -v）\n你信任此 Skill 向该 remote 推送内容"
      },
      {
        "title": "5. 验证配置",
        "body": "python tools/heartbeat_run.py status"
      },
      {
        "title": "6. 首次心跳",
        "body": "python tools/heartbeat_run.py beat"
      },
      {
        "title": "beat — 心跳检查（每30分钟）",
        "body": "检查 .last_heartbeat 标记文件，距上次 < 30 分钟则静默退出（v1.2.0 watchdog）\n检查 daily.md 例行任务完成情况\n检查 todo.md 待办 + @due:HH:MM 超期检测\n检查 ongoing.json 任务状态机\n智能超时分析（正常推进 vs 完全卡死）\n4.5. 检查 upcoming.md 未来7天事件 — 🔴🟡🔵分级预警（v1.1.0）\n4.7. 检测 Chrome relay → 在线则同步 Canvas+FSP → 📡 同步任务自动打勾（v1.1.0）\n检查邮件（需配置凭证）\n清理已完成 todo\nGit 同步（可选）\n计算健康度评分（0-100）\n更新 MASTER.md 主控表（含 ## UPCOMING 7D 段）"
      },
      {
        "title": "reset — 每日重置（00:00）",
        "body": "发送昨日完成任务日报邮件（需配置凭证）\n重置 daily.md 为新一天\n清理已完成的 ongoing 任务"
      },
      {
        "title": "weekly — 周报（每周日 23:59）",
        "body": "汇总本周健康度趋势与任务统计（需配置凭证）"
      },
      {
        "title": "status — 查看状态",
        "body": "无需凭证，打印当前 MASTER 快照"
      },
      {
        "title": "OpenClaw 集成",
        "body": "在 HEARTBEAT.md 中添加：\n\ncd /path/to/heartbeat-manager && python tools/heartbeat_run.py beat\n\nOpenClaw 内置心跳触发时将自动执行本 Skill。"
      },
      {
        "title": "任务文件格式",
        "body": "daily.md — 每日例行任务\n\n# DAILY | 2026-02-25\n- [ ] 晨间邮件检查\n- [ ] 更新记忆库\n- [x] 系统状态确认 @done:14:30\n\ntodo.md — 动态待办\n\n- [ ] 修复登录 bug @due:18:00\n- [ ] 写周报\n\nongoing.json — 任务状态机\n\n{\n  \"tasks\": [{\n    \"id\": \"01\", \"title\": \"毕业论文\",\n    \"status\": \"WIP\", \"priority\": \"P0\",\n    \"eta\": \"2026-03-01\", \"progress\": 65,\n    \"context\": \"第三章进行中\"\n  }]\n}\n\n状态流转：IDLE → WIP → DONE，WIP → WAIT → WIP，WIP → BLOCK（智能检测卡死）"
      },
      {
        "title": "健康度评分",
        "body": "维度权重说明Daily 完成率25%例行任务完成比例Todo 完成率20%超期扣分Ongoing 状态25%BLOCK/超期扣分邮件处理15%未读过多扣分Git 同步15%push 成功满分；Git 禁用时不扣分\n\n连续 3 次低于 60 分 → 邮件告警"
      },
      {
        "title": "未来事件监控 (v1.1.0)",
        "body": "每次心跳自动检测 Chrome 扩展 relay，在线时同步 Canvas + FSP 数据到 workspace/upcoming.md；离线时保留现有数据不做任何删除。"
      },
      {
        "title": "upcoming.md 四分区格式",
        "body": "# Upcoming Events\n\n## 🔮 FUTURE （待完成事件）\n- 2026-03-01 | Canvas: CS601 Quiz 3 | [作业] @due:23:59 @src:canvas @id:canvas-xxx\n- 2026-03-02 | 飞行训练 KGAI N12345 | [飞行] @time:14:00-17:00 @src:fsp @id:fsp-yyy\n\n## 📌 MANUAL （手动添加，不受自动清理影响）\n- 2026-05-15 | 期末考试周 | [考试]\n\n## ✅ DONE （已完成，事件日期+7天后自动删除）\n- [x] 2026-02-25 | Internet Systems Project #1 | [作业] @done:2026-02-25\n\n## ⏰ OVERDUE （已过期未完成）\n（暂无）\n\n标签说明：\n\n@src:canvas / @src:fsp — 自动同步来源，未标记 src 的为手动事件\n@id:xxx — 来源系统唯一ID，用于去重更新\n@due:HH:MM — 截止时间；@time:HH:MM-HH:MM — 事件时段\n@done:YYYY-MM-DD — 完成日期，超过7天后自动清理\n\n7天预警颜色（MASTER.md 中显示）：\n\n🔴 ≤1天（紧急）→ ALERTS 区也会出现\n🟡 ≤3天（注意）\n🔵 ≤7天（提醒）"
      },
      {
        "title": "Canvas LMS 配置",
        "body": "# 获取方式：Canvas → Account → Settings → Approved Integrations → New Access Token\n# 注意：部分机构学生账户可能无权生成 token（可手动维护 upcoming.md）\n\n在 config/.env 中填入：\n\nCANVAS_API_TOKEN=your_token_here\n\n在 config/settings.yaml 中配置：\n\nmonitoring:\n  canvas:\n    enabled: true\n    base_url: \"https://your-canvas-url.instructure.com\"\n    lookahead_days: 30"
      },
      {
        "title": "Flight Schedule Pro (FSP) 配置",
        "body": "FSP API 为机构级权限，普通学员账户通常无法获取。如有权限：\n\nFSP_API_TOKEN=your_token_here\nFSP_OPERATOR_ID=your_operator_id"
      },
      {
        "title": "Chrome 浏览器自动同步",
        "body": "每次 beat 自动检测本地 Chrome 扩展 relay（127.0.0.1:18792）是否在线：\n\n在线 → 调用 tools/site_monitor.py 同步 Canvas + FSP → 自动在 daily.md 的 📡 同步 任务打勾\n离线 → 静默跳过，保留现有 upcoming.md 数据不变\n\n配置 Chrome 扩展 relay：\n\nopenclaw browser extension install\nopenclaw browser extension path\n# → 在 Chrome 中加载该路径的扩展，填入 Gateway token，attach 目标标签页\n\n💡 若无 API token，可每天打开 Canvas/FSP 网页并 attach Chrome 扩展，让 Eva 通过浏览器直接抓取数据，无需 API 凭证。\n\n安全保证： site_monitor.py 使用 active_sources 机制，仅删除已激活来源中不再存在的事件；未配置 token 的来源完全跳过，现有数据100%保留。"
      },
      {
        "title": "看门狗机制 (v1.2.0)",
        "body": "配合 */15 * * * * cron 运行，实现可靠的30分钟心跳间隔：\n\n原理：beat 完成后 touch workspace/.last_heartbeat；cron 每 15 分钟触发，先检查 mtime，距上次不到 30 分钟则静默退出\n最大延迟：15 分钟（cron 最差情况下一个间隔）\n无外部依赖：只依赖文件系统，不调用 openclaw CLI\n自愈：cron 是幂等的，leaky 或 missed 触发自动修正\n\n# openclaw cron 建议配置：\nschedule: \"*/15 * * * *\""
      },
      {
        "title": "许可",
        "body": "MIT License"
      }
    ],
    "body": "Heartbeat Manager\n\n自动化任务监控 · 智能超时分析 · 日报/周报 · 健康度评分\n\n⚠️ 安装前须知\nGit / subprocess 声明\n\n本 Skill 在 tools/git_ops.py 中使用 subprocess.run 调用系统 git 命令（git add、git commit、git push）。\n\n默认行为：Git 功能完全关闭（git.enabled: false），不会执行任何 git 操作，除非你在 config/settings.yaml 中显式开启。\n\n安全措施：\n\n所有 subprocess.run 使用参数列表，禁止 shell=True（杜绝 shell 注入）\ncommit message 经过净化，移除控制字符\nauto_push 单独开关，默认同样关闭\n凭证声明\n\n本 Skill 不内置、不存储任何邮件凭证。邮件功能（告警、日报、周报）需要你在安装后自行配置：\n\n提供一个 Gmail 账号及其 App Password\n填入 config/.env（该文件永远不会被上传或共享）\n\n若不配置邮件，Skill 仍可正常运行心跳检查（任务监控、健康度评分），仅邮件通知功能不可用。\n\n副作用声明\n\n本 Skill 会在运行时产生以下副作用：\n\n操作\t说明\t可关闭\n写入本地文件\t更新 workspace/ 下的 MASTER.md、state.json 等\t❌ 核心功能\n写入日志\t追加 logs/heartbeat.log\t✅ settings.yaml\nIMAP 读取邮件\t检查指定邮箱未读邮件\t✅ email.enabled: false\nSMTP 发送邮件\t发送告警、日报、周报\t✅ email.enabled: false\nGit commit + push\t自动提交工作区变更至远程\t✅ git.enabled: false（默认关闭）\nQuick Start\n1. 安装依赖\npip install pyyaml jinja2 python-dotenv\n# 或使用 uv（推荐）\nuv venv .venv && uv pip install --python .venv/bin/python pyyaml jinja2 python-dotenv\n\n2. 配置邮件（可选，但强烈推荐）\ncp config/.env.example config/.env\n\n\n编辑 config/.env：\n\n# Gmail 发件账号\nEMAIL_SENDER=your-agent@gmail.com\n# Gmail 应用专用密码（非登录密码）\n# 获取方式：Google 账号 → 安全性 → 两步验证 → 应用专用密码\nEMAIL_APP_PASSWORD=xxxx xxxx xxxx xxxx\n# 收件人列表（逗号分隔）\nEMAIL_RECIPIENTS=you@example.com\n\n\n如何获取 Gmail App Password：\n\n开启 Google 账号两步验证\n访问 myaccount.google.com/apppasswords\n生成一个应用专用密码并粘贴到上方\n3. 调整配置（可选）\n\n编辑 config/settings.yaml：\n\nemail:\n  enabled: true          # 改为 false 可完全禁用邮件功能\n\ngit:\n  enabled: false         # 改为 true 可开启 Git 同步（默认关闭）\n  auto_push: false       # 改为 true 可开启自动推送\n\n4. 配置 Git 同步（可选，默认关闭）\n\n⚠️ Git 功能会调用系统 git 命令向远程仓库推送内容，请确认你了解并信任此操作后再开启。\n\n如需开启，编辑 config/settings.yaml：\n\ngit:\n  enabled: true       # 第一步：开启 git 功能\n  auto_commit: true   # 每次心跳自动 commit\n  auto_push: false    # 推送到远程（确认 remote 已配置后再开启）\n\n\n开启前请确认：\n\n当前目录已初始化 git 仓库（git status）\n已配置远程 remote（git remote -v）\n你信任此 Skill 向该 remote 推送内容\n5. 验证配置\npython tools/heartbeat_run.py status\n\n6. 首次心跳\npython tools/heartbeat_run.py beat\n\n功能概览\nbeat — 心跳检查（每30分钟）\n检查 .last_heartbeat 标记文件，距上次 < 30 分钟则静默退出（v1.2.0 watchdog）\n检查 daily.md 例行任务完成情况\n检查 todo.md 待办 + @due:HH:MM 超期检测\n检查 ongoing.json 任务状态机\n智能超时分析（正常推进 vs 完全卡死） 4.5. 检查 upcoming.md 未来7天事件 — 🔴🟡🔵分级预警（v1.1.0） 4.7. 检测 Chrome relay → 在线则同步 Canvas+FSP → 📡 同步任务自动打勾（v1.1.0）\n检查邮件（需配置凭证）\n清理已完成 todo\nGit 同步（可选）\n计算健康度评分（0-100）\n更新 MASTER.md 主控表（含 ## UPCOMING 7D 段）\nreset — 每日重置（00:00）\n发送昨日完成任务日报邮件（需配置凭证）\n重置 daily.md 为新一天\n清理已完成的 ongoing 任务\nweekly — 周报（每周日 23:59）\n汇总本周健康度趋势与任务统计（需配置凭证）\nstatus — 查看状态\n无需凭证，打印当前 MASTER 快照\nOpenClaw 集成\n\n在 HEARTBEAT.md 中添加：\n\ncd /path/to/heartbeat-manager && python tools/heartbeat_run.py beat\n\n\nOpenClaw 内置心跳触发时将自动执行本 Skill。\n\n任务文件格式\n\ndaily.md — 每日例行任务\n\n# DAILY | 2026-02-25\n- [ ] 晨间邮件检查\n- [ ] 更新记忆库\n- [x] 系统状态确认 @done:14:30\n\n\ntodo.md — 动态待办\n\n- [ ] 修复登录 bug @due:18:00\n- [ ] 写周报\n\n\nongoing.json — 任务状态机\n\n{\n  \"tasks\": [{\n    \"id\": \"01\", \"title\": \"毕业论文\",\n    \"status\": \"WIP\", \"priority\": \"P0\",\n    \"eta\": \"2026-03-01\", \"progress\": 65,\n    \"context\": \"第三章进行中\"\n  }]\n}\n\n\n状态流转：IDLE → WIP → DONE，WIP → WAIT → WIP，WIP → BLOCK（智能检测卡死）\n\n健康度评分\n维度\t权重\t说明\nDaily 完成率\t25%\t例行任务完成比例\nTodo 完成率\t20%\t超期扣分\nOngoing 状态\t25%\tBLOCK/超期扣分\n邮件处理\t15%\t未读过多扣分\nGit 同步\t15%\tpush 成功满分；Git 禁用时不扣分\n\n连续 3 次低于 60 分 → 邮件告警\n\n未来事件监控 (v1.1.0)\n\n每次心跳自动检测 Chrome 扩展 relay，在线时同步 Canvas + FSP 数据到 workspace/upcoming.md；离线时保留现有数据不做任何删除。\n\nupcoming.md 四分区格式\n# Upcoming Events\n\n## 🔮 FUTURE （待完成事件）\n- 2026-03-01 | Canvas: CS601 Quiz 3 | [作业] @due:23:59 @src:canvas @id:canvas-xxx\n- 2026-03-02 | 飞行训练 KGAI N12345 | [飞行] @time:14:00-17:00 @src:fsp @id:fsp-yyy\n\n## 📌 MANUAL （手动添加，不受自动清理影响）\n- 2026-05-15 | 期末考试周 | [考试]\n\n## ✅ DONE （已完成，事件日期+7天后自动删除）\n- [x] 2026-02-25 | Internet Systems Project #1 | [作业] @done:2026-02-25\n\n## ⏰ OVERDUE （已过期未完成）\n（暂无）\n\n\n标签说明：\n\n@src:canvas / @src:fsp — 自动同步来源，未标记 src 的为手动事件\n@id:xxx — 来源系统唯一ID，用于去重更新\n@due:HH:MM — 截止时间；@time:HH:MM-HH:MM — 事件时段\n@done:YYYY-MM-DD — 完成日期，超过7天后自动清理\n\n7天预警颜色（MASTER.md 中显示）：\n\n🔴 ≤1天（紧急）→ ALERTS 区也会出现\n🟡 ≤3天（注意）\n🔵 ≤7天（提醒）\nCanvas LMS 配置\n# 获取方式：Canvas → Account → Settings → Approved Integrations → New Access Token\n# 注意：部分机构学生账户可能无权生成 token（可手动维护 upcoming.md）\n\n\n在 config/.env 中填入：\n\nCANVAS_API_TOKEN=your_token_here\n\n\n在 config/settings.yaml 中配置：\n\nmonitoring:\n  canvas:\n    enabled: true\n    base_url: \"https://your-canvas-url.instructure.com\"\n    lookahead_days: 30\n\nFlight Schedule Pro (FSP) 配置\n\nFSP API 为机构级权限，普通学员账户通常无法获取。如有权限：\n\nFSP_API_TOKEN=your_token_here\nFSP_OPERATOR_ID=your_operator_id\n\nChrome 浏览器自动同步\n\n每次 beat 自动检测本地 Chrome 扩展 relay（127.0.0.1:18792）是否在线：\n\n在线 → 调用 tools/site_monitor.py 同步 Canvas + FSP → 自动在 daily.md 的 📡 同步 任务打勾\n离线 → 静默跳过，保留现有 upcoming.md 数据不变\n\n配置 Chrome 扩展 relay：\n\nopenclaw browser extension install\nopenclaw browser extension path\n# → 在 Chrome 中加载该路径的扩展，填入 Gateway token，attach 目标标签页\n\n\n💡 若无 API token，可每天打开 Canvas/FSP 网页并 attach Chrome 扩展，让 Eva 通过浏览器直接抓取数据，无需 API 凭证。\n\n安全保证： site_monitor.py 使用 active_sources 机制，仅删除已激活来源中不再存在的事件；未配置 token 的来源完全跳过，现有数据100%保留。\n\n看门狗机制 (v1.2.0)\n\n配合 */15 * * * * cron 运行，实现可靠的30分钟心跳间隔：\n\n原理：beat 完成后 touch workspace/.last_heartbeat；cron 每 15 分钟触发，先检查 mtime，距上次不到 30 分钟则静默退出\n最大延迟：15 分钟（cron 最差情况下一个间隔）\n无外部依赖：只依赖文件系统，不调用 openclaw CLI\n自愈：cron 是幂等的，leaky 或 missed 触发自动修正\n# openclaw cron 建议配置：\nschedule: \"*/15 * * * *\"\n\n许可\n\nMIT License"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/zeron-G/heartbeat-manager",
    "publisherUrl": "https://clawhub.ai/zeron-G/heartbeat-manager",
    "owner": "zeron-G",
    "version": "1.2.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/heartbeat-manager",
    "downloadUrl": "https://openagent3.xyz/downloads/heartbeat-manager",
    "agentUrl": "https://openagent3.xyz/skills/heartbeat-manager/agent",
    "manifestUrl": "https://openagent3.xyz/skills/heartbeat-manager/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/heartbeat-manager/agent.md"
  }
}