MEMORY.md - Travel Agent 长期记忆

最后压缩:2026-04-11
写入规则:只写 3 个月后仍有效的事实、决策、偏好
清理规则:每周蒸馏时清理过期条目


⚠️ 端到端验收原则(2026-03-06)⭐ 铁律

核心原则

  • "创建了"≠"完成了",必须验证最终结果
  • "执行了"≠"成功了",不能只看日志
  • 用户不发现 ≠ 系统正常

验收清单

  • 代码部署前手动执行一次
  • 飞书文档创建后读取验证内容非空
  • 数据量验证 ≥ 阈值
  • 同步执行验证(blocks_added > 0)
  • 用户通知(成功/失败都发送)

教训:2026-03-06 创建飞书文档但未推送内容,用户指出后才修复


⚠️ Sub-agent 验收机制(2026-03-09)⭐ 铁律

核心原则

  • sub-agent 汇报完成 + 主 agent 验收通过 = 任务完成
  • 不验收 = 未完成

验收清单

  • 读取输出文件,确认内容非空
  • 检查数据字段(是否有真实数据源痕迹)
  • 抽样验证(随机查 3-5 条)
  • 检查脚本逻辑(是否真的调用了工具)

教训:2026-03-09 陕西国保核实,sub-agent 硬编码数据,主 agent 未验收就汇报


⚠️ Cron 环境变量陷阱(2026-04-07)⭐ 铁律

核心原则

  • "本地正常"≠"cron 正常"
  • cron 不自动加载 ~/.bashrc
  • 环境变量配置必须在 cron 环境中验收

正确做法

#!/bin/bash
if [ -f ~/.bashrc ]; then
    source ~/.bashrc
fi

教训:2026-04-01 至 04-06,Tavily API Key 在~/.bashrc 但 cron 不加载,导致北京展览数据连续 9 天偏少(6 个 vs 正常 39 个)


⚠️ 路径一致性原则(2026-04-11)⭐ 铁律

核心原则

  • 多脚本协作:必须统一数据路径配置
  • 相对路径:以 __file__ 为基准,不以 cwd 为基准
  • 验收标准:修改后必须验证端到端流程

正确做法

# ✅ 正确:以脚本文件为基准
DATA_DIR = Path(__file__).parent / "data"

# ❌ 错误:依赖当前工作目录
DATA_DIR = Path("data")  # cwd 可能变化

教训:2026-04-07 至 04-10,爬虫写入 scripts/data/ 但飞书读取 data/,导致 4 天数据未同步(使用兜底数据)


⚠️ API Key 保障原则(2026-04-18)⭐ 铁律

核心原则

  • 关键 API Key 必须配置并有效
  • "本地正常"≠"cron 正常",环境变量必须在 cron 环境中验收
  • API Key 缺失 = 系统功能瘫痪

正确做法

# ✅ 正确:cron 中显式 source ~/.bashrc
0 9 * * * source ~/.bashrc && /path/to/script.sh

# ✅ 正确:检查 API Key 是否配置
echo $TAVILY_API_KEY | head -c 10

# ✅ 正确:测试 API 连接
python3 scripts/test_tavily.py

关键 API Key 清单

  1. TAVILY_API_KEY - 北京展览爬取(⭐⭐⭐ 紧急)
  2. XIAOHONGSHU_COOKIE - 小红书 MCP 国保核实

教训:2026-04-06 至今,TAVILY_API_KEY 未配置,导致北京展览爬取连续 13 天只能使用兜底数据(6 个),无法获取实时展览信息

修复方案

  1. 检查 ~/.bashrc 中是否配置 TAVILY_API_KEY
  2. 如未配置,联系用户获取新的 API Key
  3. 或寻找替代数据源(直接爬取北京市文物局官网)
  4. 配置后验证:source ~/.bashrc && python3 scripts/test_tavily.py

⚠️ Tavily API 配额耗尽(2026-04-25)⭐ 铁律

核心原则

  • "Key 已配置"≠"API 可用"
  • HTTP 432 = 配额耗尽,不是 Key 无效(401/403)
  • 不同错误码对应不同根因,必须区分

错误码速查: | HTTP 状态码 | 含义 | 修复建议 | |————|——|———| | 401/403 | Key 未配置或无效 | 检查环境变量 | | 429 | 限流 | 增加请求间隔 | | 432 | 配额耗尽 | 升级套餐或更换 API |

当前状态:Tavily API 返回 HTTP 432,免费套餐配额已耗尽 修复方案:升级 Tavily 套餐 或 切换到替代数据源(Searxng/DuckDuckGo/直接爬取官网)

教训:2026-04-06 至 04-25,北京展览爬取连续 19 天失败,之前误判为 Key 未配置,实际是配额耗尽


⚠️ Symlink 维护原则(2026-04-25)⭐ 铁律

核心原则

  • 记忆初始化脚本必须同步更新 symlink
  • 今天.md昨天.md 必须指向正确日期的文件
  • 过期 symlink → 读取错误文件 → 记忆不准确

正确做法:在 memory_daily_init.sh 末尾添加:

ln -sf "${TODAY}.md" "${MEMORY_DIR}/今天.md"
YESTERDAY=$(date -d 'yesterday' '+%Y-%m-%d')
ln -sf "${YESTERDAY}.md" "${MEMORY_DIR}/昨天.md"

教训:2026-04-18 至 04-25,symlink 过期 7-8 天,导致读取错误文件


⚠️ 无效循环检测原则(2026-04-26)⭐ 铁律

核心原则

  • 连续 3 天重复相同问题 = 无效循环,必须改变策略
  • 区分"可自动修复"和"需用户决策"两类问题
  • 可自动修复 → 直接在进化报告中执行修复
  • 需用户决策 → 汇总后发送一次性通知,不每日重复

正确做法

  1. 每次进化报告检查:此问题是否连续 3+ 天出现?
  2. 如果是 → 分类:可自动修复 or 需用户决策
  3. 可自动修复 → 立即执行修复并验证
  4. 需用户决策 → 发送一次汇总通知,后续报告只记录天数不展开

教训:2026-04-20 至 04-26,连续 7 天进化报告重复记录 Tavily 432 和 symlink 问题,无任何进展


⚠️ Git 提交原则(2026-04-25)⭐ 铁律

核心原则

  • 每日进化报告流程末尾必须执行 Git 提交
  • 配置变更、数据变更、记忆文件变更都应及时提交
  • 未提交 = 未持久化

正确做法:每日进化报告末尾执行:

cd /root/.openclaw/workspace/travel
git add -A && git commit -m "chore: 每日自动提交 ($(date +%Y-%m-%d))" && git push

教训:68 个文件积压未提交,配置变更未持久化到版本控制


⚠️ Cron 执行验证原则(2026-04-24)⭐ 铁律

核心原则

  • "API Key 已配置"≠"系统正常运行"
  • "本地正常"≠"cron 正常"
  • 日志文件断档 = cron 任务未执行
  • 不能只看环境变量,必须验证日志文件是否按时生成

正确做法

# ✅ 正确:检查每日日志文件是否存在
ls -la beijing-exhibitions/logs/daily_$(date +%Y%m%d).log

# ✅ 正确:检查日志是否有当日条目
grep "$(date +%Y-%m-%d)" beijing-exhibitions/logs/cron.log

# ✅ 正确:手动执行验证
bash /root/.openclaw/workspace/travel/beijing-exhibitions/scripts/daily_cron.sh

教训:2026-04-06 至 04-24,北京展览爬取连续 18 天无日志,TAVILY_API_KEY 已配置但脚本未执行


✅ 自动化技能就绪(2026-04-07)⭐

三个自动化技能已测试通过并就绪

技能 功能 集成状态
evolution-report-validator 读取昨日进化报告,提取明日计划,检查 task.md 执行状态 ✅ 就绪,待集成到每日进化报告流程
data-anomaly-escalator 读取历史数据,检测连续异常天数,自动升级告警 ✅ 就绪,待集成到 daily_cron.sh
task-execution-tracker 读取 task.md,计算执行率,生成告警 ✅ 就绪,待集成到每日进化报告流程

集成待办

  • daily_cron.sh 在爬取完成后调用 data-anomaly-escalator
  • 每日进化报告流程调用 evolution-report-validator 和 task-execution-tracker

🔧 工具选择原则(2026-03-06)⭐

  • 所有网站Playwright(统一工具)
  • 小红书小红书 MCP 专用工具
  • web_fetch → 仅作为备选

📝 Wiki Markdown 格式规范(2026-03-08)⭐

核心教训

❌ 错误

  1. 表格前没有空行 → 渲染错乱
  2. 表格内用空行换行 → 表格错乱
  3. 子目录页面用 Markdown 相对路径 → 链接失效

✅ 正确

  1. 表格前后必须有空行
  2. 单元格内换行用 <br>
  3. 面包屑用 HTML 绝对路径:<a href="/">Home</a> / <a href="/河北">河北</a>

📊 数据异常升级机制(2026-04-07)

连续异常天数 告警级别 动作
3 天 🟡 黄色 P2 任务
5 天 🟠 橙色 P1 任务 + 飞书通知
7 天 🔴 红色 紧急告警

异常判定:北京展览数据 < 15 个


📊 任务执行率告警(2026-04-07)

执行率 告警级别 动作
< 20% 🔴 红色 向用户坦白
< 50% 🟠 橙色 P1 任务升级

超期规则:P1 > 24 小时,P2 > 48 小时


🧠 三层记忆法则

第 1 层 预防(写入时)

  • 完成任务后立即写入 memory/YYYY-MM-DD.md
  • 长期经验写入 MEMORY.md

第 2 层 侦测(恢复时)

  • Session 开始前读取:MEMORY.md + memory/昨天.md + memory/今天.md

第 3 层 兜底(执行时)

  • 高风险操作前搜索记忆找约束

详细流程见 WORKFLOWS.md,配置见 TOOLS.md,规则见 AGENTS.md
最后更新:2026-04-24(新增 Cron 执行验证原则 ⚠️ 紧急 | 北京展览爬取 18 天未执行)


📅 2026-04-14 摘要

📊 今日状态

  • 会话数量:1(每日进化报告 cron 任务)
  • 实质性工作:无
  • 用户交互:无

✅ 已完成

  • 记忆压缩(03:10)✅
  • 每周蒸馏(03:00)✅
  • 每日进化报告生成✅

❌ 失败

  • 记忆初始化:cron 配置被注释,文件未创建(连续第 8 天)
  • 北京展览爬取:数据缺失(连续第 9 天)
  • 记忆总结:记忆文件不存在

⚠️ 问题

  • 记忆初始化脚本被注释(第 8 天)
  • 北京展览自动爬取未执行(第 9 天)
  • 任务执行率连续 5 天 0%(🔴红色告警)

📝 备注

  • 需要检查 cron 配置
  • 需要修复北京展览爬取
  • 需要向用户坦白

📅 2026-04-18 摘要

📋 今日任务

P1 任务(最高优先级)

  • [ ]

P2 任务(正常优先级)

  • [ ]

P3 任务(低优先级)

  • [ ]

📝 工作记录

上午

下午

晚上


✅ 已完成任务

时间 任务 状态 备注
       

⚠️ 经验教训


🧠 三层记忆应用

第 1 层 预防(写入时)

  • 长期记忆已更新(MEMORY.md)
  • 今日记忆已创建
  • 任务状态已记录

第 2 层 侦测(恢复时)

  • 已读取 MEMORY.md
  • 已读取昨日记忆(2026-04-17.md)
  • 已读取今日记忆(2026-04-18.md)

第 3 层 兜底(执行时)

  • 高风险操作前已检查记忆约束
  • 不可逆操作前已确认

创建时间:2026-04-18 03:26:51 维护者:Travel Agent


📅 2026-04-19 摘要

📋 今日任务

P1 任务(最高优先级)

  • [ ]

P2 任务(正常优先级)

  • [ ]

P3 任务(低优先级)

  • [ ]

📝 工作记录

上午

下午

晚上


✅ 已完成任务

时间 任务 状态 备注
       

⚠️ 经验教训


🧠 三层记忆应用

第 1 层 预防(写入时)

  • 长期记忆已更新(MEMORY.md)
  • 今日记忆已创建
  • 任务状态已记录

第 2 层 侦测(恢复时)

  • 已读取 MEMORY.md
  • 已读取昨日记忆(2026-04-18.md)
  • 已读取今日记忆(2026-04-19.md)

第 3 层 兜底(执行时)

  • 高风险操作前已检查记忆约束
  • 不可逆操作前已确认

创建时间:2026-04-19 00:00:01 维护者:Travel Agent


📅 2026-04-20 摘要

📋 今日任务

P1 任务(最高优先级)

  • [ ]

P2 任务(正常优先级)

  • [ ]

P3 任务(低优先级)

  • [ ]

📝 工作记录

上午

下午

晚上


✅ 已完成任务

时间 任务 状态 备注
       

⚠️ 经验教训


🧠 三层记忆应用

第 1 层 预防(写入时)

  • 长期记忆已更新(MEMORY.md)
  • 今日记忆已创建
  • 任务状态已记录

第 2 层 侦测(恢复时)

  • 已读取 MEMORY.md
  • 已读取昨日记忆(2026-04-19.md)
  • 已读取今日记忆(2026-04-20.md)

第 3 层 兜底(执行时)

  • 高风险操作前已检查记忆约束
  • 不可逆操作前已确认

创建时间:2026-04-20 00:00:01 维护者:Travel Agent


📅 2026-04-21 摘要

📋 今日任务

P1 任务(最高优先级)

  • [ ]

P2 任务(正常优先级)

  • [ ]

P3 任务(低优先级)

  • [ ]

📝 工作记录

上午

下午

晚上


✅ 已完成任务

时间 任务 状态 备注
       

⚠️ 经验教训


🧠 三层记忆应用

第 1 层 预防(写入时)

  • 长期记忆已更新(MEMORY.md)
  • 今日记忆已创建
  • 任务状态已记录

第 2 层 侦测(恢复时)

  • 已读取 MEMORY.md
  • 已读取昨日记忆(2026-04-20.md)
  • 已读取今日记忆(2026-04-21.md)

第 3 层 兜底(执行时)

  • 高风险操作前已检查记忆约束
  • 不可逆操作前已确认

创建时间:2026-04-21 00:00:01 维护者:Travel Agent


📅 2026-04-22 摘要

📋 今日任务

P1 任务(最高优先级)

  • [ ]

P2 任务(正常优先级)

  • [ ]

P3 任务(低优先级)

  • [ ]

📝 工作记录

上午

下午

晚上


✅ 已完成任务

时间 任务 状态 备注
       

⚠️ 经验教训


🧠 三层记忆应用

第 1 层 预防(写入时)

  • 长期记忆已更新(MEMORY.md)
  • 今日记忆已创建
  • 任务状态已记录

第 2 层 侦测(恢复时)

  • 已读取 MEMORY.md
  • 已读取昨日记忆(2026-04-21.md)
  • 已读取今日记忆(2026-04-22.md)

第 3 层 兜底(执行时)

  • 高风险操作前已检查记忆约束
  • 不可逆操作前已确认

创建时间:2026-04-22 00:00:01 维护者:Travel Agent


📅 2026-04-23 摘要

📋 今日任务

P1 任务(最高优先级)

  • [ ]

P2 任务(正常优先级)

  • [ ]

P3 任务(低优先级)

  • [ ]

📝 工作记录

上午

下午

晚上


✅ 已完成任务

时间 任务 状态 备注
       

⚠️ 经验教训


🧠 三层记忆应用

第 1 层 预防(写入时)

  • 长期记忆已更新(MEMORY.md)
  • 今日记忆已创建
  • 任务状态已记录

第 2 层 侦测(恢复时)

  • 已读取 MEMORY.md
  • 已读取昨日记忆(2026-04-22.md)
  • 已读取今日记忆(2026-04-23.md)

第 3 层 兜底(执行时)

  • 高风险操作前已检查记忆约束
  • 不可逆操作前已确认

创建时间:2026-04-23 00:00:01 维护者:Travel Agent


📅 2026-04-24 摘要

📋 今日任务

P1 任务(最高优先级)

  • [ ]

P2 任务(正常优先级)

  • [ ]

P3 任务(低优先级)

  • [ ]

📝 工作记录

上午

下午

晚上


✅ 已完成任务

时间 任务 状态 备注
       

⚠️ 经验教训


🧠 三层记忆应用

第 1 层 预防(写入时)

  • 长期记忆已更新(MEMORY.md)
  • 今日记忆已创建
  • 任务状态已记录

第 2 层 侦测(恢复时)

  • 已读取 MEMORY.md
  • 已读取昨日记忆(2026-04-23.md)
  • 已读取今日记忆(2026-04-24.md)

第 3 层 兜底(执行时)

  • 高风险操作前已检查记忆约束
  • 不可逆操作前已确认

创建时间:2026-04-24 00:00:01 维护者:Travel Agent


📅 2026-04-25 摘要

📋 今日任务

P1 任务(最高优先级)

  • [ ]

P2 任务(正常优先级)

  • [ ]

P3 任务(低优先级)

  • [ ]

📝 工作记录

上午

下午

晚上


✅ 已完成任务

时间 任务 状态 备注
       

⚠️ 经验教训


🧠 三层记忆应用

第 1 层 预防(写入时)

  • 长期记忆已更新(MEMORY.md)
  • 今日记忆已创建
  • 任务状态已记录

第 2 层 侦测(恢复时)

  • 已读取 MEMORY.md
  • 已读取昨日记忆(2026-04-24.md)
  • 已读取今日记忆(2026-04-25.md)

第 3 层 兜底(执行时)

  • 高风险操作前已检查记忆约束
  • 不可逆操作前已确认

创建时间:2026-04-25 00:00:01 维护者:Travel Agent


📅 2026-04-26 摘要

📋 今日任务

P1 任务(最高优先级)

  • [ ]

P2 任务(正常优先级)

  • [ ]

P3 任务(低优先级)

  • [ ]

📝 工作记录

上午

下午

晚上


✅ 已完成任务

时间 任务 状态 备注
       

⚠️ 经验教训


🧠 三层记忆应用

第 1 层 预防(写入时)

  • 长期记忆已更新(MEMORY.md)
  • 今日记忆已创建
  • 任务状态已记录

第 2 层 侦测(恢复时)

  • 已读取 MEMORY.md
  • 已读取昨日记忆(2026-04-25.md)
  • 已读取今日记忆(2026-04-26.md)

第 3 层 兜底(执行时)

  • 高风险操作前已检查记忆约束
  • 不可逆操作前已确认

创建时间:2026-04-26 00:00:01 维护者:Travel Agent


📅 2026-04-27 摘要

📋 今日任务

P1 任务(最高优先级)

  • [ ]

P2 任务(正常优先级)

  • [ ]

P3 任务(低优先级)

  • [ ]

📝 工作记录

上午

下午

晚上


✅ 已完成任务

时间 任务 状态 备注
       

⚠️ 经验教训


🧠 三层记忆应用

第 1 层 预防(写入时)

  • 长期记忆已更新(MEMORY.md)
  • 今日记忆已创建
  • 任务状态已记录

第 2 层 侦测(恢复时)

  • 已读取 MEMORY.md
  • 已读取昨日记忆(2026-04-26.md)
  • 已读取今日记忆(2026-04-27.md)

第 3 层 兜底(执行时)

  • 高风险操作前已检查记忆约束
  • 不可逆操作前已确认

创建时间:2026-04-27 00:00:01 维护者:Travel Agent