07dcebae56ad7c2b139e2486f0a1381de246394f
AGENTS.md
| ... | ... | @@ -0,0 +1,133 @@ |
| 1 | +# Travel Agent 工作规则 |
|
| 2 | + |
|
| 3 | +## 核心职责 |
|
| 4 | +- 收集旅行信息(景点、餐厅、交通) |
|
| 5 | +- 制定详细行程规划 |
|
| 6 | +- 维护 Travel Wiki (https://travel.wudai9.net) |
|
| 7 | + |
|
| 8 | +--- |
|
| 9 | + |
|
| 10 | +## 🔒 标准 SOP(必须遵循) |
|
| 11 | + |
|
| 12 | +### 方案制定原则(三套方案) |
|
| 13 | + |
|
| 14 | +#### 原则1:三套方案 |
|
| 15 | +每次制定方案必须提供三套: |
|
| 16 | +- 🟢 **轻松版**:只覆盖必去景点,节奏最轻松 |
|
| 17 | +- 🟡 **标准版**:必去景点 + 部分备选景点,节奏适中 |
|
| 18 | +- 🔴 **紧凑版**:必去景点 + 更多备选景点,节奏紧凑 |
|
| 19 | + |
|
| 20 | +#### 原则2:天数相同 |
|
| 21 | +- 三套方案的天数**必须相同** |
|
| 22 | +- 天数以**轻松版能覆盖所有必去景点**来确定 |
|
| 23 | +- 不是天数不同,而是内容丰富度不同 |
|
| 24 | + |
|
| 25 | +#### 原则3:备选景点增加原则 |
|
| 26 | +标准版和紧凑版增加备选景点时: |
|
| 27 | +- **不绕路**:优先顺路景点 |
|
| 28 | +- **推荐度高**:按用户兴趣匹配排序 |
|
| 29 | + |
|
| 30 | +#### 必去景点确定流程 |
|
| 31 | +1. **第一版**:Agent 根据用户喜好划分必去/备选 |
|
| 32 | +2. **用户确认**:用户提供修改意见 |
|
| 33 | +3. **最终确定**:确认后作为规划依据 |
|
| 34 | + |
|
| 35 | +--- |
|
| 36 | + |
|
| 37 | +### 添加新旅行规划 SOP |
|
| 38 | + |
|
| 39 | +#### Step 1: 景点分类 |
|
| 40 | +1. 搜索目的地景点 |
|
| 41 | +2. 根据用户喜好划分为: |
|
| 42 | + - **必去景点**:核心景点,三套方案都包含 |
|
| 43 | + - **备选景点**:标准版/紧凑版可增加 |
|
| 44 | + |
|
| 45 | +#### Step 2: 确定天数 |
|
| 46 | +- 计算轻松版覆盖所有必去景点所需天数 |
|
| 47 | +- 以此天数作为三套方案的统一天数 |
|
| 48 | + |
|
| 49 | +#### Step 3: 制定三套方案 |
|
| 50 | +| 方案 | 内容 | 每日景点数 | |
|
| 51 | +|------|------|-----------| |
|
| 52 | +| 轻松版 | 必去景点 | 2个左右 | |
|
| 53 | +| 标准版 | 必去 + 部分备选 | 3个左右 | |
|
| 54 | +| 紧凑版 | 必去 + 更多备选 | 4个左右 | |
|
| 55 | + |
|
| 56 | +#### Step 4: 创建规划文件 |
|
| 57 | +```bash |
|
| 58 | +cd /root/.openclaw/workspace/travel/wiki |
|
| 59 | +# 创建: 目的地旅行规划.md |
|
| 60 | +``` |
|
| 61 | + |
|
| 62 | +#### Step 5: 更新 Home.md |
|
| 63 | +1. 更新旅行规划索引 |
|
| 64 | +2. **更新"最近更新"(时间精确到分钟)** |
|
| 65 | + - 格式: `YYYY-MM-DD HH:MM | 内容` |
|
| 66 | + |
|
| 67 | +#### Step 6: 提交推送 |
|
| 68 | +```bash |
|
| 69 | +git add . |
|
| 70 | +git commit -m "添加XX旅行规划(三套方案)" |
|
| 71 | +git push origin master |
|
| 72 | +``` |
|
| 73 | + |
|
| 74 | +--- |
|
| 75 | + |
|
| 76 | +### 修改现有规划 SOP |
|
| 77 | + |
|
| 78 | +#### Step 1: 修改文件 |
|
| 79 | +```bash |
|
| 80 | +cd /root/.openclaw/workspace/travel/wiki |
|
| 81 | +# 编辑对应的 .md 文件 |
|
| 82 | +``` |
|
| 83 | + |
|
| 84 | +#### Step 2: **更新首页"最近更新"** |
|
| 85 | +```bash |
|
| 86 | +# 格式: YYYY-MM-DD HH:MM | 内容 |
|
| 87 | +``` |
|
| 88 | + |
|
| 89 | +#### Step 3: 提交推送 |
|
| 90 | +```bash |
|
| 91 | +git add . |
|
| 92 | +git commit -m "更新XX规划" |
|
| 93 | +git push origin master |
|
| 94 | +``` |
|
| 95 | + |
|
| 96 | +--- |
|
| 97 | + |
|
| 98 | +## 👤 用户偏好(必去景点划分依据) |
|
| 99 | + |
|
| 100 | +| 偏好 | 说明 | |
|
| 101 | +|------|------| |
|
| 102 | +| 不爬山 | 避免需要登山爬楼的景点 | |
|
| 103 | +| 公共交通 | 不自驾,依赖高铁/公交/打车 | |
|
| 104 | +| 舒适食宿 | 选择舒适型酒店 | |
|
| 105 | +| 时间要求 | 8:00起床,9:30出发,21:00前回酒店 | |
|
| 106 | +| 步行限制 | 每日步行≤10km | |
|
| 107 | +| 历史人文 | 偏好古建筑、博物馆、历史遗迹 | |
|
| 108 | +| 不喜欢 | 商业化严重的景点 | |
|
| 109 | + |
|
| 110 | +--- |
|
| 111 | + |
|
| 112 | +## 📂 Wiki 目录结构 |
|
| 113 | + |
|
| 114 | +``` |
|
| 115 | +Travel Wiki |
|
| 116 | +├── Home.md # 索引页(必须更新最近更新) |
|
| 117 | +├── [地区].md # 地区分类页 |
|
| 118 | +└── [目的地]旅行规划.md # 详情页(三套方案) |
|
| 119 | +``` |
|
| 120 | + |
|
| 121 | +--- |
|
| 122 | + |
|
| 123 | +## ⚠️ 重要提醒 |
|
| 124 | + |
|
| 125 | +- **不要等用户提醒**,完成规划后自动执行 SOP |
|
| 126 | +- **每次修改都要更新** Home.md 的最近更新记录 |
|
| 127 | +- **时间精确到分钟**:格式 `YYYY-MM-DD HH:MM` |
|
| 128 | +- **三套方案天数相同**:以轻松版覆盖必去景点确定 |
|
| 129 | +- **推送后验证**同步是否成功 |
|
| 130 | + |
|
| 131 | +--- |
|
| 132 | + |
|
| 133 | +*维护者: Travel Agent* |
HEARTBEAT.md
| ... | ... | @@ -0,0 +1,75 @@ |
| 1 | +# Heartbeat |
|
| 2 | + |
|
| 3 | +每 10 分钟自动检查以下任务。 |
|
| 4 | + |
|
| 5 | +--- |
|
| 6 | + |
|
| 7 | +## Travel Agent 任务 |
|
| 8 | + |
|
| 9 | +### 1. Wiki 同步检查 |
|
| 10 | +- 检查 Wiki 内容是否需要同步 |
|
| 11 | +- 确保服务器运行正常 |
|
| 12 | + |
|
| 13 | +### 2. 爬取进度检查 |
|
| 14 | + |
|
| 15 | +#### 检查步骤 |
|
| 16 | + |
|
| 17 | +1. 读取当前进度 |
|
| 18 | +```bash |
|
| 19 | +DONE=$(wc -l < /tmp/done_works.txt 2>/dev/null || echo 0) |
|
| 20 | +NEW=$(wc -l < /tmp/new_results_dedup.json 2>/dev/null || echo 0) |
|
| 21 | +``` |
|
| 22 | + |
|
| 23 | +2. 读取上次进度(保存到 /tmp/last_progress.txt) |
|
| 24 | +```bash |
|
| 25 | +LAST=$(cat /tmp/last_progress.txt 2>/dev/null || echo 0) |
|
| 26 | +``` |
|
| 27 | + |
|
| 28 | +3. 比对进度 |
|
| 29 | +- 如果 DONE > LAST:进度正常,更新 last_progress.txt |
|
| 30 | +- 如果 DONE == LAST 且 LAST > 0:可能卡住,检查问题 |
|
| 31 | +- 如果连续 3 次无进度:通知用户 |
|
| 32 | + |
|
| 33 | +#### 问题诊断 |
|
| 34 | + |
|
| 35 | +1. 检查爬虫进程是否在运行 |
|
| 36 | +```bash |
|
| 37 | +pgrep -c -f "python.*crawl" |
|
| 38 | +``` |
|
| 39 | + |
|
| 40 | +2. 检查 cron 任务是否正常 |
|
| 41 | +```bash |
|
| 42 | +crontab -l | grep crawl |
|
| 43 | +``` |
|
| 44 | + |
|
| 45 | +3. 检查最新日志 |
|
| 46 | +```bash |
|
| 47 | +tail -20 /tmp/crawler.log |
|
| 48 | +``` |
|
| 49 | + |
|
| 50 | +#### 常见问题及解决 |
|
| 51 | + |
|
| 52 | +| 问题 | 解决方案 | |
|
| 53 | +|------|----------| |
|
| 54 | +| 进程未运行 | 重启爬虫脚本 | |
|
| 55 | +| cron 任务丢失 | 重新添加 crontab | |
|
| 56 | +| MCP 调用失败 | 检查 mcporter 配置 | |
|
| 57 | +| 速率限制 | 等待后重试 | |
|
| 58 | + |
|
| 59 | +#### 通知条件 |
|
| 60 | + |
|
| 61 | +- 连续 3 次检查无进度 |
|
| 62 | +- 爬虫进程异常退出 |
|
| 63 | +- 无法自动解决的问题 |
|
| 64 | + |
|
| 65 | +--- |
|
| 66 | + |
|
| 67 | +## 进度记录 |
|
| 68 | + |
|
| 69 | +| 时间 | 已处理 | 新结果 | 状态 | |
|
| 70 | +|------|--------|--------|------| |
|
| 71 | +| 2026-02-26 10:35 | 120 / 318 | 21 | 检查完成 | |
|
| 72 | + |
|
| 73 | +--- |
|
| 74 | + |
|
| 75 | +*由 Travel Agent 维护* |
WIKI_RULES.md
| ... | ... | @@ -0,0 +1,128 @@ |
| 1 | +# Travel Wiki 维护规则 |
|
| 2 | + |
|
| 3 | +## 新页面添加流程 |
|
| 4 | + |
|
| 5 | +每次创建新页面时,必须完成以下步骤: |
|
| 6 | + |
|
| 7 | +### 1. 创建页面文件 |
|
| 8 | +```bash |
|
| 9 | +# 在 /root/.openclaw/workspace/travel/wiki/ 目录下创建 |
|
| 10 | +vim 新页面名称.md |
|
| 11 | +``` |
|
| 12 | + |
|
| 13 | +### 2. 更新首页链接 |
|
| 14 | +编辑 `/root/.openclaw/workspace/travel/wiki/Home.md` |
|
| 15 | + |
|
| 16 | +**添加链接位置:** |
|
| 17 | +```markdown |
|
| 18 | +## 🗺️ 旅行规划 |
|
| 19 | + |
|
| 20 | +### 省份名称 |
|
| 21 | +- [页面标题](文件名) |
|
| 22 | +``` |
|
| 23 | + |
|
| 24 | +### 3. 更新Changelog |
|
| 25 | +在 Home.md 的更新日志部分添加: |
|
| 26 | + |
|
| 27 | +```markdown |
|
| 28 | +## 📝 更新日志 |
|
| 29 | + |
|
| 30 | +### YYYY-MM-DD |
|
| 31 | +- ✅ 新增XXX旅行规划 |
|
| 32 | +- ✅ 具体更新内容 |
|
| 33 | +``` |
|
| 34 | + |
|
| 35 | +### 4. Git提交推送 |
|
| 36 | +```bash |
|
| 37 | +cd /root/.openclaw/workspace/travel/wiki |
|
| 38 | +git add . |
|
| 39 | +git commit -m "添加XXX旅行规划" |
|
| 40 | +git push |
|
| 41 | +``` |
|
| 42 | + |
|
| 43 | +--- |
|
| 44 | + |
|
| 45 | +## 页面模板 |
|
| 46 | + |
|
| 47 | +参考 `山西.md` 和 `河南.md` 的结构: |
|
| 48 | +- 主要景点(按城市分类) |
|
| 49 | +- 必去/备选区分 |
|
| 50 | +- 美食推荐 |
|
| 51 | +- 交通信息 |
|
| 52 | +- 参考资料 |
|
| 53 | +- 已规划行程(如有) |
|
| 54 | + |
|
| 55 | +--- |
|
| 56 | + |
|
| 57 | +## 注意事项 |
|
| 58 | + |
|
| 59 | +- ⚠️ 每个新页面必须在首页添加入口 |
|
| 60 | +- ⚠️ 每次更新必须记录changelog |
|
| 61 | +- ⚠️ 标注商业化景点(⚠️符号) |
|
| 62 | +- ⚠️ 根据涛哥偏好筛选景点 |
|
| 63 | + |
|
| 64 | +--- |
|
| 65 | + |
|
| 66 | +## 技术架构 |
|
| 67 | + |
|
| 68 | +### 服务器配置 |
|
| 69 | +- **服务器**: 47.86.243.164 |
|
| 70 | +- **Bare Repo**: `/opt/travelwiki/repo/wiki.git` |
|
| 71 | +- **Data 目录**: `/opt/travelwiki/data` |
|
| 72 | +- **Gollum 服务**: `systemctl restart gollum` |
|
| 73 | + |
|
| 74 | +### 自动更新机制 |
|
| 75 | +1. 本地 `git push` → 推送到 bare repo |
|
| 76 | +2. `post-receive` hook 触发 |
|
| 77 | +3. hook 执行 `git fetch` + `git reset --hard FETCH_HEAD` |
|
| 78 | +4. hook 重启 gollum 服务 |
|
| 79 | +5. 网页自动更新 |
|
| 80 | + |
|
| 81 | +### post-receive hook(关键修复) |
|
| 82 | +```bash |
|
| 83 | +#!/bin/bash |
|
| 84 | + |
|
| 85 | +echo "📥 同步 Wiki..." |
|
| 86 | + |
|
| 87 | +# 清除可能干扰的 git 环境变量 |
|
| 88 | +unset GIT_DIR |
|
| 89 | +unset GIT_WORK_TREE |
|
| 90 | + |
|
| 91 | +# 路径 |
|
| 92 | +DATA_DIR=/opt/travelwiki/data |
|
| 93 | +BARE_REPO=/opt/travelwiki/repo/wiki.git |
|
| 94 | + |
|
| 95 | +# 强制同步到 bare repo 的最新状态 |
|
| 96 | +cd $DATA_DIR |
|
| 97 | +git fetch $BARE_REPO master |
|
| 98 | +git reset --hard FETCH_HEAD |
|
| 99 | + |
|
| 100 | +# 重启 Gollum |
|
| 101 | +systemctl restart gollum > /dev/null 2>&1 & |
|
| 102 | + |
|
| 103 | +echo "✅ 同步完成 ($(date '+%Y-%m-%d %H:%M:%S'))" |
|
| 104 | +``` |
|
| 105 | + |
|
| 106 | +### 常见问题 |
|
| 107 | + |
|
| 108 | +**Q: 网页没有更新?** |
|
| 109 | +1. 检查 bare repo 和 data 目录的 HEAD 是否一致: |
|
| 110 | + ```bash |
|
| 111 | + cd /opt/travelwiki/repo/wiki.git && git log --oneline -1 |
|
| 112 | + cd /opt/travelwiki/data && git log --oneline -1 |
|
| 113 | + ``` |
|
| 114 | +2. 如果不一致,手动同步: |
|
| 115 | + ```bash |
|
| 116 | + cd /opt/travelwiki/data |
|
| 117 | + git fetch /opt/travelwiki/repo/wiki.git master |
|
| 118 | + git reset --hard FETCH_HEAD |
|
| 119 | + systemctl restart gollum |
|
| 120 | + ``` |
|
| 121 | + |
|
| 122 | +**Q: 新页面 404?** |
|
| 123 | +- 确保文件被 git 追踪(`git add` + `git commit`) |
|
| 124 | +- 确保文件名是 UTF-8 编码 |
|
| 125 | + |
|
| 126 | +--- |
|
| 127 | + |
|
| 128 | +*最后更新:2026-02-27* |