>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
TypeScript

如何为 AI 智能体赋予长期记忆——使用 Obsidian

上周我发现自己这个月已经第三次向编程智能体解释我们的认证服务结构了。Claude Code 的上下文窗口足够大,但任何会话最终都会结束。一旦开启新的终端运行——控制台就再次对架构决策、团队协议或冲刺任务一无所知了。

最近我发现了开发者 Brenno Ferrari 的 obsidian- 项目。作者采用了一种直接的方法:如果智能体需要长期记忆,为什么不把它做成一个普通的 Obsidian 保险库呢?

Obsidian Mind

模板里有什么

这个项目是一个现成的笔记结构、一组 TypeScript 钩子和预构建的 CLI 命令。开箱即用,该模板支持 Claude CodeCodex CLIGemini CLI 以及其他可以从指令文件中读取规则的系统。

核心理念是智能体能够自主读取和更新 Markdown 文件。当会话启动时,一个钩子从 brain/North Star.md 文件中读取全局目标,提取活跃任务列表,并将这部分内容传递给上下文窗口。当你向智能体传达某个决策或某次会议的内容时,它会将数据组织到文件夹中,并将其与同事姓名或项目关联起来。

Obsidian Mind demo

令牌使用控制如何运作

这类系统的主要问题在于令牌消耗。如果每次请求都将整个知识库塞入上下文,限额会在几个小时内耗尽。

在 obsidian- 中,这通过多层加载方案来处理:

  • 会话启动时,读取基线切片:目标、开放任务、最近提交和保险库文件列表。这大约需要 20,000 个令牌。
  • 对于语义搜索,使用 QMD 工具。它在本地构建向量嵌入,并在智能体需要特定信息时找到相关片段。
  • 发送消息时,脚本确定数据类型(事件、会议、架构决策),并将简短的路由提示传递给智能体。
  • 文件写入后,验证器运行检查 wiki 链接和 YAML 参数的正确性。

工作日是什么样的

早上你运行 /om-standup 命令。智能体读取 git 中的最新更改,交叉引用任务列表,并输出简要摘要。

在会议或 Slack 讨论之后,无需手动填写文档结构。只需将原始文本提供给智能体:

/om-dump Обсудили с Сарой рефакторинг авторизации. Решили отложить миграцию на Redis до второго квартала. Сара похвалила архитектуру API.

作为回应,系统同时自动完成四件事:

  1. 更新 org/people/Sarah Chen.md 中的会议历史文件。
  2. 在决策文件夹中创建决策条目。
  3. 在证明模板 perf/Brag Doc.md 中记录表扬。
  4. 在活跃的项目卡片中添加新任务。

一天结束时,/om-wrap-up 命令检查没有交叉引用的孤立笔记并更新索引。

通过子智能体运行后台任务

对于重型操作,模板中配置了专门的子智能体。它们在隔离的上下文窗口中运行,以避免弄乱主对话历史。

仓库中有几个预配置的智能体:

  • slack-
  • cross-linker 在整个保险库中搜索损坏的 wiki 链接和被遗忘的笔记。
  • brag-
  • people-

构建和启动

你可以通过 ShardMind 模板管理器部署保险库,或者简单地克隆仓库。

npm install -g shardmind
mkdir my-vault && cd my-vault
shardmind install github:breferrari/obsidian-mind

设置命令会要求你输入姓名、公司名称和主要目标。之后,你只需按照几个简单的步骤操作:

  1. 在 Obsidian 中将创建的文件夹作为保险库打开。
  2. 在应用设置中启用 Obsidian CLI 插件(需要 Obsidian 1.12+)。
  3. 直接从保险库目录运行 CLI 智能体。

为了获得功能完整的搜索,你还应该安装 QMD 向量搜索工具:

npm install -g @tobilu/qmd
node --experimental-strip-types .scripts/qmd-bootstrap.ts

没有 QMD,系统将继续通过 grep 和 Obsidian 内置搜索运行,尽管回答抽象问题的准确性会略有下降。

这个项目适合谁

该模板对积极使用基于 CLI 的 AI 智能体并已在 Obsidian 中维护或计划维护笔记的开发者很有用。这里的主要价值在于精心设计的文档相互链接规则。

需要注意的是,它依赖 Node.js 22+ 版本和 --experimental-strip-types 标志来运行 TypeScript 脚本而无需预编译。如果这个标志在未来的 Node.js 版本中被重命名,你需要更新钩子设置。尽管如此,该项目提供了一个出色的现成基础,消除了从头开始构建此类脚手架的需要。

相关项目