2026年7月1日 2 分钟阅读

Persist OS 完全指南:给 AI 编程 Agent 装上「持久记忆」,让每次编码都有据可查

tinyash 0 条评论

你是否有过这样的经历:AI 编程 Agent(Claude Code、Cursor、Codex)帮你飞快地写了一大段代码,但你问它”为什么要这样设计””之前考虑过哪些方案”,它完全答不上来——因为它的上下文只存在于当前的聊天窗口,上次会话的决策早已被清空。

Git 记录了什么发生了变化,但记不住为什么要这样改。这是 AI 辅助编程时代一个越来越明显的痛点:代码写得快了,但架构决策、设计理由、技术选型的上下文全散落在对话记录里,根本无法追溯。

今天要介绍的 Persist OS 就是专门解决这个问题的——一个本地优先的开源 CLI 工具,为你的仓库建立结构化的、可审计的工程记忆,然后用一个确定性检查器(persist doctor)确保这些记忆始终有效。

什么是 Persist OS

Persist OS 是一个 TypeScript 编写的 CLI 工具(MIT 许可证),它的核心理念可以用一句话概括:把”为什么这么写”沉淀到仓库里,让它像代码一样可审计、可回溯

具体来说,它会创建一个结构化记忆层,包含以下内容:

  • 产品意图:当前版本的目标是什么,解决了什么问题
  • 架构决策(ADR):每个技术选型的背景、选项、理由
  • 模块所有权:每个模块是谁负责的,边界在哪里
  • 测试和安全期望:每个功能有哪些已知约束
  • AI Agent 规则:告诉 AI 工具这个仓库有哪些约定不能违背

所有这些记忆都存放在 docs/ 目录下的 Markdown 文件中,可以正常提交到 Git,可以在 Pull Request 中被审查,可以被任何 AI Agent 重新读取。

Persist OS 不是向量记忆引擎。类似 supermemory、mem0 的工具用嵌入向量做相似度检索;Persist OS 写的是人类和 Agent 都能直接阅读的结构化文件——它们是互补关系,而非竞争关系。

安装与初始化

安装方式有两种。最快的尝试方式是用 npx:

npx persist-os@latest init

如果打算长期使用,建议全局安装:

npm install -g persist-os
persist --help

环境要求:Node.js >= 20。persist-os 包已发布在 npm 上,目前最新版本为 0.6.1。

初始化一个项目

在你的项目根目录中运行:

cd /path/to/your-project
persist init

这会自动创建:

  • docs/ 目录:存放架构文档、ADR、功能规划等
  • .persist/config.json:配置文件,记录当前仓库的决策树状态
  • 针对你使用的 AI 工具的集成文件(CLAUDE.md.cursor/rules/AGENTS.md 等)

初始化的过程是交互式的——每个文件创建时都会提示你做了什么、文件放在哪里、下一步可以做什么。如果你用 --ai-tools 指定工具,则只生成特定工具的规则:

persist init --ai-tools claude,cursor

默认会为 Claude Code、Cursor、Codex 都生成规则,AGENTS.md 则始终生成。

使用 Preset 初始化

如果你想针对特定技术栈生成更丰富的预设决策记录,可以用 --preset 参数:

persist init --preset python-fastapi
persist init --preset nextjs
persist init --preset kotlin-android
persist init --preset laravel-react

目前内置了 9 个 Preset(含 generic),覆盖了 Python/FastAPI、Next.js、Kotlin/Android、iOS/Swift、Laravel、Flutter 等主流技术栈。每个 Preset 会提出预设的架构决策(以 Proposed ADR 形式),但不会自动接受任何选择——你需要手动用 persist adr accept 决定是否采纳。

查看可用 Preset:

persist preset list

日常使用命令

Persist OS 提供了一套完整的 CLI 命令来管理工程记忆:

记录功能意图

当你要开始一个新功能时,先创建一个功能记忆:

persist feature create checkout

这会创建一个 PRD(产品需求文档)骨架,包含功能描述、验收标准、测试要求和审查清单。这些内容会存放在 docs/features/checkout/ 目录下。

管理架构决策(ADR)

ADR(Architecture Decision Record)是 Persist OS 的核心能力。每个 ADR 包含:背景、选项、决策理由和预期后果。

创建新 ADR:

persist adr create payment-provider

此时 ADR 状态为 Proposed(草稿)。你需要审查内容后接受它:

persist adr accept payment-provider

如果后续决策发生了变化,不要直接修改旧的 ADR——用 supersede 替换:

persist adr supersede payment-provider stripe-vs-adyen

这会标记旧 ADR 为”已被替代”,新 ADR 会链接回旧版本,形成完整的决策链条。persist doctor 会自动检查是否还有内容引用了已过期的 ADR。

记录模块

定义模块的边界和所有权:

persist module create auth

每条模块记录会包含:模块范围、负责人、依赖关系、测试策略和安全约束。

导入 MCP 服务端上下文

如果你使用了 MCP(Model Context Protocol)服务端(如 Figma、数据库等),可以将其上下文离线导入:

persist mcp add figma

这会读取 MCP 服务端的能力描述,生成结构化的备用记忆,供 Agent 在离线时查阅。

生成可复用的 Agent 技能

Persist OS 还支持生成可移植的 Agent 技能文件:

persist skill create data-query

生成的技能文件位于 .agents/skills/ 目录下,可以被 Claude Code 的 Agent Skills 机制加载。

Doctor:最独特的验证机制

persist doctor 是 Persist OS 区别于其他文档工具的关键功能。它是一个确定性的、本地运行的检查器,会验证工程记忆的完整性和一致性:

persist doctor

它会检查以下方面:

检查类别检测内容严重级别
结构完整性缺少配置、必需文档、功能/模块/ADR 节error
完成证据标记完成但无测试/结果证据的功能error
ADR 质量已接受的 ADR 无实质性后果描述error / warn
安全性安全敏感功能缺少安全影响文档error / warn
漂移检测引用了已不存在或未接受的 ADRerror / warn
过期引用仍引用已被替代的旧决策warning
陈旧性记忆引用的 src/ 代码已发生重大变化warning
上下文预算Agent 规则文件超长(超过上下文预算)warning
内容完整功能 PRD、模块文档留有空模板warning

退出码含义:0=健康,1=有警告,2=有错误。

你可以将它加入 pre-commit hook:

git config core.hooksPath .persist/hooks

或者在 CI 中运行:

pnpm test:run && pnpm typecheck && persist doctor

因为它是确定性的(相同的仓库状态总是产生相同的输出),它可以可靠地作为 CI gate。

Guard:代码变更与测试的关联检查

persist guard 是一个辅助命令,它会检查即将提交的代码变更是否关联了测试

persist guard --source src/

如果 src/ 目录中的代码有变更但没有对应的测试文件变更,它会返回非零退出码。这可以防止”改代码不补测试”的情况。

AI Agent 如何加载工程记忆

Persist OS 为每个 AI 工具生成了对应的记忆加载机制:

  • Claude CodeCLAUDE.md 自动导入 AGENTS.md,SessionStart hook 在每个会话中注入最新的 ADR 和模块地图
  • Cursor.cursor/rules/persist-memory.mdc 作为 always-apply 规则,每次请求都加载记忆规则
  • CodexAGENTS.md 自动发现并加载

生成的 AGENTS.md 包含一个简短的 Rules 块:先读取记忆、复用约定、记录教训、不违背已接受的 ADR、在声称”完成”前运行 persist doctor

最重要的一点是:Agent 被要求在运行过程中自己维护 CONVENTIONS.mdLESSONS.md。这意味着你不用手动写——Agent 在编码过程中会自动记录学到的东西,你只需要在 PR 中审查它的修改即可。

Local-First 与隐私保障

Persist OS 有明确的无网络承诺:

  • 运行时不做任何网络调用
  • 不收集遥测数据
  • 不连接 MCP 服务端
  • 不调用 AI API
  • 不生成生产代码
  • 默认不覆盖已有文件

所有的记忆、决策记录、检查逻辑全部在本地运行,适用于离线环境和有严格合规要求的项目。

适用场景

Persist OS 最适合以下情况:

  • 同时使用多个 AI 编码 Agent 的项目:Claude Code 写后端、Cursor 写前端、Codex 做测试——需要一个统一的记忆层确保所有 Agent 一致性
  • 对架构决策有审计要求的团队:每个 ADR 有完整的生命周期(Proposed → Accepted → Superseded),可追溯
  • Vibe Coding 后的重构项目:快速原型完成后,用 persist adopt 检查现有代码,生成记忆层,让后续的 Agent 维护有据可依
  • 需要 CI 门禁的项目persist doctor 的确定性退出码可以嵌入任何 CI 流程

不太适合的场景:单 Agent 且无文档需求的个人项目、已有成熟知识管理系统的团队。

结语

Persist OS 解决的是一个微妙但越来越重要的痛点:AI 代码生成的速度远超人类记录决策的速度,导致架构知识大量流失。它用一套轻量级的 CLI 命令,把”为什么”沉淀为仓库中的结构化文件——既不会像向量数据库那样黑盒,也不会像 Wiki 那样与代码脱节。

如果你正在使用 AI 编码 Agent 开发项目,且希望每次编码迭代都有据可查,不妨试试。用 npx persist-os@latest init 在你的项目中初始化,几分钟就能给仓库装上”工程记忆”。

相关链接

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。