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
- 一个聊天专注于一个功能,可以避免无关上下文的干扰
- 识别潜在问题
- “列出你在完成这个任务之前需要澄清的所有假设和不确定性”
- “List all assumptions and uncertainties you need to clear up before completing this task.”
- 用批判性提问以发现更好的解决方案
- 你确定这是实现这个功能的最佳方式吗?
- “are you sure this is the best way to implement this?”
- 在提示中使用”优雅 elegant”和”简单 elegant”等词语,以保持代码风格
实践
在项目中尝试了一下
- 实现的功能大概是这样:有一个产品,是使用了两种技术栈实现,web 端 和 rn 端,两个仓库的功能差异几乎一致,差异很小。可以理解为相同的需求,在不同的仓库用不同的技术栈实现。
- 通过 memory bank 想要达到的需求:给这两个仓库建立连接,在 a 仓库里面实现一个需求, 然后在 b 仓库里让模型去读取 memory bank 里的内容,然后完成同样的任务
- 对于小功能的效果是挺好的,第二次实现的时候快速高效,不需要多赘述一遍提示或者不断引导模型。但是复杂的功能还是需要人为干涉和引导