考察点
这道题出自 2026 年面渣逆袭系列真题("请讲一下你在 AI 编程中的使用经验,比如 Claude Code"),AI 应用岗和 AI 编程工具相关团队常考。面试官想看你有没有深度用过一线编程 Agent,能不能把使用体感抽象成可复用的工程设计。追问往 auto-compact 机制、子 Agent 隔离的代价、和 Cursor 等 IDE 插件的架构差异上走。
参考答案
四件套总览
Claude Code 长会话不崩,靠的是四个相互配合的机制:CLAUDE.md 做持久记忆,auto-compact 做阈值压缩,子 Agent(Task 工具)做上下文隔离,工具输出截断做流量控制。下面逐个拆。
CLAUDE.md:项目级持久记忆
CLAUDE.md 是会话启动时自动注入系统上下文的项目说明文件,分用户级(~/.claude/CLAUDE.md)和项目级两层,项目里还可以按子目录再细分。它解决的是"跨会话的项目知识"问题:技术栈、构建命令、代码规范、踩过的坑,写一次,每个新会话自动带上,不用每轮重复交代。本质上这是把长期记忆实现成了一个可版本管理、可 code review 的纯文本文件——比向量库直白,但对编程场景恰恰够用,因为项目知识量小、结构稳定、需要精确呈现。
auto-compact:阈值触发的增量摘要
Claude Code 会实时显示上下文用量,接近上限(默认大约在 90% 以上)时自动触发 compact:把之前的对话历史压缩成摘要,保留关键上下文继续干活。用户也可以用 /compact 手动提前压缩(还能带参数指定保留重点),用 /clear 在任务切换时彻底清空。这套"自动兜底 + 手动控制"的双层设计值得抄:自动档防呆,手动档给懂行的用户优化空间——老手会在完成一个子任务后主动 compact,让窗口始终留给当前任务。
子 Agent:上下文隔离的杀手锏
Task 工具派生子 Agent 时,子 Agent 有独立的上下文窗口,它读文件、搜代码、跑测试产生的几万 token 中间过程不进主会话,只把最终结论(通常几百 token)带回来。这是编程 Agent 最重要的省 context 手段:一次全库搜索可能翻几十个文件,隔离后主会话只看到"问题在 auth.ts 第 42 行"。代价是子 Agent 看不到主会话的完整上下文,派活时要把任务描述写全。
工具输出截断
bash 输出、大文件读取会被截断,超长输出自动存成临时文件只给路径,模型需要细节时再用 Read 带 offset/limit 分页读。这等于把"工具结果外置"做成了默认行为。
可借鉴的设计原则
抽出来四条:记忆文件化(项目知识用文本文件而不是黑盒存储,可见可审);压缩双触发(阈值自动 + 用户手动);重活外包(高 token 消耗的探查类任务一律派子 Agent);大输出一律落盘留引用。这四条在任何自研 Agent 里都成立。
可能的追问
- compact 丢信息怎么办?——compact 前用 /compact 加参数声明保留重点;重要决定写进 CLAUDE.md 或项目文档,让文件系统当外置记忆,别依赖对话历史。
- 子 Agent 和主 Agent 共享什么?——共享文件系统和 CLAUDE.md,不共享对话上下文;所以信息传递要么靠派活时的任务描述,要么靠写文件。
- 和 Cursor 这类 IDE 插件的本质区别?——IDE 插件以人为主、模型辅助补全,上下文管理用户自己扛;Claude Code 是 Agent 主导、自主跑长链路,所以必须内建整套上下文管理机制。