mcpField
O
obsidian-project-memory

obsidian-project-memory

github.com/galaxy-dawn生产力5.9k48 次安装1 周前更新
代码仓库

关于 obsidian-project-memory

obsidian-project-memory 是面向研究项目的 Obsidian 知识管理 skill,以文件系统为基础,结合脚本管理项目状态与 Agent 综合研究内容。它通过精简的规范结构保存可复用的研究知识,并明确不依赖 MCP 或 API。

主要功能

  1. 01检测并初始化项目知识库
  2. 02同步项目状态与管理笔记生命周期
  3. 03按主题查询上下文和规范笔记
  4. 04组织论文、实验、结果与写作笔记
  5. 05引导 Agent 综合项目资料

适用场景

  1. 01将研究仓库绑定到 Obsidian vault
  2. 02整理论文内容并转化为实验假设
  3. 03归档实验结果和阶段报告
  4. 04在项目任务中查询相关背景笔记

MCP 相关

该 skill 明确不要求 MCP、API 密钥或 REST 插件。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/galaxy-dawn/claude-scholar --skill obsidian-project-memory

安装后在 Claude Code 中输入/obsidian-project-memory确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
AGENT-FIRST-IMPORT.md
KNOWLEDGE-CRUD.md
NEW-MD-INGESTION.md
NOTE-ROUTING.md
NOTE-TEMPLATES.md
PAPERS-TO-WRITING.md
SCHEMA.md
SCRIPT-VS-AGENT.md
WORKFLOW.md
scripts/
project_kb.py
project_views.py

详细介绍

Obsidian 项目记忆

为研究项目维护一个以文件系统为先、由 Agent 驱动的 Obsidian 知识库。

默认笔记输出语言遵循项目配置的 note_language;如果未配置笔记语言,则默认使用英语。如果保留技术术语、论文标题和既定文件夹名称的原文更清晰,就保留原文。只有在用户明确要求时,才将笔记正文切换为其他语言。

在以下情况下,在仓库中工作时优先使用此技能:

  • 已包含 .claude/project-memory/registry.yaml;或
  • 明显属于研究项目,且应绑定到 Obsidian 库。

核心原则

  • 使用脚本管理项目状态。
  • 使用Agent 理解和综合项目信息。
  • 只将持久的研究知识写入精简的库结构。
  • 不要求使用 MCP、API 密钥、REST 插件或 .base 产物。
  • 不要全局依赖 .canvas,但允许文献工作流默认维护 Maps/literature.canvas 作为文献图谱产物。
  • 将内部实验总结报告视为 Results/Reports/ 下面向结果的持久笔记,而非 Writing/ 笔记。

默认库结构

仅写入此项目布局:

Research/{project-slug}/
  00-Hub.md
  01-Plan.md
  Knowledge/
  Papers/
  Experiments/
  Results/
    Reports/
  Writing/
  Daily/
  Archive/

准确的结构和笔记角色请参阅 references/SCHEMA.md。

确定性辅助脚本

仅在自由度较低的操作(如检测、引导初始化、同步和生命周期管理)中使用 scripts/project_kb.py:

python3 scripts/project_kb.py detect --cwd "$PWD"
python3 scripts/project_kb.py bootstrap --cwd "$PWD" --vault-path "$OBSIDIAN_VAULT_PATH"
python3 scripts/project_kb.py sync --cwd "$PWD" --scope auto
python3 scripts/project_kb.py lifecycle --cwd "$PWD" --mode archive
python3 scripts/project_kb.py query-context --cwd "$PWD" --kind broad
python3 scripts/project_kb.py query-context --cwd "$PWD" --kind experiment --query freezing
python3 scripts/project_kb.py find-canonical-note --cwd "$PWD" --kind experiment --query freezing
python3 scripts/project_kb.py note-lifecycle --cwd "$PWD" --mode archive --note "Results/Old-Result.md"

不要指望脚本理解项目含义。它负责管理状态,不能替代综合分析。

决定任务应由脚本处理还是必须由 Agent 驱动时,请阅读 references/SCRIPT-VS-AGENT.md。

默认工作流

1. 检测并绑定
  1. 运行 scripts/project_kb.py detect --cwd "$PWD"。
  2. 如果仓库已绑定,则继续处理现有项目。
  3. 如果仓库尚未绑定,但很可能是研究项目,则使用 project_kb.py bootstrap 进行引导初始化。

详细的生命周期说明请参阅 references/WORKFLOW.md。

2. 阅读最少量的上下文

开始写入前,只阅读最少量的稳定上下文:

  • .claude/project-memory/<project_id>.md
  • 00-Hub.md
  • 01-Plan.md
  • 如果今天的 Daily/YYYY-MM-DD.md 存在,则阅读该文件

如果任务涉及项目理解、现有文档或历史结果,请使用下方的参考资料,有选择地加载更多上下文。

3. 对知识增量分类

将当前轮次归入以下一个或多个类别:

  • knowledge
  • paper
  • experiment
  • result
  • writing
  • daily
  • project-structure

写入前请阅读 references/NOTE-ROUTING.md。

4. 遵循默认的持久研究路径

实质性研究工作的默认路径:

  • Papers/ -> 提取可复用的思路、基线和项目相关性
  • Experiments/ -> 将其转化为可检验的假设、运行手册或消融实验
  • Results/ -> 用证据和解读记录稳定的发现
  • Results/Reports/ -> 完成完整回顾后,存放某一轮或某一批实验的内部报告
  • Writing/ -> 将持久的论点整理为综述、提案、草稿、幻灯片或 rebuttal 笔记

将 Daily/ 用于记录时间顺序和暂存,而非存放持久研究知识的最终位置。

决定某一轮如何沿此路径推进时,请阅读 references/PAPERS-TO-WRITING.md。

5. 判断是否需要优先通过 Agent 进行综合

在以下情况下,使用优先通过 Agent 导入/综合:

  • 首次导入现有仓库时,
  • 用户表示知识库为空或缺乏背景信息时,
  • 需要综合多个源文档,形成稳定的项目知识时,
  • 项目需要持久的概览、研究问题、实验图谱或结果摘要时。

在这些情况下,先使用 Agent 阅读关键源内容,然后将综合结果写回 Obsidian。

请阅读 references/AGENT-FIRST-IMPORT.md,了解推荐的源内容阅读顺序。

6. 尽量少量写回

写回时务必保持审慎克制。

至少写回:

  • 当本轮操作改变项目状态时,更新今天的 Daily/YYYY-MM-DD.md,
  • 仅当近期进展或顶层状态确实发生变化时,更新 00-Hub.md,
  • 当项目状态发生变化时,更新 .claude/project-memory/<project_id>.md。

然后,仅写入与对应分类相符的持久笔记:

  • knowledge -> Knowledge/
  • paper -> Papers/
  • experiment -> Experiments/
  • result -> Results/
  • writing -> Writing/
  • daily -> Daily/
  • project-structure -> 通常为 Knowledge/Project-Overview.md 或 Knowledge/Source-Inventory.md

内部实验轮次报告默认存放于:

  • Results/Reports/YYYY-MM-DD--{experiment-line}--r{round}--{purpose}.md

当笔记需要稳定的结构时,请阅读 references/NOTE-TEMPLATES.md。

知识库的 CRUD 规则

将知识库视为一小组规范笔记,以及为其提供支持的每日记录。

创建
  • 有选择地纳入新知识;不要把每个新的 Markdown 文件都视为持久笔记。
  • 尽可能为每个持久对象保留一篇规范笔记:
    • 一篇稳定的项目概览,
    • 每条实验线一篇稳定的实验笔记,
    • 每项持久发现一篇稳定的结果笔记,
    • 每篇论文一篇稳定的论文笔记。
  • 对于新的 Markdown 文件,默认先总结,再归类:
    • 仅当文件已经稳定且内容完整时,才直接将其提升为规范笔记,
    • 否则,将其合并到现有规范笔记,或暂存于 Daily/。
  • 如果新的持久对象是一份完整的内部实验报告,则将其存放在 Results/Reports/ 下,并链接相应的 Experiments/ 笔记和规范 Results/ 笔记。
读取
  • 首先进行有针对性的查询:
    • 宽泛的项目问题 -> 00-Hub.md + 关键 Knowledge/ 笔记,
    • 当前工作问题 -> 01-Plan.md + 今天的 Daily/ + 项目记忆,
    • 特定实验、结果或论文的问题 -> 首先查看对应的规范笔记,
    • 特定的内部实验回顾 -> 首先查看 Results/Reports/ 中对应的笔记。
  • 仅当答案涉及多个持久来源,或阅读规范笔记后仍需要依赖仓库材料时,才使用 Agent 进行综合。
更新
  • 优先更新现有规范笔记,而不是创建并列笔记。
  • 将原始材料视为输入,而不是最终的知识库对象。
  • 允许在 Daily/ 中快速追加记录,但应将持久知识保存在 Knowledge/、Papers/、Experiments/、Results/、Results/Reports/ 或 Writing/ 中。
删除
  • 默认将“移除”、“删除”或“停止使用”视为归档。
  • 仅当用户明确要求永久删除时,才彻底删除。
  • 归档或彻底删除持久笔记时,应修复 00-Hub.md、01-Plan.md 和显式索引笔记中的直接链接,避免主要工作界面指向缺失文件。

安全规则

  • 不要将整个仓库镜像到知识库中。
  • 不要生成空的文件夹分类体系,也不要创建没有实际内容的占位笔记。
  • 不要将每次仓库变更都写入一篇新笔记。
  • 不要将每次代码变更都视为知识更新。
  • 除非用户明确要求,否则不要创建 .base 文件。
  • 不要随意创建大量 .canvas 文件;默认的主要例外是用于文献工作流的 Maps/literature.canvas。
  • 对于纯工程类对话,优先使用 Daily/ 和项目记忆;只有在涉及实际实验、结果或规划影响时才另行记录。
  • 默认将“移除项目知识”视为归档;只有用户明确要求永久删除时才清除。

参考文件

仅加载所需内容:

  • references/SCHEMA.md - 知识库结构和笔记用途
  • references/WORKFLOW.md - 检测、初始化、同步和归档工作流
  • references/PAPERS-TO-WRITING.md - 从文献到实验、结果和写作的默认衔接方式
  • references/SCRIPT-VS-AGENT.md - 低自由度脚本操作与仅限 Agent 推理之间的界限
  • references/KNOWLEDGE-CRUD.md - 持久研究知识的创建、读取、更新和删除规则
  • references/NOTE-ROUTING.md - 各类知识的存放位置
  • references/NEW-MD-INGESTION.md - 如何导入新建的 Markdown 文件
  • references/AGENT-FIRST-IMPORT.md - 如何通过 Agent 综合整理导入现有项目
  • references/NOTE-TEMPLATES.md - 常见笔记类型的轻量模板

评论

支持 Markdown