[{"data":1,"prerenderedAt":612},["ShallowReactive",2],{"header-counts":3,"footer-counts":6,"wiki-context-engineering":9},{"tools":4,"reviews":5},65,7,{"tools":4,"reviews":5,"playbooks":7,"news":8},10,8,{"id":10,"title":11,"body":12,"category":591,"description":52,"extension":592,"meta":593,"navigation":594,"path":595,"published":596,"relatedModels":597,"relatedTools":600,"seo":603,"slug":604,"stem":605,"summary":606,"tags":607,"updated":596,"__hash__":611},"wiki\u002Fwiki\u002Fcontext-engineering.md","Context Engineering（上下文工程）",{"type":13,"value":14,"toc":572},"minimark",[15,20,29,36,39,42,53,60,63,68,71,77,81,84,90,94,97,167,174,178,181,254,260,264,270,276,279,295,298,302,305,331,335,338,361,365,368,414,417,420,446,450,522,527,530,568],[16,17,19],"h2",{"id":18},"什么是-context-engineering","什么是 Context Engineering",[21,22,23,24,28],"p",{},"Context Engineering（上下文工程）是 Prompt Engineering 的进化版。不再只关注\"怎么写提示词\"，而是关注",[25,26,27],"strong",{},"怎么组装喂给模型的全部上下文","——系统提示、对话历史、检索结果、工具定义、few-shot 示例等。",[21,30,31,32,35],{},"核心理念：",[25,33,34],{},"LLM 的能力上限不取决于模型本身，而取决于你给它什么上下文","。",[16,37,38],{"id":38},"上下文窗口的组成",[21,40,41],{},"一个完整的 LLM 调用，上下文通常包含：",[43,44,49],"pre",{"className":45,"code":47,"language":48},[46],"language-text","┌─────────────────────────────────┐\n│ System Prompt（系统提示）        │  ← 角色设定、行为规范\n├─────────────────────────────────┤\n│ Tool Definitions（工具定义）     │  ← 可调用的函数签名\n├─────────────────────────────────┤\n│ Few-shot Examples（示例）        │  ← 输入输出范例\n├─────────────────────────────────┤\n│ Retrieved Context（检索内容）    │  ← RAG 检索的文档\n├─────────────────────────────────┤\n│ Conversation History（对话历史） │  ← 之前的对话\n├─────────────────────────────────┤\n│ Current Query（当前问题）        │  ← 用户本次输入\n└─────────────────────────────────┘\n","text",[50,51,47],"code",{"__ignoreMap":52},"",[21,54,55,56,59],{},"顺序不是随便摆的。",[25,57,58],{},"稳定的、重复出现的内容放最前面","，让 prompt cache 命中率高；动态变化的（用户当前问题）放最后。这一条规则单独就能为高频应用省下 60-90% 的 input token 成本。",[16,61,62],{"id":62},"核心原则",[64,65,67],"h3",{"id":66},"_1-信号最大化","1. 信号最大化",[21,69,70],{},"上下文中每一条信息都应该对完成任务有贡献。删掉无关内容，让模型聚焦。",[43,72,75],{"className":73,"code":74,"language":48},[46],"❌ 把整个项目代码塞进上下文\n✅ 只塞当前修改的文件 + 相关接口定义\n",[50,76,74],{"__ignoreMap":52},[64,78,80],{"id":79},"_2-噪音最小化","2. 噪音最小化",[21,82,83],{},"无关信息会分散模型注意力，降低输出质量。",[43,85,88],{"className":86,"code":87,"language":48},[46],"❌ \"你是一个 AI 助手，你有强大的能力，你的任务是...\"\n✅ \"Review this PR for security issues.\"  （直接给任务）\n",[50,89,87],{"__ignoreMap":52},[64,91,93],{"id":92},"_3-结构化","3. 结构化",[21,95,96],{},"用清晰的格式让模型快速理解上下文结构：",[43,98,102],{"className":99,"code":100,"language":101,"meta":52,"style":52},"language-xml shiki shiki-themes github-light github-dark","\u003Ccontext>\n  \u003Cfile path=\"src\u002Fauth.ts\">\n    ... file content ...\n  \u003C\u002Ffile>\n  \u003Cfile path=\"src\u002Fdb.ts\">\n    ... file content ...\n  \u003C\u002Ffile>\n\u003C\u002Fcontext>\n\u003Ctask>\n  Review the auth module for security vulnerabilities.\n\u003C\u002Ftask>\n","xml",[50,103,104,112,118,124,130,136,141,145,150,156,161],{"__ignoreMap":52},[105,106,109],"span",{"class":107,"line":108},"line",1,[105,110,111],{},"\u003Ccontext>\n",[105,113,115],{"class":107,"line":114},2,[105,116,117],{},"  \u003Cfile path=\"src\u002Fauth.ts\">\n",[105,119,121],{"class":107,"line":120},3,[105,122,123],{},"    ... file content ...\n",[105,125,127],{"class":107,"line":126},4,[105,128,129],{},"  \u003C\u002Ffile>\n",[105,131,133],{"class":107,"line":132},5,[105,134,135],{},"  \u003Cfile path=\"src\u002Fdb.ts\">\n",[105,137,139],{"class":107,"line":138},6,[105,140,123],{},[105,142,143],{"class":107,"line":5},[105,144,129],{},[105,146,147],{"class":107,"line":8},[105,148,149],{},"\u003C\u002Fcontext>\n",[105,151,153],{"class":107,"line":152},9,[105,154,155],{},"\u003Ctask>\n",[105,157,158],{"class":107,"line":7},[105,159,160],{},"  Review the auth module for security vulnerabilities.\n",[105,162,164],{"class":107,"line":163},11,[105,165,166],{},"\u003C\u002Ftask>\n",[21,168,169,170,173],{},"XML 和 Markdown 都行。Anthropic 的训练数据里 XML 标签出现频率更高，对 Claude 而言 XML 略胜；OpenAI 模型对 Markdown 表头敏感。在生产里",[25,171,172],{},"挑一种坚持用","，不要随机混搭。",[64,175,177],{"id":176},"_4-上下文缓存","4. 上下文缓存",[21,179,180],{},"对于重复出现的上下文（系统提示、工具定义），使用 prompt caching 避免重复计算：",[182,183,184,200],"table",{},[185,186,187],"thead",{},[188,189,190,194,197],"tr",{},[191,192,193],"th",{},"平台",[191,195,196],{},"机制",[191,198,199],{},"命中后价格",[201,202,203,219,230,244],"tbody",{},[188,204,205,209,216],{},[206,207,208],"td",{},"Anthropic Prompt Caching",[206,210,211,212,215],{},"显式 ",[50,213,214],{},"cache_control"," 标记",[206,217,218],{},"Input 价格 -90%",[188,220,221,224,227],{},[206,222,223],{},"OpenAI Cached Input",[206,225,226],{},"自动缓存前缀（≥ 1024 token）",[206,228,229],{},"Input 价格 -50%",[188,231,232,235,241],{},[206,233,234],{},"Gemini Context Caching",[206,236,211,237,240],{},[50,238,239],{},"cachedContent"," API",[206,242,243],{},"Input 价格 -75%（按时间收存储费）",[188,245,246,249,252],{},[206,247,248],{},"DeepSeek Context Caching",[206,250,251],{},"自动缓存",[206,253,218],{},[21,255,256,259],{},[25,257,258],{},"实测对比","：一个 50K token 的 system prompt，每次调用，开缓存与不开缓存的 input 成本差距 5-20 倍。高频调用的场景一定要开。",[16,261,263],{"id":262},"中间遗忘lost-in-the-middle","中间遗忘（Lost in the Middle）",[21,265,266,267,35],{},"上下文不是越长越好。论文与实测都显示模型对",[25,268,269],{},"首尾内容记得更牢，中间段容易被忽略",[43,271,274],{"className":272,"code":273,"language":48},[46],"[ system  | 检索结果1 | 检索结果2 | ... 检索结果10 | history | query ]\n   ↑ 强                ↑ 弱                    ↑ 强\n",[50,275,273],{"__ignoreMap":52},[21,277,278],{},"防御套路：",[280,281,282,286,289,292],"ul",{},[283,284,285],"li",{},"把关键信息放上下文开头或结尾，不要藏在中段",[283,287,288],{},"检索结果按相关度排序，最相关的放最前 \u002F 最后",[283,290,291],{},"长 history 周期性总结压缩，不要原文堆积",[283,293,294],{},"用「关键指令重复」——重要约束在 system prompt 开头说一遍、结尾再说一遍",[16,296,297],{"id":297},"实战技巧",[64,299,301],{"id":300},"cursor-的上下文管理","Cursor 的上下文管理",[21,303,304],{},"Cursor 在 Vibe Coding 时会智能组装上下文：",[280,306,307,313,319,325],{},[283,308,309,312],{},[50,310,311],{},"@file"," 引入特定文件",[283,314,315,318],{},[50,316,317],{},"@folder"," 引入整个目录",[283,320,321,324],{},[50,322,323],{},"@web"," 搜索网络内容",[283,326,327,330],{},[50,328,329],{},"@docs"," 引入文档",[64,332,334],{"id":333},"claude-code-的上下文策略","Claude Code 的上下文策略",[21,336,337],{},"Claude Code 在处理大型项目时：",[339,340,341,352,355,358],"ol",{},[283,342,343,344,347,348,351],{},"用 ",[50,345,346],{},"ls"," \u002F ",[50,349,350],{},"grep"," 探索项目结构（不盲目加载全部文件）",[283,353,354],{},"只读取相关文件",[283,356,357],{},"用 CLAUDE.md 文件保存项目约定（每次自动加载）",[283,359,360],{},"长对话时自动压缩历史",[64,362,364],{"id":363},"token-预算管理","Token 预算管理",[21,366,367],{},"200K 上下文不等于应该用满 200K。最佳实践：",[182,369,370,380],{},[185,371,372],{},[188,373,374,377],{},[191,375,376],{},"上下文用量",[191,378,379],{},"效果",[201,381,382,390,398,406],{},[188,383,384,387],{},[206,385,386],{},"\u003C 50%",[206,388,389],{},"最佳质量",[188,391,392,395],{},[206,393,394],{},"50%-80%",[206,396,397],{},"轻微退化",[188,399,400,403],{},[206,401,402],{},"80%-95%",[206,404,405],{},"明显退化（\"中间遗忘\"）",[188,407,408,411],{},[206,409,410],{},"> 95%",[206,412,413],{},"严重退化、可能超限报错",[64,415,416],{"id":416},"调试上下文",[21,418,419],{},"线上效果不对，先排查上下文而不是 prompt：",[339,421,422,428,434,440],{},[283,423,424,427],{},[25,425,426],{},"把实际发给模型的完整上下文 dump 出来","——很多框架会偷偷塞东西、截断中段。先看到真实输入。",[283,429,430,433],{},[25,431,432],{},"数 token","——是不是已经过 80%？过了就先压缩。",[283,435,436,439],{},[25,437,438],{},"关掉一半内容跑一遍","——如果效果不降反升，说明里面有噪音。",[283,441,442,445],{},[25,443,444],{},"变换顺序","——把检索结果挪到 query 之后，对比效果。Claude 对\"指令在 context 之后\"特别敏感。",[16,447,449],{"id":448},"与-prompt-engineering-的区别","与 Prompt Engineering 的区别",[182,451,452,465],{},[185,453,454],{},[188,455,456,459,462],{},[191,457,458],{},"维度",[191,460,461],{},"Prompt Engineering",[191,463,464],{},"Context Engineering",[201,466,467,478,489,500,511],{},[188,468,469,472,475],{},[206,470,471],{},"关注点",[206,473,474],{},"怎么写提示词",[206,476,477],{},"怎么组装全部上下文",[188,479,480,483,486],{},[206,481,482],{},"范围",[206,484,485],{},"单条 prompt",[206,487,488],{},"系统+工具+检索+历史+示例",[188,490,491,494,497],{},[206,492,493],{},"复杂度",[206,495,496],{},"简单",[206,498,499],{},"工程化",[188,501,502,505,508],{},[206,503,504],{},"适用",[206,506,507],{},"单次调用",[206,509,510],{},"Agent \u002F 复杂应用",[188,512,513,516,519],{},[206,514,515],{},"时代",[206,517,518],{},"2023",[206,520,521],{},"2025+",[21,523,524,35],{},[25,525,526],{},"Prompt Engineering 是 Context Engineering 的子集",[16,528,529],{"id":529},"延伸阅读",[280,531,532,540,548,560],{},[283,533,534,535,539],{},"基础：",[536,537,461],"a",{"href":538},"\u002Fwiki\u002Fprompt-engineering.html","——写好单条 prompt",[283,541,542,543,547],{},"计费视角：",[536,544,546],{"href":545},"\u002Fwiki\u002Ftoken.html","Token","——上下文长短直接对应账单",[283,549,550,551,555,556],{},"上下文来源：",[536,552,554],{"href":553},"\u002Fwiki\u002Frag.html","RAG","、",[536,557,559],{"href":558},"\u002Fwiki\u002Fembedding.html","Embedding",[283,561,562,563,567],{},"Agent 上下文：",[536,564,566],{"href":565},"\u002Fwiki\u002Fai-agent.html","AI Agent","中的 working memory",[569,570,571],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":52,"searchDepth":120,"depth":120,"links":573},[574,575,576,582,583,589,590],{"id":18,"depth":114,"text":19},{"id":38,"depth":114,"text":38},{"id":62,"depth":114,"text":62,"children":577},[578,579,580,581],{"id":66,"depth":120,"text":67},{"id":79,"depth":120,"text":80},{"id":92,"depth":120,"text":93},{"id":176,"depth":120,"text":177},{"id":262,"depth":114,"text":263},{"id":297,"depth":114,"text":297,"children":584},[585,586,587,588],{"id":300,"depth":120,"text":301},{"id":333,"depth":120,"text":334},{"id":363,"depth":120,"text":364},{"id":416,"depth":120,"text":416},{"id":448,"depth":114,"text":449},{"id":529,"depth":114,"text":529},"methodology","md",{},true,"\u002Fwiki\u002Fcontext-engineering","2026-06-21",[598,599],"claude-sonnet-4","gpt-5",[601,602],"coding\u002Fcli\u002Fclaude-code","coding\u002Fide\u002Fcursor",{"title":11,"description":52},"context-engineering","wiki\u002Fcontext-engineering","通过精心设计 prompt 上下文（系统提示、示例、检索结果、工具定义）来最大化 LLM 表现的工程方法论。",[464,608,609,610],"Prompt工程","上下文窗口","方法论","Ql_hTVQ4HUubZybSU2_YQ8WZiRR-rfsnZUy5xYVnNrc",1782316490726]