核心发现
数据库记录的消息从未传递给 Claude
上下文完全依赖 Anthropic 远程 API 存储
数据库 tokens 统计 ≠ Claude 实际加载的上下文
📋 验证结果总结
| 检查项 | 状态 | 详细说明 |
|---|---|---|
| 数据库是否存储消息历史? | ✅ | feishu_message_log 表完整记录所有对话 |
| 代码是否读取数据库历史? | ❌ | 检查全部代码,没有任何地方从数据库读取历史消息 |
| 代码是否传递历史给 Claude? | ❌ | 只传递了当前消息 + session_id,没有历史 |
| --resume 是否有效? | ✅ | Claude CLI 从 Anthropic API 自动恢复会话 |
| 本地是否有会话存储文件? | ❌ | ~/.claudecode/ 只有 config,没有会话文件 |
| 数据库 tokens 统计准确吗? | ❌ | 不包含系统提示、工具调用、thinking blocks |
🔍 代码证据链
证据 1:从未读取数据库历史
证据 2:只传 session_id 给 Claude CLI
证据 3:数据库只做日志记录
📊 两个独立系统的真相
上下文流转示意图
历史消息
💾 数据库系统特征
- 表:feishu_message_log
- 作用:审计、统计、UI 展示
- 内容:用户消息 + 机器人回复
- 生命周期:永久(手动删除)
- 不参与上下文恢复
☁️ Claude API 会话特征
- 存储:Anthropic 远程服务器
- 作用:上下文恢复、记忆管理
- 内容:完整对话 + 工具调用 + 系统提示
- 生命周期:未知(可能有过期机制)
- 完全负责上下文恢复
⚠️ 潜在问题与风险
🎯 最终结论与建议
✅ 确认有效的机制
Claude CLI 的 --resume 机制确实有效,短期内(几小时)可以稳定恢复上下文。
Anthropic API 负责存储和管理会话状态,我们只需传递 session_id。
❌ 数据库统计不可信
当前统计的"5,199 tokens"只是极保守的下限。实际上下文可能包含:
• 系统提示(+1000)
• 工具调用(+2000)
• Thinking(+1000)
真实值可能是 9,000-15,000 tokens,仍然远低于 200K 上限。
💡 建议改进方向
1. 增加会话健康检测:定期验证 session_id 是否有效
2. 显示真实 tokens:从 Claude API 响应中提取实际 tokens 统计
3. 提供上下文摘要:让用户能查看 Claude 记住的内容
4. 降级方案:如果 --resume 失败,清空 session_id 重新开始
🔮 当前系统状态评估
尽管统计方法不完美,但系统运行正常:
• 最活跃会话(152 轮)真实 tokens 估计 10K-15K
• 距离 200K 上限仍有 90%+ 余量
• 短期内(1-2 周)不会遇到容量问题
• 长期需要监控和优化