MEMORY.md
... ...
@@ -13,6 +13,137 @@
13 13
14 14
---
15 15
16
+## 🧠 三层记忆法则(2026-03-06 添加)⭐ 重点
17
+
18
+### 第 1 层 预防(写入时)
19
+- 完成任务后**立即**写入 `memory/YYYY-MM-DD.md`
20
+- 长期经验写入 `MEMORY.md`
21
+- **不等提醒,不等心跳**
22
+
23
+### 第 2 层 侦测(恢复时)
24
+- **Session 开始前必做**:
25
+ 1. 读取 `MEMORY.md`(长期记忆)
26
+ 2. 读取 `memory/昨天.md`
27
+ 3. 读取 `memory/今天.md`
28
+
29
+### 第 3 层 兜底(执行时)
30
+- 高风险操作前搜索记忆找约束
31
+- 不可逆操作前当场确认
32
+
33
+---
34
+
35
+## ⚠️ 端到端验收原则(2026-03-06 添加)⭐ 铁律
36
+
37
+**违反记录**:
38
+1. 2026-03-06 11:50 - 创建飞书文档但没有推送内容
39
+2. 2026-03-06 11:52 - 用户指出后才检查修复
40
+
41
+**验收清单(必须逐项检查)**:
42
+- [ ] 代码部署前手动执行一次
43
+- [ ] 飞书文档创建后读取验证内容非空
44
+- [ ] 表格、列表都已正确渲染
45
+- [ ] 发送通知包含文档链接
46
+- [ ] 用户确认收到
47
+
48
+**核心原则**:
49
+- **"创建了"≠"完成了"**
50
+- **"执行了"≠"成功了"**
51
+- **必须验证最终结果,不能只验证中间步骤**
52
+
53
+---
54
+
55
+## 🔧 工具选择原则(2026-03-06 最终版)⭐
56
+
57
+**核心原则**:
58
+- **所有网站** → ⭐⭐⭐⭐⭐ **Playwright**(统一工具,稳定可靠)
59
+- **小红书** → ⭐⭐⭐⭐⭐ **小红书 MCP 专用工具**(官方 API)
60
+- **web_fetch** → ⭐ **仅作为备选**(Playwright 不可用时)
61
+- **❌ 禁止**:优先使用 web_fetch 爬任何网站
62
+
63
+**教训**:
64
+- 之前错误:根据不同网站类型选择不同工具
65
+- 正确做法:统一使用 Playwright,避免 web_fetch 的 DNS 问题
66
+
67
+---
68
+
69
+## 🔧 北京展览爬取系统(2026-03-07 添加)⭐ 重点
70
+
71
+### 数据源清单(10 个,已验证成功)
72
+
73
+**官方权威(7 个)**:
74
+1. 故宫博物院官网 → Playwright 浏览器自动化
75
+2. 中国美术馆官网 → web_fetch + Jina Reader
76
+3. 国家博物馆官网 → 北京市文物局官网汇总(**最佳方案**)
77
+4. 首都博物馆官网 → Playwright + HTTPS
78
+5. 中国地质博物馆 → 北京市文物局官网
79
+6. 中国园林博物馆 → 北京市文物局官网
80
+7. 中国非物质文化遗产馆 → 北京市文物局官网
81
+
82
+**民间数据(3 个)**:
83
+1. 豆瓣同城 → web_fetch + Jina Reader
84
+2. 小红书 → Playwright + Cookies
85
+3. 北京市文物局 → 官方汇总(**最推荐**)
86
+
87
+### 核心教训(2026-03-06 血泪经验)
88
+
89
+**❌ 犯过的错误**:
90
+1. 脚本有 bug 就部署(log_message 函数未定义)
91
+2. 没有消息通知(执行失败用户不知道)
92
+3. 没有飞书同步(数据爬取了但没更新文档)
93
+4. 创建了飞书文档但没有推送内容(只有标题)
94
+5. 没有复用昨天成功经验
95
+
96
+**✅ 正确做法**:
97
+1. 部署前必须手动测试一次
98
+2. 集成消息通知(成功/失败都发送)
99
+3. 端到端验收(飞书文档内容验证非空)
100
+4. 固化成功经验(创建 Skill)
101
+5. 每日 9 点自动执行(cron)
102
+
103
+### 文件位置
104
+- 主爬虫:`/root/.openclaw/workspace/travel/beijing-exhibitions/scripts/crawler.py`
105
+- 定时任务:`/root/.openclaw/workspace/travel/beijing-exhibitions/scripts/daily_cron.sh`
106
+- Skill: `~/.openclaw/skills/exhibition-crawler/SKILL.md`
107
+- 飞书文档:https://feishu.cn/docx/IIpVd0zDZoJgSSxPdsXc0DzHneh
108
+
109
+### Cron 配置
110
+```
111
+0 9 * * * /root/.openclaw/workspace/travel/beijing-exhibitions/scripts/daily_cron.sh
112
+```
113
+
114
+---
115
+
116
+## 🏛️ 山东国保单位核实(2026-03-07 添加)⭐ 重点
117
+
118
+### 任务进度
119
+- **目标**:核实山东省 250 处国保单位开放情况
120
+- **方法**:小红书 MCP 搜索(关键词:`{城市} {景点} 开放 门票`)
121
+- **判断标准**:笔记数 ≥ 5 篇 → 高置信度开放
122
+
123
+### 已完成任务
124
+1. **P2-6-1**(2026-03-07 10:33):济南 + 青岛 36 处,累计 81/250(32.4%)
125
+2. **P2-6-2**(2026-03-07 11:30):烟台 + 威海 20 处,累计 101/250(40.4%)
126
+3. **P2-6-3**(2026-03-07 15:00):潍坊 + 淄博 22 处,累计 123/250(49.2%)
127
+
128
+### 核实结果规律
129
+- **全部开放**:已核实的 123 处全部开放(100%)
130
+- **高置信度**:大部分景点笔记数 ≥ 10 篇
131
+- **中置信度**:部分遗址/墓葬类景点笔记数 5-10 篇
132
+
133
+### 剩余任务
134
+- **P2-6-4**:泰安 + 济宁剩余 31 处
135
+- **P2-6-5**:枣庄 + 东营
136
+- **P2-6-6**:临沂 + 德州
137
+- **P2-6-7**:聊城 + 滨州
138
+- **P2-6-8**:菏泽
139
+
140
+### 文件位置
141
+- 脚本:`/root/.openclaw/workspace/travel/scripts/verify_shandong_p2-6-*.py`
142
+- 数据:`/root/.openclaw/workspace/travel/scripts/data/shandong_guobao_*.json`
143
+- Wiki:`wiki/山东/国保单位开放情况.md`
144
+
145
+---
146
+
16 147
## 👤 用户偏好(涛哥)- 2026-03-05 更新 ⭐ 重点
17 148
18 149
### 🏛️ 博物馆选择标准
memory/2026-03-07.md
... ...
@@ -1,62 +1,217 @@
1
-# 2026-03-07 - Travel Agent 记忆日志
1
+# 2026-03-07 工作日志
2
+
3
+## ✅ 已完成
4
+
5
+### 1. 小红书 MCP 登录问题修复 ⭐ 重点
6
+
7
+**问题描述**:
8
+- 二维码显示只显示文字提示,不显示图片
9
+- subprocess 调用 mcporter 时报 "Unknown MCP server 'xiaohongshu'"
10
+
11
+**解决方案**:
12
+1. **二维码获取**:使用 `mcporter call --output raw` 获取完整响应,然后提取 Base64 图片
13
+ ```bash
14
+ mcporter call xiaohongshu.get_login_qrcode --output raw
15
+ ```
16
+2. **配置文件位置**:系统配置在 `/root/.mcporter/mcporter.json`,项目配置在 `./config/mcporter.json`
17
+3. **subprocess 调用**:需要设置 `HOME=/root` 和 `cwd='/root'`
18
+
19
+**关键配置**(已更新到 `/root/.mcporter/mcporter.json`):
20
+```json
21
+{
22
+ "mcpServers": {
23
+ "xiaohongshu": {
24
+ "baseUrl": "http://localhost:18060/mcp"
25
+ }
26
+ }
27
+}
28
+```
29
+
30
+### 2. P2 任务:山东国保单位核实
2 31
3
-## 📋 今日任务
32
+#### 第一阶段(18:20 完成)
33
+**核实结果**:
34
+- 总计核实:45 处(8 个城市)
35
+- ✅ 开放:45 处 (100.0%)
36
+- ❌ 关闭:0 处 (0.0%)
37
+- 搜索笔记:约 950 篇
4 38
5
-### P1 任务(最高优先级)
6
-- [ ]
39
+**工作流程**:
40
+1. 小红书 MCP 扫码登录
41
+2. 使用 `search_feeds` 搜索关键词
42
+3. 统计 `noteCard` 数量判断开放状态
43
+4. 笔记数 >= 5:高置信度;>= 2:中置信度
7 44
8
-### P2 任务(正常优先级)
9
-- [ ]
45
+**脚本位置**:
46
+- `/root/.openclaw/workspace/travel/scripts/verify_shandong_mcp_simple.py`
10 47
11
-### P3 任务(低优先级)
12
-- [ ]
48
+**结果文件**:
49
+- `/root/.openclaw/workspace/travel/scripts/data/shandong_guobao_mcp.json`
50
+
51
+#### P2-6-1 任务(10:33 完成)⭐
52
+**任务**:核实济南 + 青岛剩余 36 处国保单位
53
+
54
+**核实结果**:
55
+- 济南:23 处 ✅ 全部开放
56
+- 青岛:13 处 ✅ 全部开放
57
+- **总计**:36 处,累计 81/250(32.4%)
58
+
59
+**输出文件**:
60
+- `scripts/data/shandong_guobao_jinan_qingdao.json`
61
+- `scripts/verify_shandong_jinan_qingdao.log`
62
+
63
+**Wiki 更新**:
64
+- `wiki/山东/国保单位开放情况.md` - 添加济南 + 青岛剩余 36 处详情
65
+- `wiki/山东.md` - 更新进度为 32.4%
66
+- `wiki/Home.md` - 添加最近更新
67
+
68
+**Git 提交**:
69
+- Wiki 子模块:`16f335a` - 山东国保核实:济南 + 青岛(P2-6-1)
70
+- 主仓库:`d78774a` - 更新 task.md:标记 P2-6-1 已完成
71
+
72
+**下一步**:P2-6-2 任务(烟台 + 威海剩余 16 处)
73
+
74
+#### P2-6-2 任务(11:30 完成)⭐
75
+**任务**:核实烟台 + 威海剩余 20 处国保单位
76
+
77
+**核实结果**:
78
+- 烟台:12 处 ✅ 全部开放
79
+- 威海:8 处 ✅ 全部开放
80
+- **总计**:20 处,累计 101/250(40.4%)
81
+
82
+**输出文件**:
83
+- `scripts/data/shandong_guobao_yantai_weihai_p2-6-2.json`
84
+- `scripts/verify_shandong_yantai_weihai.log`
85
+
86
+**Wiki 更新**:
87
+- `wiki/山东/国保单位开放情况.md` - 添加烟台 + 威海剩余 20 处详情
88
+- `wiki/山东.md` - 更新进度为 40.4%
89
+- `wiki/Home.md` - 添加最近更新
90
+
91
+**Git 提交**:
92
+- Wiki 子模块:`5c6e823` - 山东国保核实:烟台 + 威海(P2-6-2)
93
+- 主仓库:`71dcd53` - 更新 task.md:标记 P2-6-2 已完成
94
+
95
+#### P2-6-3 任务(15:00 完成)⭐
96
+**任务**:核实潍坊 + 淄博剩余 22 处国保单位
97
+
98
+**核实结果**:
99
+- 潍坊:13 处 ✅ 全部开放
100
+- 淄博:9 处 ✅ 全部开放
101
+- **总计**:22 处,累计 123/250(49.2%)
102
+
103
+**输出文件**:
104
+- `scripts/data/shandong_guobao_weifang_zibo_p2-6-3.json`
105
+- `scripts/verify_shandong_weifang_zibo.log`
106
+
107
+**Wiki 更新**:
108
+- `wiki/山东/国保单位开放情况.md` - 添加潍坊 + 淄博剩余 22 处详情
109
+- `wiki/山东.md` - 更新进度为 49.2%
110
+- `wiki/Home.md` - 添加最近更新
111
+
112
+**Git 提交**:
113
+- Wiki 子模块:`71dcd53` - 山东国保核实:潍坊 + 淄博(P2-6-3)22 处,进度 123/250(49.2%)
114
+- 主仓库:`00a111f` - 山东国保核实:潍坊 + 淄博(P2-6-3)
115
+
116
+**下一步**:P2-6-4 任务(泰安 + 济宁剩余 31 处)
117
+
118
+### 3. Skill 文档完善 ⭐
119
+
120
+**更新文件**:
121
+- ✅ `~/.openclaw/skills/agent-reach/SKILL.md` - 添加完整扫码登录流程
122
+- ✅ `~/.openclaw/skills/agent-reach/XIAOHONGSHU_OCR_WORKFLOW.md` - 更新工作流程
123
+- ✅ `~/.openclaw/skills/agent-reach/XIAOHONGSHU_QUICKREF.md` - 新建快速参考卡片
124
+
125
+### 4. Wiki 文档更新 ⭐
126
+
127
+**更新文件**:
128
+- ✅ `wiki/山东/国保单位开放情况.md` - 添加 45 处小红书 MCP 核实结果
129
+- ✅ `wiki/山东.md` - 更新进度(18%,45/250)
130
+- ✅ `wiki/Home.md` - 添加最近更新(2026-03-07 18:20)
13 131
14 132
---
15 133
16
-## 📝 工作记录
134
+## 🔧 技术经验
135
+
136
+### 小红书 MCP 调用方式
17 137
18
-### 上午
138
+```bash
139
+# 检查登录状态
140
+mcporter call xiaohongshu.check_login_status
19 141
142
+# 获取登录二维码
143
+mcporter call xiaohongshu.get_login_qrcode --output raw
20 144
21
-### 下午
145
+# 搜索笔记
146
+mcporter call xiaohongshu.search_feeds 'keyword: "关键词"'
22 147
148
+# 获取笔记详情
149
+mcporter call xiaohongshu.get_feed_detail 'feed_id: "xxx", xsec_token: "yyy"'
150
+```
23 151
24
-### 晚上
152
+### Python subprocess 调用注意事项
25 153
154
+```python
155
+import subprocess
156
+import os
157
+
158
+cmd = ['/path/to/mcporter', 'call', 'xiaohongshu.search_feeds', f'keyword: "{keyword}"']
159
+env = os.environ.copy()
160
+env['MCPORTER_CALL_TIMEOUT'] = '60000'
161
+env['HOME'] = '/root' # 重要!确保读取正确的配置文件
162
+result = subprocess.run(cmd, capture_output=True, text=True, timeout=90, env=env, cwd='/root')
163
+```
26 164
27 165
---
28 166
29
-## ✅ 已完成任务
167
+## ⏭️ 进行中
168
+
169
+- P2 任务:剩余 205 处山东国保单位待核实(按城市拆分为 8 个子任务)
30 170
31
-| 时间 | 任务 | 状态 | 备注 |
32
-|------|------|------|------|
33
-| | | | |
171
+---
34 172
173
+*最后更新:2026-03-07 15:00*
35 174
---
36 175
37
-## ⚠️ 经验教训
176
+## 📝 每日总结
38 177
178
+### ✅ 今日完成
179
+1. P2-6-1:山东国保核实 - 济南 + 青岛 36 处(累计 81/250,32.4%)
180
+2. P2-6-2:山东国保核实 - 烟台 + 威海 20 处(累计 101/250,40.4%)
181
+3. P2-6-3:山东国保核实 - 潍坊 + 淄博 22 处(累计 123/250,49.2%)
182
+
183
+### ⚠️ 遇到的问题
184
+1.
185
+2.
186
+
187
+### 🧠 经验教训
39 188
-
40 189
190
+### 📋 明日计划
191
+1. P2-6-4:山东国保核实 - 泰安 + 济宁剩余 31 处
192
+2. 继续推进山东国保核实任务(目标:完成 60%)
193
+3. 准备 P2-6-5 任务(枣庄 + 东营)
194
+
41 195
---
42 196
43
-## 🧠 三层记忆应用
197
+### 三层记忆检查清单
44 198
45
-### 第 1 层 预防(写入时)
46
-- [ ] 长期记忆已更新(MEMORY.md)
47
-- [ ] 今日记忆已创建
48
-- [ ] 任务状态已记录
199
+**第 1 层 预防(写入时)**
200
+- [ ] 长期记忆(MEMORY.md)是否更新?
201
+- [ ] 今日记忆是否完整记录?
202
+- [ ] 任务状态是否已更新?
49 203
50
-### 第 2 层 侦测(恢复时)
51
-- [ ] 已读取 MEMORY.md
52
-- [ ] 已读取昨日记忆(2026-03-06.md)
53
-- [ ] 已读取今日记忆(2026-03-07.md)
204
+**第 2 层 侦测(恢复时)**
205
+- [ ] Session 开始前是否读取了记忆?
206
+- [ ] 是否检查了昨日记忆?
207
+- [ ] 是否确认了今日任务?
54 208
55
-### 第 3 层 兜底(执行时)
56
-- [ ] 高风险操作前已检查记忆约束
57
-- [ ] 不可逆操作前已确认
209
+**第 3 层 兜底(执行时)**
210
+- [ ] 高风险操作前是否检查了约束?
211
+- [ ] 不可逆操作前是否确认了?
212
+- [ ] 是否有违反原则的情况?
58 213
59 214
---
60 215
61
-*创建时间:2026-03-07 00:00:01*
216
+*最后更新:2026-03-07 23:00:02*
62 217
*维护者:Travel Agent*