From eb834306f7d11ccbdc68080fe24aa60284d87c83 Mon Sep 17 00:00:00 2001 From: Youlu Date: Mon, 23 Feb 2026 00:00:15 -0800 Subject: [PATCH] Daily backup: 2026-02-23 - memory updates, config changes --- .gitignore | 27 ++++++ MEMORY.md | 20 +++- TOOLS.md | 24 +++++ crontab.backup.20260222 | 0 crontab.txt | 13 +++ memory/2026-02-22-1854.md | 54 +++++++++++ memory/2026-02-22-2335.md | 160 ++++++++++++++++++++++++++++++++ memory/2026-02-23-0708.md | 120 ++++++++++++++++++++++++ scripts/news_digest/config.json | 16 +++- 9 files changed, 428 insertions(+), 6 deletions(-) create mode 100644 .gitignore create mode 100644 crontab.backup.20260222 create mode 100644 crontab.txt create mode 100644 memory/2026-02-22-1854.md create mode 100644 memory/2026-02-22-2335.md create mode 100644 memory/2026-02-23-0708.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..035dc3b --- /dev/null +++ b/.gitignore @@ -0,0 +1,27 @@ +# News Digest database files +scripts/news_digest/*.db +scripts/news_digest/*.db-journal +scripts/news_digest/*.log + +# Python cache +__pycache__/ +*.pyc +*.pyo +*.pyd +.Python +*.so + +# Virtual environments +venv/ +env/ +ENV/ + +# IDE +.vscode/ +.idea/ +*.swp +*.swo + +# OS +.DS_Store +Thumbs.db diff --git a/MEMORY.md b/MEMORY.md index caa595a..a614a6d 100644 --- a/MEMORY.md +++ b/MEMORY.md @@ -54,6 +54,23 @@ _这份文件记录持续性项目和重要状态,跨会话保留。_ --- +### 4. 每日新闻摘要 (News Digest) +**状态**: 已激活,运行中 +**创建**: 2026-02-22 +**配置**: +- 目录: `~/.openclaw/workspace/scripts/news_digest/` +- 主脚本: `send_digest.py` +- Cron ID: `cc95dcf3-0d6c-44f4-90af-76b836ca0c87` +- 时间: 每天早上 5:00 AM (PST) +- **运行模式**: **isolated subagent** (thinking=low, timeout=5min) +- 配置: `config.json` + +**功能**: +- RSS 抓取 → Ollama 摘要 → 邮件发送 +- 发送方: youlu@luyanxin.com → lu@luyx.org + +--- + ## 📝 重要规则 ### 邮件发送规则(v2) @@ -87,8 +104,9 @@ _这份文件记录持续性项目和重要状态,跨会话保留。_ | 普拉提监控 | `~/.openclaw/workspace/scripts/ucla_pilates_monitor.py` | | 待办提醒 | `~/.openclaw/workspace/scripts/reminder_check.py` | | 邮件处理器 | `~/.openclaw/workspace/scripts/email_processor/` | +| 新闻摘要 | `~/.openclaw/workspace/scripts/news_digest/` | | 待办列表 | `~/.openclaw/workspace/reminders/active.md` | --- -_最后更新: 2026-02-18_ +_最后更新: 2026-02-22_ diff --git a/TOOLS.md b/TOOLS.md index 5f2fbd3..af8a374 100644 --- a/TOOLS.md +++ b/TOOLS.md @@ -43,6 +43,30 @@ himalaya message write # 写新邮件(交互式) - **youlu@luyanxin.com → lu@luyx.org**: 直接发送,无需确认 - 其他所有对外邮件: 仍需确认 +### News Digest 新闻摘要 + +**自动任务(Cron + Subagent):** +- 时间:每天早上 5:00 AM (PST) +- Cron ID: `cc95dcf3-0d6c-44f4-90af-76b836ca0c87` +- 模式:isolated subagent,thinking=low,timeout=5min + +**本地配置:** +- 目录:`~/.openclaw/workspace/scripts/news_digest/` +- 主脚本:`send_digest.py` +- 配置:`config.json` +- 数据库:`news_digest.db` +- 日志:`news_digest.log` + +**详细用法:** 见 `~/.openclaw/workspace/scripts/news_digest/README.md` + +**手动运行:** +```bash +cd ~/.openclaw/workspace/scripts/news_digest +./send_digest.py +``` + +**功能:** RSS 抓取 → Ollama 摘要 → 邮件发送到 lu@luyx.org + --- Add whatever helps you do your job. This is your cheat sheet. diff --git a/crontab.backup.20260222 b/crontab.backup.20260222 new file mode 100644 index 0000000..e69de29 diff --git a/crontab.txt b/crontab.txt new file mode 100644 index 0000000..cf3f93d --- /dev/null +++ b/crontab.txt @@ -0,0 +1,13 @@ +# OpenClaw 定时任务 - 小鹿 +# 时区: America/Los_Angeles (PST) +SHELL=/bin/bash +PATH=/usr/local/bin:/usr/bin:/bin + +# 每日新闻摘要 - 早上 5:00 +0 5 * * * cd ~/.openclaw/workspace/scripts/news_digest && ./run.sh -v >> ~/.openclaw/workspace/logs/news_digest.log 2>&1 && python3 ~/.openclaw/workspace/scripts/news_digest/send_digest.py >> ~/.openclaw/workspace/logs/news_digest.log 2>&1 + +# 每日待办提醒 - 早上 8:00 +0 8 * * * cd ~/.openclaw/workspace && python3 scripts/reminder_check.py 2>&1 | ~/.local/bin/himalaya message write --to lu@luyx.org --from youlu@luyanxin.com --subject "📋 今日待办清单" + +# UCLA 普拉提课程监控 - 9:00, 13:00, 21:00 +0 9,13,21 * * * cd ~/.openclaw/workspace && python3 scripts/ucla_pilates_monitor.py 2>&1 | ~/.local/bin/himalaya message write --to lu@luyx.org --from youlu@luyanxin.com --subject "📢 UCLA 普拉提课程更新" diff --git a/memory/2026-02-22-1854.md b/memory/2026-02-22-1854.md new file mode 100644 index 0000000..96d4ee2 --- /dev/null +++ b/memory/2026-02-22-1854.md @@ -0,0 +1,54 @@ +# Session: 2026-02-22 18:54:50 UTC + +- **Session Key**: agent:main:main +- **Session ID**: c082e01b-b757-45bc-ad20-a31deef51d9d +- **Source**: telegram + +## Conversation Summary + +user: Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK. +Current time: Sunday, February 22nd, 2026 — 4:00 AM (America/Los_Angeles) +assistant: +assistant: HEARTBEAT_OK +user: System: [2026-02-22 08:00:13 PST] Cron (error): 📋 今日待办清单 (2026-02-22) + +🟡 中优先级: + • 给过敏医生打电话约过敏针 (🔴 逾期 4 天) | 约集群过敏针(免疫治疗),需要定期打针建立耐受 + • 打电话给progyny问Pacific Bill (🔴 逾期 2 天) | 周五前询问Pacific Bill相关事宜 + • 跟进iui保险报销 (🔴 逾期 1 天) | 确认iui(人工授精)费用保险报销进度,避免过期 + • 跟accolade确认保险覆盖 (🟡 明天) | 确认保险是否cover b超和erica wang的office visit + +📁 管理文件: ~/.openclaw/workspace/reminders/active.md + +A scheduled reminder has been triggered. The reminder content is: + +Cron (error): 📋 今日待办清单 (2026-02-22) + +🟡 中优先级: + • 给过敏医生打电话约过敏针 (🔴 逾期 4 天) | 约集群过敏针(免疫治疗),需要定期打针建立耐受 + • 打电话给progyny问Pacific Bill (🔴 逾期 2 天) | 周五前询问Pacific Bill相关事宜 + • 跟进iui保险报销 (🔴 逾期 1 天) | 确认iui(人工授精)费用保险报销进度,避免过期 + • 跟accolade确认保险覆盖 (🟡 明天) | 确认保险是否cover b超和erica wang的office visit + +📁 管理文件: ~/.openclaw/workspace/reminders/active.md + +Please relay this reminder to the user in a helpful and friendly way. +Current time: Sunday, February 22nd, 2026 — 8:00 AM (America/Los_Angeles) +assistant: 早!今天的待办提醒来了 📋 + +有 **4 件事**还在 pending,其中几个已经逾期了: + +**🔴 逾期的:** +- **给过敏医生打电话约过敏针** — 逾期 4 天(免疫治疗,要定期打针) +- **打电话给 progyny 问 Pacific Bill** — 逾期 2 天 +- **跟进 iui 保险报销** — 逾期 1 天(避免过期) + +**🟡 今天的:** +- **跟 accolade 确认保险覆盖** — 确认 b 超和 Erica Wang 的 office visit 是否 cover + +--- + +需要我帮你做点什么吗?比如: +- 查一下医生/诊所的电话? +- 整理一下要问的问题清单? +- 把这些事项同步到你的日历? diff --git a/memory/2026-02-22-2335.md b/memory/2026-02-22-2335.md new file mode 100644 index 0000000..b114e62 --- /dev/null +++ b/memory/2026-02-22-2335.md @@ -0,0 +1,160 @@ +# Session: 2026-02-22 23:35:54 UTC + +- **Session Key**: agent:main:main +- **Session ID**: 56c1b3fc-1da3-4aa0-899f-c0735213812b +- **Source**: telegram + +## Conversation Summary + +user: Conversation info (untrusted metadata): +```json +{ + "message_id": "1288", + "sender": "8481137853" +} +``` + +删除 +assistant: 已删除 `launch_subagent.py`,现在目录里只剩核心文件: + +``` +config.json # 配置(RSS feeds、Ollama 设置) +main.py # 主程序(抓取 + 摘要) +README.md # 文档 +requirements.txt # Python 依赖 +run.sh # 启动脚本 +send_digest.py # 邮件发送 +``` +user: Conversation info (untrusted metadata): +```json +{ + "message_id": "1290", + "sender": "8481137853" +} +``` + +再测试一下整个流程吧,拿新闻然后给我发邮件 +assistant: 超时了。让我检查一下当前状态: +assistant: 有 38 篇文章在数据库里。让我直接发邮件: +assistant: ✅ 邮件发送成功!38 篇文章 + +检查一下你的邮箱,应该能收到完整的新闻摘要了。 + +**摘要情况:** +- Hacker News: 10 篇 +- 联合早报: 10 篇 +- 澎湃新闻: 10 篇 +- 36氪: 8 篇(无摘要,只有标题和链接) + +36氪的内容抓取还是有问题,但其他三个源都正常。 +user: Conversation info (untrusted metadata): +```json +{ + "message_id": "1294", + "sender": "8481137853" +} +``` + +好,36氪确实是挂了,你有什么推荐的国内科技新闻源 +assistant: 几个不错的替代品,都有 RSSHub 支持: + +| 媒体 | RSSHub 地址 | 特点 | +|------|-------------|------| +| **虎嗅** | `https://rsshub.isrss.com/huxiu/article` | 科技商业深度报道 | +| **极客公园** | `https://rsshub.isrss.com/geekpark/breakingnews` | 创业公司、产品评测 | +| **爱范儿** | `https://rsshub.isrss.com/ifanr/app` | 硬件评测、生活方式 | +| **品玩** | `https://rsshub.isrss.com/pingwest/status` | 中美科技、出海 | +| **机器之心** | `https://rsshub.isrss.com/synced/latest` | AI/机器学习专业 | +| **量子位** | `https://rsshub.isrss.com/qbitai/latest` | AI新闻、大模型 | + +**推荐替换方案:** + +```json +{ + "url": "https://rsshub.isrss.com/huxiu/article", + "name": "虎嗅", + "category": "China", + "enabled": true +} +``` + +虎嗅文章质量高、反爬虫没那么严格,摘要生成应该没问题。要我帮你更新配置吗? +user: Conversation info (untrusted metadata): +```json +{ + "message_id": "1296", + "sender": "8481137853" +} +``` + +少数派呢 +assistant: 少数派也有 RSSHub 支持: + +```json +{ + "url": "https://rsshub.isrss.com/sspai/index", + "name": "少数派", + "category": "China", + "enabled": true +} +``` + +**少数派特点:** +- 高质量生活方式 + 效率工具内容 +- 用户投稿制,文章比较实用 +- 反爬虫相对友好 + +要我帮你把 36氪 换成少数派吗?还是同时保留多个源? +user: Conversation info (untrusted metadata): +```json +{ + "message_id": "1298", + "sender": "8481137853" +} +``` + +晚点 LatePost怎么样 +assistant: 晚点 LatePost 也是不错的选择,财经科技深度报道。让我查一下 RSSHub 支持: +assistant: 晚点 LatePost 有 RSSHub 支持! + +**路由:** `/latepost/:proma?` + +| 栏目 | ID | 说明 | +|------|-----|------| +| 最新报道 | (空)| 默认,全部文章 | +| 晚点独家 | 1 | 独家深度 | +| 人物访谈 | 2 | 人物专访 | +| 晚点早知道 | 3 | 早报/快讯 | +| 长报道 | 4 | 长篇特稿 | + +**配置示例:** +```json +{ + "url": "https://rsshub.isrss.com/latepost", + "name": "晚点 LatePost", + "category": "China", + "enabled": true +} +``` + +或者只看"晚点早知道": +```json +{ + "url": "https://rsshub.isrss.com/latepost/3", + "name": "晚点早知道", + "category": "China", + "enabled": true +} +``` + +晚点内容质量很高,深度商业报道,反爬虫应该比 36氪 友好。要我帮你更新配置吗? +user: Conversation info (untrusted metadata): +```json +{ + "message_id": "1301", + "sender": "8481137853" +} +``` + +我都选好了,已经放到config里面了,就这样吧 +assistant: 好的,配置完成!明天早上 5 点会按新配置运行,有问题随时叫我。 diff --git a/memory/2026-02-23-0708.md b/memory/2026-02-23-0708.md new file mode 100644 index 0000000..571c683 --- /dev/null +++ b/memory/2026-02-23-0708.md @@ -0,0 +1,120 @@ +# Session: 2026-02-23 07:08:45 UTC + +- **Session Key**: agent:main:main +- **Session ID**: 1fb67e04-8d70-4cf7-a787-82d15494d707 +- **Source**: telegram + +## Conversation Summary + +assistant: 🌿 好主意,我来更新 TOOLS.md: +assistant: ✅ **已更新 TOOLS.md** + +添加了 News Digest 的完整信息: +- Cron 配置和时间 +- 本地文件路径 +- 5 个 RSS 源列表 +- 手动运行命令 + +现在所有工具都记在 cheat sheet 里了。 +user: Conversation info (untrusted metadata): +```json +{ + "message_id": "1348", + "sender_id": "8481137853", + "sender": "8481137853" +} +``` + +不需要写5个rss源,倒是写一下如果要看用法的话,参考README +assistant: ✅ **已简化** + +RSS 源列表删掉了,改成指向 README 的提示。这样以后改配置也不用更新 TOOLS.md 了。 +user: Conversation info (untrusted metadata): +```json +{ + "message_id": "1350", + "sender_id": "8481137853", + "sender": "8481137853" +} +``` + +- 配置:`config.json`(5 个 RSS 源) 你这里还是写着5个rss源 +assistant: ✅ 搞定,现在彻底干净了。 +user: Conversation info (untrusted metadata): +```json +{ + "message_id": "1352", + "sender_id": "8481137853", + "sender": "8481137853" +} +``` + +对了,在workspace的git repo里面加个gitignore,ignore新闻摘要脚本文件夹里面的数据库 +assistant: 🌿 好,让我检查并更新 .gitignore: +assistant: ✅ **已创建 .gitignore** + +排除了新闻摘要的数据库文件: +- `scripts/news_digest/*.db` +- `scripts/news_digest/*.db-journal` +- `scripts/news_digest/*.log` + +顺便加了一些常见的 Python 和 IDE 忽略规则。 +user: Conversation info (untrusted metadata): +```json +{ + "message_id": "1355", + "sender_id": "8481137853", + "sender": "8481137853" +} +``` + +我从什么文件能看得出来新闻摘要交给subagent去做了呢 +assistant: 🌿 三个地方可以确认: + +**1. 最权威:Cron 列表** +```bash +openclaw cron list | grep news +``` +Target 列显示 `isolated` 就是 subagent 模式(`main` 是主会话)。 + +**2. MEMORY.md** +我之前记录了项目,但没写 subagent 模式——需要更新一下。 + +**3. TOOLS.md** +写了"模式:isolated subagent,thinking=low"。 + +要我更新 MEMORY.md 把 subagent 配置写进去吗?这样以后查长期记忆也能看到。 +user: Conversation info (untrusted metadata): +```json +{ + "message_id": "1357", + "sender_id": "8481137853", + "sender": "8481137853" +} +``` + +要,更新一下MEMORY.md +assistant: ✅ **已更新 MEMORY.md** + +添加了新闻摘要项目,明确标注了: +- **运行模式: isolated subagent** (thinking=low, timeout=5min) +- Cron ID 和时间 +- 功能流程 + +也更新了项目索引表和最后更新时间(2026-02-22)。 + +现在三个地方都能查到 subagent 配置了: +1. `openclaw cron list` — Target 列 +2. **MEMORY.md** — 项目详情 +3. **TOOLS.md** — 快速参考 +user: Conversation info (untrusted metadata): +```json +{ + "message_id": "1359", + "sender_id": "8481137853", + "sender": "8481137853" +} +``` + +好,就这样吧,谢谢。 +assistant: 🌿 不客气,明天早上 5 点见分晓。晚安! diff --git a/scripts/news_digest/config.json b/scripts/news_digest/config.json index 977dccb..ea53808 100644 --- a/scripts/news_digest/config.json +++ b/scripts/news_digest/config.json @@ -1,8 +1,8 @@ { "settings": { "hours_lookback": 24, - "retention_days": 30, - "max_articles_per_feed": 10 + "retention_days": 14, + "max_articles_per_feed": 6 }, "ollama": { "model": "kamekichi128/qwen3-4b-instruct-2507:latest", @@ -28,9 +28,15 @@ "enabled": true }, { - "url": "https://rsshub.isrss.com/36kr/hot-list", - "name": "36氪 热榜", - "category": "China", + "url": "https://rsshub.isrss.com/reuters/world", + "name": "Reuters", + "category": "World", + "enabled": true + }, + { + "url": "https://rsshub.isrss.com/readhub", + "name": "ReadHub", + "category": "Tech", "enabled": true } ]