[{"data":1,"prerenderedAt":2754},["ShallowReactive",2],{"navigation":3,"\u002Fintro\u002Fagentic-loop":189,"\u002Fintro\u002Fagentic-loop-surround":2749},[4,35,57,75,101,123,149,171],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":34},"第 1 章：认识 Claude Code","i-lucide-rocket","\u002Fintro","1.intro",[10,14,18,22,26,30],{"title":11,"path":12,"stem":13},"什么是 Claude Code","\u002Fintro\u002Fwhat-is-claude-code","1.intro\u002F1.what-is-claude-code",{"title":15,"path":16,"stem":17},"Claude Code 与 Copilot、Cursor、Windsurf 的本质区别","\u002Fintro\u002Fvs-competitors","1.intro\u002F2.vs-competitors",{"title":19,"path":20,"stem":21},"AI 编程助手生态全景与选型指南","\u002Fintro\u002Fecosystem-guide","1.intro\u002F3.ecosystem-guide",{"title":23,"path":24,"stem":25},"LLM 的概率本质","\u002Fintro\u002Fllm-probability","1.intro\u002F4.llm-probability",{"title":27,"path":28,"stem":29},"从聊天机器人到 Agent","\u002Fintro\u002Ffrom-chatbot-to-agent","1.intro\u002F5.from-chatbot-to-agent",{"title":31,"path":32,"stem":33},"Claude Code 的 Agentic Loop 全拆解","\u002Fintro\u002Fagentic-loop","1.intro\u002F6.agentic-loop",false,{"title":36,"icon":37,"path":38,"stem":39,"children":40,"page":34},"第 2 章：安装与配置","i-lucide-settings","\u002Fsetup","2.setup",[41,45,49,53],{"title":42,"path":43,"stem":44},"系统要求与安装方式","\u002Fsetup\u002Fsystem-requirements","2.setup\u002F1.system-requirements",{"title":46,"path":47,"stem":48},"认证、登录与多账户管理","\u002Fsetup\u002Fauthentication","2.setup\u002F2.authentication",{"title":50,"path":51,"stem":52},"选择你的界面","\u002Fsetup\u002Fchoose-interface","2.setup\u002F3.choose-interface",{"title":54,"path":55,"stem":56},"Coding Plan","\u002Fsetup\u002Fcoding-plan","2.setup\u002F4.coding-plan",{"title":58,"icon":59,"path":60,"stem":61,"children":62,"page":34},"第 3 章：快速上手","i-lucide-hand","\u002Fquickstart","3.quickstart",[63,67,71],{"title":64,"path":65,"stem":66},"启动、交互模式与基本命令","\u002Fquickstart\u002Fstartup","3.quickstart\u002F1.startup",{"title":68,"path":69,"stem":70},"让 Claude 理解你的项目","\u002Fquickstart\u002Fcodebase-understanding","3.quickstart\u002F2.codebase-understanding",{"title":72,"path":73,"stem":74},"第一次代码变更","\u002Fquickstart\u002Ffirst-change","3.quickstart\u002F3.first-change",{"title":76,"icon":77,"path":78,"stem":79,"children":80,"page":34},"第 4 章：核心功能","i-lucide-laptop","\u002Fcore-features","4.core-features",[81,85,89,93,97],{"title":82,"path":83,"stem":84},"代码库全景扫描与模块关系分析","\u002Fcore-features\u002Fcodebase-scan","4.core-features\u002F1.codebase-scan",{"title":86,"path":87,"stem":88},"代码编辑与生成","\u002Fcore-features\u002Fedit-generate","4.core-features\u002F2.edit-generate",{"title":90,"path":91,"stem":92},"测试与调试","\u002Fcore-features\u002Ftest-debug","4.core-features\u002F3.test-debug",{"title":94,"path":95,"stem":96},"Git 工作流","\u002Fcore-features\u002Fgit-workflow","4.core-features\u002F4.git-workflow",{"title":98,"path":99,"stem":100},"工具链执行","\u002Fcore-features\u002Ftoolchain","4.core-features\u002F5.toolchain",{"title":102,"icon":103,"path":104,"stem":105,"children":106,"page":34},"第 5 章：进阶配置","i-lucide-wrench","\u002Fadvanced","5.advanced",[107,111,115,119],{"title":108,"path":109,"stem":110},"CLAUDE.md","\u002Fadvanced\u002Fclaude-md","5.advanced\u002F1.claude-md",{"title":112,"path":113,"stem":114},"Skills","\u002Fadvanced\u002Fskills","5.advanced\u002F2.skills",{"title":116,"path":117,"stem":118},"MCP","\u002Fadvanced\u002Fmcp","5.advanced\u002F3.mcp",{"title":120,"path":121,"stem":122},"Hooks 与 Plan 模式","\u002Fadvanced\u002Fhooks-plan","5.advanced\u002F4.hooks-plan",{"title":124,"icon":125,"path":126,"stem":127,"children":128,"page":34},"第 6 章：实战开发","i-lucide-hammer","\u002Fpractice","6.practice",[129,133,137,141,145],{"title":130,"path":131,"stem":132},"需求分析与架构设计","\u002Fpractice\u002Frequirements-architecture","6.practice\u002F1.requirements-architecture",{"title":134,"path":135,"stem":136},"项目脚手架搭建与技术选型","\u002Fpractice\u002Fscaffolding","6.practice\u002F2.scaffolding",{"title":138,"path":139,"stem":140},"核心功能实现","\u002Fpractice\u002Fcore-features","6.practice\u002F3.core-features",{"title":142,"path":143,"stem":144},"测试覆盖、代码审查与质量调优","\u002Fpractice\u002Ftesting-quality","6.practice\u002F4.testing-quality",{"title":146,"path":147,"stem":148},"部署上线与成果分享","\u002Fpractice\u002Fdeployment","6.practice\u002F5.deployment",{"title":150,"icon":151,"path":152,"stem":153,"children":154,"page":34},"第 7 章：心法层","i-lucide-brain","\u002Fmindset","7.mindset",[155,159,163,167],{"title":156,"path":157,"stem":158},"提示词设计原则","\u002Fmindset\u002Fprompt-design","7.mindset\u002F1.prompt-design",{"title":160,"path":161,"stem":162},"上下文管理策略","\u002Fmindset\u002Fcontext-management","7.mindset\u002F2.context-management",{"title":164,"path":165,"stem":166},"安全与权限控制","\u002Fmindset\u002Fsecurity","7.mindset\u002F3.security",{"title":168,"path":169,"stem":170},"Boris Cherny 的 9 条实战心法与团队推广经验","\u002Fmindset\u002Fboris-cherny-tips","7.mindset\u002F4.boris-cherny-tips",{"title":172,"icon":173,"path":174,"stem":175,"children":176,"page":34},"附录","i-lucide-paperclip","\u002Fappendix","8.appendix",[177,181,185],{"title":178,"path":179,"stem":180},"常用命令速查表","\u002Fappendix\u002Fa.command-cheatsheet","8.appendix\u002Fa.command-cheatsheet",{"title":182,"path":183,"stem":184},"AI 核心术语汇编","\u002Fappendix\u002Fb.ai-terminology","8.appendix\u002Fb.ai-terminology",{"title":186,"path":187,"stem":188},"资源链接与延伸阅读","\u002Fappendix\u002Fc.resources","8.appendix\u002Fc.resources",{"id":190,"title":31,"body":191,"description":221,"extension":2743,"links":2744,"meta":2745,"navigation":497,"path":32,"seo":2747,"stem":33,"__hash__":2748},"docs\u002F1.intro\u002F6.agentic-loop.md",{"type":192,"value":193,"toc":2697},"minimark",[194,199,203,208,211,222,251,254,258,265,271,274,360,378,381,385,389,392,398,409,413,424,753,760,779,783,793,796,808,810,814,817,821,828,832,839,870,873,876,879,958,972,976,983,987,994,1322,1333,1337,1344,1347,1353,1357,1364,1367,1370,1481,1484,1614,1617,1620,1641,1645,1652,1655,1661,1667,1671,1674,1677,1684,1695,1698,1701,1707,1710,1717,1721,1724,1758,1760,1764,1771,1777,1781,1784,1879,1884,1888,1895,1930,1943,1955,1959,1965,1972,1974,1978,1982,2068,2071,2075,2081,2084,2104,2111,2115,2118,2124,2135,2137,2141,2148,2152,2159,2165,2169,2173,2176,2189,2193,2204,2210,2214,2217,2221,2230,2233,2244,2248,2251,2254,2258,2263,2301,2307,2309,2313,2316,2320,2326,2330,2415,2417,2421,2424,2428,2434,2438,2441,2445,2448,2462,2465,2469,2472,2485,2488,2490,2494,2500,2538,2541,2552,2554,2557,2693],[195,196,198],"h2",{"id":197},"一什么是-agentic-loop","一、什么是 Agentic Loop",[200,201,202],"p",{},"Agentic Loop（智能体循环）是 AI Agent 系统的核心执行范式。它描述了一个自主系统如何持续地与环境交互、做出决策并执行动作，直到完成目标。这个概念的根源可以追溯到控制论中的反馈循环，但在 LLM 时代被赋予了全新的形态。",[204,205,207],"h3",{"id":206},"_11-通用模型观察-规划-行动-反思","1.1 通用模型：观察-规划-行动-反思",[200,209,210],{},"学术界对 Agentic Loop 的通用定义通常包含四个阶段：",[212,213,218],"pre",{"className":214,"code":216,"language":217},[215],"language-text","┌─────────────┐     ┌─────────────┐     ┌─────────────┐     ┌─────────────┐\n│   观察      │────▶│   规划      │────▶│   行动      │────▶│   反思      │\n│  (Observe)  │     │  (Plan)     │     │  (Act)      │     │ (Reflect)   │\n└─────────────┘     └─────────────┘     └─────────────┘     └──────┬──────┘\n                                                                    │\n◀───────────────────────────────────────────────────────────────────┘\n                              循环反馈\n","text",[219,220,216],"code",{"__ignoreMap":221},"",[223,224,225,233,239,245],"ul",{},[226,227,228,232],"li",{},[229,230,231],"strong",{},"观察（Observe）","：感知环境状态，收集信息。对 Claude Code 而言，就是读取文件、执行命令、搜索代码库。",[226,234,235,238],{},[229,236,237],{},"规划（Plan）","：基于观察结果，制定达成目标的策略。Claude Code 会生成 TODO 列表、多步计划。",[226,240,241,244],{},[229,242,243],{},"行动（Act）","：执行计划中的具体步骤。包括编辑文件、运行测试、调用外部工具。",[226,246,247,250],{},[229,248,249],{},"反思（Reflect）","：评估行动结果，判断是否达成目标，或需要调整策略。Claude Code 通过测试输出、错误信息来验证。",[200,252,253],{},"这个循环持续运行，直到任务完成或达到终止条件。",[204,255,257],{"id":256},"_12-从-react-到-claude-code","1.2 从 ReAct 到 Claude Code",[200,259,260,261,264],{},"2022 年，Yao 等人提出了 ",[229,262,263],{},"ReAct（Reasoning + Acting）"," 框架，首次将推理与行动显式地交织在一个循环中。ReAct 的核心洞见是：LLM 不应该一次性生成完整答案，而应该通过\"思考-行动-观察\"的迭代过程逐步逼近目标。",[212,266,269],{"className":267,"code":268,"language":217},[215],"ReAct 循环：\n  Thought  →  Action  →  Observation\n     ↑                        │\n     └────────────────────────┘\n",[219,270,268],{"__ignoreMap":221},[200,272,273],{},"Claude Code 的 Agentic Loop 是 ReAct 的工程化实现，但做了关键性的扩展：",[275,276,277,293],"table",{},[278,279,280],"thead",{},[281,282,283,287,290],"tr",{},[284,285,286],"th",{},"维度",[284,288,289],{},"ReAct（论文）",[284,291,292],{},"Claude Code（工程实现）",[294,295,296,308,319,329,340,350],"tbody",{},[281,297,298,302,305],{},[299,300,301],"td",{},"工具数量",[299,303,304],{},"2-3 个简单工具",[299,306,307],{},"30+ 内置工具 + MCP 扩展",[281,309,310,313,316],{},[299,311,312],{},"上下文管理",[299,314,315],{},"无",[299,317,318],{},"五层 Compaction 管道",[281,320,321,324,326],{},[299,322,323],{},"安全机制",[299,325,315],{},[299,327,328],{},"七模式权限系统 + ML 分类器",[281,330,331,334,337],{},[299,332,333],{},"并行能力",[299,335,336],{},"单线程",[299,338,339],{},"子代理并行 + 后台任务",[281,341,342,345,347],{},[299,343,344],{},"持久化",[299,346,315],{},[299,348,349],{},"Session 存储 + 检查点",[281,351,352,355,357],{},[299,353,354],{},"人机协作",[299,356,315],{},[299,358,359],{},"实时干预 + Plan Mode",[200,361,362,363,366,367],{},"正如 Anthropic 官方文档所述：\"Claude Code serves as the ",[229,364,365],{},"agentic harness"," around Claude: it provides the tools, context management, and execution environment that turn a language model into a capable coding agent.\"",[368,369,370],"sup",{},[371,372,377],"a",{"href":373,"ariaDescribedBy":374,"dataFootnoteRef":221,"id":376},"#user-content-fn-1",[375],"footnote-label","user-content-fnref-1","1",[379,380],"hr",{},[195,382,384],{"id":383},"二claude-code-的执行流程全景","二、Claude Code 的执行流程全景",[204,386,388],{"id":387},"_21-核心架构三层系统","2.1 核心架构：三层系统",[200,390,391],{},"Claude Code 的架构可以抽象为三个层次：",[212,393,396],{"className":394,"code":395,"language":217},[215],"┌─────────────────────────────────────────────────────────────┐\n│                    用户交互层                                │\n│         (CLI \u002F VS Code \u002F IDE \u002F Web \u002F Desktop)               │\n├─────────────────────────────────────────────────────────────┤\n│                    Agent 核心调度层                          │\n│  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────────┐   │\n│  │ StreamGen│  │ToolEngine│  │Scheduler│  │Compressor   │   │\n│  │(流输出)  │  │(工具执行)│  │(查询队列)│  │wU2(压缩)    │   │\n│  └─────────┘  └─────────┘  └─────────┘  └─────────────┘   │\n│                                                             │\n│  ┌─────────────────────────────────────────────────────┐   │\n│  │           主循环引擎 nO (Master Agent Loop)          │   │\n│  │     while(tool_call) → execute → feed → repeat      │   │\n│  └─────────────────────────────────────────────────────┘   │\n│                                                             │\n│  ┌─────────────────────────────────────────────────────┐   │\n│  │         异步双缓冲队列 h2A (实时干预)                 │   │\n│  │    支持暂停\u002F恢复，用户可在执行中注入新指令            │   │\n│  └─────────────────────────────────────────────────────┘   │\n├─────────────────────────────────────────────────────────────┤\n│                    工具执行层                                │\n│  ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌────────┐  │\n│  │ Read │ │ Edit │ │ Bash │ │ Grep │ │ Glob │ │  MCP   │  │\n│  │ Write│ │ Skill│ │ Agent│ │ Todo │ │ Web  │ │ ...    │  │\n│  └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ └────────┘  │\n└─────────────────────────────────────────────────────────────┘\n",[219,397,395],{"__ignoreMap":221},[200,399,400,401],{},"这个架构的核心设计哲学是**\"做简单的事优先\"**——选择正则表达式而非向量数据库进行搜索，选择 Markdown 文件而非数据库进行记忆存储。PromptLayer 的分析文章指出：\"The thesis is straightforward: a simple, single-threaded master loop combined with disciplined tools and planning delivers controllable autonomy.\"",[368,402,403],{},[371,404,408],{"href":405,"ariaDescribedBy":406,"dataFootnoteRef":221,"id":407},"#user-content-fn-2",[375],"user-content-fnref-2","2",[204,410,412],{"id":411},"_22-主循环引擎-no","2.2 主循环引擎 nO",[200,414,415,416,419,420,423],{},"Claude Code 的心脏是一个极简的 ",[219,417,418],{},"while(tool_call)"," 循环，内部代号 ",[229,421,422],{},"nO","（nO 和 h2A 均为源码 minify 后的标识符，已被多个独立逆向工程分析公开使用）。其伪代码如下：",[212,425,429],{"className":426,"code":427,"language":428,"meta":221,"style":221},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F 伪代码示意，非源码真实函数名（基于源码分析）\nwhile (true) {\n  \u002F\u002F 1. 接收当前状态：系统提示 + 对话历史 + 工具定义\n  const state = buildContext();\n\n  \u002F\u002F 2. 调用 Claude 模型进行推理\n  const response = await anthropic.messages.create({ ...state });\n\n  \u002F\u002F 3. 解析响应：可能包含文本 + 工具调用请求\n  const { text, toolCalls } = parseResponse(response);\n\n  \u002F\u002F 4. 如果没有工具调用，循环终止，返回最终结果\n  if (toolCalls.length === 0) {\n    yield ResultMessage({ text, cost, usage, sessionId });\n    break;\n  }\n\n  \u002F\u002F 5. 执行工具调用（只读工具可并行，写入工具串行）\n  const results = await executeTools(toolCalls);\n\n  \u002F\u002F 6. 将结果反馈给模型，进入下一轮\n  appendToHistory(toolCalls, results);\n}\n","typescript",[219,430,431,440,462,468,492,499,505,552,557,563,596,601,607,634,670,678,684,689,695,718,723,729,747],{"__ignoreMap":221},[432,433,436],"span",{"class":434,"line":435},"line",1,[432,437,439],{"class":438},"sHwdD","\u002F\u002F 伪代码示意，非源码真实函数名（基于源码分析）\n",[432,441,443,447,451,455,458],{"class":434,"line":442},2,[432,444,446],{"class":445},"s7zQu","while",[432,448,450],{"class":449},"sTEyZ"," (",[432,452,454],{"class":453},"sfNiH","true",[432,456,457],{"class":449},") ",[432,459,461],{"class":460},"sMK4o","{\n",[432,463,465],{"class":434,"line":464},3,[432,466,467],{"class":438},"  \u002F\u002F 1. 接收当前状态：系统提示 + 对话历史 + 工具定义\n",[432,469,471,475,478,481,485,489],{"class":434,"line":470},4,[432,472,474],{"class":473},"spNyl","  const",[432,476,477],{"class":449}," state",[432,479,480],{"class":460}," =",[432,482,484],{"class":483},"s2Zo4"," buildContext",[432,486,488],{"class":487},"swJcz","()",[432,490,491],{"class":460},";\n",[432,493,495],{"class":434,"line":494},5,[432,496,498],{"emptyLinePlaceholder":497},true,"\n",[432,500,502],{"class":434,"line":501},6,[432,503,504],{"class":438},"  \u002F\u002F 2. 调用 Claude 模型进行推理\n",[432,506,508,510,513,515,518,521,524,527,529,532,535,538,541,544,547,550],{"class":434,"line":507},7,[432,509,474],{"class":473},[432,511,512],{"class":449}," response",[432,514,480],{"class":460},[432,516,517],{"class":445}," await",[432,519,520],{"class":449}," anthropic",[432,522,523],{"class":460},".",[432,525,526],{"class":449},"messages",[432,528,523],{"class":460},[432,530,531],{"class":483},"create",[432,533,534],{"class":487},"(",[432,536,537],{"class":460},"{",[432,539,540],{"class":460}," ...",[432,542,543],{"class":449},"state",[432,545,546],{"class":460}," }",[432,548,549],{"class":487},")",[432,551,491],{"class":460},[432,553,555],{"class":434,"line":554},8,[432,556,498],{"emptyLinePlaceholder":497},[432,558,560],{"class":434,"line":559},9,[432,561,562],{"class":438},"  \u002F\u002F 3. 解析响应：可能包含文本 + 工具调用请求\n",[432,564,566,568,571,574,577,580,582,584,587,589,592,594],{"class":434,"line":565},10,[432,567,474],{"class":473},[432,569,570],{"class":460}," {",[432,572,573],{"class":449}," text",[432,575,576],{"class":460},",",[432,578,579],{"class":449}," toolCalls",[432,581,546],{"class":460},[432,583,480],{"class":460},[432,585,586],{"class":483}," parseResponse",[432,588,534],{"class":487},[432,590,591],{"class":449},"response",[432,593,549],{"class":487},[432,595,491],{"class":460},[432,597,599],{"class":434,"line":598},11,[432,600,498],{"emptyLinePlaceholder":497},[432,602,604],{"class":434,"line":603},12,[432,605,606],{"class":438},"  \u002F\u002F 4. 如果没有工具调用，循环终止，返回最终结果\n",[432,608,610,613,615,618,620,623,626,630,632],{"class":434,"line":609},13,[432,611,612],{"class":445},"  if",[432,614,450],{"class":487},[432,616,617],{"class":449},"toolCalls",[432,619,523],{"class":460},[432,621,622],{"class":449},"length",[432,624,625],{"class":460}," ===",[432,627,629],{"class":628},"sbssI"," 0",[432,631,457],{"class":487},[432,633,461],{"class":460},[432,635,637,640,643,645,647,649,651,654,656,659,661,664,666,668],{"class":434,"line":636},14,[432,638,639],{"class":445},"    yield",[432,641,642],{"class":483}," ResultMessage",[432,644,534],{"class":487},[432,646,537],{"class":460},[432,648,573],{"class":449},[432,650,576],{"class":460},[432,652,653],{"class":449}," cost",[432,655,576],{"class":460},[432,657,658],{"class":449}," usage",[432,660,576],{"class":460},[432,662,663],{"class":449}," sessionId",[432,665,546],{"class":460},[432,667,549],{"class":487},[432,669,491],{"class":460},[432,671,673,676],{"class":434,"line":672},15,[432,674,675],{"class":445},"    break",[432,677,491],{"class":460},[432,679,681],{"class":434,"line":680},16,[432,682,683],{"class":460},"  }\n",[432,685,687],{"class":434,"line":686},17,[432,688,498],{"emptyLinePlaceholder":497},[432,690,692],{"class":434,"line":691},18,[432,693,694],{"class":438},"  \u002F\u002F 5. 执行工具调用（只读工具可并行，写入工具串行）\n",[432,696,698,700,703,705,707,710,712,714,716],{"class":434,"line":697},19,[432,699,474],{"class":473},[432,701,702],{"class":449}," results",[432,704,480],{"class":460},[432,706,517],{"class":445},[432,708,709],{"class":483}," executeTools",[432,711,534],{"class":487},[432,713,617],{"class":449},[432,715,549],{"class":487},[432,717,491],{"class":460},[432,719,721],{"class":434,"line":720},20,[432,722,498],{"emptyLinePlaceholder":497},[432,724,726],{"class":434,"line":725},21,[432,727,728],{"class":438},"  \u002F\u002F 6. 将结果反馈给模型，进入下一轮\n",[432,730,732,735,737,739,741,743,745],{"class":434,"line":731},22,[432,733,734],{"class":483},"  appendToHistory",[432,736,534],{"class":487},[432,738,617],{"class":449},[432,740,576],{"class":460},[432,742,702],{"class":449},[432,744,549],{"class":487},[432,746,491],{"class":460},[432,748,750],{"class":434,"line":749},23,[432,751,752],{"class":460},"}\n",[200,754,755,756,759],{},"这个循环的优雅之处在于其",[229,757,758],{},"约束驱动设计","：",[223,761,762,767,773],{},[226,763,764,766],{},[229,765,336],{},"：维护一个扁平的消息历史列表，没有复杂的多线程竞争",[226,768,769,772],{},[229,770,771],{},"最多一个子代理分支","：防止代理无限增殖导致的混乱",[226,774,775,778],{},[229,776,777],{},"流式优先","：API 响应以 Server-Sent Events 形式增量到达，工具调用在流中即被检测并触发执行",[204,780,782],{"id":781},"_23-实时干预机制-h2a","2.3 实时干预机制 h2A",[200,784,785,788,789,792],{},[229,786,787],{},"h2A"," 是一个异步双缓冲队列，它的特殊之处在于支持",[229,790,791],{},"暂停\u002F恢复","，并能在任务执行中无缝融入用户的临时指令。",[200,794,795],{},"假设 Claude 正在进行一个复杂重构，你突然意识到需要添加一个约束条件。在传统批处理模式下，你需要停止一切重新开始。但 h2A 允许你将新指令注入队列，Claude 会动态调整计划继续执行。",[797,798,799],"blockquote",{},[200,800,801,802],{},"\"This queue cooperates with nO to create truly interactive, streaming conversations. Rather than waiting for one massive completion, users experience a dynamic back-and-forth where they can guide, correct, or enhance Claude's work in real-time.\"",[368,803,804],{},[371,805,408],{"href":405,"ariaDescribedBy":806,"dataFootnoteRef":221,"id":807},[375],"user-content-fnref-2-2",[379,809],{},[195,811,813],{"id":812},"三六步拆解从用户输入到最终交付","三、六步拆解：从用户输入到最终交付",[200,815,816],{},"让我们追踪一次完整的 Claude Code 会话，拆解每个步骤的内部机制。",[204,818,820],{"id":819},"_31-步骤一读取代码库上下文构建","3.1 步骤一：读取代码库（上下文构建）",[200,822,823,824,827],{},"当用户输入一个任务（如\"修复 auth 模块的测试失败\"），Claude Code 首先进入",[229,825,826],{},"上下文收集阶段","。",[829,830,831],"h4",{"id":831},"文件选择策略",[200,833,834,835,838],{},"Claude Code 不会一次性读取整个代码库。它采用",[229,836,837],{},"按需发现","策略：",[840,841,842,852,861],"ol",{},[226,843,844,847,848,851],{},[229,845,846],{},"初始扫描","：使用 ",[219,849,850],{},"Glob"," 工具获取项目结构概览",[226,853,854,847,857,860],{},[229,855,856],{},"关键词搜索",[219,858,859],{},"Grep"," 工具搜索与任务相关的代码片段",[226,862,863,847,866,869],{},[229,864,865],{},"定向读取",[219,867,868],{},"Read"," 工具深入阅读关键文件",[200,871,872],{},"值得注意的是，业界曾推测 Anthropic 可能利用其投资的 Voyage AI 进行语义搜索实验，但最终产品采用了基于 ripgrep 的代理式搜索。原因很务实：Claude 已经深刻理解代码结构，能够构造复杂的正则表达式，维护向量索引的复杂性和开销并不值得。",[829,874,875],{"id":875},"上下文窗口的构成",[200,877,878],{},"在 Claude 做任何推理之前，以下信息已经被加载到上下文中：",[275,880,881,894],{},[278,882,883],{},[281,884,885,888,891],{},[284,886,887],{},"来源",[284,889,890],{},"加载时机",[284,892,893],{},"影响",[294,895,896,907,917,927,938,948],{},[281,897,898,901,904],{},[299,899,900],{},"系统提示",[299,902,903],{},"每次请求",[299,905,906],{},"固定小成本，始终存在",[281,908,909,911,914],{},[299,910,108],{},[299,912,913],{},"Session 启动",[299,915,916],{},"完整内容（但 prompt-cached）",[281,918,919,922,924],{},[299,920,921],{},"工具定义",[299,923,903],{},[299,925,926],{},"每个工具增加 schema 开销",[281,928,929,932,935],{},[299,930,931],{},"对话历史",[299,933,934],{},"跨轮次累积",[299,936,937],{},"持续增长",[281,939,940,943,945],{},[299,941,942],{},"Skill 描述",[299,944,913],{},[299,946,947],{},"短摘要，使用时加载完整内容",[281,949,950,953,955],{},[299,951,952],{},"Auto Memory",[299,954,913],{},[299,956,957],{},"前 200 行或 25KB",[797,959,960],{},[200,961,962,963,971],{},"据第三方逆向工程分析，\"System prompts, tool definitions, MCP schemas, and memory files consume 30,000-40,000 tokens before you type anything. Performance starts degrading around 147K tokens, not 200K.\"",[368,964,965],{},[371,966,970],{"href":967,"ariaDescribedBy":968,"dataFootnoteRef":221,"id":969},"#user-content-fn-3",[375],"user-content-fnref-3","3","（非官方确认数据）",[204,973,975],{"id":974},"_32-步骤二规划思维链与多步计划","3.2 步骤二：规划（思维链与多步计划）",[200,977,978,979,982],{},"在理解代码库后，Claude 进入",[229,980,981],{},"规划阶段","。这一阶段的核心输出是：",[829,984,986],{"id":985},"todo-列表","TODO 列表",[200,988,989,990,993],{},"Claude Code 会调用 ",[219,991,992],{},"TodoWrite"," 工具创建一个结构化的 JSON 任务列表，包含 ID、内容、状态和优先级。这不仅是内部记账——UI 会将这些渲染为交互式检查清单，让用户看到 Claude 的计划过程。",[212,995,999],{"className":996,"code":997,"language":998,"meta":221,"style":221},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"todos\": [\n    { \"id\": \"1\", \"content\": \"运行测试套件定位失败用例\", \"status\": \"completed\", \"priority\": \"high\" },\n    { \"id\": \"2\", \"content\": \"读取 auth.ts 和 auth.test.ts 理解代码\", \"status\": \"in_progress\", \"priority\": \"high\" },\n    { \"id\": \"3\", \"content\": \"修复认证逻辑中的边界条件\", \"status\": \"pending\", \"priority\": \"high\" },\n    { \"id\": \"4\", \"content\": \"重新运行测试验证修复\", \"status\": \"pending\", \"priority\": \"high\" }\n  ]\n}\n","json",[219,1000,1001,1005,1022,1102,1172,1242,1313,1318],{"__ignoreMap":221},[432,1002,1003],{"class":434,"line":435},[432,1004,461],{"class":460},[432,1006,1007,1010,1013,1016,1019],{"class":434,"line":442},[432,1008,1009],{"class":460},"  \"",[432,1011,1012],{"class":473},"todos",[432,1014,1015],{"class":460},"\"",[432,1017,1018],{"class":460},":",[432,1020,1021],{"class":460}," [\n",[432,1023,1024,1027,1030,1034,1036,1038,1040,1043,1045,1047,1049,1052,1054,1056,1058,1061,1063,1065,1067,1070,1072,1074,1076,1079,1081,1083,1085,1088,1090,1092,1094,1097,1099],{"class":434,"line":464},[432,1025,1026],{"class":460},"    {",[432,1028,1029],{"class":460}," \"",[432,1031,1033],{"class":1032},"sBMFI","id",[432,1035,1015],{"class":460},[432,1037,1018],{"class":460},[432,1039,1029],{"class":460},[432,1041,377],{"class":1042},"sfazB",[432,1044,1015],{"class":460},[432,1046,576],{"class":460},[432,1048,1029],{"class":460},[432,1050,1051],{"class":1032},"content",[432,1053,1015],{"class":460},[432,1055,1018],{"class":460},[432,1057,1029],{"class":460},[432,1059,1060],{"class":1042},"运行测试套件定位失败用例",[432,1062,1015],{"class":460},[432,1064,576],{"class":460},[432,1066,1029],{"class":460},[432,1068,1069],{"class":1032},"status",[432,1071,1015],{"class":460},[432,1073,1018],{"class":460},[432,1075,1029],{"class":460},[432,1077,1078],{"class":1042},"completed",[432,1080,1015],{"class":460},[432,1082,576],{"class":460},[432,1084,1029],{"class":460},[432,1086,1087],{"class":1032},"priority",[432,1089,1015],{"class":460},[432,1091,1018],{"class":460},[432,1093,1029],{"class":460},[432,1095,1096],{"class":1042},"high",[432,1098,1015],{"class":460},[432,1100,1101],{"class":460}," },\n",[432,1103,1104,1106,1108,1110,1112,1114,1116,1118,1120,1122,1124,1126,1128,1130,1132,1135,1137,1139,1141,1143,1145,1147,1149,1152,1154,1156,1158,1160,1162,1164,1166,1168,1170],{"class":434,"line":470},[432,1105,1026],{"class":460},[432,1107,1029],{"class":460},[432,1109,1033],{"class":1032},[432,1111,1015],{"class":460},[432,1113,1018],{"class":460},[432,1115,1029],{"class":460},[432,1117,408],{"class":1042},[432,1119,1015],{"class":460},[432,1121,576],{"class":460},[432,1123,1029],{"class":460},[432,1125,1051],{"class":1032},[432,1127,1015],{"class":460},[432,1129,1018],{"class":460},[432,1131,1029],{"class":460},[432,1133,1134],{"class":1042},"读取 auth.ts 和 auth.test.ts 理解代码",[432,1136,1015],{"class":460},[432,1138,576],{"class":460},[432,1140,1029],{"class":460},[432,1142,1069],{"class":1032},[432,1144,1015],{"class":460},[432,1146,1018],{"class":460},[432,1148,1029],{"class":460},[432,1150,1151],{"class":1042},"in_progress",[432,1153,1015],{"class":460},[432,1155,576],{"class":460},[432,1157,1029],{"class":460},[432,1159,1087],{"class":1032},[432,1161,1015],{"class":460},[432,1163,1018],{"class":460},[432,1165,1029],{"class":460},[432,1167,1096],{"class":1042},[432,1169,1015],{"class":460},[432,1171,1101],{"class":460},[432,1173,1174,1176,1178,1180,1182,1184,1186,1188,1190,1192,1194,1196,1198,1200,1202,1205,1207,1209,1211,1213,1215,1217,1219,1222,1224,1226,1228,1230,1232,1234,1236,1238,1240],{"class":434,"line":494},[432,1175,1026],{"class":460},[432,1177,1029],{"class":460},[432,1179,1033],{"class":1032},[432,1181,1015],{"class":460},[432,1183,1018],{"class":460},[432,1185,1029],{"class":460},[432,1187,970],{"class":1042},[432,1189,1015],{"class":460},[432,1191,576],{"class":460},[432,1193,1029],{"class":460},[432,1195,1051],{"class":1032},[432,1197,1015],{"class":460},[432,1199,1018],{"class":460},[432,1201,1029],{"class":460},[432,1203,1204],{"class":1042},"修复认证逻辑中的边界条件",[432,1206,1015],{"class":460},[432,1208,576],{"class":460},[432,1210,1029],{"class":460},[432,1212,1069],{"class":1032},[432,1214,1015],{"class":460},[432,1216,1018],{"class":460},[432,1218,1029],{"class":460},[432,1220,1221],{"class":1042},"pending",[432,1223,1015],{"class":460},[432,1225,576],{"class":460},[432,1227,1029],{"class":460},[432,1229,1087],{"class":1032},[432,1231,1015],{"class":460},[432,1233,1018],{"class":460},[432,1235,1029],{"class":460},[432,1237,1096],{"class":1042},[432,1239,1015],{"class":460},[432,1241,1101],{"class":460},[432,1243,1244,1246,1248,1250,1252,1254,1256,1259,1261,1263,1265,1267,1269,1271,1273,1276,1278,1280,1282,1284,1286,1288,1290,1292,1294,1296,1298,1300,1302,1304,1306,1308,1310],{"class":434,"line":501},[432,1245,1026],{"class":460},[432,1247,1029],{"class":460},[432,1249,1033],{"class":1032},[432,1251,1015],{"class":460},[432,1253,1018],{"class":460},[432,1255,1029],{"class":460},[432,1257,1258],{"class":1042},"4",[432,1260,1015],{"class":460},[432,1262,576],{"class":460},[432,1264,1029],{"class":460},[432,1266,1051],{"class":1032},[432,1268,1015],{"class":460},[432,1270,1018],{"class":460},[432,1272,1029],{"class":460},[432,1274,1275],{"class":1042},"重新运行测试验证修复",[432,1277,1015],{"class":460},[432,1279,576],{"class":460},[432,1281,1029],{"class":460},[432,1283,1069],{"class":1032},[432,1285,1015],{"class":460},[432,1287,1018],{"class":460},[432,1289,1029],{"class":460},[432,1291,1221],{"class":1042},[432,1293,1015],{"class":460},[432,1295,576],{"class":460},[432,1297,1029],{"class":460},[432,1299,1087],{"class":1032},[432,1301,1015],{"class":460},[432,1303,1018],{"class":460},[432,1305,1029],{"class":460},[432,1307,1096],{"class":1042},[432,1309,1015],{"class":460},[432,1311,1312],{"class":460}," }\n",[432,1314,1315],{"class":434,"line":507},[432,1316,1317],{"class":460},"  ]\n",[432,1319,1320],{"class":434,"line":554},[432,1321,752],{"class":460},[797,1323,1324],{},[200,1325,1326,1327],{},"\"Behind the scenes, the system uses reminders to keep Claude focused: after tool uses, system messages inject the current TODO list state, preventing the model from losing track of its objectives in long conversations.\"",[368,1328,1329],{},[371,1330,408],{"href":405,"ariaDescribedBy":1331,"dataFootnoteRef":221,"id":1332},[375],"user-content-fnref-2-3",[829,1334,1336],{"id":1335},"plan-mode","Plan Mode",[200,1338,1339,1340,1343],{},"对于复杂任务，用户可以显式进入 Plan Mode（按 ",[219,1341,1342],{},"Shift+Tab"," 切换）。在此模式下，Claude 仅使用只读工具（Read、Grep、Glob）分析代码库，生成详细计划供用户审阅后再执行。",[200,1345,1346],{},"Plan Mode 的工作流：",[212,1348,1351],{"className":1349,"code":1350,"language":217},[215],"用户请求 ──▶ Plan Mode 分析 ──▶ 生成结构化计划 ──▶ 用户审阅\u002F修改 ──▶ 批准执行 ──▶ 实施变更\n                │                                              │\n                └────────────── 只读工具 only ──────────────────┘\n",[219,1352,1350],{"__ignoreMap":221},[204,1354,1356],{"id":1355},"_33-步骤三执行文件编辑与命令执行","3.3 步骤三：执行（文件编辑与命令执行）",[200,1358,1359,1360,1363],{},"规划完成后，Claude 进入",[229,1361,1362],{},"执行阶段","，调用工具进行实际操作。",[829,1365,1366],{"id":1366},"核心工具集",[200,1368,1369],{},"Claude Code 拥有约 30 个内置工具，分为五大类：",[275,1371,1372,1385],{},[278,1373,1374],{},[281,1375,1376,1379,1382],{},[284,1377,1378],{},"类别",[284,1380,1381],{},"工具",[284,1383,1384],{},"功能",[294,1386,1387,1408,1424,1442,1460],{},[281,1388,1389,1394,1405],{},[299,1390,1391],{},[229,1392,1393],{},"文件操作",[299,1395,1396,1398,1399,1398,1402],{},[219,1397,868],{},", ",[219,1400,1401],{},"Edit",[219,1403,1404],{},"Write",[299,1406,1407],{},"读取、修改、创建文件",[281,1409,1410,1415,1421],{},[299,1411,1412],{},[229,1413,1414],{},"搜索",[299,1416,1417,1398,1419],{},[219,1418,850],{},[219,1420,859],{},[299,1422,1423],{},"按模式查找文件、正则搜索内容",[281,1425,1426,1431,1439],{},[299,1427,1428],{},[229,1429,1430],{},"执行",[299,1432,1433,1398,1436],{},[219,1434,1435],{},"Bash",[219,1437,1438],{},"Monitor",[299,1440,1441],{},"运行 shell 命令、后台监控",[281,1443,1444,1449,1457],{},[299,1445,1446],{},[229,1447,1448],{},"Web",[299,1450,1451,1398,1454],{},[219,1452,1453],{},"WebSearch",[219,1455,1456],{},"WebFetch",[299,1458,1459],{},"搜索网页、获取页面内容",[281,1461,1462,1467,1478],{},[299,1463,1464],{},[229,1465,1466],{},"编排",[299,1468,1469,1398,1472,1398,1475],{},[219,1470,1471],{},"Agent",[219,1473,1474],{},"Skill",[219,1476,1477],{},"AskUserQuestion",[299,1479,1480],{},"子代理、技能、询问用户",[200,1482,1483],{},"每个工具遵循统一的接口模式：",[212,1485,1487],{"className":426,"code":1486,"language":428,"meta":221,"style":221},"\u002F\u002F 基于源码分析的示意性接口定义\ninterface Tool {\n  \u002F\u002F 1. 输入 schema（执行前用 Zod 验证）\n  inputSchema: z.ZodSchema;\n\n  \u002F\u002F 2. 权限检查（返回 allow \u002F deny \u002F ask）\n  checkPermissions(params): PermissionResult;\n\n  \u002F\u002F 3. 执行逻辑\n  execute(params): ToolResult;\n\n  \u002F\u002F 4. UI 渲染器（终端显示）\n  render(result): UINode;  \u002F\u002F UI 渲染节点\n}\n",[219,1488,1489,1494,1505,1510,1527,1531,1536,1555,1559,1564,1580,1584,1589,1610],{"__ignoreMap":221},[432,1490,1491],{"class":434,"line":435},[432,1492,1493],{"class":438},"\u002F\u002F 基于源码分析的示意性接口定义\n",[432,1495,1496,1499,1502],{"class":434,"line":442},[432,1497,1498],{"class":473},"interface",[432,1500,1501],{"class":1032}," Tool",[432,1503,1504],{"class":460}," {\n",[432,1506,1507],{"class":434,"line":464},[432,1508,1509],{"class":438},"  \u002F\u002F 1. 输入 schema（执行前用 Zod 验证）\n",[432,1511,1512,1515,1517,1520,1522,1525],{"class":434,"line":470},[432,1513,1514],{"class":487},"  inputSchema",[432,1516,1018],{"class":460},[432,1518,1519],{"class":1032}," z",[432,1521,523],{"class":460},[432,1523,1524],{"class":1032},"ZodSchema",[432,1526,491],{"class":460},[432,1528,1529],{"class":434,"line":494},[432,1530,498],{"emptyLinePlaceholder":497},[432,1532,1533],{"class":434,"line":501},[432,1534,1535],{"class":438},"  \u002F\u002F 2. 权限检查（返回 allow \u002F deny \u002F ask）\n",[432,1537,1538,1541,1543,1547,1550,1553],{"class":434,"line":507},[432,1539,1540],{"class":487},"  checkPermissions",[432,1542,534],{"class":460},[432,1544,1546],{"class":1545},"sHdIc","params",[432,1548,1549],{"class":460},"):",[432,1551,1552],{"class":1032}," PermissionResult",[432,1554,491],{"class":460},[432,1556,1557],{"class":434,"line":554},[432,1558,498],{"emptyLinePlaceholder":497},[432,1560,1561],{"class":434,"line":559},[432,1562,1563],{"class":438},"  \u002F\u002F 3. 执行逻辑\n",[432,1565,1566,1569,1571,1573,1575,1578],{"class":434,"line":565},[432,1567,1568],{"class":487},"  execute",[432,1570,534],{"class":460},[432,1572,1546],{"class":1545},[432,1574,1549],{"class":460},[432,1576,1577],{"class":1032}," ToolResult",[432,1579,491],{"class":460},[432,1581,1582],{"class":434,"line":598},[432,1583,498],{"emptyLinePlaceholder":497},[432,1585,1586],{"class":434,"line":603},[432,1587,1588],{"class":438},"  \u002F\u002F 4. UI 渲染器（终端显示）\n",[432,1590,1591,1594,1596,1599,1601,1604,1607],{"class":434,"line":609},[432,1592,1593],{"class":487},"  render",[432,1595,534],{"class":460},[432,1597,1598],{"class":1545},"result",[432,1600,1549],{"class":460},[432,1602,1603],{"class":1032}," UINode",[432,1605,1606],{"class":460},";",[432,1608,1609],{"class":438},"  \u002F\u002F UI 渲染节点\n",[432,1611,1612],{"class":434,"line":636},[432,1613,752],{"class":460},[829,1615,1616],{"id":1616},"并行工具执行",[200,1618,1619],{},"当 Claude 在单轮中请求多个工具调用时，SDK 会根据工具类型决定执行策略：",[223,1621,1622,1631],{},[226,1623,1624,1627,1628],{},[229,1625,1626],{},"只读工具","（Read、Glob、Grep、MCP 只读工具）：",[229,1629,1630],{},"并行执行",[226,1632,1633,1636,1637,1640],{},[229,1634,1635],{},"状态修改工具","（Edit、Write、Bash）：",[229,1638,1639],{},"串行执行","，避免冲突",[204,1642,1644],{"id":1643},"_34-步骤四评估测试运行与错误分析","3.4 步骤四：评估（测试运行与错误分析）",[200,1646,1647,1648,1651],{},"执行后，Claude 需要",[229,1649,1650],{},"验证结果","。这通常通过运行测试或检查命令输出来完成。",[200,1653,1654],{},"一个典型的评估循环：",[212,1656,1659],{"className":1657,"code":1658,"language":217},[215],"Turn 1: Bash(npm test) ──▶ 3 个测试失败\nTurn 2: Read(auth.ts) + Read(auth.test.ts) ──▶ 理解代码逻辑\nTurn 3: Edit(auth.ts) 修复边界条件 ──▶ Bash(npm test) 重新运行\nTurn 4: 所有测试通过 ──▶ 文本回复：\"已修复，3 个测试全部通过\"\n",[219,1660,1658],{"__ignoreMap":221},[200,1662,1663,1664,827],{},"这个评估-修复循环可能重复多次。Claude 会根据错误输出调整策略，形成",[229,1665,1666],{},"自纠错行为",[204,1668,1670],{"id":1669},"_35-步骤五调整回溯与修正","3.5 步骤五：调整（回溯与修正）",[200,1672,1673],{},"当执行结果不符合预期时，Claude Code 具备多种调整机制：",[829,1675,1676],{"id":1676},"检查点回滚",[200,1678,1679,1680,1683],{},"每次文件编辑前，Claude Code 都会创建文件内容的快照（checkpoint）。如果出现问题，用户可以按 ",[219,1681,1682],{},"Esc"," 两次回滚到之前的状态，或要求 Claude 撤销更改。",[797,1685,1686],{},[200,1687,1688,1689],{},"\"Every file edit is reversible. Before Claude edits any file, it snapshots the current contents. If something goes wrong, press Esc twice to rewind to a previous state, or ask Claude to undo.\"",[368,1690,1691],{},[371,1692,377],{"href":373,"ariaDescribedBy":1693,"dataFootnoteRef":221,"id":1694},[375],"user-content-fnref-1-2",[829,1696,1697],{"id":1697},"用户实时干预",[200,1699,1700],{},"用户可以在任何时候中断 Claude 的执行，提供修正指令。Claude 会立即停止当前操作，根据新输入调整方法。",[212,1702,1705],{"className":1703,"code":1704,"language":217},[215],"[Claude 正在 investigating...]\n\n用户：\"方向不对，问题在 session handling 里。\"\n\n[Claude 调整 approach...]\n",[219,1706,1704],{"__ignoreMap":221},[829,1708,1709],{"id":1709},"上下文压缩恢复",[200,1711,1712,1713,1716],{},"在长时间会话中，当上下文窗口接近上限时，Claude Code 会自动压缩对话历史。压缩后会执行",[229,1714,1715],{},"恢复操作","：重新读取最近访问的文件、恢复 TODO 列表、重新注入技能内容，确保工作连续性。",[204,1718,1720],{"id":1719},"_36-步骤六交付","3.6 步骤六：交付",[200,1722,1723],{},"任务完成后，Claude 会：",[840,1725,1726,1732,1738,1744],{},[226,1727,1728,1731],{},[229,1729,1730],{},"生成总结","：说明做了什么变更、为什么做、测试结果如何",[226,1733,1734,1737],{},[229,1735,1736],{},"展示差异","：以彩色 diff 形式展示所有修改，便于审阅",[226,1739,1740,1743],{},[229,1741,1742],{},"可选提交","：如果用户要求，可以执行 git commit（需要权限批准）",[226,1745,1746,1749,1750,1753,1754,1757],{},[229,1747,1748],{},"会话持久化","：对话历史保存到 ",[219,1751,1752],{},"~\u002F.claude\u002Fprojects\u002F","，支持 ",[219,1755,1756],{},"\u002Fresume"," 恢复",[379,1759],{},[195,1761,1763],{"id":1762},"四安全机制在-loop-中的位置","四、安全机制在 Loop 中的位置",[200,1765,1766,1767,1770],{},"Claude Code 的安全不是单层防护，而是一个",[229,1768,1769],{},"五道关卡","的权限门控系统，每个工具调用都要经过完整的审批流程：",[212,1772,1775],{"className":1773,"code":1774,"language":217},[215],"工具调用 ──▶ [1] 工具级 checkPermissions()\n              │    └─ Bash 检查危险命令，Write 检查文件路径\n              │\n              ▼ [2] Settings 允许\u002F拒绝列表\n              │    └─ glob 模式如 Bash(npm run *)、Read(~\u002Fproject\u002F**)\n              │\n              ▼ [3] 沙箱策略\n              │    └─ 托管限制：路径、命令、网络访问\n              │\n              ▼ [4] 活动权限模式\n              │    └─ default \u002F acceptEdits \u002F plan \u002F auto \u002F dontAsk \u002F bypassPermissions\n              │\n              ▼ [5] Hook 覆盖\n                   └─ PreToolUse hooks 可批准、阻止或修改调用\n",[219,1776,1774],{"__ignoreMap":221},[204,1778,1780],{"id":1779},"_41-权限模式","4.1 权限模式",[200,1782,1783],{},"根据 arXiv 论文和 Anthropic 官方文档，Claude Code 的权限系统包含以下模式：",[275,1785,1786,1799],{},[278,1787,1788],{},[281,1789,1790,1793,1796],{},[284,1791,1792],{},"模式",[284,1794,1795],{},"行为",[284,1797,1798],{},"适用场景",[294,1800,1801,1814,1827,1840,1853,1866],{},[281,1802,1803,1808,1811],{},[299,1804,1805],{},[219,1806,1807],{},"default",[299,1809,1810],{},"首次使用每个工具时请求许可",[299,1812,1813],{},"新代码库探索",[281,1815,1816,1821,1824],{},[299,1817,1818],{},[219,1819,1820],{},"acceptEdits",[299,1822,1823],{},"自动接受文件编辑和常见文件系统命令",[299,1825,1826],{},"日常开发",[281,1828,1829,1834,1837],{},[299,1830,1831],{},[219,1832,1833],{},"plan",[299,1835,1836],{},"只读分析，生成计划供批准",[299,1838,1839],{},"复杂重构前",[281,1841,1842,1847,1850],{},[299,1843,1844],{},[219,1845,1846],{},"auto",[299,1848,1849],{},"ML 分类器评估每个动作的风险，自动批准低风险操作",[299,1851,1852],{},"研究预览",[281,1854,1855,1860,1863],{},[299,1856,1857],{},[219,1858,1859],{},"dontAsk",[299,1861,1862],{},"除非预批准，否则自动拒绝",[299,1864,1865],{},"严格环境",[281,1867,1868,1873,1876],{},[299,1869,1870],{},[219,1871,1872],{},"bypassPermissions",[299,1874,1875],{},"跳过所有权限提示（除受保护目录外）",[299,1877,1878],{},"CI\u002F容器",[797,1880,1881],{},[200,1882,1883],{},"注：arXiv 论文提到\"seven modes\"，但官方文档目前公开上述六种。第 7 种可能为实验性模式，具体名称待官方确认。",[204,1885,1887],{"id":1886},"_42-ml-权限分类器auto-mode","4.2 ML 权限分类器（Auto Mode）",[200,1889,1890,1891,1894],{},"Auto Mode 的核心是一个",[229,1892,1893],{},"ML-based 分类器","，它实时评估每个工具调用的风险等级。分类器考虑以下因素：",[223,1896,1897,1903,1909,1915,1924],{},[226,1898,1899,1902],{},[229,1900,1901],{},"动作类型","：读取文件 vs 运行 bash 命令，基线风险不同",[226,1904,1905,1908],{},[229,1906,1907],{},"具体参数","：写入临时目录 vs 写入生产配置文件",[226,1910,1911,1914],{},[229,1912,1913],{},"可逆性","：操作是否可以撤销",[226,1916,1917,1920,1921],{},[229,1918,1919],{},"影响范围（Blast Radius）","：单文件重命名 vs ",[219,1922,1923],{},"rm -rf",[226,1925,1926,1929],{},[229,1927,1928],{},"对话上下文","：当前任务是否与该操作匹配",[200,1931,1932,1933,1936,1937,1936,1940,827],{},"基于评估结果，每个动作被路由到三个结果之一：",[229,1934,1935],{},"自动批准","、",[229,1938,1939],{},"请求确认",[229,1941,1942],{},"完全阻止",[797,1944,1945],{},[200,1946,1947,1948],{},"\"The permission classifier is designed to prevent mistakes, not adversarial attacks. If you're working in an environment where security is a hard requirement, infrastructure-level controls are still necessary.\"",[368,1949,1950],{},[371,1951,1258],{"href":1952,"ariaDescribedBy":1953,"dataFootnoteRef":221,"id":1954},"#user-content-fn-4",[375],"user-content-fnref-4",[204,1956,1958],{"id":1957},"_43-安全机制在-loop-中的嵌入位置","4.3 安全机制在 Loop 中的嵌入位置",[212,1960,1963],{"className":1961,"code":1962,"language":217},[215],"┌─────────────────────────────────────────────────────────────────┐\n│                        Agentic Loop                              │\n│                                                                  │\n│  用户输入 ──▶ 规划 ──▶ [权限检查] ──▶ 执行 ──▶ 评估 ──▶ 调整   │\n│                          │                                       │\n│                    分类器评估                                    │\n│                    \u002F 模式判断                                    │\n│                    \u002F Hook 拦截                                   │\n│                          │                                       │\n│                    允许 \u002F 询问 \u002F 阻止                            │\n└─────────────────────────────────────────────────────────────────┘\n",[219,1964,1962],{"__ignoreMap":221},[200,1966,1967,1968,1971],{},"权限检查发生在",[229,1969,1970],{},"每次工具调用之前","，是 Loop 的必经关卡。即使是 Auto Mode 中自动批准的操作，分类器仍然进行了评估——只是没有向用户展示确认对话框。",[379,1973],{},[195,1975,1977],{"id":1976},"五与通用-agent-框架的对比","五、与通用 Agent 框架的对比",[204,1979,1981],{"id":1980},"_51-react-vs-claude-code","5.1 ReAct vs Claude Code",[275,1983,1984,1996],{},[278,1985,1986],{},[281,1987,1988,1990,1993],{},[284,1989,286],{},[284,1991,1992],{},"ReAct",[284,1994,1995],{},"Claude Code",[294,1997,1998,2011,2024,2035,2047,2057],{},[281,1999,2000,2005,2008],{},[299,2001,2002],{},[229,2003,2004],{},"推理显式性",[299,2006,2007],{},"Thought 显式输出",[299,2009,2010],{},"Thinking blocks（可折叠）",[281,2012,2013,2018,2021],{},[299,2014,2015],{},[229,2016,2017],{},"工具生态",[299,2019,2020],{},"论文中 2-3 个",[299,2022,2023],{},"30+ 内置 + MCP 无限扩展",[281,2025,2026,2030,2033],{},[299,2027,2028],{},[229,2029,312],{},[299,2031,2032],{},"截断旧消息",[299,2034,318],{},[281,2036,2037,2042,2044],{},[299,2038,2039],{},[229,2040,2041],{},"安全",[299,2043,315],{},[299,2045,2046],{},"七层权限 + ML 分类器",[281,2048,2049,2053,2055],{},[299,2050,2051],{},[229,2052,354],{},[299,2054,315],{},[299,2056,359],{},[281,2058,2059,2063,2066],{},[299,2060,2061],{},[229,2062,344],{},[299,2064,2065],{},"无状态",[299,2067,349],{},[200,2069,2070],{},"ReAct 是理论框架，Claude Code 是工程实现。Claude Code 保留了 ReAct \"思考-行动-观察\"的核心循环，但围绕它构建了完整的生产级基础设施。",[204,2072,2074],{"id":2073},"_52-reflexion-vs-claude-code","5.2 Reflexion vs Claude Code",[200,2076,2077,2080],{},[229,2078,2079],{},"Reflexion"," 框架引入了自我反思机制：Agent 分析过去的行动和结果，识别错误并提炼策略，将反思文本保存以指导未来决策。",[200,2082,2083],{},"Claude Code 的反思机制体现在：",[223,2085,2086,2092,2098],{},[226,2087,2088,2091],{},[229,2089,2090],{},"测试驱动反馈","：运行测试，根据失败信息调整代码",[226,2093,2094,2097],{},[229,2095,2096],{},"错误分析","：读取错误输出，定位问题根源",[226,2099,2100,2103],{},[229,2101,2102],{},"Session Memory","：后台进程持续维护结构化笔记，积累跨会话经验",[200,2105,2106,2107,2110],{},"但 Claude Code 没有显式的\"反思步骤\"——反思被",[229,2108,2109],{},"内化在 Loop 的评估阶段","，是每次工具执行后的自然行为，而非独立的反思环节。",[204,2112,2114],{"id":2113},"_53-设计哲学差异","5.3 设计哲学差异",[200,2116,2117],{},"需要强调的是，LangChain 和 LlamaIndex 是面向开发者的构建框架，而 Claude Code 是面向终端用户的应用工具。两者定位完全不同，以下对比的是不同产品形态的设计选择，而非优劣评判：",[212,2119,2122],{"className":2120,"code":2121,"language":217},[215],"通用 Agent 框架（LangChain\u002FLlamaIndex）          Claude Code\n─────────────────────────────────────        ─────────────\n追求通用性、可组合性                          追求简单性、可控性\n多代理 swarm、DAG 编排                        单线程主循环 + 受控子代理\n复杂的状态管理（数据库\u002F向量存储）              扁平消息历史 + Markdown 记忆\n插件化、可扩展至上                            工具化、安全至上\n",[219,2123,2121],{"__ignoreMap":221},[797,2125,2126],{},[200,2127,2128,2129],{},"\"While competitors chase multi-agent swarms and complex orchestration, Anthropic built a single-threaded loop that does one thing obsessively well—think, act, observe, repeat.\"",[368,2130,2131],{},[371,2132,408],{"href":405,"ariaDescribedBy":2133,"dataFootnoteRef":221,"id":2134},[375],"user-content-fnref-2-4",[379,2136],{},[195,2138,2140],{"id":2139},"六五层上下文压缩管道compaction-pipeline","六、五层上下文压缩管道（Compaction Pipeline）",[200,2142,2143,2144,2147],{},"长时间会话不可避免地会触及上下文窗口上限。Claude Code 的解决方案不是简单的\" summarization\"，而是一个",[229,2145,2146],{},"分层降级","的压缩管道。",[204,2149,2151],{"id":2150},"_61-设计原则","6.1 设计原则",[200,2153,2154,2155,2158],{},"核心思想：",[229,2156,2157],{},"能拖则拖，能省则省，逐级升级","。从最便宜的操作开始，只在必要时才调用 LLM 进行总结。",[212,2160,2163],{"className":2161,"code":2162,"language":217},[215],"成本\n^ │  * Full Compact ($$$, LLM 总结)\n│ │\n│ │  * Session Memory ($0, 增量笔记)\n│ │\n│ │  * Time-Based MC ($0, 内容清理)\n│ │\n│ │  * Cached MC (~$0, 缓存编辑 API)\n│ │\n│ │  * Persist Large ($0, 磁盘存储)\n│ └────────────────────────────────────▶ 压缩质量\n",[219,2164,2162],{"__ignoreMap":221},[204,2166,2168],{"id":2167},"_62-五层详解","6.2 五层详解",[829,2170,2172],{"id":2171},"layer-0大结果持久化到磁盘","Layer 0：大结果持久化到磁盘",[200,2174,2175],{},"在压缩发生之前，Claude Code 先在源头控制数据量。当工具返回超过 50K 字符时，完整结果写入磁盘文件，上下文中只保留约 2KB 的预览 + 文件路径。",[797,2177,2178],{},[200,2179,2180,2181],{},"\"Read tool explicitly sets its threshold to Infinity, exempting itself from the persistence mechanism. Persisting Read's output to a file and then having the model Read that file creates a circular dependency.\"",[368,2182,2183],{},[371,2184,2188],{"href":2185,"ariaDescribedBy":2186,"dataFootnoteRef":221,"id":2187},"#user-content-fn-5",[375],"user-content-fnref-5","5",[829,2190,2192],{"id":2191},"layer-1缓存微压缩cached-microcompact","Layer 1：缓存微压缩（Cached Microcompact）",[200,2194,2195,2196,2199,2200,2203],{},"据第三方源码分析推测，系统可能利用 Anthropic API 的缓存能力，直接在服务端缓存中删除旧的工具结果，",[229,2197,2198],{},"不修改本地消息","。这是最高效的压缩方式——零成本、零信息损失（结果仍在磁盘上可读取）。（注：",[219,2201,2202],{},"cache_edits"," API 名称及具体机制为社区推测，非官方确认。）",[212,2205,2208],{"className":2206,"code":2207,"language":217},[215],"API Server Cache\n+------------------+\n| system prompt    │ ◀── cached prefix (保留)\n| tools            │\n| msg[0]: user     │\n| msg[1]: asst     │\n| msg[2]: user\u002Ftr  │ ◀── cache_edits: delete this\n| ...              │\n+------------------+\n",[219,2209,2207],{"__ignoreMap":221},[829,2211,2213],{"id":2212},"layer-2时间微压缩time-based-microcompact","Layer 2：时间微压缩（Time-Based Microcompact）",[200,2215,2216],{},"据第三方分析，当用户离开超过一定时间后，服务端缓存可能已过期。此时清理旧工具结果的代价极低——因为整个前缀都需要重写。系统将保留最近的 N 个工具结果，其余替换为占位符。（注：具体 TTL 时长为社区推测，非官方确认。）",[829,2218,2220],{"id":2219},"layer-3会话记忆压缩session-memory-compact","Layer 3：会话记忆压缩（Session Memory Compact）",[200,2222,2223,2224,2226,2227,827],{},"这是整个系统中最精妙的设计。",[229,2225,2102],{}," 是一个后台进程，持续维护一个结构化的 Markdown 笔记文件。当需要压缩时，直接使用这些笔记作为总结——",[229,2228,2229],{},"无需额外的 LLM 调用",[200,2231,2232],{},"笔记模板包含：当前状态、任务规格、重要文件、工作流、错误与修正、学习总结等。据第三方源码分析推测，后台提取进程可能以独立代理进程运行，与主会话共享 prompt cache prefix。（注：具体实现细节为社区推测，非官方确认。）",[797,2234,2235],{},[200,2236,2237,2238],{},"\"It essentially amortizes the expensive operation of understanding session content across the entire session lifecycle, performing small incremental extractions at regular intervals, so that when compaction is finally needed, the payoff is a free summary.\"",[368,2239,2240],{},[371,2241,2188],{"href":2185,"ariaDescribedBy":2242,"dataFootnoteRef":221,"id":2243},[375],"user-content-fnref-5-2",[829,2245,2247],{"id":2246},"layer-4完整压缩full-compact","Layer 4：完整压缩（Full Compact）",[200,2249,2250],{},"当 Session Memory 不可用或压缩后仍超阈值时，系统回退到完整的 LLM 总结。据第三方分析，这可能通过独立代理进程完成，核心目的是共享主会话的 prompt cache prefix——这样大部分输入命中现有缓存，只需为压缩指令和输出付费。（注：具体实现为社区推测，非官方确认。）",[200,2252,2253],{},"压缩提示采用两阶段结构：先让模型追溯对话时间线（analysis block），再生成结构化总结（summary block）。analysis block 在提取后被剥离，仅作为提高总结质量的草稿纸。",[204,2255,2257],{"id":2256},"_63-压缩后的恢复","6.3 压缩后的恢复",[200,2259,2260,2261,759],{},"压缩不是终点。压缩后，Claude Code 会执行",[229,2262,1715],{},[840,2264,2265,2271,2277,2283,2289,2295],{},[226,2266,2267,2270],{},[229,2268,2269],{},"边界标记","：标记压缩点",[226,2272,2273,2276],{},[229,2274,2275],{},"总结消息","：压缩后的工作状态",[226,2278,2279,2282],{},[229,2280,2281],{},"重新读取最近文件","：最多 5 个，共 50K tokens",[226,2284,2285,2288],{},[229,2286,2287],{},"恢复 TODO 列表","：保留任务状态",[226,2290,2291,2294],{},[229,2292,2293],{},"重新注入技能","：按最近使用排序，每技能 5K tokens",[226,2296,2297,2300],{},[229,2298,2299],{},"继续指令","：告诉 Claude 从何处继续，不再询问用户",[212,2302,2305],{"className":2303,"code":2304,"language":217},[215],"This session is being continued from a previous conversation that ran out\nof context. The summary below covers the earlier portion of the conversation.\n\n[SUMMARY]\n\nPlease continue the conversation from where we left it off without asking\nthe user any further questions. Continue with the last task that you were\nasked to work on.\n",[219,2306,2304],{"__ignoreMap":221},[379,2308],{},[195,2310,2312],{"id":2311},"七实际案例追踪一次完整的会话","七、实际案例：追踪一次完整的会话",[200,2314,2315],{},"以下为一个基于典型行为的示意性会话追踪：用户要求\"修复 auth 模块中过期卡片用户的结账流程 bug\"。",[204,2317,2319],{"id":2318},"_71-会话时间线","7.1 会话时间线",[212,2321,2324],{"className":2322,"code":2323,"language":217},[215],"Turn 1 ──▶ 用户输入：\"修复 auth 模块中过期卡片用户的结账流程 bug\"\n           │\n           ▼ 上下文构建\n           ├── 加载 CLAUDE.md（项目规则）\n           ├── 加载 Auto Memory（过往学习）\n           ├── 加载系统提示 + 工具定义\n           └── 当前对话历史（空）\n           │\nTurn 2 ──▶ Claude 规划：创建 TODO 列表\n           │  TodoWrite({\n           │    \"1\": \"运行测试定位失败用例\",\n           │    \"2\": \"读取相关源码理解逻辑\",\n           │    \"3\": \"修复边界条件\",\n           │    \"4\": \"验证修复\"\n           │  })\n           │\nTurn 3 ──▶ Bash(npm test) ──▶ 3 个失败\n           │  [权限检查：Bash 工具 → acceptEdits 模式自动批准测试命令]\n           │\nTurn 4 ──▶ Read(auth.ts) + Read(payments\u002Fcheckout.ts) + Grep(\"expired card\")\n           │  [并行执行：Read 和 Grep 都是只读工具]\n           │  [权限检查：Read 无需批准，Grep 无需批准]\n           │\nTurn 5 ──▶ 分析：发现 token 刷新逻辑在卡片过期时返回 null，\n           │        但下游代码未处理 null 情况\n           │\nTurn 6 ──▶ Edit(auth.ts:45) 添加 null 检查\n           │  [权限检查：Edit 工具 → 快照原文件 → 请求用户批准]\n           │  [用户点击\"Yes\"]\n           │  [执行：应用 diff，显示彩色差异]\n           │\nTurn 7 ──▶ Bash(npm test) ──▶ 2 个通过，1 个仍失败\n           │\nTurn 8 ──▶ Read(auth.test.ts) ──▶ 发现测试用例期望抛出特定错误\n           │\nTurn 9 ──▶ Edit(auth.ts:45) 修改 null 检查为抛出自定义错误\n           │  [权限检查：再次请求批准]\n           │\nTurn 10 ──▶ Bash(npm test) ──▶ 全部通过\n           │\nTurn 11 ──▶ 文本回复（无工具调用）：\"已修复 auth 模块的过期卡片处理\n            bug。问题根源：token 刷新在卡片过期时返回 null，下游未处理。\n            修改：在 auth.ts:45 添加 CardExpiredError 抛出。所有 3 个测试\n            现已通过。\"\n            │\n            ▼ Loop 终止（无工具调用）\n            └── 返回 ResultMessage\n",[219,2325,2323],{"__ignoreMap":221},[204,2327,2329],{"id":2328},"_72-关键决策点分析","7.2 关键决策点分析",[275,2331,2332,2345],{},[278,2333,2334],{},[281,2335,2336,2339,2342],{},[284,2337,2338],{},"时刻",[284,2340,2341],{},"决策",[284,2343,2344],{},"机制",[294,2346,2347,2360,2371,2382,2393,2404],{},[281,2348,2349,2352,2355],{},[299,2350,2351],{},"Turn 2",[299,2353,2354],{},"创建 TODO",[299,2356,2357,2359],{},[219,2358,992],{}," 工具 + 系统提醒注入",[281,2361,2362,2365,2368],{},[299,2363,2364],{},"Turn 3",[299,2366,2367],{},"先运行测试",[299,2369,2370],{},"模型推理：\"先观察再行动\"",[281,2372,2373,2376,2379],{},[299,2374,2375],{},"Turn 4",[299,2377,2378],{},"并行读取多个文件",[299,2380,2381],{},"只读工具可并行执行",[281,2383,2384,2387,2390],{},[299,2385,2386],{},"Turn 6",[299,2388,2389],{},"请求编辑权限",[299,2391,2392],{},"五层权限门控生效",[281,2394,2395,2398,2401],{},[299,2396,2397],{},"Turn 7-10",[299,2399,2400],{},"迭代修复",[299,2402,2403],{},"评估-调整循环",[281,2405,2406,2409,2412],{},[299,2407,2408],{},"Turn 11",[299,2410,2411],{},"终止循环",[299,2413,2414],{},"响应中无 tool_use 块",[379,2416],{},[195,2418,2420],{"id":2419},"八源码级洞察","八、源码级洞察",[200,2422,2423],{},"2026 年 3 月 31 日，Anthropic 意外通过 npm registry 的 source map 泄露了 Claude Code 的完整 TypeScript 源码（约 1,900 个文件、512,000 行代码）。该事件由安全研究员 Chaofan Shou（@Fried_rice）发现，涉及 npm 版本 v2.1.88，泄露途径为 source map 文件上传至 R2 存储桶。社区镜像仓库（如 soufianebouaddis\u002Fclaude-code-doc）对源码进行了备份和分析。以下是社区分析揭示的关键实现细节：",[204,2425,2427],{"id":2426},"_81-核心循环的实现","8.1 核心循环的实现",[200,2429,2430,2431,2433],{},"源码证实了 PromptLayer 的分析：核心确实是一个简单的 ",[219,2432,418],{}," 循环，没有 DAG、没有分类器、没有 RAG。模型决定一切。",[204,2435,2437],{"id":2436},"_82-搜索策略的演进","8.2 搜索策略的演进",[200,2439,2440],{},"源码显示早期版本确实实验了基于 Voyage 嵌入的语义搜索，但后来切换为 ripgrep。这验证了 Anthropic \"做简单的事优先\"的设计哲学。",[204,2442,2444],{"id":2443},"_83-44-个隐藏功能标志","8.3 44 个隐藏功能标志",[200,2446,2447],{},"源码分析社区报道了若干未发布的功能标志，包括：",[223,2449,2450,2453,2456,2459],{},[226,2451,2452],{},"Agent Teams（多代理协作系统）",[226,2454,2455],{},"后台守护进程（Background Daemons）",[226,2457,2458],{},"高级沙箱模式",[226,2460,2461],{},"实验性模型支持",[200,2463,2464],{},"（注：具体数量和功能名称以社区分析为准，不同来源的统计可能存在差异。）",[204,2466,2468],{"id":2467},"_84-五层-compaction-的工程实现","8.4 五层 Compaction 的工程实现",[200,2470,2471],{},"arxiv 论文《Dive into Claude Code》对 compaction 管道进行了系统性分析：",[797,2473,2474],{},[200,2475,2476,2477],{},"\"Most of the code, however, lives in the systems around this loop: a permission system with seven modes and an ML-based classifier, a five-layer compaction pipeline for context management, four extensibility mechanisms (MCP, plugins, skills, and hooks), a subagent delegation and orchestration mechanism, and append-oriented session storage.\"",[368,2478,2479],{},[371,2480,2484],{"href":2481,"ariaDescribedBy":2482,"dataFootnoteRef":221,"id":2483},"#user-content-fn-6",[375],"user-content-fnref-6","6",[200,2486,2487],{},"（注：论文提到\"seven modes\"，但正文未明确指出第 7 种模式的具体名称。）",[379,2489],{},[195,2491,2493],{"id":2492},"九总结为什么-claude-code-的-loop-有效","九、总结：为什么 Claude Code 的 Loop 有效",[200,2495,2496,2497,759],{},"Claude Code 的 Agentic Loop 之所以有效，不是因为某个单一的技术突破，而是因为",[229,2498,2499],{},"系统性的工程约束",[840,2501,2502,2508,2516,2522,2528],{},[226,2503,2504,2507],{},[229,2505,2506],{},"简单循环，复杂周边","：核心循环极简（while(tool_call)），但围绕它的权限系统、压缩管道、扩展机制、记忆系统构成了完整的生产级基础设施",[226,2509,2510,2512,2513],{},[229,2511,758],{},"：单线程、最多一个子代理分支、扁平消息历史——这些约束不是为了限制能力，而是为了",[229,2514,2515],{},"保证可调试性和可靠性",[226,2517,2518,2521],{},[229,2519,2520],{},"人机协作优先","：h2A 队列允许实时干预，Plan Mode 允许先审阅再执行，检查点允许随时回滚——用户始终处于控制地位",[226,2523,2524,2527],{},[229,2525,2526],{},"成本意识","：五层压缩管道从\"零成本磁盘存储\"到\"免费 Session Memory\"再到\"付费 LLM 总结\"，每一步都体现了对 token 成本的精打细算",[226,2529,2530,2533,2534,2537],{},[229,2531,2532],{},"安全分层","：五层权限门控不是过度工程，而是",[229,2535,2536],{},"防御纵深","——任何单层都可能被绕过，但五层同时失效的概率极低",[200,2539,2540],{},"正如 PromptLayer 文章的结语：",[797,2542,2543],{},[200,2544,2545,2546],{},"\"The power comes from its radical simplicity. While competitors chase multi-agent swarms and complex orchestration, Anthropic built a single-threaded loop that does one thing obsessively well—think, act, observe, repeat. The same pattern that powers a CS101 while loop now drives an agent capable of refactoring entire codebases. Elegant engineering + constraint-driven design.\"",[368,2547,2548],{},[371,2549,408],{"href":405,"ariaDescribedBy":2550,"dataFootnoteRef":221,"id":2551},[375],"user-content-fnref-2-5",[379,2553],{},[195,2555,2556],{"id":2556},"参考来源",[2558,2559,2562,2567],"section",{"className":2560,"dataFootnotes":221},[2561],"footnotes",[195,2563,2566],{"className":2564,"id":375},[2565],"sr-only","Footnotes",[840,2568,2569,2593,2634,2647,2660,2680],{},[226,2570,2572,2573,2578,2579,2578,2586],{"id":2571},"user-content-fn-1","Anthropic. \"How Claude Code works.\" Claude Code Docs, 2026. ",[371,2574,2575],{"href":2575,"rel":2576},"https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fhow-claude-code-works",[2577],"nofollow"," ",[371,2580,2585],{"href":2581,"ariaLabel":2582,"className":2583,"dataFootnoteBackref":221},"#user-content-fnref-1","Back to reference 1",[2584],"data-footnote-backref","↩",[371,2587,2585,2591],{"href":2588,"ariaLabel":2589,"className":2590,"dataFootnoteBackref":221},"#user-content-fnref-1-2","Back to reference 1-2",[2584],[368,2592,408],{},[226,2594,2596,2597,2578,2601,2578,2606,2578,2613,2578,2620,2578,2627],{"id":2595},"user-content-fn-2","PromptLayer. \"Claude Code: Behind-the-scenes of the master agent loop.\" PromptLayer Blog, 2025. ",[371,2598,2599],{"href":2599,"rel":2600},"https:\u002F\u002Fblog.promptlayer.com\u002Fclaude-code-behind-the-scenes-of-the-master-agent-loop\u002F",[2577],[371,2602,2585],{"href":2603,"ariaLabel":2604,"className":2605,"dataFootnoteBackref":221},"#user-content-fnref-2","Back to reference 2",[2584],[371,2607,2585,2611],{"href":2608,"ariaLabel":2609,"className":2610,"dataFootnoteBackref":221},"#user-content-fnref-2-2","Back to reference 2-2",[2584],[368,2612,408],{},[371,2614,2585,2618],{"href":2615,"ariaLabel":2616,"className":2617,"dataFootnoteBackref":221},"#user-content-fnref-2-3","Back to reference 2-3",[2584],[368,2619,970],{},[371,2621,2585,2625],{"href":2622,"ariaLabel":2623,"className":2624,"dataFootnoteBackref":221},"#user-content-fnref-2-4","Back to reference 2-4",[2584],[368,2626,1258],{},[371,2628,2585,2632],{"href":2629,"ariaLabel":2630,"className":2631,"dataFootnoteBackref":221},"#user-content-fnref-2-5","Back to reference 2-5",[2584],[368,2633,2188],{},[226,2635,2637,2638,2578,2642],{"id":2636},"user-content-fn-3","MorphLLM. \"Claude Code Context Window: Limits, Compaction & Management Guide.\" 2026. ",[371,2639,2640],{"href":2640,"rel":2641},"https:\u002F\u002Fwww.morphllm.com\u002Fclaude-code-context-window",[2577],[371,2643,2585],{"href":2644,"ariaLabel":2645,"className":2646,"dataFootnoteBackref":221},"#user-content-fnref-3","Back to reference 3",[2584],[226,2648,2650,2651,2578,2655],{"id":2649},"user-content-fn-4","MindStudio. \"What Is Claude Code Auto Mode? How the Permission Classifier Works.\" 2026. ",[371,2652,2653],{"href":2653,"rel":2654},"https:\u002F\u002Fwww.mindstudio.ai\u002Fblog\u002Fwhat-is-claude-code-auto-mode-permission-classifier",[2577],[371,2656,2585],{"href":2657,"ariaLabel":2658,"className":2659,"dataFootnoteBackref":221},"#user-content-fnref-4","Back to reference 4",[2584],[226,2661,2663,2664,2578,2668,2578,2673],{"id":2662},"user-content-fn-5","Finisky. \"Context Compaction in Claude Code: A Five-Layer Cascade and the Art of Free Summaries.\" 2026. ",[371,2665,2666],{"href":2666,"rel":2667},"https:\u002F\u002Ffinisky.github.io\u002Fen\u002Fclaude-code-context-compaction\u002F",[2577],[371,2669,2585],{"href":2670,"ariaLabel":2671,"className":2672,"dataFootnoteBackref":221},"#user-content-fnref-5","Back to reference 5",[2584],[371,2674,2585,2678],{"href":2675,"ariaLabel":2676,"className":2677,"dataFootnoteBackref":221},"#user-content-fnref-5-2","Back to reference 5-2",[2584],[368,2679,408],{},[226,2681,2683,2684,2578,2688],{"id":2682},"user-content-fn-6","Liu, Jiacheng, et al. \"Dive into Claude Code: The Design Space of Today's and Future AI Agent Systems.\" arXiv:2604.14228, 2026. ",[371,2685,2686],{"href":2686,"rel":2687},"https:\u002F\u002Farxiv.org\u002Fhtml\u002F2604.14228v1",[2577],[371,2689,2585],{"href":2690,"ariaLabel":2691,"className":2692,"dataFootnoteBackref":221},"#user-content-fnref-6","Back to reference 6",[2584],[2694,2695,2696],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":221,"searchDepth":435,"depth":442,"links":2698},[2699,2703,2708,2716,2721,2726,2731,2735,2741,2742],{"id":197,"depth":442,"text":198,"children":2700},[2701,2702],{"id":206,"depth":464,"text":207},{"id":256,"depth":464,"text":257},{"id":383,"depth":442,"text":384,"children":2704},[2705,2706,2707],{"id":387,"depth":464,"text":388},{"id":411,"depth":464,"text":412},{"id":781,"depth":464,"text":782},{"id":812,"depth":442,"text":813,"children":2709},[2710,2711,2712,2713,2714,2715],{"id":819,"depth":464,"text":820},{"id":974,"depth":464,"text":975},{"id":1355,"depth":464,"text":1356},{"id":1643,"depth":464,"text":1644},{"id":1669,"depth":464,"text":1670},{"id":1719,"depth":464,"text":1720},{"id":1762,"depth":442,"text":1763,"children":2717},[2718,2719,2720],{"id":1779,"depth":464,"text":1780},{"id":1886,"depth":464,"text":1887},{"id":1957,"depth":464,"text":1958},{"id":1976,"depth":442,"text":1977,"children":2722},[2723,2724,2725],{"id":1980,"depth":464,"text":1981},{"id":2073,"depth":464,"text":2074},{"id":2113,"depth":464,"text":2114},{"id":2139,"depth":442,"text":2140,"children":2727},[2728,2729,2730],{"id":2150,"depth":464,"text":2151},{"id":2167,"depth":464,"text":2168},{"id":2256,"depth":464,"text":2257},{"id":2311,"depth":442,"text":2312,"children":2732},[2733,2734],{"id":2318,"depth":464,"text":2319},{"id":2328,"depth":464,"text":2329},{"id":2419,"depth":442,"text":2420,"children":2736},[2737,2738,2739,2740],{"id":2426,"depth":464,"text":2427},{"id":2436,"depth":464,"text":2437},{"id":2443,"depth":464,"text":2444},{"id":2467,"depth":464,"text":2468},{"id":2492,"depth":442,"text":2493},{"id":2556,"depth":442,"text":2556},"md",null,{"date":2746},"2026-04-26",{"title":31,"description":221},"rUBxC4o8M5zCskJXA5yOMtlbi0jZReOTpxgpelv7qzw",[2750,2752],{"title":27,"path":28,"stem":29,"description":2751,"children":-1},"Planning + Memory + Tool Use",{"title":42,"path":43,"stem":44,"description":2753,"children":-1},"macOS \u002F Windows \u002F Linux",1777395308012]