OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  obsidian-backup:自动备份对话内容至 Obsidian 库

obsidian-backup:自动备份对话内容至 Obsidian 库

 
  apple ·  2026-02-26 17:19:27 · 3 次点击  · 0 条评论  

名称: obsidian-conversation-backup
描述: Obsidian 对话自动备份系统,具备增量快照、按小时拆分和格式化聊天样式 Markdown 功能。适用于设置对话归档、防止因 /new 重置导致的数据丢失,或在 Obsidian 库中整理聊天历史记录(支持彩色标注、时间戳、多段落格式)。


Obsidian 对话备份

自动将 Clawdbot 对话备份到 Obsidian,并采用美观的聊天样式格式化。通过每小时增量快照,防止因 /new 重置导致的数据丢失。

功能特性

  • 增量备份:仅对新消息进行每小时快照(无重复)
  • 聊天格式化:使用 Obsidian 标注、表情符号、时间戳,并支持正确的多段落格式
  • 按小时拆分:按时钟小时组织对话,便于查阅
  • 零令牌成本:纯 Shell 脚本,无需调用 LLM
  • 智能过滤:跳过空消息和系统通知

快速设置

安装

# 解压技能文件(如果下载的是 .skill 文件)
unzip obsidian-conversation-backup.skill
cd obsidian-conversation-backup

# 运行安装程序(交互式)
chmod +x install.sh
./install.sh

安装程序将询问:
- Obsidian 库路径
- 会话目录位置
- 跟踪文件位置

或手动设置:

  1. config.example 复制为 config
  2. 编辑 config 文件,填入你的路径
  3. 使脚本可执行: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 路径。

故障排除

未创建快照

  1. 检查 cron 是否运行:crontab -l
  2. 确认脚本具有执行权限:chmod +x scripts/*.sh
  3. 检查日志:手动运行以查看错误

消息超出标注框

  • 确保 format_message_v2.jq 包含 gsub("\n\n"; "<br><br>")
  • 检查所有行是否都有 > 前缀
  • 确认已安装 jq:jq --version

快照中出现重复内容

  • 删除跟踪文件并让系统重置:
    bash rm /root/clawd/.last_snapshot_timestamp

出现空的标注框

  • 更新 format_message_v2.jq 以过滤空消息
  • 检查 if ($text_content | length) > 0 条件

要求

  • jq:JSON 解析(apt-get install jq
  • cron:用于自动备份
  • Obsidian 库:Markdown 文件的目标目录

高级自定义

更改备份频率

编辑 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] - 红色

自定义 Telegram 通知

编辑 monitor_and_save.sh 以更改警告文本或添加自定义通知。

最佳实践

  1. 每日结束时运行按小时拆分 - 将其用作组织工具,而非备份
  2. 保持增量备份运行 - 这是你的安全网
  3. 设置后测试脚本 - 首先手动运行以验证输出
  4. 备份跟踪文件 - 将 .last_snapshot_timestamp 包含在库备份中
  5. 使用描述性主题名称 - 对于完整快照,使用有意义的名称

示例工作流

日常流程:
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. 继续聊天 - 增量备份将自动恢复

与 Clawdbot 集成

此技能可与以下功能协同工作:
- HEARTBEAT.md:自动令牌监控
- MEMORY.md:对话归档系统
- Telegram 集成:警告通知
- 任何 Obsidian 库:适用于现有库

致谢

由 Clawdbot 社区创建,旨在实现可靠的对话备份和美观的 Obsidian 格式化。

3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor