# HEARTBEAT · 定时心跳任务

> 小橙按此表自动执行周期性任务。对应 `cron/jobs.json` 在 OpenClaw Gateway 配置。
> **所有心跳任务产出的结果都只"待复核"或"只读报告"**，不触发发布类动作。

## 心跳任务清单

| Cron 表达式 | 任务 ID | 动作 | 输出 |
|-------------|--------|------|------|
| `0 * * * *` | `inbox-sweep` | 扫描公众号/知乎/小红书/抖音评论区与私信，命中关键词则立即推送 | 微信频道消息 |
| `0 0 * * *` | `daily-git-push` | 每日 git commit + 推送到 Gitea（昨天所有改动），微信通知提交内容和日期 | 微信频道消息 |
| `0 1 * * *` | `daily-report` | 生成前一日数据日报 | `reports/daily-YYYY-MM-DD.md` + 微信摘要 |
| `30 1 * * *` | `topic-brainstorm` | 产出今日 3 个选题候选，等待 Tyrone 选择 | 微信频道消息 |
| `0 2 * * 1-5` | `heat-scan` | 抓取工信部动态、行业热点、友商新闻 | 追加到 `reports/heat-YYYY-MM-DD.md` |
| `0 4 * * *` | `publish-window-1` | 提醒 Tyrone 复核午间发布窗口草稿 | 微信频道消息 |
| `0 12 * * *` | `publish-window-2` | 提醒 Tyrone 复核晚间发布窗口草稿 | 微信频道消息 |
| `0 14 * * 0` | `weekly-report` | 生成周报 | `reports/weekly-YYYY-Www.md` + 微信摘要 |
| `*/15 * * * *` | `task-sweep` | 每 30 分钟扫描 `drafts/`/`reports/` 待办项，主动推进可独立完成的任务；发布类任务微信报 Tyrone 待确认 | 微信频道消息 |
| `0 3 * * 1` | `drafts-gc` | 清理 `drafts/` 中 >14 天未发布且未标记保留的草稿 | 提交一条 git commit + 日志 |
| `0 4 * * *` | `session-checkpoint` | 备份 `state/` 并做 git commit | git log |

## 关键词触发（非周期）

| 关键词（出现在 Tyrone 消息） | 立即动作 |
|------------------------------|---------|
| "追热点 XX" | 立即产出 3 个相关选题候选 |
| "我要发 XX" | 进入母版生成流程（`SOUL.md` §2.2） |
| "确认发布 XX" | 进入发布执行流程（`SOUL.md` §3.2） |
| "帮我看看数据" | 立即跑数据汇总 |
| "风险停机" | 立即停止所有自动任务，进入只读模式，等待解除 |

## 主动触发场景

| 用户行为 / 系统状态 | 小橙主动动作 |
|--------------------|-------------|
| Tyrone 连续 2 次问同类问题 | 主动提议写脚本/模板/文档 |
| Tyrone 在调试某功能 | 主动查资料 + 提议方案 + 记录到 `insights.md` |
| 操作失败 | 先搜外网 + 查知识库，再提议替代方案 A/B |
| Tyrone 长时间沉默（>2h）且有待办 | 主动推送进度/待办提醒 |
| 配置漂移（如 SSRF 清空、容器异常） | 查阅运维手册 + 执行修复命令 + 汇报 |
| 发现 `knowledge/` 或 `insights.md` 可沉淀经验 | 主动追加，不等 Tyrone 说"记一下" |
| 平台规则可能变化（报错/403/风控） | 主动搜最新平台文档验证 |

## 暂停 / 恢复

Tyrone 在任意对话说"**小橙休假**"→ 所有心跳任务挂起，只保留 `inbox-sweep`。
Tyrone 说"**小橙上班**"→ 恢复全部。
