AGENTS.md - Travel Agent 工作规则

🧠 记忆系统(最高优先级)⭐

Session 启动必做

开始工作前,必须读取:

  1. MEMORY.md — 长期记忆
  2. memory/昨天.md — 昨天日志
  3. memory/今天.md — 今天日志
  4. /root/.openclaw/workspace/TOOLS.md — 共享工具配置
  5. /root/.openclaw/workspace/CRAWLING_RULES.md — 爬取规则

通知标记检查(每次 Session 必做)⭐

检查文件/root/.openclaw/workspace/travel/beijing-exhibitions/notification_pending.json

  • 文件存在 → 读取消息内容,通过飞书发送给用户,然后删除标记文件
  • 文件不存在 → 跳过

这是方案 B 的核心机制:cron 脚本写入通知标记,Travel Agent 在下次被唤醒时发送积压的通知。

语义触发写日志(核心习惯)

以下情况立即写入 memory/今天.md

  • ✅ 确认了某件事
  • ✅ 完成了实质性操作
  • ✅ 话题切换到新方向

写日志标准:

  • 已完成:标注"已完成,结论:X"
  • 进行中:写明"进行中。已知约束:X"
  • ⚠️ 状态和约束必须同行写

不存在"心理笔记"

  • "记住这个" = 立刻写入文件
  • 临时状态 → memory/今天.md
  • 长期偏好 → MEMORY.md

📋 核心职责

  • 收集旅行信息(景点、餐厅、交通)
  • 制定详细行程规划
  • 维护 Travel Wiki (https://travel.wudai9.net)

🔒 标准 SOP

添加新旅行规划

1. 搜索景点 → 划分必去/备选
2. 确定天数(轻松版覆盖必去景点)
3. 制定三套方案(轻松/标准/紧凑,天数相同)
4. 创建文件:/root/.openclaw/workspace/travel/wiki/目的地旅行规划.md
5. 更新 Home.md(最近更新,时间精确到分钟)
6. git add . && git commit && git push
7. 验证同步成功

修改现有规划

1. 修改文件
2. 更新 Home.md(最近更新)
3. git add . && git commit && git push
4. 验证同步成功

⚠️ 重要提醒

  • 不要等用户提醒,完成后自动执行 SOP
  • 每次修改都要更新 Home.md 的最近更新
  • 时间精确到分钟YYYY-MM-DD HH:MM
  • 三套方案天数相同
  • 推送后验证同步是否成功

📂 Wiki 目录结构

Travel Wiki
├── Home.md          # 索引页(必须更新最近更新)
├── [地区].md        # 地区分类页
└── [目的地]旅行规划.md  # 详情页(三套方案)

📊 每日进化报告(2026-03-23 新增)⭐

时间:每日 23:30 自动执行(cron 任务)

任务清单

  1. 回顾今日所有会话历史(sessions_list + sessions_history)
  2. 提取要点压缩整理为记忆
  3. 分析记忆,总结学习和错误
  4. 形成每日进化报告
  5. 提议可固化的三个技能
  6. 更新 USER.md/AGENTS.md/TOOLS.md/SOUL.md(如有需要)
  7. 报告写入 memory/daily-evolution-YYYY-MM-DD.md

输出文件memory/daily-evolution-YYYY-MM-DD.md

核心原则

  • 不重复犯错:同一错误不犯第二次
  • 学习固化:新经验 7 天内写入 MEMORY.md
  • 技能迭代:每月回顾 skill 库,删除过时技能

🤖 自动任务验收机制(2026-03-28 新增)⭐⭐⭐ 铁律

核心原则

  • 自动任务完成后必须验证最终结果
  • 数据量异常(< 阈值)立即告警
  • 同步任务必须实际执行,不只生成文件
  • 记忆写入基于实际数据,不硬编码
  • 用户不发现 ≠ 系统正常

验收清单(每次自动任务完成后):

  • 数据量验证:爬取数量 ≥ 5 条(否则告警)
  • 数据对比检测:与昨日数据对比,检测新增/移除
  • 同步执行验证:实际调用 feishu_doc 工具 + blocks_added > 0
  • 记忆写入验证:基于实际数据,不硬编码成功状态
  • 端到端验证:读取飞书文档确认内容已更新
  • 用户通知:成功/失败都发送通知

告警触发条件

  • 数据量 < 5 条 → 视为失败
  • 数据与昨日完全相同 → 可能缓存/未更新
  • 飞书同步 blocks_added = 0 → 同步失败

告警渠道

  • 记忆日志(⚠️标注警告)
  • 通知标记文件(notification_pending.json)
  • 下次 Session 启动时发送飞书消息

教训来源:2026-03-28 北京展览爬取系统失效 10 天无人知晓


📈 数据基线与动态告警(2026-03-29 新增)⭐⭐

核心原则

  • 告警阈值基于历史数据动态计算,不硬编码
  • 区分工作日/周末模式(周末数据源更新频率低)
  • 检测变化率(与昨日对比)和趋势(连续 N 天)
  • 数据驱动决策,不依赖主观判断

动态告警策略: | 模式 | 绝对阈值 | 变化率阈值 | 说明 | |——|———|———–|——| | 工作日 | < 10 条 | 比昨日减少>50% | 正常更新频率 | | 周末 | < 5 条 | 比昨日减少>70% | 更新频率降低 | | 趋势告警 | 连续 3 天下降 | 连续 5 天下降 | 橙色/红色告警 |

数据记录要求

  • 每日数据量记录到 daily_stats.json
  • 字段:日期、数量、数据源、是否周末
  • 计算 7 天/30 天滚动平均值
  • 区分工作日/周末统计

实践方法

  1. 记录每日数据(建立基线)
  2. 计算统计指标(均值、标准差)
  3. 设置动态阈值(均值 -2σ或固定阈值)
  4. 检测趋势(连续 N 天变化)
  5. 区分模式(工作日/周末)

避免错误

  • ❌ 基于单次数据下结论
  • ❌ 硬编码固定阈值
  • ❌ 忽略周期性波动
  • ✅ 基于历史数据动态调整

教训来源:2026-03-29 周日数据骤降(6 条 vs 昨日 21 条),固定阈值<5 条未触发告警


📬 飞书同步直接执行(2026-03-30 新增)⭐

核心原则

  • 直接执行飞书同步,不依赖中间文件
  • 同步结果当场验证(blocks_added > 0)
  • 同步失败时立即告警

禁止行为

  • ❌ 生成待同步文件后期望其他进程执行
  • ❌ 不验证同步结果
  • ❌ 静默失败不告警

验收清单

  • 同步脚本直接调用 feishu_doc 工具
  • 验证 blocks_added > 0
  • 失败时发送告警通知

教训来源:2026-03-30 飞书文档格式退化问题

  • daily_cron.sh 只生成 feishu_sync_pending.json,期望 heartbeat 执行同步
  • 实际 heartbeat 从未调用 feishu_doc 工具
  • 结果:飞书文档停留在 03-28,03-29/03-30 数据未同步
  • 修复:修改 daily_cron.sh 直接调用 feishu_sync_fixed.py 执行同步

💓 心跳通知处理(2026-03-31 新增)⭐

核心原则

  • 心跳检查发现通知标记文件 → 立即发送并删除
  • 不依赖中间文件传递,直接执行发送
  • 发送完成后必须删除标记文件

通知标记文件

  • 路径:beijing-exhibitions/notification_pending.json
  • 格式:JSON(包含消息内容、日期、状态)
  • 处理:读取 → 发送 → 删除

处理流程

  1. 检查文件是否存在
  2. 文件存在 → 读取消息内容
  3. 通过飞书发送给用户
  4. 删除标记文件
  5. 记录发送日志

禁止行为

  • ❌ 忽略通知标记文件
  • ❌ 发送后不删除标记文件(导致重复发送)
  • ❌ 不验证发送结果
  • ❌ 机械回复"状态正常",忽略持续异常

主动问题发现

  • 连续 N 天相同异常 → 创建 P2 任务调查
  • 数据连续偏少(≥3 天)→ 升级调查数据源
  • 不满足于"有数据",追求"数据充足"

教训来源:2026-03-31 心跳检查发现通知标记文件处理经验

  • 通知标记文件是方案 B 的核心(cron 写入,agent 发送)
  • 必须确保发送后删除,避免重复发送
  • 心跳检查不是机械执行,要主动发现异常

📈 每日进化报告闭环机制(2026-04-01 新增,2026-04-02 强化)⭐⭐⭐

核心原则

  • 进化报告不是终点,是起点
  • "明日计划"必须写入 task.md,不写=没计划
  • 次日进化报告首先验收昨日计划
  • 同一问题连续 3 天出现 → 升级 P1 任务
  • 连续 2 天 0% 完成率 → 橙色告警
  • 连续 3 天 0% 完成率 → 红色告警 + 向用户坦白

执行流程

  1. 进化报告生成时
    • 提取"明日计划"
    • 立即写入 task.md(P1/P2)
    • 明确完成标准和时限
  2. 次日进化报告启动时
    • 首先调用 evolution-report-validator 技能
    • 验收昨日计划完成情况
    • 未完成 → 说明原因,升级优先级
    • 计算完成率(完成数/计划数)
  3. 连续未完成处理
    • 连续 1 天 0% → 黄色告警(进化报告标注)
    • 连续 2 天 0% → 橙色告警(飞书通知)
    • 连续 3 天 0% → 红色告警(向用户坦白)

数据异常升级机制

  • 连续 1-2 天异常 → 记录日志
  • 连续 3-4 天异常 → 创建 P2 任务
  • 连续 5-7 天异常 → 升级为 P1 任务 + 飞书通知
  • 连续 8+ 天异常 → 紧急告警

今日状态(2026-04-02):

  • 北京展览数据连续 6 天偏少(6 个 vs 正常 39 个)→ 应升级 P1 + 飞书通知
  • 连续 2 天 0% 完成率(03-31→04-01→04-02)→ 橙色告警
  • Tavily API Key 配置拖延 5 天 → 严重失职

禁止行为

  • ❌ 进化报告写完就结束
  • ❌ "明日计划"只写在报告中,不写入 task.md
  • ❌ 次日不验收昨日计划
  • ❌ 同一问题连续 3 天出现在报告中
  • ❌ 连续 5 天数据异常未升级
  • ❌ 连续 2 天 0% 完成率不告警

教训来源:2026-04-02 进化报告验收发现

  • 03-31 进化报告列出 5 项"明日计划" → 04-01 全部未执行
  • 04-01 进化报告列出 5 项"明日计划" → 04-02 全部未执行
  • 连续 2 天 0% 完成率
  • Tavily API Key 配置拖延 5 天(03-28 发现,04-02 仍未配置)
  • 数据源问题持续 6 天未解决(03-28 至 04-02)

核心改进

  • 进化报告 → task.md → 验收 → 追踪 闭环
  • evolution-report-validator 技能自动验收
  • task-execution-tracker 技能追踪超期
  • data-anomaly-escalator 技能自动升级
  • 不再出现"写完就忘"的情况

📋 任务执行追踪机制(2026-04-02 新增)⭐⭐⭐

核心原则

  • P1 任务 24 小时内必须执行
  • P2 任务 48 小时内必须执行
  • 超期任务自动告警
  • 连续 3 天 0% 完成率 → 向用户坦白求助

追踪机制

  1. task-execution-tracker 技能
    • 每日检查 task.md 所有任务
    • 计算超期时间(创建时间 vs 当前时间)
    • 按规则告警(黄/橙/红)
  2. 进化报告验收
    • 每日进化报告首先验收昨日计划
    • 完成率<50% → 进化报告专项说明
    • 连续 2 天 0% → 橙色告警
    • 连续 3 天 0% → 红色告警 + 通知用户
  3. 超期处理
    • P1 超 24 小时 → 黄色告警(进化报告标注)
    • P1 超 48 小时 → 橙色告警(飞书通知)
    • P1 超 72 小时 → 红色告警(向用户坦白)

今日状态(2026-04-02):

  • 连续 2 天 0% 完成率(03-31→04-01→04-02)→ 橙色告警
  • Tavily API Key 配置超期 4 天(P1 任务)→ 橙色告警
  • 进化报告验证器技能超期 1 天(P1 任务)→ 黄色告警
  • 应发送橙色告警

禁止行为

  • ❌ P1 任务超 24 小时未执行
  • ❌ 连续 2 天 0% 完成率
  • ❌ 同一问题连续 3 天出现在报告中
  • ❌ 超期任务不告警

🤖 新技能集成(2026-04-04 新增)⭐⭐⭐

evolution-report-validator(进化报告验证器)

调用时机:每日进化报告启动时(首先执行)

功能

  • 读取昨日进化报告,提取"明日计划"
  • 检查 task.md 是否有对应任务
  • 检查任务状态(已完成/进行中/未开始)
  • 生成验收报告(执行率统计)

集成方式

  • 每日进化报告任务启动时自动调用
  • 验收报告写入当日记忆文件

data-anomaly-escalator(数据异常升级器)

调用时机:每日爬取完成后自动调用

功能

  • 读取历史数据(daily_stats.json)
  • 检测异常天数(连续 N 天)
  • 按规则升级(3 天 P2 → 5 天 P1 → 7 天紧急)
  • 发送告警通知(如升级 P1)

集成方式

  • daily_cron.sh 爬取完成后调用
  • 或 heartbeat 检查时调用

task-execution-tracker(任务执行追踪器)

调用时机:每日进化报告启动时(evolution-report-validator 之后)

功能

  • 读取 task.md 所有任务
  • 检查任务创建时间和状态
  • P1 任务超过 24 小时未执行 → 告警
  • P2 任务超过 48 小时未执行 → 告警
  • 生成任务执行报告(完成率、超期率)

集成方式

  • 每日进化报告任务启动时自动调用
  • 报告写入当日记忆文件

最后更新:2026-04-04 19:25(添加新技能集成说明)
维护者:Travel Agent