cline 提示词工程指南-记忆库
前言
编程,就是搭建一个系统,该系统在编程过程中逐步长成,最后该系统可以完成某个具体任务。
显然,编程是一个需要仔细规划、逐步推进的系统性、流程性、逻辑性工作。
我们的 ai 能胜任么?我们考察以下。
首先,基于语言大模型的底层内容生成机制就是按照对话历史,一个 token 一个 token 地猜测下一个token,直到回答足够长。可以理解为按照历史内容,一个字一个字往下“猜”内容。而由于大模型的大,因此可以“猜”得足够精确。
因为每猜一个字,都要考虑对话的历史,而足够长的历史,可以超出计算机的计算能力,所以,这个历史窗口,也就是上下文窗口,是有限的,不是无限的。
也就是说,大模型只能记住有限的对话历史,而不是无限的对话历史。当抵达对话上下文窗口的极限,ai 只能重启对话,以前的对话历史就清空了,或者你没法再往下对话了。
对于程序开发,我们会将开发分解为若干任务(Task),然后每个任务开启一个对话,让 ai 去完成,只要任务足够小,那么该任务就可以在一个对话中完成,这是理想情况。
问题在于,对于项目的整体架构、设计取向、项目进度等,在每一个任务中都需要知道,也就是说,有一些信息,是任何任务都需要知道的,这是一种跨对话的“记忆”。
而基于对话机制的 llm,当对话结束,其上下文也就不可用了,这意味着,如果没有其他机制,通过分解 task 进行对话完成编程任务的方法,任务和任务之间,没有共享的记忆,即,没有跨对话的记忆。这样就很不方便。
为了克服这一点,cline 引入了 记忆银行的概念。它的想法很简单,将共同记忆写到文件里,让 ai 自己更新这些文件。在与ai对话完成任务时,cline 将这些记忆注入对话上下文。这样,每个任务就拥有一个共同的项目记忆了。
什么是 Cline Memory Bank
The Memory Bank is a structured documentation system that allows Cline to maintain context across sessions. It transforms Cline from a stateless assistant into a persistent development partner that can effectively “remember” your project details over time.
记忆库是一个结构化的文档系统,它使你能够维护一个跨对话的上下文。它将 Cline 从一个无状态的开发助手,变成一个在整个开发过程中,能够有效记住你的项目细节的开发伙伴。
- 跨对话的上下文
- 持续开发:交互变得更加可预测
- 自动生成项目文档:作为一个副作用
- 适合各种规模的项目
- 技术栈无关:适合任何技术栈和开发语言
记忆库机制
记忆库是 cline 的特色功能。通过结构化文档管理 ai 的上下文。当你给出指令:“请遵循自定义指令”,cline 就会读取记忆库文档,重建对你的项目的理解。
对话的结构
记忆库文档的结构
记忆库文档就是若干个 md 文档。这些文档就是普通文档,它们保存在你的项目仓库(repository)中,你和 cline 都可以读取。
文件被组织为一个层次结构,以映射你的项目结构。
各个文档的主要内容如下:
- 项目概要上下文 projectbrief.md:概要、目标、范围、成功指标
- 产品上下文 productContext.md:问题定义、目标用户、用户需求、解决方案、关键功能、用户体验目标、成功指标
- 活动上下文 activeContext.md:当前关注、近期改变、关键决策、开放问题、待解决问题、下一步
- 系统模式上下文 systemPatterns.md:架构总览、核心组件、数据流、关键设计决策、集成策略、安全策略、性能考量因素
- 技术上下文 techContex.md:关键技术、开发环境、关键依赖、构建工具、测试框架、部署目标、自动化集成(CI/CD)
- 进度上下文 progress.md:完成的功能、可用的组件、开发中的内容、待开发内容、已知的问题、已测试范围、部署情况
由上面的主要内容可见,项目概要主要描述项目目标,产品上下文主要说明产品的功能用途、系统模式上下文主要是系统的设计,技术上下文主要是开发和部署的环境及工具、活动上下文记录当前的开发内容、进度上下文记录项目的整体进度。
让我们看个例子,这个例子将充分简化每个文档为一句话,以明确它们的侧重:
- 项目概要上下文 projectbrief.md:做一个扫描二维码的物料管理 React web 应用
- 产品上下文 productContext.md:物料系统能够支持多个仓库并能实时更新
- 活动上下文 activeContext.md:当前正在实现二维码扫描组件;上一个会话完成了 api 集成
- 系统模式上下文 systemPatterns.md:使用 Redux 通过规范化存贮做状态管理
- 技术上下文 techContex.md:React 18, TypeScript, Firebase, Jest 用于测试
- 进度上下文 progress.md:用户验证完毕;物料管理完成80%;报表还没开始
除了这些文档外,你可以添加更多的文档到记忆库,已覆盖项目的更多侧面。
使用记忆库
- 添加记忆库指令到自定义指令(指令见下面的代码)
- 添加到自定义指令可以在cline设置中加,也可以使用clinerules,详参架构篇
- cline 设置中添加对所有项目起作用
- clinerules 中添加仅对该项目起作用
- 添加到自定义指令可以在cline设置中加,也可以使用clinerules,详参架构篇
- 在项目根目录建立 memory-bank/ 文件夹
- 在该目录下,写好 projectbrief.md 文档(技术性或非技术性都行)
- 在 cline 中输入提示词:初始化记忆库
- 审核 cline 生成的记忆库各个文档
- 开始开发工作
memory bank 指令
# Cline's Memory Bank
I 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 Structure
The Memory Bank consists of core files and optional context files, all in Markdown format. Files build upon each other in a clear hierarchy:
flowchart TD
PB[projectbrief.md] --> PC[productContext.md]
PB --> SP[systemPatterns.md]
PB --> TC[techContext.md]
PC --> AC[activeContext.md]
SP --> AC
TC --> AC
AC --> 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 scope
2. `productContext.md`
- Why this project exists
- Problems it solves
- How it should work
- User experience goals
3. `activeContext.md`
- Current work focus
- Recent changes
- Next steps
- Active decisions and considerations
- Important patterns and preferences
- Learnings and project insights
4. `systemPatterns.md`
- System architecture
- Key technical decisions
- Design patterns in use
- Component relationships
- Critical implementation paths
5. `techContext.md`
- Technologies used
- Development setup
- Technical constraints
- Dependencies
- Tool usage patterns
6. `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 TD
Start[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 TD
Start[Start] --> Context[Check Memory Bank]
Context --> Update[Update Documentation]
Update --> Execute[Execute Task]
Execute --> Document[Document Changes]
## Documentation Updates
Memory 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 clarification
flowchart TD
Start[Update Process]
subgraph Process
P1[Review ALL Files]
P2[Document Current State]
P3[Clarify Next Steps]
P4[Document Insights & Patterns]
P1 --> P2 --> P3 --> P4
end
Start --> Process
Note: 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.
💡 TIP
撰写 projectbrief时,一开始尽量简单(但是一开始就尽量详细也不是不可以),关注你最紧要的事情,cline 会通过提问补充细节,你可以在项目演进过程中更新记忆库。
记忆库的更新
记忆库会自动更新,触发点是:
- 在你的项目中发现新的模式
- 实现新的重大功能
- 你显式要求:“更新记忆库” 时
- 当你觉得上下文需要澄清时 (?)
和 cline 共同工作
在 cline 中,一般的工作流是什么呢?
设想你是老板,怎么向员工布置工作:
你首先会提出一个目标,但是具体怎么做你并不能确定所有细节,你会先和员工商量,确定工作计划。然后,达成一致后,你会让员工开始具体实施。
所以,任务的布置,分为两个阶段:计划阶段和执行阶段,这就恰恰对应 cline 的 Plan Mode 和 Act Mode。
核心工作流
- 从 Plan Mode,也就是计划模式开始,讨论,并且高层次计划,确定执行计划
- 进入 Act Mode,也就是执行模式,执行特定任务
关键指令
- “遵循自定义指令”:这会让 cline 读取记忆库并且从你上次的工作断点继续,你可以在工作开始时使用这条指令
- “初始化记忆库”:开始一个新项目是执行
- “更新记忆库”:强制更新记忆库
- 根据你当前的需求,在 Plan 和 Act 模式间切换
管理上下文窗口
如上图所示,随着任务对话的进行,上下文窗口会逐步被填满,当你发现系统反应变慢,或者引用之前说过的内容不再那么有效时,你就应该:
- 发出 “更新记忆库” 指令,更新记忆库
- 开始一个新的对话/任务
- 开始新对话/任务后,发出“遵循自定义指令”指令
这个工作流确保重要的上下文被存到记忆库中,并且允许你在新的对话/任务中无缝地继承之前的上下文。
最佳实践
项目开始
- 从一个 projectbrief 文档开始
- 让 cline 帮您初始化记忆库结构
- 修改记忆库文件使之适合你的工作流
项目进行中
- 让模式在工作中自然呈现
- 不要强制文档更新,文档更新应顺其自然
- 相信过程,价值随着时间推移不断积累
- 对话开始时,确认记忆库是否读取
文档流
- projectbrief.md 是基础
- activeContext.md 变更最频繁
- progress.md 是你的工作里程碑
- 所有记忆库文件维持项目智能
The Memory Bank is Cline’s only link to previous work. Its effectiveness depends entirely on maintaining clear, accurate documentation and confirming context preservation in every interaction.