# Coding with AI · Lecture 08 > 检索、记忆与上下文工程 ## Docs - [检索、记忆与上下文工程](https://codingai-lec08.pages.dev/): 从信息到行动 · 输入 ## 开场 - [它说“记得你”:记在哪里?怎么验?](https://codingai-lec08.pages.dev/testing-agent-memory): “记得你”可以对应三种不同的事实,用每次只改一样东西的干预区分。 - [信息可能待在三个地方](https://codingai-lec08.pages.dev/three-memory-locations): 模型每次只看得见这一次的输入;这一讲讲信息怎样读进来、写下去、挑出来。 - [这一讲的线:这一次的输入里放什么,谁来放?](https://codingai-lec08.pages.dev/choosing-model-input): 任务每变大一步,就重新回答这次输入放什么、谁来放,并用一个对照判断放得对不对。 ## 2020:知识放哪、怎么取 - [2020 年春:要回答会变的事实,你押哪条路?](https://codingai-lec08.pages.dev/changing-facts-dilemma): 站在 2020 年,参数里确实存着知识,但改不了、也说不出出处;要不要把知识放到外面? - [同一个月,两条路:GPT-3 与 RAG](https://codingai-lec08.pages.dev/gpt3-vs-rag): 同一个月,一条路把知识背进更大的参数,另一条路把知识留在外面、回答时取来。 - [怎么证明知识真的来自外面?你来设计](https://codingai-lec08.pages.dev/testing-external-knowledge): 只改文档库、保持模型不动,才把知识来源落到外部材料上。 - [他们的做法:只换文档库,参数不动](https://codingai-lec08.pages.dev/swapping-knowledge-sources): 只换外部索引、不动参数,答案跟着变,说明知识来自外部索引。 - [检索靠字面重合,还是学出来的向量?](https://codingai-lec08.pages.dev/lexical-or-dense): 公平比较检索器,要固定问题、文档库和判据,只换一个部件。 - [同一批问题、同一个文档库,只换检索器](https://codingai-lec08.pages.dev/dpr-vs-bm25): 在 NQ 上同问题、同文档库只换检索器,DPR 的命中率高于 BM25。 - [换一个领域,还赢吗?](https://codingai-lec08.pages.dev/retrieval-domain-shift): 在哪训练、在哪测的,结论就到哪为止;推广需要换分布再检验。 - [取到了相关材料,答案就有依据吗?](https://codingai-lec08.pages.dev/relevance-vs-evidence): 相似不等于支持:要检查材料讲的是不是同一个对象、能不能支持答案。 - [小结:知识可以放在外面,但要过两关](https://codingai-lec08.pages.dev/retrieval-two-gates): 知识可以放在外面,但要过取到、用对两关;用干预、公平比较和换分布来检验。 ## 检索成为动作 - [每个问题都要先去查吗?](https://codingai-lec08.pages.dev/when-to-retrieve): 检索有代价;比较查与不查时,要按决定效果的变量分组看。 - [按“有多常见”分组看](https://codingai-lec08.pages.dev/popularity-guided-retrieval): 平均数会掩盖结构:按决定效果的变量分组,才看清检索何时帮忙、何时有害。 - [下一次查什么,出发前写得好吗?](https://codingai-lec08.pages.dev/adaptive-retrieval-steps): 第二次查什么,要等第一次看到 Front Row 才知道:这时候,检索成了一个依赖观察的动作。 - [什么时候根本不需要 agent 自己决定?](https://codingai-lec08.pages.dev/fixed-or-adaptive): 能预先写好的流程就别交给模型;要说观察驱动更好,得在同样的调用次数下比。 - [ReAct 怎么证明“边想边查”有用?](https://codingai-lec08.pages.dev/react-evidence): ReAct 把“只想”“只查”“边想边查”拆开比,结果并不一边倒:读结论要看任务、看跟谁比、看错在哪。 ## agent 的记忆 - [2023 年春:25 个 agent 要在小镇里过两天](https://codingai-lec08.pages.dev/smallville-memory-challenge): 经历越来越长,窗口只有几页纸:被邀请的人到了那天,还记不记得聚会? - [四个办法,你选哪个?](https://codingai-lec08.pages.dev/choosing-memory-storage): 每种办法都会丢东西;他们选了全记下、用时再查——这本身就是一个 RAG。 - [记忆流:每条经历写下去,用时按三项打分取回](https://codingai-lec08.pages.dev/memory-stream-retrieval): 书架上的东西是 agent 自己写的:每条经历写下去,用时按最近、重要、相关打分取回。 - [反思:从经历里归纳出新结论,写回记忆库](https://codingai-lec08.pages.dev/reflection-creates-memories): 反思让 agent 从自己的经历里归纳出新结论再写回去,agent 自己造出了新信息。 - [凭什么说是记忆和反思让它变好的?你来设计](https://codingai-lec08.pages.dev/testing-memory-components): 先定“好”怎样测、和什么比,才能判断记忆与反思的作用和结论边界。 - [拿掉一块会怎样?——消融的结果](https://codingai-lec08.pages.dev/smallville-ablation): 要说记忆有用,就把它拿掉看看:完整结构最可信,每拿掉一块就变差——但“可信”是人评的分。 - [经历写下去,写成什么?](https://codingai-lec08.pages.dev/memory-writing-formats): 写成事件、教训还是技能,决定以后能复用什么;读结果要检查基线和反馈是否可靠。 - [MemGPT:谁来决定什么留在窗口](https://codingai-lec08.pages.dev/memgpt-context-control): MemGPT 把读写交给模型自己:像操作系统换页一样,决定什么留在窗口、什么存到外面。 - [能写之后,多出三个问题:写什么、怎么改、何时忘](https://codingai-lec08.pages.dev/memory-update-forget): 一旦能写,就得决定写什么、旧的错了怎么改、什么时候忘:第五讲的钥匙记录放进记忆里,三个问题全出现。 ## 窗口变大之后 - [窗口有一百万 token,全塞进去不就行了?](https://codingai-lec08.pages.dev/million-token-question): 窗口大到能装下整本书以后,问题从“装不装得下”变成“放进去了用不用得上”。 - [放进去,不等于用上:只动位置的实验](https://codingai-lec08.pages.dev/lost-in-the-middle): 其他都不变,只挪相关段落的位置,准确率就变了:放进窗口不等于用上。 - [标称一百万,实际能用多长?](https://codingai-lec08.pages.dev/ruler-effective-context): 测试太简单,结论就虚高;有效长度取决于任务与达标线。 - [长上下文与 RAG:谁更好,要看条件](https://codingai-lec08.pages.dev/long-context-vs-rag): 比较两种方案,要同时看质量和成本;结论只到测过的模型、任务和预算为止。 - [存得下,不等于这一次看得见](https://codingai-lec08.pages.dev/selecting-visible-context): 存得下不等于这一次看得见:每一步把什么摆上工作台,是要设计的。 - [材料太多:一个 agent 读到底,还是分给子 agent?](https://codingai-lec08.pages.dev/one-agent-or-many): 选单个还是多个 agent,要同时比较质量、token 成本和任务结构。 - [2025 年 6 月:两家给出相反的做法](https://codingai-lec08.pages.dev/multi-agent-tradeoffs): 证据有轻重;是否拆给子 agent,取决于预算与任务能否独立拆分。 - [我们自己选了哪边:这门课的课件怎样交接上下文](https://codingai-lec08.pages.dev/course-context-handoffs): 我们用写下来交接上下文,交接会丢东西;自己的经历只是轶事证据。 ## 诊断与风险 - [信息都在,为什么还会错?](https://codingai-lec08.pages.dev/diagnosing-context-errors): 信息齐备时还出错,至少有四种解释,分别指向读、挑、用、写的不同一步。 - [每种解释配一个能区分它的干预](https://codingai-lec08.pages.dev/diagnostic-interventions): 不要猜原因:每种解释配一个干预,看哪个干预让错误消失。 - [读回来的一句话,是数据还是指令?](https://codingai-lec08.pages.dev/retrieved-prompt-injection): 读回来的文字可能被误当成指令;检索和记忆必须区分数据与指令。 ## 收尾 - [接力:为什么各地的人能沿着同一条线往下做?](https://codingai-lec08.pages.dev/research-as-relay): 共同约束、公开基准与公开成果,让不同机构能沿同一条问题线接力。 - [这一讲带走什么](https://codingai-lec08.pages.dev/context-memory-takeaways): 信息怎样进来,这一讲讲完了;下一讲讲输出:用工具和代码去行动、拿反馈。 ## PokeAgent - [PokeAgent:一支队伍,一个自己做决定的程序](https://codingai-lec08.pages.dev/pokeagent-team-program): 这是一个让你提出问题、再用程序和对局检验的题目:局外可以用 AI 开发,局内程序独立做决定。 - [它和第七、八、九讲怎么接上](https://codingai-lec08.pages.dev/pokeagent-course-connections): 同一个决策,三讲各帮一步:怎么比较候选,程序有资格知道什么,怎么跑起来拿反馈。 - [期末项目的两条路:自选题,或组队打比赛](https://codingai-lec08.pages.dev/final-project-paths): 比赛是期末项目多出来的一个选项,不替代自选题;选它,就相当于选了一个指定的题目。 - [交什么,怎么评](https://codingai-lec08.pages.dev/project-deliverables-evaluation): 评分看研发过程和技术路线,不看名次:赢一局证明不了策略更好,要有对照。 - [这周能做的第一步,和怎么报名](https://codingai-lec08.pages.dev/pokeagent-getting-started): 这周先跑通原版样例、写下一个想检验的问题;想选这个题目,找助教报名、领 API key。 ## 动手实践 - [动手实践](https://codingai-lec08.pages.dev/labs): 检索、记忆与上下文工程的三个实验 - [换索引:知识从哪来,取到了是否用对](https://codingai-lec08.pages.dev/labs/retrieval-and-evidence): 检验取到了什么、答案根据什么。 - [记忆读写:写入、冲突、撤回](https://codingai-lec08.pages.dev/labs/memory-write-and-read): 区分错误发生在读、挑、用还是写。 - [上下文检验:位置、长度与像指令的记录](https://codingai-lec08.pages.dev/labs/context-and-injection): 先写下预测,再比较实际输出。 ## Agent skills - [coding-with-ai-lecture-08](https://codingai-lec08.pages.dev/.well-known/agent-skills/coding-with-ai-lecture-08/SKILL.md): Read the Coding with AI · Lecture 08 docs instead of answering from memory. 检索、记忆与上下文工程 Use when a task involves Coding with AI · Lecture 08: how it works, how to set it up or configure it, or its API. ## Agent resources - [llms-full.txt](https://codingai-lec08.pages.dev/llms-full.txt): The full Markdown of every page in one file. - [Page Markdown](https://codingai-lec08.pages.dev/index.md): Append `.md` to any page URL to fetch that page as raw Markdown. - [JSON API](https://codingai-lec08.pages.dev/api/docs/pages.json): Page index of the JSON docs API; each entry links the page's JSON and Markdown forms. Described by the OpenAPI document at https://codingai-lec08.pages.dev/openapi.json. - [Agent skills](https://codingai-lec08.pages.dev/.well-known/agent-skills/index.json): Agent Skills discovery index of the skills this site publishes. - [API catalog](https://codingai-lec08.pages.dev/.well-known/api-catalog): RFC 9727 linkset of the APIs documented here. - [AI catalog](https://codingai-lec08.pages.dev/.well-known/ai-catalog.json): ARD manifest of the agent-facing resources on this site (MCP server, skills, APIs). - [agent-readability.json](https://codingai-lec08.pages.dev/agent-readability.json): Manifest of every agent-facing artifact on this site. - [Sitemap](https://codingai-lec08.pages.dev/sitemap.xml): Every indexable page URL with its last-modified date.