用途
Obsidian Conversation Backup 是一个面向 Clawdbot 的对话备份系统,用于将对话内容自动保存到 Obsidian 库中,并以聊天风格的 Markdown 格式呈现。它的主要目的是防止因 /new 重置而丢失对话数据,通过每小时增量快照将最大对话丢失量控制在 1 小时以内。
主要能力
- 增量备份:每小时仅对新增消息生成快照,不重复保存已有内容。
- 聊天格式化:使用 Obsidian callout 呈现消息,包含 emoji、时间戳,并支持多段落。
- 按小时拆分:可按时钟小时组织对话,便于查阅。
- 零 token 成本:纯 Shell 脚本实现,不调用 LLM。
- 智能过滤:跳过空消息和系统通知。
- Token 监控:monitor_and_save.sh 同时跟踪 token 用量,在达到 800k(80%)和 900k(90%)时通过 Telegram 发送一次性警告,回落到 800k 以下后重置。
使用方式
安装:
# Extract the skill (if downloaded as .skill file)
unzip obsidian-conversation-backup.skill
cd obsidian-conversation-backup
# Run installer (interactive)
chmod +x install.sh
./install.sh
安装程序会询问 Obsidian vault 路径、会话目录位置和跟踪文件位置。也可手动设置:复制 config.example 为 config,编辑路径,然后执行 chmod +x scripts/*.sh。
启用自动备份(crontab 每小时执行):
crontab -e
# Add this line (runs every hour at :00)
0 * * * * /path/to/obsidian-conversation-backup/scripts/monitor_and_save.sh
按需完整快照:
scripts/save_full_snapshot.sh [topic-name]
示例:scripts/save_full_snapshot.sh important-decisions、scripts/save_full_snapshot.sh bug-fix-discussion,不带参数时默认使用 "full-conversation"。
按小时整理:
scripts/create_hourly_snapshots.sh YYYY-MM-DD
示例:scripts/create_hourly_snapshots.sh 2026-01-20,输出如 2026-01-20-1500-hourly.md(15:00-15:59 消息)。
自定义聊天外观(可选):编辑 scripts/format_message_v2.jq 可修改用户 emoji(默认 🐉)、助手 emoji(默认 🦞)以及 callout 类型(默认用户为 [!quote],助手为 [!check])。
聊天格式
用户消息(蓝色 [!quote] callout):
> [!quote] 🐉 User · 15:30
> This is my message
助手消息(绿色 [!check] callout):
> [!check] 🦞 Zoidbot · 15:31
> This is the response
特性包括 HH:MM 时间戳、多段落支持(使用 <br><br> 换行)、正确的行包裹(所有行以 > 前缀)、过滤空消息、排除系统通知。
文件结构
scripts/
├── monitor_and_save.sh # Hourly incremental backup + token monitoring
├── save_full_snapshot.sh # On-demand full conversation save
├── create_hourly_snapshots.sh # Organize by clock hour
└── format_message_v2.jq # Chat formatting logic
配置
跟踪文件(隐藏文件,用于记录状态):
/root/clawd/.last_save_line_count # For token monitoring
/root/clawd/.last_snapshot_timestamp # For incremental saves
/root/clawd/.token_warning_sent # For warning deduplication
注意:不要删除这些文件,否则增量备份可能重复内容。
会话文件位置默认:/root/.clawdbot/agents/main/sessions/*.jsonl。如果会话文件在其他位置,需更新各脚本中的 SESSION_FILE 路径。
适用场景
- 日常自动增量备份,无需人工干预。
- 在 /new 重置前保存完整快照,确保对话已备份。
- 一天结束时按小时整理对话,便于回顾。
- 与 Clawdbot 的 HEARTBEAT.md(自动 token 监控)、MEMORY.md(对话归档系统)和 Telegram 集成配合使用。
限制与要求
- 依赖 jq(JSON 解析,
apt-get install jq)、cron(自动备份)和 Obsidian vault(Markdown 目标目录)。 - 默认会话路径为 /root/.clawdbot/agents/main/sessions/*.jsonl,路径不同需手动修改。
- 增量备份依赖跟踪文件,删除后可能重复内容。
- 消息格式依赖 format_message_v2.jq 中的 gsub 与过滤条件,配置不当可能导致 callout 断裂或空 callout。
- 备份频率、最小消息阈值(默认 10 行)和 Telegram 通知文本均可通过编辑脚本或 crontab 调整。
故障排查
- 未生成快照:检查 crontab -l、脚本执行权限,手动运行查看错误。
- 消息溢出 callout:确认 format_message_v2.jq 含
gsub("\n\n"; "<br><br>"),所有行有>前缀,jq 已安装。 - 快照内容重复:删除跟踪文件
rm /root/clawd/.last_snapshot_timestamp让系统重置。 - 出现空 callout:更新 format_message_v2.jq 过滤空消息,检查
if ($text_content | length) > 0条件。
最佳实践
- 每天结束时运行按小时拆分,作为整理工具而非备份。
- 保持增量备份持续运行,作为安全网。
- 设置后先手动测试脚本。
- 备份跟踪文件,将 .last_snapshot_timestamp 纳入 vault 备份。
- 完整快照使用有意义的主题名称。