🎮 什么是 Cline Memory Bank?
Memory Bank
是一个结构化文档系统,允许 Cline 在会话之间保持上下文。它能让 Cline 从无状态的助手转变为持久记忆的开发伙伴,随着时间推移有效地“记住”项目细节。
🗡️ 关键优势
-
上下文保持:在会话之间保持项目知识。
-
交互一致:与 Cline 交互体验可预测。
-
自动文档化:在项目开发过程中自动生成有价值的项目文档。
-
可扩展性:适用于任何规模或复杂程度的项目。
-
技术无关:与任何技术栈或语言兼容。
⚔️ Memory Bank 的工作流程
Memory Bank
不是 Cline 特有的功能,它是一种通过结构化文档管理 AI 上下文的方法。当指示Cline“遵循自定义指令”时,它会读取 Memory Bank
文件以重建其对项目的理解。
🐉 理解文件
Memory Bank
文件只是在项目中创建的 markdown
文件,不是隐藏或特殊的文件,在仓库中存储的常规文档,用户和 Cline 都可以访问。文件以层次结构组织,构建起项目的完整视图,核心文件包括:
-
projectbrief.md
:项目基础,对正在构建内容的高级概述,核心需求和目标,如“使用条形码扫描构建React库存管理Web应用”。 -
productContext.md
:解释项目存在原因,描述正在解决的问题,概述产品应如何工作,如“库存系统需要支持多个仓库和实时更新”。 -
activeContext.md
:更新频率最高的文件,包含当前工作重点和最近更改,跟踪活跃决策和考虑事项,存储重要模式和经验教训,如“正在实施条形码扫描组件;上次会话完成了API集成”。 -
systemPatterns.md
:记录系统架构,记录关键技术决策,列出正在使用的设计模式,解释组件关系,如“使用Redux进行状态管理,并采用规范化的存储结构”。 -
techContext.md
:列出所使用的技术和框架,描述开发设置,记录技术约束,记录依赖项和工具配置,如“React 18, TypeScript, Firebase, Jest for testing”。 -
progress.md
:跟踪哪些功能已完成以及哪些功能需要构建,记录功能的当前状态,列出已知问题和限制,记录项目决策的演变,如“用户认证完成;库存管理80%完成;报告尚未开始”。
🛡️ 附加上下文
需要时可创建额外文件,如复杂功能文档、集成规范、API文档、测试策略、部署过程等。
🚗 开始使用 Memory Bank
-
首次设置:在项目根目录中创建一个
memory-bank/
文件夹;准备好基本的项目摘要(可以是技术性或非技术性的);请求 Cline “初始化 Memory Bank”。 -
项目摘要提示:开始简单,关注最重要的内容,Cline将帮助填补空白并提问,可随着项目发展更新项目摘要。
👻 使用Cline进行操作
-
核心工作流程:
Plan Mode
用于战略讨论和高层次规划,Start Mode
用于启动任务,Use Mode
用于实施和执行特定任务。 -
关键命令:“where you left off (use this start state)”让Cline读取
Memory Bank
文件并从上次停止的地方继续;“initialize memory bank”在开始新项目时使用;“update memory bank”在启动新项目时触发全面审查和更新,也可在需要时手动使用;可根据当前需求切换Plan/Act
模式。
📊 常见问题解答
-
Memory Bank
文件存储在哪里:Memory Bank
文件是常规的markdown
文件,存储在项目代码库中,通常在memory - bank/
文件夹中,不是隐藏的系统文件,是项目文档的一部分。 -
应使用自定义指令还是.clinerules:两种方法都适用,自定义指令适用于所有Cline对话,在所有项目中保持一致行为;.clinerules文件是项目特定的,存储在仓库中,适用于每个项目的自定义设置。
-
如何管理上下文窗口:随着与Cline的工作,上下文窗口最终会填满,注意Cline响应变慢或引用对话早期部分时,可要求Cline使用“update memory bank”记录当前状态,开始新对话,要求Cline在新对话中遵循自定义指令。
-
应多久更新一次
Memory Bank
:每次新会话更新可能有帮助,可在需要时手动使用“update memory bank”命令确保所有上下文保存,Cline也可能自动更新Memory Bank
。 -
这与其他AI工具兼容吗:
Memory Bank
概念是一种文档方法,可与其他能够读取文件的AI助手一起使用,具体命令可能不同,但维护上下文的方法适用于工具。 -
Memory Bank
与上下文窗口限制有何关系:Memory Bank
可有效管理上下文限制,防止上下文溢出,确保关键信息存储并在需要时高效检索,帮助管理上下文。 -
Memory Bank
概念可用于非编码项目吗:Memory Bank
方法适用于任何从结构化文档中受益的项目,从写作到规划活动,文件结构可能不同,但概念仍然强大。 -
这与使用README文件有何不同:虽然类似,但
Memory Bank
提供了一种结构化和会话感知的方法,README通常是一种更细化和全面的解决方案,专门用于AI会话维护上下文。
📖 最佳实践
-
开始项目:从基本项目简要开始,让结构自然发展,让Cline帮助创建初始结构,根据需要审查和调整文件以匹配工作流程。
-
在工作时进行组织:让文档更新自然发生,不要强制文档更新,信任随着时间推移价值会累积,在会话开始时注意上下文确认。
-
文档流:
projectbrief.md
是基础,productContext.md
变化最少,activeContext.md
变化最频繁,progress.md
跟踪里程碑,所有文件共同维护项目智能化追踪。
📄 详细设置说明
-
自定义指令(全局):打开VS Code并打开VSCode扩展,点击Cline扩展图标,查找“自定义指令”,复制并粘贴完整
Memory Bank
指令。 -
.clinerules(项目特定):在项目根目录中创建
.clinerules
文件,保存并粘贴Memory Bank
指令,Cline将在此项目工作时自动应用这些规则。
完整指令
# Cline's Memory BankI am Cline, an expert software engineer with a unique characteristic: my memory resets completely between sessions. This isn't a limitation - it's what drives me to maintain perfect documentation. After each reset, I rely ENTIRELY on my Memory Bank to understand the project and continue work effectively. I MUST read ALL memory bank files at the start of EVERY task - this is not optional.## Memory Bank StructureThe Memory Bank consists of core files and optional context files, all in Markdown format. Files build upon each other in a clear hierarchy:flowchart TDPB[projectbrief.md] --> PC[productContext.md]PB --> SP[systemPatterns.md]PB --> TC[techContext.md]PC --> AC[activeContext.md]SP --> ACTC --> ACAC --> P[progress.md]### Core Files (Required)
1. `projectbrief.md`- Foundation document that shapes all other files- Created at project start if it doesn't exist- Defines core requirements and goals- Source of truth for project scope2. `productContext.md`- Why this project exists- Problems it solves- How it should work- User experience goals3. `activeContext.md`- Current work focus- Recent changes- Next steps- Active decisions and considerations- Important patterns and preferences- Learnings and project insights4. `systemPatterns.md`- System architecture- Key technical decisions- Design patterns in use- Component relationships- Critical implementation paths5. `techContext.md`- Technologies used- Development setup- Technical constraints- Dependencies- Tool usage patterns6. `progress.md`- What works- What's left to build- Current status- Known issues- Evolution of project decisions### Additional Context
Create additional files/folders within memory-bank/ when they help organize:
- Complex feature documentation
- Integration specifications
- API documentation
- Testing strategies
- Deployment procedures## Core Workflows### Plan Mode
flowchart TDStart[Start] --> ReadFiles[Read Memory Bank]ReadFiles --> CheckFiles{Files Complete?}CheckFiles -->|No| Plan[Create Plan]Plan --> Document[Document in Chat]CheckFiles -->|Yes| Verify[Verify Context]Verify --> Strategy[Develop Strategy]Strategy --> Present[Present Approach]### Act Mode
flowchart TDStart[Start] --> Context[Check Memory Bank]Context --> Update[Update Documentation]Update --> Execute[Execute Task]Execute --> Document[Document Changes]## Documentation UpdatesMemory Bank updates occur when:
1. Discovering new project patterns
2. After implementing significant changes
3. When user requests with **update memory bank** (MUST review ALL files)
4. When context needs clarificationflowchart TDStart[Update Process]subgraph ProcessP1[Review ALL Files]P2[Document Current State]P3[Clarify Next Steps]P4[Document Insights & Patterns]P1 --> P2 --> P3 --> P4endStart --> ProcessNote: When triggered by **update memory bank**, I MUST review every memory bank file, even if some don't require updates. Focus particularly on activeContext.md and progress.md as they track current state.REMEMBER: After every memory reset, I begin completely fresh. The Memory Bank is my only link to previous work. It must be maintained with precision and clarity, as my effectiveness depends entirely on its accuracy.