知识库自动记录方案

建立 Obsidian 知识库,实现对话产出的自动记录,支持敏感信息加密和博客同步


一、背景

1.1 问题现状

用户反馈:

  1. 记录太简单:之前的记录只有几行,等于什么也没记录
  2. 没有自动触发:Agent 完成任务后不会主动记录,需要用户提醒
  3. 长对话没有归纳:重要信息散落在对话中,无法追溯
  4. 敏感信息暴露:密钥、邮箱等直接写在公开文档中

1.2 目标

  • 创建 Obsidian 格式知识库
  • 实现自动记录技能(auto-journal)
  • 敏感信息自动检测和加密
  • 同步到博客(Quartz 4)
  • 建立规范的记录模板

1.3 约束条件

  • 存储位置:必须放 U 盘 /data/knowledge-base/(系统盘空间不足)
  • 敏感信息:邮箱、手机、key、密码必须加密或用占位符
  • 格式要求:结构严谨,包含背景、过程、问题、教训

二、方案设计

2.1 技术选型

方案优点缺点结论
直接写 MEMORY.md简单不支持格式化,难以检索❌ 放弃
Obsidian Vaultwikilinks、图谱、插件生态需要学习成本✅ 采用
Notion功能强大需要网络,隐私问题❌ 放弃

2.2 目录结构

/data/knowledge-base/
├── INDEX.md           # 总索引
├── templates/         # 记录模板
│   └── 技术方案记录模板.md
├── daily/             # 每日记录
│   └── YYYY-MM-DD/
│       └── 事项名.md   # 按事项拆分
├── projects/          # 项目文档
└── learning/          # 学习笔记

2.3 关键决策

决策点选择理由
文件粒度按事项拆分文件名即事项名,方便查找
时间戳ISO 8601 格式方便追溯和 Agent 解析
敏感信息AES 加密 + 占位符加密真实数据,文档用占位符
博客同步Quartz 4支持 Obsidian wikilinks

三、执行过程

3.1 步骤记录

步骤1:创建知识库目录

mkdir -p /data/knowledge-base/{daily,projects,learning,templates}

结果:✅ 目录创建成功

步骤2:安装 Obsidian Skills

安装 5 个 Obsidian 相关技能:

  • obsidian-markdown:创建/编辑 Obsidian 格式笔记
  • obsidian-bases:创建数据库视图
  • json-canvas:创建白板
  • obsidian-cli:CLI 操作 vault
  • defuddle:网页提取 Markdown

结果:✅ 技能安装成功

步骤3:实现敏感信息加密

创建 /data/nanobot-workspace/scripts/sensitive_crypto.py

  • 自动检测:邮箱、手机、API Key、Token、IP、身份证号
  • AES-256-CBC 加密
  • 格式:{{encrypted:密文|类型}}

结果:✅ 加密工具完成

步骤4:创建记录模板

创建 /data/knowledge-base/templates/技术方案记录模板.md,包含:

  • 背景(问题现状、目标、约束)
  • 方案设计(技术选型、关键决策)
  • 执行过程(步骤、时间线)
  • 遇到的问题(现象、原因、解决)
  • 结果与验证
  • 反思与改进(教训)

结果:✅ 模板创建完成

3.2 时间线

时间事件
13:00开始讨论知识库方案
14:00安装 Obsidian Skills
15:00创建知识库目录结构
17:30用户反馈记录太简单
18:00改进记录格式,添加时间戳
19:00实现敏感信息加密
19:24用户指出密钥暴露问题
19:30修复:密钥移到 .env,文档用占位符
19:40创建规范模板

四、遇到的问题

问题1:记录太简单,没有价值

现象:用户反馈”记录太简单,等于什么也没记录”

原因分析

  • 没有明确的记录模板
  • Agent 不知道该记录什么内容
  • 触发条件不明确

解决方案

  1. 创建详细的记录模板(7 个章节)
  2. 明确触发时机:完成任务后立即记录
  3. 文件名即事项名,方便查找

验证结果:✅ 新模板已创建,后续记录按模板执行

问题2:敏感信息直接暴露

现象:加密密钥直接写在公开文档中

原因分析

  • 安全意识不足
  • 没有强制检查机制

解决方案

  1. 密钥移到 .env 文件(不提交 git)
  2. 文档中一律用占位符
  3. 创建强制检测脚本 journal.sh

验证结果:✅ 密钥已移除,文档已脱敏

问题3:Agent 不主动触发记录

现象:完成任务后不记录,需要用户提醒

原因分析

  • auto-journal 技能描述不够明确
  • Agent 把它当成”用户要求才执行”的功能

解决方案

  1. 更新 SKILL.md,明确”完成任务自动触发”
  2. 写入 MEMORY.md 作为强制规则
  3. 每次完成任务后立即记录

验证结果:⏳ 待后续验证


五、结果与验证

5.1 最终产出

产出物路径状态
知识库目录/data/knowledge-base/✅ 已创建
加密工具/data/nanobot-workspace/scripts/sensitive_crypto.py✅ 已完成
检测脚本/data/nanobot-workspace/scripts/journal.sh✅ 已完成
记录模板/data/knowledge-base/templates/技术方案记录模板.md✅ 已创建
auto-journal 技能/data/nanobot-workspace/skills/auto-journal/✅ 已更新

5.2 验证方法

# 检测敏感信息
bash /data/nanobot-workspace/scripts/journal.sh /path/to/file.md
 
# 搜索知识库
grep -r "关键词" /data/knowledge-base/ --include="*.md"

5.3 遗留问题

  • 自动记录仍未真正自动触发,需要 Agent 主动执行
  • 长对话的自动归纳尚未实现

六、反思与改进

6.1 做得好的

  • 知识库目录结构清晰
  • 敏感信息加密方案完整
  • 模板规范详细

6.2 需要改进的

  • Agent 需要更主动地触发记录
  • 记录内容需要更详细,不能偷懒

6.3 经验教训

⚠️ 重要教训,避免再次犯错

  1. 敏感信息绝对不能出现在公开文档中

    • 错误做法:直接写密钥、邮箱、手机
    • 正确做法:用占位符 xxx@example.com138xxxxxxxx
  2. 记录要有价值,不能敷衍

    • 错误做法:只写”完成了 xxx”
    • 正确做法:按模板写背景、过程、问题、教训
  3. 完成任务后立即记录

    • 错误做法:等用户提醒
    • 正确做法:主动记录,不等用户

6.4 后续计划

  • 每次完成任务后按模板记录
  • 定期检查知识库质量
  • 实现长对话自动归纳

七、参考资料


附录

相关文件

文件路径说明
/data/knowledge-base/知识库根目录
/data/nanobot-workspace/scripts/sensitive_crypto.py敏感信息加密工具
/data/nanobot-workspace/scripts/journal.sh记录前检测脚本
/data/nanobot-workspace/skills/auto-journal/SKILL.md自动记录技能文档