TONG-H

AI 实践-Memory Bank

7872Frontendai2025-07-012025-08-24

Cline

集成

  • memory bank 的概念是 cline 提出的。而 cline 是一个 ai 工具,可以以插件的方式集成到 vscode 中使用,可以参考官网文档
  • 但这里我用的是 cursor,可以以 rule 的方式集成,非常简单,可以参考这论坛的这篇文章how-to-add-cline-memory-bank-feature-to-your-cursor
    • 里面涉及到 cline 的 Plan/Act 模式和 memory bank,其实是将 cline 的 prompt 改成 cursor 的 rule

Memory Bank

  • Memory bank 是一些存储在项目中的markdown文件,类似于README文件,但更为结构化,超越了单个README文件通常包含的内容。通过维护这些文档,之前的聊天结果得以保存,模型通过检索这些文档可以重建上下文 cline-memory-bank
  • 每当用户发送指令时,AI首先会读取 memory bank,然后重建上下文。一旦任务完成,memory bank会相应更新,或者可以通过 update memory bank 来触发更新。

文件:

  • projectbrief.md项目的基础信息
  • productContext.md(项目背景)systemPatterns.md(架构和设计)techContext.md(技术和框架)
  • activeContext.md修改最为频繁的文件,用于跟踪当前的工作
  • progress.md当前的工作进度和剩余的工作,已知的问题和限制

Plan/Act 模式

  • 在 plan 模式,可以让模型专注于理解用户的需求,分析代码库,创建上下文,然后制定plan
  • 输出计划后,用户可以 review 然后调整计划,直到它符合用户的预期。一旦用户批准,则切换到act模式开始按照plan执行。

Prompt Tips

从 cline 的文档获益不少,这里记了一些 prompt 的案例,是我以前没注意到的,完整版可以参考一下prompt-engineering-guide

  1. 一个聊天专注于一个功能,可以避免无关上下文的干扰
  2. 识别潜在问题
    1. “列出你在完成这个任务之前需要澄清的所有假设和不确定性”
    2. “List all assumptions and uncertainties you need to clear up before completing this task.”
  3. 用批判性提问以发现更好的解决方案
    1. 你确定这是实现这个功能的最佳方式吗?
    2. “are you sure this is the best way to implement this?”
  4. 在提示中使用”优雅 elegant”和”简单 elegant”等词语,以保持代码风格

实践

在项目中尝试了一下

  • 实现的功能大概是这样:有一个产品,是使用了两种技术栈实现,web 端 和 rn 端,两个仓库的功能差异几乎一致,差异很小。可以理解为相同的需求,在不同的仓库用不同的技术栈实现。
  • 通过 memory bank 想要达到的需求:给这两个仓库建立连接,在 a 仓库里面实现一个需求, 然后在 b 仓库里让模型去读取 memory bank 里的内容,然后完成同样的任务
  • 对于小功能的效果是挺好的,第二次实现的时候快速高效,不需要多赘述一遍提示或者不断引导模型。但是复杂的功能还是需要人为干涉和引导