📚 飞书对话归档脚本 - 会话历史增强版
更新日期: 2026-03-17
状态: ✅ 会话历史获取功能已完成,⚠️ 飞书 API 需更新 Token
🎉 改进内容
之前的问题
- ❌ 只能读取 memory 文件
- ❌ 无法获取完整会话历史
- ❌ 内容不全面
现在的功能
- ✅ 双数据源合并:memory 文件 + 会话历史
- ✅ 完整对话记录:包括用户消息、AI 回复、工具调用
- ✅ 自动过滤日期:只获取指定日期的对话
- ✅ 格式化输出:自动转换为飞书文档格式
📁 文件清单
| 文件 | 用途 | 状态 |
scripts/feishu-archive.py | 主脚本(Python) | ✅ 已更新 |
scripts/get-session-history.js | 会话历史获取(Node.js) | ✅ 新增 |
scripts/install-feishu-archive-cron.sh | Cron 安装脚本 | ⚠️ 待更新 |
🔧 使用方法
基础用法
| # 归档今天
python3 scripts/feishu-archive.py
# 归档指定日期
python3 scripts/feishu-archive.py 2026-03-16
# 归档并测试(不上传飞书)
python3 scripts/feishu-archive.py 2026-03-16 --dry-run
|
输出示例
| ============================================================
📚 对话内容来源:memory 文件 / 会话历史 / 占位符
============================================================
📖 读取记忆文件:/home/admin/.openclaw/workspace/memory/2026-03-16.md
✅ 记忆文件长度:1028 字符
📖 获取会话历史...
✅ 获取到 100 条消息
✅ 会话历史长度:71792 字符
📊 合并记忆文件和会话历史...
✅ 内容来源:memory+session
📊 内容长度:72956 字符
============================================================
📝 开始归档:2026-03-16
============================================================
1️⃣ 创建云文档...
✅ 文档创建成功
Document ID: xxxxx
2️⃣ 写入内容...
📊 总内容块数:150
写入批次 1/3 (50 个块)...
写入批次 2/3 (50 个块)...
写入批次 3/3 (50 个块)...
✅ 内容写入成功(共 3 批)
3️⃣ 移动到知识空间...
✅ 移动成功
Wiki Token: xxxxx
URL: https://xcny2sco1sb0.feishu.cn/wiki/xxxxx
============================================================
🎉 归档完成!
|
📊 数据流程
| ┌─────────────────────────────────────────────────────────┐
│ 1. 读取 memory/日期.md │
│ - 关键对话摘要 │
│ - 决定和结论 │
│ - 待跟进事项 │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ 2. 获取会话历史(get-session-history.js) │
│ - 调用 openclaw sessions --json │
│ - 读取 .jsonl 转录文件 │
│ - 过滤指定日期 │
│ - 包含:用户消息、AI 回复、工具调用、思考过程 │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ 3. 合并内容 │
│ - 记忆摘要(上层) │
│ - 完整会话历史(下层) │
│ - 转换为飞书文档格式 │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ 4. 上传飞书知识库 │
│ - 创建云文档 │
│ - 分批写入内容(每批 50 块) │
│ - 移动到知识空间 │
└─────────────────────────────────────────────────────────┘
|
🔑 配置飞书 API
获取 User Access Token
- 访问飞书开放平台:https://open.feishu.cn/
- 创建企业自建应用
- 获取权限:
- 云文档只写权限
- 知识库管理权限
- 使用授权码流程获取 User Access Token
更新 Token
编辑 scripts/feishu-archive.py:
| USER_ACCESS_TOKEN = "你的新_Token"
SPACE_ID = "你的空间 ID"
FOLDER_TOKEN = "你的文件夹 Token"
|
测试 Token
| curl -X GET "https://open.feishu.cn/open-apis/docx/v1/documents/xxxxx" \
-H "Authorization: Bearer YOUR_TOKEN"
|
🛠️ 技术细节
get-session-history.js
功能: 通过 OpenClaw CLI 获取会话历史
原理: 1. 调用 openclaw sessions --json 获取会话列表 2. 读取 .jsonl 转录文件 3. 过滤指定日期的消息 4. 输出为 JSON 格式
用法:
| node scripts/get-session-history.js [日期] [限制条数]
# 示例
node scripts/get-session-history.js 2026-03-16 100
|
feishu-archive.py
功能: 整合数据源并上传飞书
数据源优先级: 1. memory + session(合并,最全面) 2. memory(单独) 3. session(单独) 4. 占位符(降级方案)
内容处理: - Markdown → 飞书文档块转换 - 分批写入(每批 50 块,避免 API 限制) - 自动更新 revision_id
⚠️ 已知问题
1. 飞书 Token 过期(401 错误)
现象:
| ❌ 创建失败:{'error': 'HTTP Error 401: Unauthorized'}
|
解决: - 重新获取 User Access Token - Token 有效期通常为 2 小时,需要使用 Refresh Token 续期
2. 内容过长被截断
现象: 会话历史超过飞书文档限制
解决: - 脚本自动限制每条消息 2000 字符 - 工具调用参数限制 500 字符 - 思考过程限制 500 字符
3. Python 版本兼容性
要求: Python 3.7+
原因: 使用 subprocess.run() 的 capture_output 参数
📅 Cron 自动归档
安装 Cron
| chmod +x scripts/install-feishu-archive-cron.sh
./install-feishu-archive-cron.sh
|
手动配置
| crontab -e
# 每天 23:00 归档当日对话
0 23 * * * cd /home/admin/.openclaw/workspace && python3 scripts/feishu-archive.py
|
日志
| # 查看 Cron 日志
tail -f /var/log/syslog | grep feishu-archive
# 查看脚本日志
tail -f /home/admin/.openclaw/workspace/logs/feishu-archive.log
|
🎯 未来改进
📝 更新日志
2026-03-17 - 会话历史增强版
- ✅ 新增
get-session-history.js 获取会话历史 - ✅ 支持 memory + session 双数据源合并
- ✅ 自动过滤指定日期
- ✅ 格式化输出(包括工具调用、思考过程)
- ⚠️ 飞书 Token 需更新
2026-03-16 - 初始版本
- ✅ 基础归档功能
- ✅ memory 文件读取
- ✅ 飞书知识库上传
本文档由 AI 自动整理生成