用途
obs-memory 为编码类智能体提供持久化的记忆能力,底层载体是一个 Obsidian 知识库(vault)。该知识库是图结构的,并且跨会话存续,用来让智能体在会话开始时快速定位自己、在工作过程中查询架构与组件知识、并把新的发现写回知识库。
主要能力
知识库路径解析:按固定优先级确定知识库位置,先取环境变量 $OBSIDIAN_VAULT_PATH,再从智能体的项目或全局配置中解析(查找 “Obsidian Knowledge Vault” 段落及其中的路径,如 ~/Documents/SomeName/),最后回退到默认路径 ~/Documents/AgentMemory。解析结果记为 $VAULT,其目录名记为 $VAULT_NAME 供 CLI 调用使用,并通过检查 $VAULT/Home.md 是否存在来验证知识库。
会话开始时的定位(Orientation):最多用两步完成。第一步读取待办(优先用 CLI obsidian vault=$VAULT_NAME tasks path="todos" todo verbose,回退为读取 $VAULT/todos/Active TODOs.md),了解待处理、进行中和最近完成的事项。第二步从当前工作目录自动识别项目(basename $(git rev-parse --show-toplevel ...) || basename $(pwd)),在 $VAULT/projects/*/ 中匹配项目文件夹名,若命中则读取该项目的概览笔记,概览中包含指向组件、模式、架构决策和领域的 wikilink。资料明确指出会话开始时不应读取的内容:Home.md(仅在迷失且找不到项目时读)、sessions/(仅在用户提及先前工作时读)、领域索引(仅在需要跨项目知识时读)、组件笔记(仅在处理该组件时读)。
自动行为:会话开始时无需被要求即自动定位(待办 + 项目概览);若在解析出的路径上知识库不存在,则告知用户并建议运行 init。会话结束信号(如 “done”、“wrapping up”、“that's it”、“let's stop” 等)出现时,先询问是否要写入会话小结,而不是自动执行。当深度分析了一个尚无知识库笔记的组件且项目处于活跃知识库中时,主动提议创建组件笔记并从导入和依赖推断关系。首次运行时引导用户完成 init,若位于 git 仓库内还会自动为当前项目生成脚手架。
工作中的图导航:原则是优先使用 CLI 查询,其次才是读取文件。资料给出的 CLI 用法包括:查询组件的依赖(property:read file="..." name="depends-on")、查询被依赖关系(property:read name="depended-on-by" 与 backlinks)、列出笔记的出链(links)、按类型查找笔记(tag verbose name="component")、搜索知识库内容(search format=json query="..." matches limit=10)、获取笔记结构(outline)、读取特定属性(property:read name="key-files")。CLI 不可用时的回退策略是顺着链接读取相应的单篇笔记。此外还建议:扫描多篇笔记时先只读每篇文件的前约 10 行,通过 frontmatter 中的 tags、project、type、status 字段判断相关性;读文件前先列目录,相关目录模式为 $VAULT/projects/{name}/**/.md 和 $VAULT/domains/{tech}/.md。
写入知识库:要求简洁,笔记服务于智能体自身未来的上下文而非人类文档,倾向用要点而非散文、用 wikilink 而非重复解释、用 frontmatter 标签而非冗长描述提升可发现性。写入时机包括:发现新组件、做出架构决策(记录 ADR)、识别出可复用的模式、学到跨项目领域知识。
使用方式
知识范围划分:仅属于单个项目的知识放在 projects/{name}/;跨项目共享的放在 domains/{tech}/;通用且与技术无关的放在 patterns/;会话小结放在 sessions/;待办放在 todos/Active TODOs.md 并按项目分组。
Frontmatter 约定:新笔记总要包含 tags(如 [category, project/short-name])、type(component、adr、session、project 之一)、project(形如 "[[projects/{name}/{name}]]")、created(YYYY-MM-DD)。
Wikilink 约定:链接相关笔记用 [[projects/{name}/components/Component Name|Component Name]],链接领域用 [[domains/{tech}/{Tech Name}|Tech Name]],回链项目用 [[projects/{name}/{name}|project-name]]。
笔记模板:组件笔记的 frontmatter 含 tags、type、project、created、status、layer、depends-on、depended-on-by、key-files,正文分 Purpose、Gotchas。架构决策含 tags、type、project、status(proposed/accepted/superseded)、created,正文分 Context、Decision、Alternatives Considered、Consequences。会话笔记含 tags、type、projects、created、branch,正文分 Context、Work Done、Discoveries、Decisions、Next Steps。
命令:
-
init [path]:从内置模板引导创建新的 Obsidian Agent Memory 知识库。流程为确定路径(提供了参数则用之,否则走路径解析链)、检查 $VAULT/Home.md 是否已存在、定位包根目录下 vault-template/ 中的模板(确认 vault-template/Home.md 存在)、用mkdir -p "$VAULT"与cp -r "$TEMPLATE_DIR/vault-template/"* "$VAULT/"复制、创建 $VAULT/.obsidian 并写入 app.json(alwaysUpdateLinks 为 true、newFileLocation 为 folder、newFileFolderPath 为 inbox、attachmentFolderPath 为 attachments)、创建 inbox 与 attachments 目录及 .gitkeep、报告结果并给出后续步骤(在 Obsidian 中用 Vault Switcher → Open folder as vault 打开、通过环境变量或智能体配置设置路径、开始工作)、生成智能体配置片段(面向 Claude Code 输出 CLAUDE.md 片段,其他智能体输出设置 OBSIDIAN_VAULT_PATH 的通用说明)、若在 git 仓库内自动运行 project 命令为当前项目建脚手架、输出保持 5-8 行以内。 -
analyze(无参数,使用当前仓库):分析当前代码库并填充互联且内容丰富的笔记。第一阶段发现要扫描的知识来源包括智能体配置(CLAUDE.md、.claude/CLAUDE.md、.cursorrules、.windsurfrules、.clinerules、AGENTS.md、Agents.md)、文档(README.md、CONTRIBUTING.md、ARCHITECTURE.md、docs/architecture.md、docs/ARCHITECTURE.md)、既有 ADR(docs/adr/ADR-.md、architecture/ADR-.md、adr/.md、docs/decisions/.md)、项目元数据(package.json、go.mod、Cargo.toml、pyproject.toml、setup.py、Gemfile、pom.xml、build.gradle、.csproj)、构建与 CI(Makefile、Dockerfile、docker-compose.yml、.github/workflows/.yml、.gitlab-ci.yml)、配置(tsconfig.json、.eslintrc.、jest.config.、.goreleaser.yml),并采集 git remote、仓库根路径、当前分支、目录树(源码目录前两层,排除隐藏/vendor/node_modules)与文件扩展名频次。第二阶段综合出项目元数据、架构摘要、组件清单、模式清单、领域映射、既有决策与依赖摘要。第三阶段按幂等规则写入:项目目录不存在则全部创建,概览为骨架则替换为填充版,单个组件/模式/ADR 笔记已存在则跳过并报告(不覆盖人工内容),领域笔记缺失则创建、存在则追加项目链接;同时更新 $VAULT/projects/Projects.md 与 $VAULT/domains/Domains.md 索引。第四阶段打印摘要,列出读取来源数、创建与导入、链接、跳过数量。 -
recap:写入会话小结并更新待办。步骤包括用git log --oneline -20、git diff --stat HEAD~5..HEAD(失败则git diff --stat)、git branch --show-current采集上下文;优先用 CLI 读取当前待办;读取项目概览;优先用 CLI 创建会话笔记并设置 type、branch、projects 属性,再追加正文(回退方案是直接写 $VAULT/sessions/{YYYY-MM-DD} - {title}.md);填写 Context、Work Done、Discoveries、Decisions、Next Steps 等部分。资料在 Next Steps 处截断,后续内容暂未提供。
适用场景
适合需要跨会话保留项目知识的编码智能体工作流,尤其是希望把架构理解、组件关系、设计决策和通用模式沉淀成可检索图谱的团队或个人开发者。也可用于把仓库中既有的 README、架构文档、ADR 和智能体配置批量导入知识库。
限制
资料未提供收费模式、价格、支持的平台范围、性能表现与效果数据。CLI 能力依赖 Obsidian CLI 可用,不可用时需回退到文件读取;知识库路径需要正确配置,否则将被解析到默认路径;recap 的 Next Steps 部分内容在资料中未完整给出。