当前位置: 首页 > news >正文

2 cline 提示词工程指南-记忆库

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%;报表还没开始

除了这些文档外,你可以添加更多的文档到记忆库,已覆盖项目的更多侧面。

使用记忆库

  1. 添加记忆库指令到自定义指令(指令见下面的代码)
    • 添加到自定义指令可以在cline设置中加,也可以使用clinerules,详参架构篇
      • cline 设置中添加对所有项目起作用
      • clinerules 中添加仅对该项目起作用
  2. 在项目根目录建立 memory-bank/ 文件夹
  3. 在该目录下,写好 projectbrief.md 文档(技术性或非技术性都行)
  4. 在 cline 中输入提示词:初始化记忆库
  5. 审核 cline 生成的记忆库各个文档
  6. 开始开发工作

memory bank 指令

# 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.

💡 TIP
撰写 projectbrief时,一开始尽量简单(但是一开始就尽量详细也不是不可以),关注你最紧要的事情,cline 会通过提问补充细节,你可以在项目演进过程中更新记忆库。

记忆库的更新

记忆库会自动更新,触发点是:

  • 在你的项目中发现新的模式
  • 实现新的重大功能
  • 你显式要求:“更新记忆库”
  • 当你觉得上下文需要澄清时 (?)

和 cline 共同工作

在 cline 中,一般的工作流是什么呢?

设想你是老板,怎么向员工布置工作:

你首先会提出一个目标,但是具体怎么做你并不能确定所有细节,你会先和员工商量,确定工作计划。然后,达成一致后,你会让员工开始具体实施。

所以,任务的布置,分为两个阶段:计划阶段和执行阶段,这就恰恰对应 cline 的 Plan Mode 和 Act Mode。

核心工作流

  1. 从 Plan Mode,也就是计划模式开始,讨论,并且高层次计划,确定执行计划
  2. 进入 Act Mode,也就是执行模式,执行特定任务

关键指令

  • “遵循自定义指令”:这会让 cline 读取记忆库并且从你上次的工作断点继续,你可以在工作开始时使用这条指令
  • “初始化记忆库”:开始一个新项目是执行
  • “更新记忆库”:强制更新记忆库
  • 根据你当前的需求,在 Plan 和 Act 模式间切换

管理上下文窗口

在这里插入图片描述

如上图所示,随着任务对话的进行,上下文窗口会逐步被填满,当你发现系统反应变慢,或者引用之前说过的内容不再那么有效时,你就应该:

  1. 发出 “更新记忆库” 指令,更新记忆库
  2. 开始一个新的对话/任务
  3. 开始新对话/任务后,发出“遵循自定义指令”指令

这个工作流确保重要的上下文被存到记忆库中,并且允许你在新的对话/任务中无缝地继承之前的上下文。

最佳实践

项目开始

  • 从一个 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.

参考文献

Cline Memory Bank

相关文章:

  • 基于PySide6与pycatia的CATIA智能倒角工具开发全解析
  • 4月15号
  • 欧冠002:阿斯顿维拉 vs 巴黎圣日耳曼,维拉强攻致防线大开
  • SP B\nRebuild Priorit> 如何用python去掉\n
  • 用python比较两个mp4是否实质相同
  • VLAN的知识
  • Enovia许可优化技巧
  • Dockerfile 文件常见命令及其作用
  • 微服务最佳实践:全链路可用性保障体系
  • 06- 服务网格实战:从 Istio 核心原理到微服务治理升级
  • 案例实战LangChain的核武器-chain
  • WPS JS宏编程教程(从基础到进阶)-- 第七部分:JS对象在WPS中的应用
  • 剑指Offer(数据结构与算法面试题精讲)C++版——day13
  • 泛微相关文档以及相关安装包下载
  • 软考中级-软件设计师 2022年上半年下午题真题解析:通关秘籍+避坑指南
  • 编程行业语言学习与竞争剖析:探寻冷门中的机遇
  • 在Linux的top命令输出中,各列的含义
  • 复变函数摘记3
  • Wan2.1 文生视频 Wan2.1-T2V-14B-Diffusers
  • 深度学习--激活函数
  • 俄乌就不打击民用基础设施释放对话信号
  • 中印尼举行外长防长“2+2”对话机制首次部长级会议
  • 钱理群|直面衰老与死亡
  • 首届中国—海湾阿拉伯国家合作委员会和平利用核技术论坛在成都召开
  • 习近平向加蓬当选总统恩圭马致贺电
  • 历史学家许福谦逝世,长期致力于魏晋南北朝史研究