AI 驱动的通用知识管理系统
核心概念
三层架构
~/Downloads/Obsidian/网盘同步/09-知识库/ # 默认知识库路径
├── daily/ # 第一层:日记(时间线索引)
│ └── 2026-02/
│ └── 11.md
├── topics/ # 第二层:主题笔记(内容本体)
│ ├── ai-factory.md
│ ├── python-learning.md
│ └── health-tracking.md
└── .meta/ # 第三层:元数据(AI 索引)
├── index.json # 全局索引
├── tags.json # 标签索引
└── links.json # 链接关系
设计原则
AI 优先设计:
- 格式统一,易于 AI 解析(正则匹配)
- 元数据索引,加速 AI 检索
- 固定 section 标记,方便 AI 定位和更新
通用性和灵活性:
- 不强制分类(topics 通用,不分 projects/learning)
- 不过度细分(一个主题一个文件,用 section 区分)
- 支持任何类型的内容(开发、学习、生活、想法)
分离"过程"和"结果":
- daily/ - 记录"过程"(轻量级,几百字)
- topics/ - 记录"结果"(详细内容,深度)
- .meta/ - 加速检索(元数据索引)
快速开始
初始化知识库
方式 1: 使用脚本(推荐)
python3 .kiro/skills/knowledge-management/scripts/init.py --path ~/Downloads/Obsidian/网盘同步/09-知识库
方式 2: AI 自动创建 用户说: "初始化知识库" AI 自动创建目录结构和初始文件
记录内容
用户说: "记录:完成了首页开发"
AI 处理:
- 识别类型: dev
- 识别主题: ai-factory
- 写入日记:
daily/2026-02/11.md - 更新主题笔记:
topics/ai-factory.md - 更新元数据:
.meta/index.json
重要说明
知识库位置建议
推荐位置: ~/Downloads/Obsidian/网盘同步/09-知识库/ (用户主目录,独立于工作区)
为什么推荐放在工作区外?
- ✅ 独立性: 不依赖任何项目,删除项目不影响笔记
- ✅ 通用性: 可以记录所有项目、学习、生活等内容
- ✅ 持久性: 位置固定,不会因为项目变化而改变
- ✅ 兼容性: Obsidian/Logseq 等工具可以直接打开
- ✅ 跨项目: 可以在多个项目间共享知识库
也可以放在工作区内: 如果只记录当前项目内容,可以放在 .kiro/notes/ 或 docs/notes/
AI 文件访问机制
自动适配,用户无需关心:
AI 会根据知识库位置自动选择最佳的文件操作方式:
场景 1: 知识库在工作区内
工作区: ~/project/
知识库: ~/project/.kiro/notes/
AI 使用: fsWrite, strReplace (直接文件操作)
场景 2: 知识库在工作区外 (推荐)
工作区: ~/project/
知识库: ~/Downloads/Obsidian/网盘同步/09-知识库/
AI 使用: executeBash + cat/echo/python3 (命令行操作)
用户体验完全一致:
- 记录内容: "记录:完成开发" → AI 自动写入
- 检索信息: "有哪些待办?" → AI 自动读取
- 维护数据: AI 自动更新元数据
技术细节 (供 AI 参考):
- 读取操作: 使用
readFile或executeBash + cat(支持任意路径) - 写入操作(工作区外): 使用
executeBash + cat/echo/python3 - 写入操作(工作区内): 使用
fsWrite或strReplace - JSON 操作: 使用
executeBash + python3读写 JSON 文件
常见问题
Q: 知识库必须放在 ~/Downloads/Obsidian/网盘同步/09-知识库/ 吗?
A: 不是,可以放在任何位置。使用 init.py --path <your-path> 指定路径即可。
Q: 我可以改变知识库位置吗? A: 可以,直接移动整个 notes 目录到新位置,然后告诉 AI 新路径即可。
Q: AI 如何知道我的知识库在哪里? A: AI 会根据上下文推断,或者你可以明确告诉 AI: "我的知识库在 ~/Downloads/Obsidian/网盘同步/09-知识库/"
Q: 工作区外的文件,AI 能正常操作吗? A: 完全可以。AI 会自动使用命令行工具操作,功能完全一致。
检索信息
用户问: "AI Factory 有哪些待办?"
AI 处理:
- 读取元数据:
.meta/index.json - 快速统计: 3 个待办
- 读取主题笔记:
topics/ai-factory.md - 提取 TODO section
- 格式化回答
记录操作
日记格式
文件: daily/YYYY-MM/DD.md
条目格式:
## HH:MM | type | topic | status(optional)
content (1-2 sentences)
→ [[topic]]
示例:
## 14:00 | dev | ai-factory | done
完成了首页开发,使用 Next.js App Router
→ [[ai-factory]]
类型标签
常用类型:
idea- 想法dev- 开发learning- 学习question- 问题bug- Buglife- 生活work- 工作note- 笔记decision- 决策meeting- 会议
状态标签(可选):
todo- 待办doing- 进行中done- 完成blocked- 阻塞
记录流程
步骤 1: 解析用户输入
# 识别类型、主题、内容、状态
pattern = r'记录[::]\s*(.+)'
type, topic, content, status = parse_input(user_input)
步骤 2: 写入日记
# 获取当前时间
now = datetime.now()
time_str = now.strftime("%H:%M")
date_str = now.strftime("%Y-%m-%d")
# 构建条目
entry = f"## {time_str} | {type} | {topic}"
if status:
entry += f" | {status}"
entry += f"\n{content}\n→ [[{topic}]]"
# 写入文件
daily_file = f"daily/{now.strftime('%Y-%m')}/{now.day}.md"
append_to_file(daily_file, entry)
步骤 3: 更新主题笔记
# 更新 TIMELINE section
topic_file = f"topics/{topic}.md"
timeline_entry = f"- {date_str}: {content}"
update_section(topic_file, "TIMELINE", timeline_entry, prepend=True)
# 更新 frontmatter
update_frontmatter(topic_file, "updated", date_str)
步骤 4: 更新元数据
# 更新全局索引
index = read_json(".meta/index.json")
index["topics"][topic]["updated"] = date_str
index["daily"][date_str]["entries"] += 1
write_json(".meta/index.json", index)
# 更新链接关系
links = read_json(".meta/links.json")
links[topic]["linked_from"].append(f"daily/{date_str}")
write_json(".meta/links.json", links)
步骤 5: 返回确认
已记录到 daily/2026-02/11.md
已更新 topics/ai-factory.md
已更新元数据
记录示例
示例 1: 记录想法
用户: "记录:推荐算法想法"
AI:
- 类型: idea
- 主题: ai-factory
- 写入: daily/2026-02/11.md
- 更新: topics/ai-factory.md (IDEAS section)
示例 2: 记录学习
用户: "记录:学习了 Python 装饰器"
AI:
- 类型: learning
- 主题: python-learning
- 写入: daily/2026-02/11.md
- 更新: topics/python-learning.md (TIMELINE section)
示例 3: 记录问题
用户: "记录:D1 免费额度够用吗?"
AI:
- 类型: question
- 主题: ai-factory
- 状态: todo
- 写入: daily/2026-02/11.md
- 更新: topics/ai-factory.md (QUESTIONS section)
检索操作
检索策略
优先使用元数据(快速):
- 读取
.meta/index.json - 获取统计数据
- 快速回答(< 1 秒)
必要时读取文件(详细):
- 定位主题笔记
- 提取对应 section
- 格式化回答(< 3 秒)
检索类型
1. 查询待办事项
用户: "AI Factory 有哪些待办?"
AI 流程:
1. 读取 index.json → topics.ai-factory.sections.todos = 3
2. 读取 topics/ai-factory.md → 提取 TODO section
3. 解析待办项(正则匹配)
4. 格式化回答
回答示例:
AI Factory 有 3 个待办:
- [ ] 完成详情页 | 2026-02-15
- [ ] 优化性能 | 2026-02-20
- [ ] 添加推荐算法 | 2026-02-25
2. 查询问题列表
用户: "我有哪些待解决的问题?"
AI 流程:
1. 读取 index.json → stats.total_questions = 2
2. 遍历所有主题 → 提取 QUESTIONS section
3. 筛选未解决的问题
4. 按主题分组回答
回答示例:
你有 2 个待解决的问题:
AI Factory (1个):
- D1 免费额度够用吗? (提出于 2026-02-10)
Python Learning (1个):
- 装饰器的性能影响? (提出于 2026-02-11)
3. 查询统计数据
用户: "我的知识库统计"
AI 流程:
1. 读取 index.json → stats 部分
2. 格式化回答
回答示例:
知识库统计:
- 总主题数: 3 个
- 活跃主题: 3 个
- 待办事项: 6 个
- 待解决问题: 2 个
- 想法数: 1 个
- 最后更新: 2026-02-11
4. 追溯决策演进
用户: "为什么选 D1 而不是 MySQL?"
AI 流程:
1. 读取 topics/ai-factory.md
2. 提取 DECISIONS section
3. 提取 TIMELINE section
4. 通过 links.json 找到相关日记
5. 综合展示演进过程
回答示例:
数据库方案演进:
【决策记录】
- 方案: SQLite + D1
- 理由: 成本低、维护简单、性能够用
- 演进: MySQL → PostgreSQL → SQLite + D1
【时间线】
- 2026-02-01: 项目启动,考虑 MySQL
- 2026-02-08: 决定使用 SQLite + D1
【相关日记】
- [[daily/2026-02/01]]: 最初讨论
- [[daily/2026-02/08]]: 最终决策
检索示例
示例 1: 按标签检索
用户: "找所有关于 Python 的笔记"
AI 流程:
1. 读取 tags.json → python: ["python-learning", "ai-factory"]
2. 读取对应主题笔记
3. 汇总回答
示例 2: 按类型检索
用户: "我最近学了什么?"
AI 流程:
1. 读取最近的 daily 文件
2. 筛选 type = learning 的条目
3. 按时间倒序列出
示例 3: 跨主题检索
用户: "哪些主题用到了装饰器?"
AI 流程:
1. 搜索所有主题笔记(grepSearch)
2. 查找包含"装饰器"的文件
3. 提取相关内容
4. 汇总回答
维护操作
自动维护
触发时机: 每次记录操作后
维护内容:
- 更新主题笔记的 TIMELINE section
- 更新主题笔记的 frontmatter (updated 字段)
- 更新 .meta/index.json (统计数据)
- 更新 .meta/tags.json (标签索引)
- 更新 .meta/links.json (链接关系)
保证一致性:
- 所有更新在同一事务中完成
- 如有错误,回滚所有操作
- 记录错误日志
手动验证
使用同步脚本:
python3 scripts/sync.py --path ~/Downloads/Obsidian/网盘同步/09-知识库
同步内容:
- 扫描 topics/ 和 daily/ 目录
- 重新生成 .meta/index.json
- 重新生成 .meta/tags.json
- 重新生成 .meta/links.json
- 更新统计数据
使用场景:
- 发现元数据不一致时
- 手动修改了笔记文件后
- 定期维护(建议每周一次)
主题笔记格式
Frontmatter
---
title: AI Factory
type: project
status: active
tags: [project, nextjs, cloudflare]
created: 2026-02-01
updated: 2026-02-11
---
固定 Section (可选,按需使用)
STATUS - 当前状态概览
## STATUS
- 进度: 30%
- 数据库: SQLite + D1
- 前端: Next.js 14
- 状态: 开发中
TODO - 待办事项列表
## TODO
- [ ] 完成详情页 | 2026-02-15
- [ ] 优化性能 | 2026-02-20
- [ ] 添加推荐算法 | 2026-02-25
QUESTIONS - 待解决问题
## QUESTIONS
- [ ] D1 免费额度够用吗? | 2026-02-10
- 免费: 500万次/天
- 预估: 5万次/天
- 结论: 待调研
IDEAS - 想法池
## IDEAS
- 推荐算法 | 2026-02-10
- 协同过滤 + 内容推荐
- 预计2-3天开发
- 状态: 待验证
DECISIONS - 重要决策记录
## DECISIONS
- 数据库选型 | 2026-02-08 | done
- 方案: SQLite + D1
- 理由: 成本低、维护简单、性能够用
- 演进: MySQL → PostgreSQL → SQLite + D1
TIMELINE - 时间线(倒序,最新在上)
## TIMELINE
- 2026-02-11: 研究推荐算法
- 2026-02-08: 完成首页,决定数据库方案
- 2026-02-01: 项目启动
RELATED - 相关主题链接
## RELATED
- [[python-learning]] - 用到装饰器
- [[database-design]] - 数据库设计
Section 使用规则
不强制: 不是所有 section 都必须有
按需添加: 根据主题类型选择合适的 section
可扩展: 可以添加自定义 section (如 BUGS/RESOURCES/NOTES)
固定标记: 使用大写 ## SECTION_NAME,方便 AI 定位
元数据格式
index.json
{
"topics": {
"ai-factory": {
"file": "topics/ai-factory.md",
"title": "AI Factory",
"type": "project",
"status": "active",
"tags": ["project", "nextjs", "cloudflare"],
"created": "2026-02-01",
"updated": "2026-02-11",
"sections": {
"todos": 3,
"questions": 1,
"ideas": 1,
"decisions": 1
}
}
},
"daily": {
"2026-02-11": {
"file": "daily/2026-02/11.md",
"entries": 5,
"topics": ["ai-factory", "python-learning"],
"types": {
"idea": 1,
"learning": 1,
"dev": 1,
"question": 1,
"life": 1
}
}
},
"stats": {
"total_topics": 3,
"total_todos": 6,
"total_questions": 1,
"total_ideas": 1,
"active_topics": 3,
"last_updated": "2026-02-11T20:00:00Z"
}
}
tags.json
{
"project": ["ai-factory"],
"learning": ["python-learning"],
"nextjs": ["ai-factory"],
"python": ["python-learning"]
}
links.json
{
"ai-factory": {
"links_to": ["python-learning", "database-design"],
"linked_from": ["daily/2026-02/11", "daily/2026-02/08"]
}
}
辅助脚本
初始化脚本
用途: 一键创建知识库目录结构
使用:
python3 scripts/init.py --path ~/Downloads/Obsidian/网盘同步/09-知识库
功能:
- 创建目录结构 (daily/topics/.meta)
- 初始化元数据文件 (空的 JSON)
- 创建 README.md (使用说明)
- 配置 Git 仓库 (可选)
同步脚本
用途: 同步笔记文件和元数据索引
使用:
python3 scripts/sync.py --path ~/Downloads/Obsidian/网盘同步/09-知识库
功能:
- 扫描 topics/ 和 daily/ 目录
- 解析所有笔记文件的 frontmatter
- 重新生成 .meta/index.json
- 重新生成 .meta/tags.json
- 重新生成 .meta/links.json
- 更新统计数据
迁移脚本
用途: 数据导入导出和格式转换
使用:
# 导出到 JSON
python3 scripts/migrate.py export --format json --output backup.json
# 导入 Notion 数据
python3 scripts/migrate.py import --format notion --input notion_export/
功能:
- 从其他格式导入 (Notion/Evernote/纯文本)
- 导出到 JSON
- 导出到 SQLite/PostgreSQL
- 批量格式转换
参考资料
详细文档
- formats.md - 格式规范详解(日记/主题笔记/元数据)
- examples.md - 使用示例(记录/检索/维护)
- troubleshooting.md - 常见问题和最佳实践
何时使用脚本
使用脚本的场景:
- 初始化知识库 (init.py)
- 同步元数据索引 (sync.py)
- 数据导入导出 (migrate.py)
AI 直接操作的场景:
- 日常记录操作
- 日常检索操作
- 自动维护操作
正则表达式参考
日记条目匹配
# 匹配日记条目
entry_pattern = r'^## (\d{2}:\d{2}) \| (\w+) \| ([\w-]+)(?:\s+\|\s+(\w+))?$'
# 组 1: 时间 (HH:MM)
# 组 2: 类型 (idea/dev/learning/...)
# 组 3: 主题 (topic-name)
# 组 4: 状态 (todo/done/..., 可选)
Section 标记匹配
# 匹配 section 标题
section_pattern = r'^## ([A-Z_]+)$'
TODO 项匹配
# 匹配 TODO 项
todo_pattern = r'^- \[([ x])\] (.+?)(?:\s+\|\s+(.+))?$'
# 组 1: 状态 (空格=未完成, x=已完成)
# 组 2: 任务描述
# 组 3: 截止日期(可选)
TIMELINE 项匹配
# 匹配 TIMELINE 项
timeline_pattern = r'^- (\d{4}-\d{2}-\d{2}): (.+)$'
# 组 1: 日期
# 组 2: 事件描述
配置
知识库路径
默认路径: ~/Downloads/Obsidian/网盘同步/09-知识库/
自定义路径:
export NOTES_DIR=~/custom/path/to/notes
AI 自动创建: 如果路径不存在,AI 会自动创建目录结构
最佳实践
记录时
- 想到就记,不要拖延
- 简短描述,1-2 句话
- 详细内容放主题笔记
检索时
- 优先使用自然语言查询
- 让 AI 聚合信息
- 查看元数据统计
维护时
- 让 AI 自动维护
- 定期检查数据一致性 (validate.py)
- 使用 Git 版本控制
备份时
- 使用 Git 版本控制
- 推荐 GitHub 私有仓库
- 或使用 iCloud Drive 同步
常见问题
Q: 如何创建新主题?
A: AI 会自动创建。当你记录时提到新主题,AI 会:
- 创建主题笔记文件
- 添加到元数据索引
- 建立链接关系
Q: 如何修改已有记录?
A: 直接告诉 AI 要修改的内容,AI 会:
- 定位到对应文件
- 更新内容
- 同步元数据
Q: 元数据损坏怎么办?
A: 运行验证脚本修复:
python3 scripts/validate.py --path ~/Downloads/Obsidian/网盘同步/09-知识库 --fix
Q: 如何备份数据?
A: 推荐使用 Git:
cd ~/Downloads/Obsidian/网盘同步/09-知识库
git init
git add .
git commit -m "Backup"
git push origin main
Skill 版本: v1.1.0
最后更新: 2026-03-03
维护团队: 极光库团队
