SuperAPI AI 工具集

obsidian-conversation-backup

办公与效率

查看项目

更新于 10-16 06:40

技能介绍

用途

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 备份。
  • 完整快照使用有意义的主题名称。