Obsidian 对话存档
将一次 AI 对话分类写入用户的 Obsidian 笔记库,形成可检索、可互相链接的对话档案。
何时使用
- 用户明确要求把对话存进 Obsidian(如"存到 Obsidian""归档对话""把对话存进去")。
- 一轮实质对话即将结束、需要收尾时,主动询问是否归档。
- 用户要求自动保存 / 批量导入历史对话。
工作流程
按以下顺序执行:
- 定位 vault — 运行
scripts/find_vault.py(或--status)自动搜寻 vault,
按返回结果分三种情况处理:
found=true→ 拿到path,继续第 2 步。found=false且installed=false→ 用户未安装 Obsidian,用AskUserQuestion
询问是否下载(官网下载地址https://obsidian.md/download):- question: "未检测到 Obsidian,需要我帮你打开下载页吗?"
- header: "下载 Obsidian"
- options:
[{"label": "去下载", "description": "打开 Obsidian 官网下载页"}, {"label": "暂不", "description": "取消,改用其他方式或跳过"}]
用户选「去下载」后,提示其安装并创建一个仓库(vault),之后重新运行本 skill。
found=false且installed=true→ Obsidian 已安装但还没创建/注册任何仓库,
提示用户先打开 Obsidian 新建一个仓库,再重新定位。
2. 确定分类 — 依据下面的「分类规则」把当前对话归入四大分类之一。
3. 撰写摘要 — 用一句话概括本次对话做了什么、结论是什么。
4. 写入笔记 — 调用scripts/archive_conversation.py(脚本会自动定位 vault、
生成笔记、更新<分类> Index.md与对话索引.md)。
5. 确认结果 — 告知用户写入的文件名与所属分类。
脚本调用示例(把 JSON 作为参数传入):
python scripts/archive_conversation.py --json '{
"category": "工具配置",
"summary": "用户要求把对话分类存进 Obsidian,本对话正是生成存档的过程。",
"session": "<session-id>",
"model": "deepseek-v4-pro",
"source": "workbuddy",
"messages": [
{"role": "user", "text": "把对话存进 Obsidian"},
{"role": "assistant", "text": "已分类写入……"}
]
}'
date / title / vault 等字段可选,脚本会自动补全或推断。完整字段与格式
见 references/format-guide.md。
分类规则
把对话归入下面四个分类之一:
- 编程开发 — 写代码、开发应用/网站、调试、代码审查、算法实现。
- 学习成长 — 学习知识、课程答疑、教程、作业/实验题解答、技术学习路线。
- 工具配置 — 安装/配置软件与插件、系统设置、文件/缓存清理、环境搭建。
- 闲聊杂项 — 无法归入以上三类的询问、闲聊、泛泛咨询。
不确定时优先选与主题最贴近的一个,同一对话只归一个分类。
对话结束时询问是否写入
在一轮实质对话结束、准备给最终回复之前,用 AskUserQuestion 询问用户是否要
把本次对话写入 Obsidian。问题例如:
- question: "要把本次对话存入 Obsidian 吗?"
- header: "存档"
- options:
[{"label": "存入", "description": "写入笔记库并更新索引"}, {"label": "不存", "description": "跳过归档"}]
用户选择「存入」后再执行上面的写入流程;若用户已明确说过"每次都要存 / 自动存",
则直接写入,无需再问。写入后要在最终回复里说明写入了哪个文件、归入哪个分类。