Back to skills
SKILL.md
Smart Keepalive
ASecurity**Description:** 定时抓取资讯素材并自动发送「保活简报 keepalive」(双关 keepalive + 资讯简报),默认走 OpenClaw CLI;也支持 Hermes/其他环境通过自定义命令接入发送与润色(`KEEPALIVE_AGENT_COMMAND` / `KEEPALIVE_SEND_COMMAND`),含可选作息附录与 launchd/cron 定时部署辅助。 **何时读本文:** 用户要配置/调试 OpenClaw **定时 keepalive**、飞书或微信定时消息、`smart-keepalive.py` / `smart-keepalive.sh`、资讯简报、`prompts/`、`--doctor` / `--install-launchd` / `--install-cron`。
- 2 stars
- 0 votes
- 0 copies
- 1 view
- Added September 9, 2026
Works with
Security analysis
100/100npx -y skills add Lord1Egypt/awesome-skill-forge --skill smart-keepalive --agent claude-codeAre you the author of Smart Keepalive?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/lord1egypt-smart-keepalive)# Smart Keepalive | 智能 Keepalive
**Description:** 定时抓取资讯素材并自动发送「保活简报 keepalive」(双关 keepalive + 资讯简报),默认走 OpenClaw CLI;也支持 Hermes/其他环境通过自定义命令接入发送与润色(`KEEPALIVE_AGENT_COMMAND` / `KEEPALIVE_SEND_COMMAND`),含可选作息附录与 launchd/cron 定时部署辅助。
**何时读本文:** 用户要配置/调试 OpenClaw **定时 keepalive**、飞书或微信定时消息、`smart-keepalive.py` / `smart-keepalive.sh`、资讯简报、`prompts/`、`--doctor` / `--install-launchd` / `--install-cron`。
## 职责划分(SKILL.md / 脚本 / 提示词)
| 内容 | 放哪里 | 说明 |
|------|--------|------|
| **定时无人值守时谁决定「拉哪路素材」** | **`smart-keepalive.py`** | 加权抽样、去重、状态落盘、HTTP 抓取只能由脚本执行;**SKILL.md 不能替代运行**,否则 cron 无法读 Markdown 来拉取素材。 |
| **管线顺序、环境变量、`theme_tag` 含义、基准权重数字、状态 JSON 字段** | **`SKILL.md`(本文)** | 给人与 Agent 的**单一事实说明**;改脚本逻辑后**同步改本节**,避免脚本顶部长注释与文档漂移。 |
| **成稿语气、版式、列表格式、标题弱化、占位句丢弃等** | **`prompts/rewrite-main.md`** 等 | 由 `openclaw agent` 执行;**不要用脚本再写一套润色规则**。其中 **凡来自各信息源的条目标题均须与素材一致、禁止 agent 改写**(见 `rewrite-main.md` 第 6 条)。作息见 **`prompts/wellness.md`**;文末彩蛋见 **`prompts/status-footer.md`**。 |
- **原则**:能写在提示词里指导模型的,**不写进 Python**;必须在无模型时完成的(抓取、随机、写文件),**不写进 SKILL 当「假实现」**。
- **脚本只做**:拉取素材 → 填模板变量 →(默认)`openclaw agent` 生成正文 /(可选)`KEEPALIVE_AGENT_COMMAND` 自定义润色 →(默认)`openclaw message send` /(可选)`KEEPALIVE_SEND_COMMAND` 自定义发送。换素材 URL、权重常量或管线行为时改 Python,并**改本文对应表/段落**。
**仅部署 skill 目录不会创建系统定时任务**;周期发送需 launchd/cron(`--install-launchd` / `--install-cron` 可生成给 OpenClaw 的提示词)。
---
## 主消息版式:保活简报 keepalive
与 **`prompts/rewrite-main.md`** 保持一致:
1. **固定标题行**:`zh` / `en` 均为 `**保活简报 keepalive**`(Markdown 加粗)。
2. **第二段(一行)**:`zh` 为 `时段问候| 以下是{栏目}`(`|` 与 `以下是` 之间一个空格);`en` 为 `时段问候 — Below: {栏目}`。栏目名与 `{{THEME_HINT}}` 对齐;**不在列表前再单独起一行栏目**。
3. **正文**:有序列表;作息关怀由脚本改写为「问候与关怀同行 → 空行 → 单独栏目行 → 列表」,见 `smart-keepalive.py` 中 `insert_wellness_after_greeting`。
4. **文末状态彩蛋(可选)**:未设置 `KEEPALIVE_STATUS_FOOTER` 时,由 `openclaw agent` 按 `prompts/status-footer.md` 生成一句;提示词要求以 **`IDENTITY.md` 中的 `NAME`** 为助手称呼(脚本会尝试从 `~/.openclaw/agents/<agentId>/IDENTITY.md` 注入 `{{AGENT_NAME}}`,可用 `KEEPALIVE_AGENT_NAME` 覆盖)。失败用脚本内短句兜底。若将 `KEEPALIVE_STATUS_FOOTER` 设为非空字符串则**固定使用该文案**(不调用 agent);`0` / `off` 关闭文末行。可用 `KEEPALIVE_STATUS_STYLE_GUIDE` 微调语气。
占位句丢弃、凌晨优先新鲜条目、「晚报」标题弱化等规则均在提示词中,**勿在脚本里再写一套**。
---
## 实现流程(供排查)
1. **`build_keepalive_brief()`**:只组装素材原始行(可含链接),不做面向用户的「业务级」润色。内部顺序概览:先算**综合乘数**(时段 × 轮换 × 节假日 × 跨日新鲜度)→ **盲盒**(`KEEPALIVE_BRIEF_CHAOS`,命中则**不参与**上述乘数,在今日仍可用源上均匀随机试拉,成功即返回)→ 否则 **基准权重 × 综合乘数** 后加权随机 → 主抽中源失败则**同轮乱序**试其余源 → **热点兜底**(多轮打乱顺序重试;轮数上限 `KEEPALIVE_BRIEF_HOT_FALLBACK_ROUNDS`,默认 `4`)。去重与 `tag_meta` 见下「简报素材随机」。
2. **主正文**:读 `rewrite-main.md`,填入 `{{BRIEF}}`、`{{LOCAL_TIME}}`、`{{HOUR}}`、`{{MINUTE}}`、`{{LOCALE}}`、`{{STYLE_GUIDE}}`,调用 `openclaw agent`;若提示词缺失则用脚本内 **`FALLBACK_REWRITE_PROMPT`**(与主提示词同版式摘要)。
3. **Agent 失败时**:用 **`format_smart_report_fallback()`** 仅保证与「保活简报 keepalive」**结构一致**(标题 + 问候 + 正文),详细措辞仍以提示词为准。
4. **作息附录**(可选):`KEEPALIVE_REST_REMINDER=1` 时读 `wellness.md` + agent;失败用脚本内短句兜底。
5. **文末状态**:`resolve_status_footer_line`(`prompts/status-footer.md` + agent,或 `KEEPALIVE_STATUS_FOOTER` 固定文案)。
6. **发送**:默认 `openclaw message send`(遇 `Unknown channel` 重试一次);若设置 `KEEPALIVE_SEND_COMMAND`,则改走自定义发送命令。
日志里 `body=` 仍为素材标签(如 `zhihu-daily`、`hots-multi`)。
---
## Gotchas
- **改推送语气或版式**:先改 **`prompts/rewrite-main.md`**,而不是改脚本。
- **改选材策略的「说法」、环境变量说明、与用户对齐预期**:改 **`SKILL.md`**;**改实际权重/URL/随机逻辑**:改 **`smart-keepalive.py`** 并同步 **SKILL.md** 中的表与段落。
- **OpenClaw 把素材标题改了**:属 **agent 未遵守提示词**;主提示词已要求 **各信息源条目标题与原文一致**(`rewrite-main.md` 第 6 条)。若仍发生,可在 **`KEEPALIVE_STYLE_GUIDE`** 中再强调一句「禁止改写列表内标题」,或检查是否走了错误提示词/旧版 skill。
- **`KEEPALIVE_STYLE_GUIDE` / `KEEPALIVE_WELLNESS_STYLE_GUIDE` / `KEEPALIVE_STATUS_STYLE_GUIDE`**:注入主提示词 / 作息 / 文末状态彩蛋。
- **无 target(默认)**:未配置时 CLI 自动路由到当前会话(推荐);仅在你明确需要固定收件人时再配置 `target`。
- **定时任务找不到 CLI**:优先设 `KEEPALIVE_CLI_BIN`(兼容 `OPENCLAW_BIN`),或按 `--doctor` 修 PATH;若你使用 `KEEPALIVE_AGENT_COMMAND` + `KEEPALIVE_SEND_COMMAND`,可不依赖 `openclaw` 二进制。
---
## Hermes 兼容(关键)
如果 Hermes 环境没有 `openclaw agent` / `openclaw message send`,可直接用两个环境变量接入:
- `KEEPALIVE_AGENT_COMMAND`:自定义“润色/改写”命令(读取 `KEEPALIVE_PROMPT`,输出正文到 stdout)。
- `KEEPALIVE_SEND_COMMAND`:自定义“发送”命令(读取 `KEEPALIVE_MESSAGE` / `KEEPALIVE_CHANNEL` / `KEEPALIVE_TARGET`)。
可选:
- `KEEPALIVE_CLI_BIN`:指定默认 CLI(二进制可设为 `hermes` 或绝对路径)。
示例(仅示意,按你的 Hermes 命令改):
```bash
export KEEPALIVE_CLI_BIN=hermes
export KEEPALIVE_AGENT_COMMAND='hermes ai --agent "$KEEPALIVE_AGENT_ID" --prompt "$KEEPALIVE_PROMPT"'
export KEEPALIVE_SEND_COMMAND='hermes message send --message "$KEEPALIVE_MESSAGE" --channel "${KEEPALIVE_CHANNEL:-}" --target "${KEEPALIVE_TARGET:-}"'
```
若 Hermes 暂时没有“agent 改写”能力,可把 `KEEPALIVE_AGENT_COMMAND` 指向一个“原样回传 prompt”或固定文本的脚本,主流程会自动兜底到脚本内版式。
- **简报时段**:`_brief_time_bucket()` 使用**本机本地时间**;若服务器在 UTC,时段会与预期不一致,可改系统时区或用同一时区的机器跑定时任务。
---
## 资讯源(脚本仅负责抓取)
**简报素材随机(`build_keepalive_brief()`)**:
- **每源每日至多一次(默认)**:某一素材源**成功选用**后,同一日历日内后续轮次不再抽中该源(加权池与热点兜底均遵守,避免「随机一次、兜底又一次」重复出现)。
- **状态文件**:`~/.smart-keepalive/brief-sources.json`(JSON,**原子写入**;可用 `KEEPALIVE_BRIEF_STATE_FILE` 改路径)。字段与脚本一致:`date`(与 `used` 对齐的「今日」)、`used`(当日已成功选用过的源标签列表)、`tag_meta`(各源 `last`/`prior` 日期,用于跨日新鲜度 ×0.5)。
- **审计日志**:与状态文件同目录,文件名为 `<状态主文件名>-audit.log`(默认状态文件为 `brief-sources.json` 时即 `brief-sources-audit.log`),**只追加、不自动轮转**;可用 `KEEPALIVE_BRIEF_AUDIT_LOG=0` 关闭。
- **主日志**:默认再写一行到 `LOG_FILE` 或 `~/.openclaw/logs/smart-keepalive.log`(与定时任务主日志一致);可用 `KEEPALIVE_BRIEF_LOG_TO_MAIN=0` 关闭。
- 关闭去重:`KEEPALIVE_BRIEF_DAILY_ONCE=0`。
- **时段权重(默认开启)**:同一时段内仍是**加权随机**(非固定顺序)。在**尚未被今日用过**的源上,先按基准权重再乘本地时段系数,并与下述「轮换 / 节假日 / 新鲜度」**连乘**后归一化抽样;另有 **盲盒**与 **约 10% 兜底**(见上流程)。关闭:`KEEPALIVE_BRIEF_TIME_WEIGHTS=0`。
- **0:00–6:00**:国外大报/国际向乘数高。
- **6:00–10:00**:新闻向乘数高。
- **10:00–17:00**:科技/热榜向乘数高。
- **17:00–24:00**:社区/科技类乘数高。
- **4 小时轮换 + 早/晚强制**(默认):`pick_rotating_theme()` 在非早/晚时段给不同栏目组加权;**早晨**再强化新闻类、**晚间**再强化社区/科技类。关闭:`KEEPALIVE_BRIEF_ROTATION=0`。
- **跨日新鲜度**:状态文件 `tag_meta` 记录各源最近选用日;若**连续两个日历日**都选中同一源,**次日**该源额外 ×0.5(一次)。关闭:`KEEPALIVE_BRIEF_FRESHNESS=0`。
- **节假日**:**周末**及 `KEEPALIVE_BRIEF_EXTRA_HOLIDAYS` 所列日期略提高知乎、少数派。关闭:`KEEPALIVE_BRIEF_HOLIDAY_BOOST=0`。
- **盲盒随机**:默认 **10%** 概率走「均匀随机」试源(仍尊重今日去重),`theme_tag` 为 `brief-chaos`。关闭或调概率:`KEEPALIVE_BRIEF_CHAOS=0`(关闭)或 `0.05` 等。
**加权池**(与脚本 `base_weighted` / `BRIEF_TAG_KEYS` 一致):基准权重之和 **0.90**,余量 **0.10** 为热点兜底(`BRIEF_FALLBACK_WEIGHT`);再与时段/轮换/节假日/新鲜度等**连乘**后,在**当日仍可用**源上归一化加权随机。
| 基准权重 | 数据源 | 日志 `theme_tag` |
|---------|--------|-------------------|
| 0.09 | 知乎日报(AnyFeeder) | `zhihu-daily` |
| 0.09 | 南方周末推荐(AnyFeeder `infzm/recommends`) | `infzm-recommends` |
| 0.09 | 每日环球视野(AnyFeeder) | `idaily-today` |
| 0.09 | 少数派(直连) | `sspai-feed` |
| 0.09 | 果壳科学人(AnyFeeder `guokr/scientific`) | `guokr-scientific` |
| 0.09 | 法广中文网(AnyFeeder `rfi/cn`,法国国际广播电台中文) | `rfi-cn` |
| 0.09 | 新华社新闻·新华网(AnyFeeder `newscn/whxw`) | `xinhua-whxw` |
| 0.09 | 36氪(直连) | `36kr-feed` |
| - | 中央气象台每日天气提示(网页提炼,仅城市天气补充行,不参与主抽样) | `nmc-weather-daily` |
**其它 `theme_tag`(脚本返回,供 `{{THEME_HINT}}`)**:
| `theme_tag` | 含义 |
|-------------|------|
| `brief-chaos` | 盲盒路径(`KEEPALIVE_BRIEF_CHAOS`),均匀试源 |
| `hots-multi` / `hots-single` | 热点兜底合并后多条 / 单条 |
| `hots-default` | 兜底仍无可用条目 |
- **兜底**:约 **10%** 概率落入热点池,或加权池**全部抓取失败**时 → 见上 `hots-*`。
**热点兜底**(`run_theme(4)` / `run_theme_hot_fallback`):多路源(南方周末推荐 / 新华社 / 法广中文网 / 果壳科学人 / 36氪 / 中央气象台每日天气提示 / 虎嗅);外层轮数上限由 `KEEPALIVE_BRIEF_HOT_FALLBACK_ROUNDS` 控制(默认 `4`,允许 `1`–`32`),每轮随机顺序(与 `_brief_time_bucket` 偏好组合),先跳过当日已用源再全员重试;合并正文后洗牌,最多取 5 条。
`pick_time_preferred_theme()` 仅供 `run_theme` 演示链;简报轮换见 `_brief_rotation_multipliers()` + `pick_rotating_theme()`。`run_theme(1|2|3)` 为按主题编号调用时的**源链**。
| theme | 含义(`run_theme` 源链) |
|-------|---------------------------|
| 1 | 知乎日报 → 新华社新闻 → 南方周末推荐 → 每日环球视野 → 法广中文网 → 果壳科学人 → 少数派 → 36氪 → 虎嗅 |
| 2 | 每日环球视野 → 法广中文网 → 知乎日报 → 南方周末推荐 → 少数派 → 新华社新闻 → 果壳科学人 → 36氪 |
| 3 | 少数派 → 虎嗅 |
| 4 | 同上热点兜底 |
**素材 URL(脚本内已配置;经抽检停更或不可用的源已移除)**
| 名称 | URL |
|------|-----|
| 知乎日报 | `https://plink.anyfeeder.com/zhihu/daily` |
| 南方周末推荐 | `https://plink.anyfeeder.com/infzm/recommends` |
| 每日环球视野 | `https://plink.anyfeeder.com/idaily/today` |
| 果壳科学人 | `https://plink.anyfeeder.com/guokr/scientific` |
| 法广中文网 | `https://plink.anyfeeder.com/rfi/cn` |
| 新华社新闻(新华网) | `https://plink.anyfeeder.com/newscn/whxw` |
| 36氪 | `https://36kr.com/feed` |
| 少数派 | `https://sspai.com/feed` |
| 虎嗅(兜底) | `https://www.huxiu.com/` |
| 中央气象台国内天气预报(北京入口) | `https://www.nmc.cn/publish/forecast/ABJ/beijing.html` |
新闻/科技源多为 AnyFeeder `plink` 直链。天气源可用 `KEEPALIVE_NMC_WEATHER_URL` 覆盖默认 URL(用于镜像或临时替换);脚本会从该 URL 自动推导同域名的 `/rest/*` 实时接口,确保“展示页与实时数据”同源。天气城市优先取 `KEEPALIVE_WEATHER_CITY`,否则取 `config.json.weatherCity`(由 `--setup` 初始化)。
---
## 快速开始
```bash
cd ~/.openclaw/skills/smart-keepalive
python3 smart-keepalive.py --setup
bash smart-keepalive.sh
python3 smart-keepalive.py --doctor
```
---
## 配置优先级(发送目标)
- **channel**:`KEEPALIVE_CHANNEL` → 本地 `config.json.defaultChannel` →(可选)`openclaw.json` 默认。
- **target**:`KEEPALIVE_TARGET` → 本地 `config.json.defaultTarget` →(可选)`openclaw.json` 默认。
- **默认行为**:若没有 target,且未显式配置 channel,则清空 channel,交给 CLI 自动路由到当前会话。
- **显式 channel 生效**:若通过 `KEEPALIVE_CHANNEL` 或本地 `config.json.defaultChannel` 明确设置了 channel,即使 target 为空也会保留该 channel。
- **可选兼容**:设置 `KEEPALIVE_FOLLOW_OPENCLAW_DEFAULTS=1` 才会回退到 `openclaw.json` 默认 target/channel。
---
## 环境变量(精简)
| 变量 | 作用 |
|------|------|
| `OPENCLAW_HOME` / `OPENCLAW_CONFIG` | 根目录与配置 |
| `LOG_FILE` | 主任务日志路径(默认 `~/.openclaw/logs/smart-keepalive.log`);简报 `[brief-sources]` 摘要亦写此文件(可关,见 `KEEPALIVE_BRIEF_LOG_TO_MAIN`) |
| `SKILL_DIR` | skill 目录(用于找 `prompts/`) |
| `KEEPALIVE_CHANNEL` / `KEEPALIVE_TARGET` | 渠道与目标 |
| `KEEPALIVE_FOLLOW_OPENCLAW_DEFAULTS` | 设为 `1` 时,缺省回退到 `openclaw.json` 默认 channel/target(默认关闭) |
| `KEEPALIVE_REST_REMINDER` | `1` 开启作息附录 |
| `KEEPALIVE_AGENT_ID` / `KEEPALIVE_SESSION_ACTIVE_MINUTES` | 凌晨活跃判定 |
| `KEEPALIVE_STYLE_GUIDE` / `KEEPALIVE_WELLNESS_STYLE_GUIDE` | 注入主提示词 / 作息提示词 |
| `KEEPALIVE_NMC_WEATHER_URL` | 覆盖中央气象台天气页面 URL(默认 `https://www.nmc.cn/publish/forecast/ABJ/beijing.html`);同时决定实时接口域名来源 |
| `KEEPALIVE_WEATHER_CITY` | 覆盖天气城市(优先于 `config.json.weatherCity`;`--setup` 会提示填写,默认北京) |
| `KEEPALIVE_APPEND_WEATHER` | `1`(默认)每次发送追加天气行;`0`/`off`/`false` 关闭天气追加 |
| `KEEPALIVE_WEATHER_STRICT_REALTIME` | `1`(默认)仅信任 `/rest/weather` 实时温度;若实时接口不可用则不追加天气;`0` 可回退页面解析 |
| `KEEPALIVE_BRIEF_DAILY_ONCE` | `1`(默认)每源每日最多成功选用一次;`0`/`off`/`false` 关闭 |
| `KEEPALIVE_BRIEF_STATE_FILE` | 简报「今日已用源」状态 JSON 路径(默认 `~/.smart-keepalive/brief-sources.json`) |
| `KEEPALIVE_BRIEF_AUDIT_LOG` | `1`(默认)向同目录 `brief-sources-audit.log` 追加选用记录;`0` 关闭 |
| `KEEPALIVE_BRIEF_LOG_TO_MAIN` | `1`(默认)向 `LOG_FILE` 或 `~/.openclaw/logs/smart-keepalive.log` 追加一行摘要;`0` 关闭 |
| `KEEPALIVE_BRIEF_TIME_WEIGHTS` | `1`(默认)按本地时段调整加权池相对权重;`0` 关闭(仅基准权重) |
| `KEEPALIVE_BRIEF_ROTATION` | `1`(默认)4h 槽轮换 + 早新闻/晚热搜强制倾向;`0` 关闭 |
| `KEEPALIVE_BRIEF_FRESHNESS` | `1`(默认)连续两日选同一源则次日 ×0.5;`0` 关闭 |
| `KEEPALIVE_BRIEF_HOLIDAY_BOOST` | `1`(默认)周末与额外节假日略提知乎/少数派;`0` 关闭 |
| `KEEPALIVE_BRIEF_EXTRA_HOLIDAYS` | 逗号分隔 `YYYY-MM-DD`,与周末一并视为「节假日」偏好 |
| `KEEPALIVE_BRIEF_CHAOS` | `0.1`(默认)盲盒均匀随机概率;`0` 关闭 |
| `KEEPALIVE_BRIEF_HOT_FALLBACK_ROUNDS` | `4`(默认)热点兜底外层轮数上限(每轮内两轮尝试:先跳过当日已用源再全量重试);`1`–`32`;调高更易凑到素材但可能拉长总耗时 |
| `KEEPALIVE_STATUS_FOOTER` | 未设置→`openclaw agent` 按 `prompts/status-footer.md` 生成一句;非空→固定文案;`0`/`off` 关闭 |
| `KEEPALIVE_STATUS_STYLE_GUIDE` | 注入文末状态提示词(与 `KEEPALIVE_WELLNESS_STYLE_GUIDE` 类似) |
| `KEEPALIVE_AGENT_NAME` | 覆盖从 `IDENTITY.md` 读取的 **NAME**(注入文末彩蛋提示词) |
| `KEEPALIVE_CLI_BIN` | 默认 CLI 可执行文件(可设为 `openclaw` / `hermes` 或绝对路径) |
| `OPENCLAW_BIN` | 兼容旧变量;未设 `KEEPALIVE_CLI_BIN` 时生效 |
| `KEEPALIVE_AGENT_COMMAND` | 自定义改写命令(`$KEEPALIVE_PROMPT` / `$KEEPALIVE_AGENT_ID` / `$KEEPALIVE_CLI_BIN`) |
| `KEEPALIVE_SEND_COMMAND` | 自定义发送命令(`$KEEPALIVE_MESSAGE` / `$KEEPALIVE_CHANNEL` / `$KEEPALIVE_TARGET` / `$KEEPALIVE_CLI_BIN`) |
---
## 日志
| 文件 | 内容 |
|------|------|
| `LOG_FILE` 或默认 `~/.openclaw/logs/smart-keepalive.log` | 每次发送一条 keepalive 的全文摘要、`body=` 标签;可选含 `[brief-sources]` 选用记录 |
| `~/.smart-keepalive/brief-sources.json`(可 `KEEPALIVE_BRIEF_STATE_FILE`) | `date` / `used` / `tag_meta`(见上「状态文件」) |
| 同目录 `<主文件名>-audit.log` | 每次记入新源时追加一行(TSV),**不自动轮转**,需自行清理或 logrotate |
---
## English (short)
**Smart Keepalive** sends periodic messages via CLI. Default path is `openclaw agent` + `openclaw message send`; Hermes/other runtimes can override with `KEEPALIVE_AGENT_COMMAND` / `KEEPALIVE_SEND_COMMAND`. **Copy and layout live in `prompts/rewrite-main.md`** (fixed **保活简报 keepalive** header, time-based greeting, brief body); **`prompts/wellness.md`** covers optional wellness lines. The script fetches source items via a weighted pool (time slot, 4h rotation, holiday/freshness tweaks, optional chaos draw, daily dedup, multi-retry hot fallback), fills templates, rewrites, and sends. Edit those markdown files first when changing filters or tone.
---
## 保活与状态检查(给 Agent 的提示)
「保活简报」本质是**定时管线是否还能把一条消息推出去**;不是通用监控面板。帮用户排查或解释时,可按下面顺序,用语中性、短句。
**建议排查顺序**
1. `python3 smart-keepalive.py --doctor`(或项目内等价路径):确认 `openclaw` 可执行、`openclaw.json` / channel、launchd 或 cron 环境等。
2. 读 `~/.openclaw/logs/smart-keepalive.log`:是否有 `ERROR`、发送失败、`Unknown channel` 重试等。
3. 手动试发:默认用 `openclaw message send --message "ping"`(按需加 `--channel` / `--target`);若使用 Hermes/自定义发送命令,则执行你配置的 `KEEPALIVE_SEND_COMMAND` 对应试发。
4. 素材:若简报里常出现「本轮暂无可用条目」,检查网络与资讯源是否偶发失败(脚本已做重试与兜底,不必夸大成「服务宕机」)。
**文末状态彩蛋(默认)**:未设置 `KEEPALIVE_STATUS_FOOTER` 时由 **`prompts/status-footer.md`** 经 `openclaw agent` 单独生成一句,与主正文 `rewrite-main.md` 分开;可用 **`KEEPALIVE_STATUS_STYLE_GUIDE`** 微调。若仍希望主正文里顺带提管线情况,可写进 `KEEPALIVE_STYLE_GUIDE`,**不要**要求模型伪造日志里不存在的告警。
**English (for agent)**
When the user asks about “keepalive” health: clarify it means the **scheduled pipeline** (fetch → rewrite → send), not full infra monitoring. Prefer `--doctor`, `smart-keepalive.log`, then a manual send test (OpenClaw or the command configured by `KEEPALIVE_SEND_COMMAND`). Do not invent incidents not present in logs.
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.