
在真实的企业级开发环境中,当使用 Claude Code 处理涉及多个微服务的复杂项目时,开发者往往会遭遇上下文窗口溢出与“AI 失忆症”。为了跨越这一技术鸿沟,社区演化出了 Memory Bank(记忆库)架构模式。本篇指南将剔除纯理论,直接通过真实的配置模板、FastAPI 核心代码与终端实操,带你落地这一模式。

Memory Bank 是一组维护在项目根目录(如 memory-bank/)下的 Markdown 文件矩阵。其核心在于“文档即代码”,以下是直接可用于生产环境的结构与代码模板。

一个完备的后端项目(如 FastAPI)应当具备如下的物理隔离结构:
your-repo/
├──.claude/
│ └── CLAUDE.md # Claude Code 启动唯一加载的全局索引
├── memory-bank/ # AI 的外部记忆库
│ ├── projectbrief.md # 项目宪法(硬性目标)
│ ├── productContext.md # 业务逻辑与用户故事
│ ├── systemPatterns.md # 架构规范与代码模板
│ ├── activeContext.md # 运行内存(当前会话状态)
│ └── progress.md # 里程碑记录
├── app/ # 真实业务代码
│ ├── main.py
│ └── auth/
│ └── jwt_handler.py
└──.gitignore为了防止 AI 自由发挥导致代码风格割裂,你必须用精确的 Markdown 列表约束它的行为:
System Patterns
CLAUDE.md 是工具启动时唯一会自动静默读取的配置文件。它不应包含所有业务细节,而是一个引导 AI 读取记忆库的“路由指令”:

Claude Code Guidelines & Memory Protocol
在开始任何任务或提供建议之前,必须首先静默读取 memory-bank/activeContext.md 以恢复上下文。 在任务结束时,必须强制更新 memory-bank/activeContext.md 和 memory-bank/progress.md。
关于项目目录结构、技术栈和设计模式,请查阅 memory-bank/systemPatterns.md。 关于业务目标,请查阅 memory-bank/productContext.md。

假设我们要为一个 Web 应用后端添加“基于 RS256 的 JWT 鉴权”功能。
开发者在终端唤醒 Claude Code 并输入自然语言指令:
Prompt
“阅读 memory-bank/ 下的所有文件。我需要添加 JWT 鉴权。请根据产品需求更新 activeContext.md,列出今天的计划。”Claude 读取后,会在 activeContext.md 中写入如下实际内容:
Active Context
Current Focus: 实现核心 JWT 鉴权模块 (基于 RS256)
Next Steps:
[ ] 1. 在 app/auth/jwt_handler.py 中实现基于 python-jose[cryptography] 的 JWT 签发逻辑。
[ ] 2. 构建 OAuth2PasswordBearer 依赖注入。
[ ] 3. 更新 app/main.py 注册路由。开发者下达指令:
执行 activeContext.md 中的第一步。Claude Code 在生成代码时,会依据 systemPatterns.md 中的“使用 RS256”约束,生成如下生产级代码:
# app/auth/jwt_handler.py
from jose import jwt
from datetime import datetime, timedelta
# 从环境变量中读取非对称密钥
SECRET_KEY = "YOUR_RSA_PRIVATE_KEY"
ALGORITHM = "RS256"
def create_access_token(data: dict, expires_delta: timedelta):
to_encode = data.copy()
expire = datetime.utcnow() + expires_delta
to_encode.update({"exp": expire})
# 严格遵循架构规范中的 RS256 算法
encoded_jwt = jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM)
return encoded_jwt
集成到主入口时,它会自动遵循模块化规范:
# app/main.py
from fastapi import FastAPI
from app.routers import auth
app = FastAPI(title="JWT Auth Service")
app.include_router(auth.router, prefix="/api/v1/auth", tags=["Authentication"])下班前,开发者输入:
我们今天完成了 JWT API。请更新 activeContext.md 和 progress.md,清理临时调试代码,然后运行 /compact。Claude 会将代码快照总结为高密度的 Markdown 保存。当第二天继续工作时,如果需要找回复杂对话的状态,可以使用恢复命令并携带防御性压缩参数:
# 恢复上一会话的上下文
claude --resume
# 触发带保护性指令的上下文压缩,防止模型“变笨”
/compact 深入保留关于 JWT 鉴权路由的依赖注入逻辑,忽略早期的 Python 环境配置讨论
除了 Memory Bank 架构,掌握底层的 CLI 工具命令是节省 Token 的杀手锏。
永远不要使用 /add app/ 这种会导致数十万 Token 瞬间爆炸的指令。正确做法是利用终端工具链:
Map (地图拓扑查阅): 使用 tree 过滤无关目录,仅获取骨架结构。
> tree -L 3 -I 'node_modules|venv|__pycache__|.git'
Locate (精准定位文件): 强制要求 Claude 使用 rg (ripgrep) 或 grep 查找关键代码行。> rg -n "OAuth2PasswordBearer" app/
app/auth/jwt_bearer.py:12:oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
Read (定点读取): 只将带有行号目标的文件送入上下文。> cat app/auth/jwt_bearer.py必须确保包管理器生成的冗余文件被彻底隔离。如果你的 .gitignore 缺少以下条目,Claude 在执行全局搜索时会导致上下文瞬间溢出崩溃:
必须隔离的“Token 黑洞”文件
pycache/
*.py[cod]
.venv/
poetry.lock
package-lock.json
node_modules/
.pytest_cache/将纯粹的开发指令转变为文档驱动(Documentation as Code)的过程,就是驯服大模型的过程。通过 CLAUDE.md 的路由劫持,配合结构化的 systemPatterns.md 与精准的 tree/rg 终端命令,你能将 AI 昂贵且短暂的计算力,100% 倾注在真正的业务逻辑实现上。