名称: obsidian-conversation-backup
描述: Obsidian 对话自动备份系统,具备增量快照、按小时拆分和格式化聊天样式 Markdown 功能。适用于设置对话归档、防止因 /new 重置导致的数据丢失,或在 Obsidian 库中整理聊天历史记录(支持彩色标注、时间戳、多段落格式)。
自动将 Clawdbot 对话备份到 Obsidian,并采用美观的聊天样式格式化。通过每小时增量快照,防止因 /new 重置导致的数据丢失。
# 解压技能文件(如果下载的是 .skill 文件)
unzip obsidian-conversation-backup.skill
cd obsidian-conversation-backup
# 运行安装程序(交互式)
chmod +x install.sh
./install.sh
安装程序将询问:
- Obsidian 库路径
- 会话目录位置
- 跟踪文件位置
或手动设置:
config.example 复制为 configconfig 文件,填入你的路径chmod +x scripts/*.sh添加到 crontab 以实现每小时备份:
crontab -e
# 添加此行(每小时整点运行)
0 * * * * /path/to/obsidian-conversation-backup/scripts/monitor_and_save.sh
编辑 scripts/format_message_v2.jq 以更改:
- 用户表情符号(默认:🐉)
- 助手表情符号(默认:🦞)
- 标注类型(默认:用户使用 [!quote],助手使用 [!check])
配置到 cron 后,系统将自动运行:
每小时:
- 检查新消息(≥10 行)
- 如果发现新消息,则创建增量快照
- 保存为:YYYY-MM-DD-HHmm-incremental.md
- 若无新对话则跳过
输出示例:
2026-01-20-1500-incremental.md (从上一次保存到现在的消息)
2026-01-20-1600-incremental.md (15:00 之后的新消息)
2026-01-20-1700-incremental.md (16:00 之后的新消息)
保护机制:最大对话丢失时间 = 1 小时
随时保存完整对话:
scripts/save_full_snapshot.sh [主题名称]
示例:
scripts/save_full_snapshot.sh important-decisions
scripts/save_full_snapshot.sh bug-fix-discussion
scripts/save_full_snapshot.sh # 默认使用 "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 的消息)
2026-01-20-1600-hourly.md (16:00-16:59 的消息)
2026-01-20-1700-hourly.md (17:00-17:59 的消息)
使用场景:用于每日结束时的整理,便于查阅
消息以彩色 Obsidian 标注形式显示:
用户消息(蓝色 [!quote] 标注):
> [!quote] 🐉 用户 · 15:30
> 这是我的消息
助手消息(绿色 [!check] 标注):
> [!check] 🦞 Zoidbot · 15:31
> 这是回复内容
特性:
- 时间戳(HH:MM 格式)
- 多段落支持(使用 <br><br> 作为段落分隔)
- 正确的行换行(所有行以 > 为前缀)
- 过滤空消息
- 排除系统通知
monitor_and_save.sh 脚本还会跟踪令牌使用情况:
通过 Telegram 发送警告:
- 80 万令牌(80%):"建议尽快执行 /new"
- 90 万令牌(90%):"立即执行 /new"
实现方式:
# 仅在超过阈值时发送警告(一次性)
# 无重复警告
# 当回落到 80 万以下时重置
scripts/
├── monitor_and_save.sh # 每小时增量备份 + 令牌监控
├── save_full_snapshot.sh # 按需完整对话保存
├── create_hourly_snapshots.sh # 按时钟小时组织
└── format_message_v2.jq # 聊天格式化逻辑
系统使用隐藏文件来跟踪状态:
/root/clawd/.last_save_line_count # 用于令牌监控
/root/clawd/.last_snapshot_timestamp # 用于增量保存
/root/clawd/.token_warning_sent # 用于警告去重
注意:请勿删除这些文件,否则增量备份可能会重复内容
默认:/root/.clawdbot/agents/main/sessions/*.jsonl
如果你的会话文件在其他位置,请更新每个脚本中的 SESSION_FILE 路径。
crontab -lchmod +x scripts/*.shformat_message_v2.jq 包含 gsub("\n\n"; "<br><br>") 行> 前缀jq --versionbash
rm /root/clawd/.last_snapshot_timestampformat_message_v2.jq 以过滤空消息if ($text_content | length) > 0 条件apt-get install jq)编辑 crontab:
# 每 2 小时
0 */2 * * * /path/to/monitor_and_save.sh
# 每 30 分钟
*/30 * * * * /path/to/monitor_and_save.sh
# 仅在特定时间(上午 9 点、中午 12 点、下午 6 点、晚上 9 点)
0 9,12,18,21 * * * /path/to/monitor_and_save.sh
编辑 monitor_and_save.sh:
# 将最小消息数从 10 改为 5
if [[ $new_lines -lt 5 ]]; then
Obsidian 标注类型:
- [!quote] - 蓝色
- [!check] - 绿色
- [!note] - 青色
- [!tip] - 紫色
- [!warning] - 橙色
- [!danger] - 红色
编辑 monitor_and_save.sh 以更改警告文本或添加自定义通知。
.last_snapshot_timestamp 包含在库备份中日常流程:
1. 自动增量备份每小时运行(无需操作)
2. 每日结束时:scripts/create_hourly_snapshots.sh 2026-01-20
3. 在 Obsidian 中查看整理好的小时文件
4. 如需可删除旧的增量文件(按小时拆分已覆盖它们)
在执行 /new 重置前:
1. 可选:scripts/save_full_snapshot.sh before-reset
2. 安全地运行 /new - 对话已备份
3. 继续聊天 - 增量备份将自动恢复
此技能可与以下功能协同工作:
- HEARTBEAT.md:自动令牌监控
- MEMORY.md:对话归档系统
- Telegram 集成:警告通知
- 任何 Obsidian 库:适用于现有库
由 Clawdbot 社区创建,旨在实现可靠的对话备份和美观的 Obsidian 格式化。