先这样答
Claude Code 的 memory 设计包含会话内上下文、项目级 CLAUDE.md 与用户级全局配置这三层逻辑。第一层是会话内上下文。它负责存储当前对话的交互记录。第二层是项目级配置。它以 CLAUDE.md 文件的形式存放在仓库中。团队成员通过代码库共享文件内容。第三层是用户级全局配置。它保存开发者的个人偏好。这些偏好在跨越不同项目时依然生效。
这种分层设计源于信息的生命周期和共享范围存在差异。会话内上下文的生命周期最短。对话结束系统即弃用这些记忆。项目级配置的生命周期跟着仓库走。开发者需要对项目配置进行版本化管理。用户级配置的共享范围跨越单一项目。开发者需要在多个仓库中维持同一套习惯。
如果把所有记忆塞进同一层,系统会产生数据冲突。项目业务逻辑会混入全局环境。这会导致特定项目的内容污染个人偏好。分层设计隔离了不同维度的数据。系统读取记忆时能区分个人习惯与团队规范。这是字节暑期实习 Agent 一面原题。
面试官会怎么追问
-
「为什么不把个人偏好和项目配置合并?」 合并会导致项目内容污染个人偏好。项目配置需要提交仓库供团队共享。个人偏好是跨项目的独立习惯。合并会让团队成员拉取到你的私人配置。
-
「项目级配置为何采用 CLAUDE.md 文件形式?」 文件形式满足版本化管理需求。项目级记忆跟着仓库走。团队修改文件后提交代码。其他人更新代码即可共享项目上下文。
-
「会话内上下文为何设计成结束即弃?」 设计依据是生命周期差异。当前对话的上下文仅服务单次任务。任务完成后记忆失去保留价值。及时丢弃避免无用信息干扰后续对话。
回答的坑
混淆项目级和用户级配置的边界,认为个人偏好需提交到仓库中。
忽略生命周期这个核心原因,单纯从数据结构角度解释分层逻辑。
同系列的题