[{"data":1,"prerenderedAt":2366},["ShallowReactive",2],{"navigation":3,"\u002Fintro\u002Ffrom-chatbot-to-agent":189,"\u002Fintro\u002Ffrom-chatbot-to-agent-surround":2362},[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":27,"body":191,"description":2355,"extension":2356,"links":2357,"meta":2358,"navigation":1292,"path":28,"seo":2360,"stem":29,"__hash__":2361},"docs\u002F1.intro\u002F5.from-chatbot-to-agent.md",{"type":192,"value":193,"toc":2317},"minimark",[194,199,204,213,216,238,254,258,265,291,303,319,322,326,333,422,425,429,433,448,451,454,464,467,471,478,490,513,516,520,531,538,541,547,550,556,559,568,572,575,587,594,598,602,613,634,643,693,697,707,710,730,748,752,758,764,784,793,813,817,826,831,846,860,871,876,882,896,910,913,984,988,992,1001,1021,1024,1028,1039,1065,1068,1411,1422,1454,1458,1473,1480,1483,1497,1506,1523,1536,1540,1551,1571,1574,1578,1582,1585,1591,1596,1599,1625,1628,1633,1636,1654,1659,1662,1668,1671,1675,1688,1691,1749,1752,1765,1769,1782,1828,1831,1835,1839,1846,1853,1857,1868,1879,1893,1900,1904,1907,1921,1930,1934,1943,1963,1976,1996,2000,2003,2020,2027,2030,2033,2313],[195,196,198],"h2",{"id":197},"一从被动应答到主动执行本质区别","一、从\"被动应答\"到\"主动执行\"：本质区别",[200,201,203],"h3",{"id":202},"_11-聊天机器人的局限","1.1 聊天机器人的局限",[205,206,207,208,212],"p",{},"在 Claude Code 出现之前，大多数人对 AI 的交互体验停留在聊天机器人（Chatbot）层面。你问一句，它答一句；你停止输入，它就原地待命。无论是早期的规则式客服机器人，还是后来基于大语言模型（LLM）的 ChatGPT、Claude Web 版，其核心模式都是",[209,210,211],"strong",{},"被动响应（Reactive）","——等待用户触发，然后生成一段文本作为回复。",[205,214,215],{},"这种模式的本质局限在于：",[217,218,219,226,232],"ul",{},[220,221,222,225],"li",{},[209,223,224],{},"无状态性","：每次对话都是独立的，机器人不会记住你三天前告诉它的项目结构。",[220,227,228,231],{},[209,229,230],{},"无行动能力","：它只能\"说\"，不能\"做\"。你无法让它去读取你的代码文件、运行测试、或者提交 Git。",[220,233,234,237],{},[209,235,236],{},"无目标导向","：它不会主动分解任务、制定计划、检查进度。你问\"怎么修复这个 Bug\"，它给你一段解释，但修复工作仍然需要你自己完成。",[205,239,240,241,253],{},"业界常用一个类比来区分两者：想象一位明星的助理（按指令做事）与经纪人（主动规划）的区别——IBM 在相关文章中也讨论了这一区分",[242,243,244],"sup",{},[245,246,252],"a",{"href":247,"ariaDescribedBy":248,"dataFootnoteRef":250,"id":251},"#user-content-fn-1",[249],"footnote-label","","user-content-fnref-1","1","。",[200,255,257],{"id":256},"_12-agent-的定义","1.2 Agent 的定义",[205,259,260,261,264],{},"AI Agent（智能代理）是一个能够",[209,262,263],{},"自主完成任务的系统","。与聊天机器人不同，Agent 具备以下特征：",[217,266,267,273,279,285],{},[220,268,269,272],{},[209,270,271],{},"主动性（Proactive）","：在获得初始目标后，能够自主规划并执行多步骤操作，无需人类在每一步进行干预。",[220,274,275,278],{},[209,276,277],{},"工具使用（Tool Use）","：能够调用外部 API、执行代码、读写文件、浏览网页，将自身的能力边界扩展到训练数据之外。",[220,280,281,284],{},[209,282,283],{},"记忆能力（Memory）","：能够在会话之间保持状态，记住用户的偏好、项目的上下文、过去的交互历史。",[220,286,287,290],{},[209,288,289],{},"目标分解（Planning）","：能够将复杂任务拆解为可执行的子任务，并根据执行反馈动态调整计划。",[205,292,293,294,302],{},"OpenAI 研究员、前 AI 安全研究负责人 Lilian Weng 在 2023 年 6 月的一篇博客中，将 Agent 的核心组件归纳为 LLM、Memory、Planning 和 Tool Use 四大部分",[242,295,296],{},[245,297,301],{"href":298,"ariaDescribedBy":299,"dataFootnoteRef":250,"id":300},"#user-content-fn-2",[249],"user-content-fnref-2","2","。业界常将 Agent 架构概括为：",[304,305,306],"blockquote",{},[205,307,308,311,312,318],{},[209,309,310],{},"Agent = LLM + Memory + Planning + Tool Use","（基于 Lilian Weng 的组件分析",[242,313,314],{},[245,315,301],{"href":298,"ariaDescribedBy":316,"dataFootnoteRef":250,"id":317},[249],"user-content-fnref-2-2","）",[205,320,321],{},"这一概括已成为业界理解 Agent 架构的基准框架。Claude Code 正是这一公式的工程化落地——它以 Claude LLM 为大脑，通过工具调用与文件系统和终端交互，借助 CLAUDE.md 和 Auto Memory 实现跨会话记忆，并在每次任务中自主进行规划与执行。",[200,323,325],{"id":324},"_13-范式转移的意义","1.3 范式转移的意义",[205,327,328,329,332],{},"从聊天机器人到 Agent，不仅是功能增强，更是",[209,330,331],{},"交互范式的根本转移","：",[334,335,336,352],"table",{},[337,338,339],"thead",{},[340,341,342,346,349],"tr",{},[343,344,345],"th",{},"维度",[343,347,348],{},"聊天机器人",[343,350,351],{},"Agent",[353,354,355,367,378,389,400,411],"tbody",{},[340,356,357,361,364],{},[358,359,360],"td",{},"交互模式",[358,362,363],{},"被动响应",[358,365,366],{},"主动执行",[340,368,369,372,375],{},[358,370,371],{},"任务处理",[358,373,374],{},"单轮文本生成",[358,376,377],{},"多步骤工具调用循环",[340,379,380,383,386],{},[358,381,382],{},"记忆能力",[358,384,385],{},"无（或仅限当前会话）",[358,387,388],{},"短期 + 长期记忆",[340,390,391,394,397],{},[358,392,393],{},"能力边界",[358,395,396],{},"训练数据内的知识",[358,398,399],{},"训练数据 + 外部工具 + 实时信息",[340,401,402,405,408],{},[358,403,404],{},"用户角色",[358,406,407],{},"操作者（每一步都需参与）",[358,409,410],{},"监督者（设定目标后旁观）",[340,412,413,416,419],{},[358,414,415],{},"错误处理",[358,417,418],{},"无（一次性输出）",[358,420,421],{},"自我反思、重试、修正",[205,423,424],{},"当你对 Claude Code 说\"帮我重构这个模块的代码\"时，它不会只给你一段重构建议的文字说明。它会：读取相关文件、分析依赖关系、制定重构计划、执行修改、运行测试验证、在失败时调试并重试——整个过程你只需在关键节点确认即可。这就是 Agent 与聊天机器人的本质区别。",[195,426,428],{"id":427},"二planning规划从-cot-到-react","二、Planning（规划）：从 CoT 到 ReAct",[200,430,432],{"id":431},"_21-chain-of-thought让模型一步一步想","2.1 Chain-of-Thought：让模型\"一步一步想\"",[205,434,435,436,439,440],{},"要让 LLM 从\"回答问题\"进化到\"执行任务\"，首先需要解决的是",[209,437,438],{},"推理能力","。2022 年，Google 研究团队在论文《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》中提出了**思维链（Chain-of-Thought, CoT）**技术。",[242,441,442],{},[245,443,447],{"href":444,"ariaDescribedBy":445,"dataFootnoteRef":250,"id":446},"#user-content-fn-3",[249],"user-content-fnref-3","3",[205,449,450],{},"CoT 的核心思想极其简单：在提示词中要求模型\"一步一步思考\"（think step by step），模型就会在生成最终答案之前，先输出中间的推理步骤。这一简单的技巧显著提升了 LLM 在数学、逻辑推理和符号操作等复杂任务上的表现。",[205,452,453],{},"举个例子，面对问题\"一个农场有 35 只鸡和 28 只兔子，一共有多少条腿？\"，不使用 CoT 时模型可能直接给出一个错误答案；而使用 CoT 后，模型会这样推理：",[455,456,461],"pre",{"className":457,"code":459,"language":460},[458],"language-text","鸡有 2 条腿，35 只鸡共有 35 × 2 = 70 条腿。\n兔子有 4 条腿，28 只兔子共有 28 × 4 = 112 条腿。\n总腿数 = 70 + 112 = 182 条腿。\n","text",[462,463,459],"code",{"__ignoreMap":250},[205,465,466],{},"CoT 的革命性意义在于：它将一个\"端到端的黑盒预测\"转化为\"可解释的多步推理过程\"。这为后续 Agent 的规划能力奠定了基础。",[200,468,470],{"id":469},"_22-tree-of-thoughts探索多条推理路径","2.2 Tree of Thoughts：探索多条推理路径",[205,472,473,474,477],{},"然而，CoT 有一个致命缺陷：",[209,475,476],{},"它只能沿着一条线性路径推理","。一旦某一步出错，后续所有步骤都会建立在错误之上，模型没有\"回头\"的能力。这就像在迷宫中只能往前走，不能分叉探索。",[205,479,480,481,489],{},"2023 年，Yao 等人提出了**思维树（Tree of Thoughts, ToT）**框架。",[242,482,483],{},[245,484,488],{"href":485,"ariaDescribedBy":486,"dataFootnoteRef":250,"id":487},"#user-content-fn-4",[249],"user-content-fnref-4","4"," ToT 将推理过程建模为一棵搜索树：",[217,491,492,499,506],{},[220,493,494,495,498],{},"每个",[209,496,497],{},"节点","代表一个\"思维\"（中间推理步骤）",[220,500,501,502,505],{},"从每个节点可以分叉出多个",[209,503,504],{},"子节点","（不同的下一步推理方向）",[220,507,508,509,512],{},"模型通过",[209,510,511],{},"评估函数","判断哪些分支更有希望，然后使用 BFS（广度优先）或 DFS（深度优先）进行搜索",[205,514,515],{},"ToT 让 LLM 具备了类似人类\"深思熟虑\"的能力——不急于给出第一个想到的回答，而是先探索多种可能性，评估后再做选择。这在需要创造性思维或复杂决策的任务中尤为重要。",[200,517,519],{"id":518},"_23-react推理与行动的交响乐","2.3 ReAct：推理与行动的交响乐",[205,521,522,523],{},"CoT 和 ToT 解决了\"如何思考\"的问题，但 Agent 还需要\"如何行动\"。2023 年，Yao 等人在 ICLR 会议上发表了里程碑式的论文《ReAct: Synergizing Reasoning and Acting in Language Models》。",[242,524,525],{},[245,526,530],{"href":527,"ariaDescribedBy":528,"dataFootnoteRef":250,"id":529},"#user-content-fn-5",[249],"user-content-fnref-5","5",[205,532,533,534,537],{},"ReAct 的核心洞察是：",[209,535,536],{},"推理（Reasoning）和行动（Acting）应该交替进行、相互促进","。推理帮助模型制定和跟踪行动计划、处理异常情况；行动让模型能够与外部环境（如知识库、API、文件系统）交互，获取推理所需的信息。",[205,539,540],{},"ReAct 定义了一个标准的交互循环格式：",[455,542,545],{"className":543,"code":544,"language":460},[458],"Thought: [模型对当前状态的思考]\nAction: [模型决定执行的动作]\nObservation: [动作执行后从环境获得的结果]\n...（循环重复）\n",[462,546,544],{"__ignoreMap":250},[205,548,549],{},"这个循环在 Claude Code 中每天都在上演。以下是 ReAct 循环在 Claude Code 中的示意性运作方式：",[455,551,554],{"className":552,"code":553,"language":460},[458],"Thought: 用户报告测试失败，我需要先查看测试输出，找到失败原因。\nAction: 运行测试套件（Bash: npm test）\nObservation: 测试输出显示 3 个测试失败，错误信息指向 src\u002Futils\u002Fauth.ts 的第 42 行。\n\nThought: 错误与认证模块有关，我需要读取该文件了解上下文。\nAction: 读取文件（Read: src\u002Futils\u002Fauth.ts）\nObservation: 文件内容显示一个 JWT 验证函数，第 42 行使用了已废弃的 API。\n\nThought: 问题找到了——使用了过时的 JWT 验证方法。我需要修改代码使用新的 API。\nAction: 编辑文件（Edit: src\u002Futils\u002Fauth.ts）\nObservation: 文件修改成功。\n\nThought: 修改完成，我需要重新运行测试验证修复是否有效。\nAction: 运行测试（Bash: npm test）\nObservation: 所有测试通过。\n",[462,555,553],{"__ignoreMap":250},[205,557,558],{},"这就是 ReAct 循环在真实世界中的运作方式。每一次 Thought 都是规划，每一次 Action 都是工具调用，每一次 Observation 都是环境反馈。通过这个循环，Agent 能够自主地、一步一步地逼近目标。",[205,560,561,562],{},"ReAct 论文的实验结果令人印象深刻：在问答任务 HotpotQA 和事实核查任务 FEVER 上，ReAct 克服了纯 CoT 推理中常见的幻觉和错误传播问题；在交互式决策任务 ALFWorld 和 WebShop 上，ReAct 的绝对成功率分别比模仿学习和强化学习方法高出 34 和 10 个百分点。",[242,563,564],{},[245,565,530],{"href":527,"ariaDescribedBy":566,"dataFootnoteRef":250,"id":567},[249],"user-content-fnref-5-2",[200,569,571],{"id":570},"_24-自我反思从错误中学习","2.4 自我反思：从错误中学习",[205,573,574],{},"规划不是一次性的。真正强大的 Agent 还需要具备**自我反思（Self-Reflection）**能力——在执行过程中评估自己的表现，从错误中学习，并动态调整计划。",[205,576,577,578,586],{},"Shinn, Cassano, Berman 等人在 2023 年提出的 Reflexion 框架，为 Agent 增加了动态记忆和自我反思能力。",[242,579,580],{},[245,581,585],{"href":582,"ariaDescribedBy":583,"dataFootnoteRef":250,"id":584},"#user-content-fn-6",[249],"user-content-fnref-6","6"," 在 Reflexion 中，每次行动后，Agent 会计算一个启发式评估：轨迹是否低效？是否出现了幻觉？如果发现问题，Agent 会生成反思文本，将其存入工作记忆，并在后续决策中加以利用。",[205,588,589,590,593],{},"Claude Code 虽然没有显式实现 Reflexion，但其**自动记忆（Auto Memory）**机制起到了类似的作用。当 Claude 在多次会话中反复犯同一个错误时，用户纠正的信息会被自动记录到 ",[462,591,592],{},"~\u002F.claude\u002Fprojects\u002F\u003Cproject>\u002Fmemory\u002F"," 中，在后续会话中作为上下文加载，从而避免重复犯错。",[195,595,597],{"id":596},"三memory记忆从上下文窗口到向量存储","三、Memory（记忆）：从上下文窗口到向量存储",[200,599,601],{"id":600},"_31-人类记忆的启发","3.1 人类记忆的启发",[205,603,604,605],{},"在讨论 Agent 的记忆之前，让我们先看看人类记忆的运作方式。心理学将人类记忆分为三个层次：",[242,606,607],{},[245,608,612],{"href":609,"ariaDescribedBy":610,"dataFootnoteRef":250,"id":611},"#user-content-fn-7",[249],"user-content-fnref-7","7",[614,615,616,622,628],"ol",{},[220,617,618,621],{},[209,619,620],{},"感觉记忆（Sensory Memory）","：保留感官信息的短暂印象，仅持续数秒。",[220,623,624,627],{},[209,625,626],{},"短期记忆 \u002F 工作记忆（Short-Term \u002F Working Memory）","：存储当前意识中的信息，容量约为 7 个组块，持续 20-30 秒。",[220,629,630,633],{},[209,631,632],{},"长期记忆（Long-Term Memory）","：可存储数天到数十年的信息，容量几乎无限。分为显性记忆（事实和事件）和隐性记忆（技能和程序）。",[205,635,636,637],{},"Lilian Weng 在她的博客中指出，LLM Agent 的记忆系统可以与人脑记忆建立大致的映射：",[242,638,639],{},[245,640,301],{"href":298,"ariaDescribedBy":641,"dataFootnoteRef":250,"id":642},[249],"user-content-fnref-2-3",[334,644,645,658],{},[337,646,647],{},[340,648,649,652,655],{},[343,650,651],{},"人类记忆",[343,653,654],{},"Agent 记忆",[343,656,657],{},"对应机制",[353,659,660,671,682],{},[340,661,662,665,668],{},[358,663,664],{},"感觉记忆",[358,666,667],{},"嵌入表示",[358,669,670],{},"文本\u002F图像的 Embedding",[340,672,673,676,679],{},[358,674,675],{},"短期记忆",[358,677,678],{},"上下文学习",[358,680,681],{},"Transformer 的有限上下文窗口",[340,683,684,687,690],{},[358,685,686],{},"长期记忆",[358,688,689],{},"外部向量存储",[358,691,692],{},"Vector Store + 快速检索",[200,694,696],{"id":695},"_32-短期记忆上下文窗口","3.2 短期记忆：上下文窗口",[205,698,699,700,253],{},"LLM 的",[209,701,702,703,706],{},"上下文窗口（Context Window）",[209,704,705],{},"就是它的短期记忆。所有输入的提示词、历史对话、读取的文件内容，都占据这个有限的空间。当前主流模型的上下文窗口从 128K 到 2M 不等（2M 为 Gemini 系列，Claude 3.5 为 200K，GPT-4 为 128K），但无论如何，它都是","有限的",[205,708,709],{},"上下文窗口的限制带来了几个实际问题：",[217,711,712,718,724],{},[220,713,714,717],{},[209,715,716],{},"历史信息丢失","：长会话中，早期的对话内容可能被挤出窗口。",[220,719,720,723],{},[209,721,722],{},"注意力稀释","：窗口中信息过多时，模型对每条信息的关注度会下降。",[220,725,726,729],{},[209,727,728],{},"成本增加","：上下文越长，推理成本越高。",[205,731,732,733,736,737,739,740],{},"Claude Code 通过**压缩（Compaction）**机制应对这一限制。当会话上下文接近上限时，系统会自动将旧的工具输出清除，必要时对对话历史进行摘要。用户也可以手动执行 ",[462,734,735],{},"\u002Fcompact"," 命令来压缩会话。Anthropic 的官方文档建议：如果你想让某些指令在长会话中持久生效，不要只依赖对话历史，而应该将它们写入 ",[462,738,108],{}," 文件。",[242,741,742],{},[245,743,747],{"href":744,"ariaDescribedBy":745,"dataFootnoteRef":250,"id":746},"#user-content-fn-8",[249],"user-content-fnref-8","8",[200,749,751],{"id":750},"_33-长期记忆向量存储与-embedding","3.3 长期记忆：向量存储与 Embedding",[205,753,754,755,757],{},"为了突破上下文窗口的限制，Agent 需要",[209,756,686],{},"——一种能够在会话之间持久保存、并在需要时快速检索的信息存储机制。",[205,759,760,761,332],{},"标准的做法是使用",[209,762,763],{},"向量存储（Vector Store）",[614,765,766,772,778],{},[220,767,768,771],{},[209,769,770],{},"嵌入（Embedding）","：将文本、代码或其他信息通过 Embedding 模型转换为高维向量。语义相近的内容在向量空间中距离更近。",[220,773,774,777],{},[209,775,776],{},"存储","：将这些向量存入专门的数据库（如 FAISS、Pinecone、Weaviate、Chroma 等）。",[220,779,780,783],{},[209,781,782],{},"检索","：当需要回忆时，将查询转换为向量，通过**最大内积搜索（Maximum Inner Product Search, MIPS）**找到最相关的记忆片段。",[205,785,786,787],{},"为了提高检索速度，通常使用**近似最近邻（ANN）**算法。常见的选择包括：",[242,788,789],{},[245,790,301],{"href":298,"ariaDescribedBy":791,"dataFootnoteRef":250,"id":792},[249],"user-content-fnref-2-4",[217,794,795,801,807],{},[220,796,797,800],{},[209,798,799],{},"HNSW","（Hierarchical Navigable Small World）：构建多层小世界图，上层创建快捷路径，下层精细化搜索。",[220,802,803,806],{},[209,804,805],{},"FAISS","（Facebook AI Similarity Search）：通过向量量化和聚类加速搜索。",[220,808,809,812],{},[209,810,811],{},"ANNOY","（Approximate Nearest Neighbors Oh Yeah）：使用随机投影树进行高效搜索。",[200,814,816],{"id":815},"_34-claude-code-的记忆系统","3.4 Claude Code 的记忆系统",[205,818,819,820],{},"Claude Code 的记忆系统分为两个互补的层次：",[242,821,822],{},[245,823,747],{"href":744,"ariaDescribedBy":824,"dataFootnoteRef":250,"id":825},[249],"user-content-fnref-8-2",[205,827,828],{},[209,829,830],{},"CLAUDE.md——用户定义的规则记忆",[205,832,833,834,837,838,841,842,845],{},"这是由用户编写的持久化指令文件，存储在项目根目录（",[462,835,836],{},".\u002FCLAUDE.md"," 或 ",[462,839,840],{},".\u002F.claude\u002FCLAUDE.md","）或用户主目录（",[462,843,844],{},"~\u002F.claude\u002FCLAUDE.md","）。每个新会话开始时，这些文件会被完整加载到上下文中。它们包含：",[217,847,848,851,854,857],{},[220,849,850],{},"项目的构建命令和测试流程",[220,852,853],{},"代码风格和架构约定",[220,855,856],{},"\"总是做 X\" 或 \"绝不做 Y\" 的硬性规则",[220,858,859],{},"项目结构和关键文件路径",[205,861,862,863,866,867,870],{},"CLAUDE.md 的加载遵循目录层级规则：从当前工作目录向上遍历，加载沿途发现的所有 CLAUDE.md 文件。对于大型项目，还可以使用 ",[462,864,865],{},".claude\u002Frules\u002F"," 目录将规则按主题拆分，并通过 ",[462,868,869],{},"paths"," 字段限定规则适用的文件范围。",[205,872,873],{},[209,874,875],{},"Auto Memory——自动积累的经验记忆",[205,877,878,879,881],{},"这是 Claude 自动维护的学习笔记，存储在 ",[462,880,592],{}," 目录下。每次会话中，Claude 会根据用户的纠正和反馈，自动决定哪些信息值得记住：",[217,883,884,887,890,893],{},[220,885,886],{},"构建命令和调试技巧",[220,888,889],{},"代码风格偏好",[220,891,892],{},"架构决策和约定",[220,894,895],{},"反复出现的问题和解决方案",[205,897,898,901,902,905,906,909],{},[462,899,900],{},"MEMORY.md"," 作为索引文件，在每个会话开始时加载前 200 行或 25KB。详细笔记存放在独立的主题文件中（如 ",[462,903,904],{},"debugging.md","、",[462,907,908],{},"api-conventions.md","），Claude 在需要时按需读取。",[205,911,912],{},"这两种记忆系统的对比如下：",[334,914,915,927],{},[337,916,917],{},[340,918,919,922,924],{},[343,920,921],{},"特性",[343,923,108],{},[343,925,926],{},"Auto Memory",[353,928,929,940,951,962,973],{},[340,930,931,934,937],{},[358,932,933],{},"作者",[358,935,936],{},"用户",[358,938,939],{},"Claude 自动",[340,941,942,945,948],{},[358,943,944],{},"内容",[358,946,947],{},"规则和指令",[358,949,950],{},"学习和经验",[340,952,953,956,959],{},[358,954,955],{},"范围",[358,957,958],{},"项目\u002F用户\u002F组织级",[358,960,961],{},"每个工作树独立",[340,963,964,967,970],{},[358,965,966],{},"加载方式",[358,968,969],{},"每会话完整加载",[358,971,972],{},"每会话加载索引",[340,974,975,978,981],{},[358,976,977],{},"用途",[358,979,980],{},"指导行为",[358,982,983],{},"避免重复犯错",[195,985,987],{"id":986},"四tool-use工具使用从-function-calling-到-mcp","四、Tool Use（工具使用）：从 Function Calling 到 MCP",[200,989,991],{"id":990},"_41-工具使用的必要性","4.1 工具使用的必要性",[205,993,994,995],{},"LLM 的知识受限于训练数据，存在三个根本缺陷：",[242,996,997],{},[245,998,301],{"href":298,"ariaDescribedBy":999,"dataFootnoteRef":250,"id":1000},[249],"user-content-fnref-2-5",[614,1002,1003,1009,1015],{},[220,1004,1005,1008],{},[209,1006,1007],{},"知识截止","：模型不知道训练数据截止日期之后发生的事件。",[220,1010,1011,1014],{},[209,1012,1013],{},"无法行动","：模型不能直接执行代码、查询数据库或调用 API。",[220,1016,1017,1020],{},[209,1018,1019],{},"专业领域薄弱","：对于高度专业化的领域（如特定公司的内部系统），训练数据覆盖不足。",[205,1022,1023],{},"**工具使用（Tool Use）**正是为了解决这些问题。通过让 LLM 学会调用外部工具，Agent 的能力边界被大大扩展。",[200,1025,1027],{"id":1026},"_42-function-calling工具使用的基石","4.2 Function Calling：工具使用的基石",[205,1029,1030,1031],{},"Function Calling（函数调用）是 OpenAI 在 2023 年推出的 API 功能，现已成为业界标准。其核心机制是：",[242,1032,1033],{},[245,1034,1038],{"href":1035,"ariaDescribedBy":1036,"dataFootnoteRef":250,"id":1037},"#user-content-fn-9",[249],"user-content-fnref-9","9",[614,1040,1041,1048,1055,1062],{},[220,1042,1043,1044,1047],{},"开发者在 API 请求中提供一组",[209,1045,1046],{},"工具定义","（JSON Schema 格式），描述每个工具的名称、用途和参数。",[220,1049,1050,1051,1054],{},"LLM 在生成回复时，如果发现需要使用工具，会输出一个",[209,1052,1053],{},"工具调用请求","（包含工具名称和参数）。",[220,1056,1057,1058,1061],{},"应用程序接收到请求后，",[209,1059,1060],{},"执行实际的工具函数","，并将结果返回给 LLM。",[220,1063,1064],{},"LLM 根据工具返回的结果，生成最终的回复。",[205,1066,1067],{},"以天气查询为例：",[455,1069,1073],{"className":1070,"code":1071,"language":1072,"meta":250,"style":250},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F 工具定义\n{\n  \"name\": \"get_weather\",\n  \"description\": \"获取指定城市的当前天气\",\n  \"parameters\": {\n    \"type\": \"object\",\n    \"properties\": {\n      \"city\": {\"type\": \"string\", \"description\": \"城市名称\"}\n    },\n    \"required\": [\"city\"]\n  }\n}\n\n\u002F\u002F 模型输出的工具调用\n{\"city\": \"北京\"}\n\n\u002F\u002F 工具执行结果\n{\"temperature\": 22, \"condition\": \"晴朗\", \"humidity\": \"45%\"}\n\n\u002F\u002F 模型生成的最终回复\n\"北京今天天气晴朗，气温 22°C，湿度 45%，非常适合外出。\"\n","json",[462,1074,1075,1084,1091,1119,1140,1155,1178,1192,1246,1252,1276,1282,1287,1294,1300,1323,1328,1334,1389,1394,1400],{"__ignoreMap":250},[1076,1077,1080],"span",{"class":1078,"line":1079},"line",1,[1076,1081,1083],{"class":1082},"sHwdD","\u002F\u002F 工具定义\n",[1076,1085,1087],{"class":1078,"line":1086},2,[1076,1088,1090],{"class":1089},"sMK4o","{\n",[1076,1092,1094,1097,1101,1104,1107,1110,1114,1116],{"class":1078,"line":1093},3,[1076,1095,1096],{"class":1089},"  \"",[1076,1098,1100],{"class":1099},"spNyl","name",[1076,1102,1103],{"class":1089},"\"",[1076,1105,1106],{"class":1089},":",[1076,1108,1109],{"class":1089}," \"",[1076,1111,1113],{"class":1112},"sfazB","get_weather",[1076,1115,1103],{"class":1089},[1076,1117,1118],{"class":1089},",\n",[1076,1120,1122,1124,1127,1129,1131,1133,1136,1138],{"class":1078,"line":1121},4,[1076,1123,1096],{"class":1089},[1076,1125,1126],{"class":1099},"description",[1076,1128,1103],{"class":1089},[1076,1130,1106],{"class":1089},[1076,1132,1109],{"class":1089},[1076,1134,1135],{"class":1112},"获取指定城市的当前天气",[1076,1137,1103],{"class":1089},[1076,1139,1118],{"class":1089},[1076,1141,1143,1145,1148,1150,1152],{"class":1078,"line":1142},5,[1076,1144,1096],{"class":1089},[1076,1146,1147],{"class":1099},"parameters",[1076,1149,1103],{"class":1089},[1076,1151,1106],{"class":1089},[1076,1153,1154],{"class":1089}," {\n",[1076,1156,1158,1161,1165,1167,1169,1171,1174,1176],{"class":1078,"line":1157},6,[1076,1159,1160],{"class":1089},"    \"",[1076,1162,1164],{"class":1163},"sBMFI","type",[1076,1166,1103],{"class":1089},[1076,1168,1106],{"class":1089},[1076,1170,1109],{"class":1089},[1076,1172,1173],{"class":1112},"object",[1076,1175,1103],{"class":1089},[1076,1177,1118],{"class":1089},[1076,1179,1181,1183,1186,1188,1190],{"class":1078,"line":1180},7,[1076,1182,1160],{"class":1089},[1076,1184,1185],{"class":1163},"properties",[1076,1187,1103],{"class":1089},[1076,1189,1106],{"class":1089},[1076,1191,1154],{"class":1089},[1076,1193,1195,1198,1202,1204,1206,1209,1211,1214,1216,1218,1220,1223,1225,1228,1230,1232,1234,1236,1238,1241,1243],{"class":1078,"line":1194},8,[1076,1196,1197],{"class":1089},"      \"",[1076,1199,1201],{"class":1200},"sbssI","city",[1076,1203,1103],{"class":1089},[1076,1205,1106],{"class":1089},[1076,1207,1208],{"class":1089}," {",[1076,1210,1103],{"class":1089},[1076,1212,1164],{"class":1213},"swJcz",[1076,1215,1103],{"class":1089},[1076,1217,1106],{"class":1089},[1076,1219,1109],{"class":1089},[1076,1221,1222],{"class":1112},"string",[1076,1224,1103],{"class":1089},[1076,1226,1227],{"class":1089},",",[1076,1229,1109],{"class":1089},[1076,1231,1126],{"class":1213},[1076,1233,1103],{"class":1089},[1076,1235,1106],{"class":1089},[1076,1237,1109],{"class":1089},[1076,1239,1240],{"class":1112},"城市名称",[1076,1242,1103],{"class":1089},[1076,1244,1245],{"class":1089},"}\n",[1076,1247,1249],{"class":1078,"line":1248},9,[1076,1250,1251],{"class":1089},"    },\n",[1076,1253,1255,1257,1260,1262,1264,1267,1269,1271,1273],{"class":1078,"line":1254},10,[1076,1256,1160],{"class":1089},[1076,1258,1259],{"class":1163},"required",[1076,1261,1103],{"class":1089},[1076,1263,1106],{"class":1089},[1076,1265,1266],{"class":1089}," [",[1076,1268,1103],{"class":1089},[1076,1270,1201],{"class":1112},[1076,1272,1103],{"class":1089},[1076,1274,1275],{"class":1089},"]\n",[1076,1277,1279],{"class":1078,"line":1278},11,[1076,1280,1281],{"class":1089},"  }\n",[1076,1283,1285],{"class":1078,"line":1284},12,[1076,1286,1245],{"class":1089},[1076,1288,1290],{"class":1078,"line":1289},13,[1076,1291,1293],{"emptyLinePlaceholder":1292},true,"\n",[1076,1295,1297],{"class":1078,"line":1296},14,[1076,1298,1299],{"class":1082},"\u002F\u002F 模型输出的工具调用\n",[1076,1301,1303,1306,1308,1310,1312,1314,1316,1319,1321],{"class":1078,"line":1302},15,[1076,1304,1305],{"class":1089},"{",[1076,1307,1103],{"class":1089},[1076,1309,1201],{"class":1099},[1076,1311,1103],{"class":1089},[1076,1313,1106],{"class":1089},[1076,1315,1109],{"class":1089},[1076,1317,1318],{"class":1112},"北京",[1076,1320,1103],{"class":1089},[1076,1322,1245],{"class":1089},[1076,1324,1326],{"class":1078,"line":1325},16,[1076,1327,1293],{"emptyLinePlaceholder":1292},[1076,1329,1331],{"class":1078,"line":1330},17,[1076,1332,1333],{"class":1082},"\u002F\u002F 工具执行结果\n",[1076,1335,1337,1339,1341,1344,1346,1348,1351,1353,1355,1358,1360,1362,1364,1367,1369,1371,1373,1376,1378,1380,1382,1385,1387],{"class":1078,"line":1336},18,[1076,1338,1305],{"class":1089},[1076,1340,1103],{"class":1089},[1076,1342,1343],{"class":1099},"temperature",[1076,1345,1103],{"class":1089},[1076,1347,1106],{"class":1089},[1076,1349,1350],{"class":1200}," 22",[1076,1352,1227],{"class":1089},[1076,1354,1109],{"class":1089},[1076,1356,1357],{"class":1099},"condition",[1076,1359,1103],{"class":1089},[1076,1361,1106],{"class":1089},[1076,1363,1109],{"class":1089},[1076,1365,1366],{"class":1112},"晴朗",[1076,1368,1103],{"class":1089},[1076,1370,1227],{"class":1089},[1076,1372,1109],{"class":1089},[1076,1374,1375],{"class":1099},"humidity",[1076,1377,1103],{"class":1089},[1076,1379,1106],{"class":1089},[1076,1381,1109],{"class":1089},[1076,1383,1384],{"class":1112},"45%",[1076,1386,1103],{"class":1089},[1076,1388,1245],{"class":1089},[1076,1390,1392],{"class":1078,"line":1391},19,[1076,1393,1293],{"emptyLinePlaceholder":1292},[1076,1395,1397],{"class":1078,"line":1396},20,[1076,1398,1399],{"class":1082},"\u002F\u002F 模型生成的最终回复\n",[1076,1401,1403,1405,1408],{"class":1078,"line":1402},21,[1076,1404,1103],{"class":1089},[1076,1406,1407],{"class":1112},"北京今天天气晴朗，气温 22°C，湿度 45%，非常适合外出。",[1076,1409,1410],{"class":1089},"\"\n",[205,1412,1413,1414],{},"Claude Code 内置了丰富的工具集，按功能分类包括：",[242,1415,1416],{},[245,1417,1421],{"href":1418,"ariaDescribedBy":1419,"dataFootnoteRef":250,"id":1420},"#user-content-fn-10",[249],"user-content-fnref-10","10",[217,1423,1424,1430,1436,1442,1448],{},[220,1425,1426,1429],{},[209,1427,1428],{},"文件操作","：Read（读取）、Edit（编辑）、Write（写入）",[220,1431,1432,1435],{},[209,1433,1434],{},"搜索","：Grep（文本搜索）、Glob（文件匹配）",[220,1437,1438,1441],{},[209,1439,1440],{},"执行","：Bash（终端命令）",[220,1443,1444,1447],{},[209,1445,1446],{},"网络","：WebFetch（网页获取）",[220,1449,1450,1453],{},[209,1451,1452],{},"代码智能","：LSP（语言服务器协议，支持跳转定义、查找引用等）",[200,1455,1457],{"id":1456},"_43-mcp工具使用的标准化","4.3 MCP：工具使用的标准化",[205,1459,1460,1461,1464,1465],{},"2024 年 11 月，Anthropic 推出了",[209,1462,1463],{},"模型上下文协议（Model Context Protocol, MCP）","——一个开放标准，旨在统一 AI 系统与外部工具、数据源的集成方式。",[242,1466,1467],{},[245,1468,1472],{"href":1469,"ariaDescribedBy":1470,"dataFootnoteRef":250,"id":1471},"#user-content-fn-11",[249],"user-content-fnref-11","11",[205,1474,1475,1476,1479],{},"MCP 的设计灵感来自软件开发中的",[209,1477,1478],{},"语言服务器协议（LSP）","。就像 LSP 让编辑器能够统一对接各种编程语言的智能提示一样，MCP 让 AI Agent 能够统一对接各种外部工具和数据源。",[205,1481,1482],{},"MCP 的核心架构采用客户端-服务器模式：",[217,1484,1485,1491],{},[220,1486,1487,1490],{},[209,1488,1489],{},"MCP 客户端","：AI 应用（如 Claude Code）内置的 MCP 客户端。",[220,1492,1493,1496],{},[209,1494,1495],{},"MCP 服务器","：为特定数据源或工具提供标准化接口的适配器。",[205,1498,1499,1500],{},"通过 MCP，Claude Code 可以连接到：",[242,1501,1502],{},[245,1503,1421],{"href":1418,"ariaDescribedBy":1504,"dataFootnoteRef":250,"id":1505},[249],"user-content-fnref-10-2",[217,1507,1508,1511,1514,1517,1520],{},[220,1509,1510],{},"数据库（PostgreSQL、SQLite 等）",[220,1512,1513],{},"版本控制系统（Git）",[220,1515,1516],{},"文件系统",[220,1518,1519],{},"第三方 API（Slack、Notion、Jira 等）",[220,1521,1522],{},"浏览器自动化工具（Playwright）",[205,1524,1525,1526,1529,1530],{},"MCP 的一个重要设计是",[209,1527,1528],{},"按需加载","：工具定义默认延迟加载，只有工具名称占用上下文空间，直到实际使用时才加载完整定义。这有效避免了扩展能力带来的上下文膨胀问题。",[242,1531,1532],{},[245,1533,1421],{"href":1418,"ariaDescribedBy":1534,"dataFootnoteRef":250,"id":1535},[249],"user-content-fnref-10-3",[200,1537,1539],{"id":1538},"_44-工具使用的层次","4.4 工具使用的层次",[205,1541,1542,1543],{},"Li 等人在 2023 年提出的 API-Bank 基准，将 Agent 的工具使用能力分为三个层次：",[242,1544,1545],{},[245,1546,1550],{"href":1547,"ariaDescribedBy":1548,"dataFootnoteRef":250,"id":1549},"#user-content-fn-13",[249],"user-content-fnref-13","12",[217,1552,1553,1559,1565],{},[220,1554,1555,1558],{},[209,1556,1557],{},"Level-1：调用 API","。给定 API 描述，模型需要判断是否需要调用、如何正确调用、如何响应返回结果。",[220,1560,1561,1564],{},[209,1562,1563],{},"Level-2：检索 API","。模型需要搜索可能解决用户需求的 API，并通过阅读文档学习如何使用。",[220,1566,1567,1570],{},[209,1568,1569],{},"Level-3：规划 API 调用","。面对模糊的用户需求，模型需要进行多次 API 调用的规划，按正确顺序执行。",[205,1572,1573],{},"Claude Code 在日常使用中展现了 Level-3 的能力。例如，当用户说\"帮我部署这个应用到生产环境\"时，Claude Code 可能需要：读取部署配置文件、检查环境变量、运行构建命令、调用部署 API、验证部署结果——这一系列操作涉及多个工具的协调使用。",[195,1575,1577],{"id":1576},"五三要素协同以-claude-code-为例","五、三要素协同：以 Claude Code 为例",[200,1579,1581],{"id":1580},"_51-一个完整任务的解剖","5.1 一个完整任务的解剖",[205,1583,1584],{},"让我们以一个真实的开发任务为例，观察 Claude Code 中 Planning、Memory 和 Tool Use 如何协同工作：",[205,1586,1587,1590],{},[209,1588,1589],{},"用户请求","：\"给这个项目添加用户认证功能，使用 JWT，包括登录和注册接口。\"",[205,1592,1593,332],{},[209,1594,1595],{},"Planning（规划）",[205,1597,1598],{},"Claude Code 首先进行任务分解：",[614,1600,1601,1604,1607,1610,1613,1616,1619,1622],{},[220,1602,1603],{},"了解项目技术栈（通过读取 package.json、框架配置文件）",[220,1605,1606],{},"检查现有代码结构（路由、模型、中间件的目录组织）",[220,1608,1609],{},"设计认证模块的架构（路由、控制器、服务层、数据库模型）",[220,1611,1612],{},"实现注册接口（输入验证、密码哈希、数据库写入）",[220,1614,1615],{},"实现登录接口（凭证验证、JWT 签发）",[220,1617,1618],{},"添加认证中间件（保护需要登录的路由）",[220,1620,1621],{},"编写测试",[220,1623,1624],{},"运行测试验证",[205,1626,1627],{},"这个规划不是一次性完成的，而是在执行过程中动态调整的。如果 Claude 发现项目使用了 Prisma 而非 Mongoose，它会调整数据库模型的实现方式；如果测试失败，它会重新规划调试步骤。",[205,1629,1630,332],{},[209,1631,1632],{},"Memory（记忆）",[205,1634,1635],{},"在整个过程中，记忆系统持续发挥作用：",[217,1637,1638,1643,1648],{},[220,1639,1640,1642],{},[209,1641,108],{}," 告诉 Claude：\"本项目使用 TypeScript + Express + Prisma + PostgreSQL\"、\"API 路由放在 src\u002Fapi\u002Froutes\u002F 目录\"、\"所有接口需要 Swagger 文档\"。",[220,1644,1645,1647],{},[209,1646,926],{}," 提醒 Claude：\"上次添加类似功能时，测试数据库需要手动迁移\"、\"用户偏好使用 bcrypt 而非 argon2 进行密码哈希\"。",[220,1649,1650,1653],{},[209,1651,1652],{},"上下文窗口"," 维护当前会话的对话历史和已读取的文件内容。",[205,1655,1656,332],{},[209,1657,1658],{},"Tool Use（工具使用）",[205,1660,1661],{},"每一步规划都通过具体的工具调用实现：",[455,1663,1666],{"className":1664,"code":1665,"language":460},[458],"Read(package.json)        → 了解依赖和脚本\nRead(src\u002Fapp.ts)          → 了解应用入口和中间件注册方式\nRead(prisma\u002Fschema.prisma) → 了解数据模型\nEdit(prisma\u002Fschema.prisma) → 添加 User 模型\nBash(npx prisma migrate dev) → 执行数据库迁移\nWrite(src\u002Fapi\u002Froutes\u002Fauth.ts) → 创建认证路由\nEdit(src\u002Fapp.ts)          → 注册认证路由\nBash(npm test)            → 运行测试\n",[462,1667,1665],{"__ignoreMap":250},[205,1669,1670],{},"每个工具调用的结果（Observation）都会反馈给模型，影响下一步的 Thought 和 Action。这就是 ReAct 循环的真实运作。",[200,1672,1674],{"id":1673},"_52-子代理分层规划与上下文隔离","5.2 子代理：分层规划与上下文隔离",[205,1676,1677,1678,1681,1682],{},"对于特别复杂的任务，Claude Code 还会使用",[209,1679,1680],{},"子代理（Subagent）","。子代理是在独立上下文窗口中运行的专门化 AI，拥有自己的工具权限和记忆。",[242,1683,1684],{},[245,1685,1421],{"href":1418,"ariaDescribedBy":1686,"dataFootnoteRef":250,"id":1687},[249],"user-content-fnref-10-4",[205,1689,1690],{},"例如，在上述认证功能开发中，Claude Code 可能委派一个专门的安全审查子代理。以下示意性配置展示了子代理的典型定义方式：",[455,1692,1696],{"className":1693,"code":1694,"language":1695,"meta":250,"style":250},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","name: security-reviewer\ndescription: 审查代码安全漏洞\ntools: Read, Grep, Glob\nmodel: opus\npermissionMode: plan  # 示意字段，请以官方文档为准\n","yaml",[462,1697,1698,1707,1716,1726,1736],{"__ignoreMap":250},[1076,1699,1700,1702,1704],{"class":1078,"line":1079},[1076,1701,1100],{"class":1213},[1076,1703,1106],{"class":1089},[1076,1705,1706],{"class":1112}," security-reviewer\n",[1076,1708,1709,1711,1713],{"class":1078,"line":1086},[1076,1710,1126],{"class":1213},[1076,1712,1106],{"class":1089},[1076,1714,1715],{"class":1112}," 审查代码安全漏洞\n",[1076,1717,1718,1721,1723],{"class":1078,"line":1093},[1076,1719,1720],{"class":1213},"tools",[1076,1722,1106],{"class":1089},[1076,1724,1725],{"class":1112}," Read, Grep, Glob\n",[1076,1727,1728,1731,1733],{"class":1078,"line":1121},[1076,1729,1730],{"class":1213},"model",[1076,1732,1106],{"class":1089},[1076,1734,1735],{"class":1112}," opus\n",[1076,1737,1738,1741,1743,1746],{"class":1078,"line":1142},[1076,1739,1740],{"class":1213},"permissionMode",[1076,1742,1106],{"class":1089},[1076,1744,1745],{"class":1112}," plan",[1076,1747,1748],{"class":1082},"  # 示意字段，请以官方文档为准\n",[205,1750,1751],{},"这个子代理在只读模式下审查认证代码，检查 SQL 注入、密码存储安全、JWT 配置等问题，然后返回审查报告。主代理根据报告决定是否需要修改。",[205,1753,1754,1755,1758,1759],{},"子代理的价值不仅在于专业化，更在于",[209,1756,1757],{},"上下文管理","——子代理的详细工作（如遍历大量文件）不会占用主代理的上下文窗口，只有最终摘要返回给主代理。",[242,1760,1761],{},[245,1762,1421],{"href":1418,"ariaDescribedBy":1763,"dataFootnoteRef":250,"id":1764},[249],"user-content-fnref-10-5",[200,1766,1768],{"id":1767},"_53-安全边界规划与执行的约束","5.3 安全边界：规划与执行的约束",[205,1770,1771,1772,1775,1776],{},"Claude Code 的架构中，Planning、Memory 和 Tool Use 并非无约束地运行。Anthropic 设计了一套",[209,1773,1774],{},"分层治理机制","来确保安全：",[242,1777,1778],{},[245,1779,1421],{"href":1418,"ariaDescribedBy":1780,"dataFootnoteRef":250,"id":1781},[249],"user-content-fnref-10-6",[217,1783,1784,1810,1816,1822],{},[220,1785,1786,1789,1790,1793,1794,1797,1798,1801,1802,1805,1806,1809],{},[209,1787,1788],{},"权限模式（Permission Mode）","：官方提供四种主要模式，用户可以根据任务敏感度选择：",[462,1791,1792],{},"default","（需逐条确认）、",[462,1795,1796],{},"acceptEdits","（自动接受编辑）、",[462,1799,1800],{},"plan","（计划模式，只读分析后生成计划）、",[462,1803,1804],{},"bypassPermissions","（跳过权限提示，适用于 CI\u002F容器环境）。CLI 另有 ",[462,1807,1808],{},"--dangerously-skip-permissions"," 选项。",[220,1811,1812,1815],{},[209,1813,1814],{},"沙箱（Sandbox）","：Bash 命令在 OS 级沙箱中运行（macOS 使用 Seatbelt，Linux 使用 bubblewrap），限制文件系统和网络访问。",[220,1817,1818,1821],{},[209,1819,1820],{},"Hooks","：在工具执行前触发的用户自定义检查，可以拦截、修改或拒绝工具调用。",[220,1823,1824,1827],{},[209,1825,1826],{},"Checkpoints","：每次文件修改前自动快照，支持代码和对话状态的回溯。",[205,1829,1830],{},"这些安全机制与三要素协同工作：Planning 生成的计划可能包含危险操作，但 Permission Mode 和 Sandbox 会在执行层拦截；Memory 中的 CLAUDE.md 可以包含安全规则（如\"绝不修改 .env 文件\"），在规划阶段就影响 Agent 的决策。",[195,1832,1834],{"id":1833},"六从-llm-到-agent范式转移的深层意义","六、从 LLM 到 Agent：范式转移的深层意义",[200,1836,1838],{"id":1837},"_61-从知识压缩到行动系统","6.1 从\"知识压缩\"到\"行动系统\"",[205,1840,1841,1842,1845],{},"传统 LLM 的本质是",[209,1843,1844],{},"知识压缩","——将人类语言中的统计规律压缩进模型参数中。当你向 ChatGPT 提问时，它本质上是在做\"基于概率的文本续写\"。",[205,1847,1848,1849,1852],{},"Agent 则代表了一个根本不同的范式：",[209,1850,1851],{},"行动系统（Action System）","。LLM 不再是孤立的文本生成器，而是嵌入在一个能够感知环境、制定计划、执行动作、学习反馈的闭环系统中。这个转变的意义堪比从\"百科全书\"到\"机器人\"的跨越。",[200,1854,1856],{"id":1855},"_62-从人机交互到人机协作","6.2 从\"人机交互\"到\"人机协作\"",[205,1858,1859,1860,1863,1864,1867],{},"聊天机器人时代，人机交互的模式是",[209,1861,1862],{},"指令-响应","：人发出指令，机器给出响应，循环往复。Agent 时代，人机关系进化为",[209,1865,1866],{},"协作","：人设定目标，Agent 自主执行，人在关键节点监督和纠正。",[205,1869,1870,1871],{},"Anthropic 在《Building Effective Agents》一文中，将 Agentic 系统分为两类：",[242,1872,1873],{},[245,1874,1878],{"href":1875,"ariaDescribedBy":1876,"dataFootnoteRef":250,"id":1877},"#user-content-fn-12",[249],"user-content-fnref-12","13",[217,1880,1881,1887],{},[220,1882,1883,1886],{},[209,1884,1885],{},"Workflows（工作流）","：LLM 和工具通过预定义的代码路径编排，适合任务明确的场景。Workflows 提供可预测性和一致性。",[220,1888,1889,1892],{},[209,1890,1891],{},"Agents（代理）","：LLM 动态指导自己的流程和工具使用，自主决定如何完成任务，适合开放式问题。Agents 在需要灵活性时更具优势。",[205,1894,1895,1896,1899],{},"两者是",[209,1897,1898],{},"互补而非对立","的关系——Workflows 适合明确任务，Agents 适合开放问题。Claude Code 同时具备这两种能力：对于简单的文件编辑，它可以遵循预定义的工作流；对于复杂的重构任务，它会进入自主 Agent 模式，动态规划每一步操作。",[200,1901,1903],{"id":1902},"_63-从软件工具到软件伙伴","6.3 从\"软件工具\"到\"软件伙伴\"",[205,1905,1906],{},"最深刻的范式转移或许是心理层面的。当开发者使用 Claude Code 时，他们逐渐从\"使用一个工具\"转变为\"与一个伙伴协作\"。这个伙伴：",[217,1908,1909,1912,1915,1918],{},[220,1910,1911],{},"记得项目的每一个细节（Memory）",[220,1913,1914],{},"能够自主规划和执行复杂任务（Planning）",[220,1916,1917],{},"能够调用各种工具与外部世界交互（Tool Use）",[220,1919,1920],{},"会从错误中学习并改进（Self-Reflection）",[205,1922,1923,1924],{},"这不是拟人化的修辞，而是对系统能力的准确描述。正如 Lilian Weng 所说：\"这可能只是一个新时代的开端。\"",[242,1925,1926],{},[245,1927,301],{"href":298,"ariaDescribedBy":1928,"dataFootnoteRef":250,"id":1929},[249],"user-content-fnref-2-6",[200,1931,1933],{"id":1932},"_64-当前局限与未来方向","6.4 当前局限与未来方向",[205,1935,1936,1937],{},"尽管 Agent 技术已经取得显著进展，但仍面临挑战：",[242,1938,1939],{},[245,1940,301],{"href":298,"ariaDescribedBy":1941,"dataFootnoteRef":250,"id":1942},[249],"user-content-fnref-2-7",[217,1944,1945,1951,1957],{},[220,1946,1947,1950],{},[209,1948,1949],{},"有限的上下文长度","：上下文窗口仍然是瓶颈，尽管向量存储可以缓解，但其表示能力仍不如完整的注意力机制。",[220,1952,1953,1956],{},[209,1954,1955],{},"长期规划的困难","：面对漫长历史和复杂解空间，LLM 在规划上仍不如人类 robust，遇到意外错误时调整计划的能力有限。",[220,1958,1959,1962],{},[209,1960,1961],{},"自然语言接口的可靠性","：Agent 依赖自然语言作为 LLM 与外部组件（记忆、工具）之间的接口，但 LLM 可能产生格式错误，甚至表现出\"叛逆\"行为（如拒绝遵循指令）。",[205,1964,1965,1966,1969,1970],{},"Anthropic 的建议是：",[209,1967,1968],{},"从最简单的方案开始，只在必要时增加复杂度","。对于许多应用，优化单轮 LLM 调用（配合检索和上下文示例）已经足够。当确实需要 Agent 时，应遵循三个核心原则：",[242,1971,1972],{},[245,1973,1878],{"href":1875,"ariaDescribedBy":1974,"dataFootnoteRef":250,"id":1975},[249],"user-content-fnref-12-2",[614,1977,1978,1984,1990],{},[220,1979,1980,1983],{},[209,1981,1982],{},"保持简单","：Agent 的设计应尽可能简洁。",[220,1985,1986,1989],{},[209,1987,1988],{},"追求透明","：明确展示 Agent 的规划步骤。",[220,1991,1992,1995],{},[209,1993,1994],{},"精心打磨工具接口","：通过完善的文档和测试，确保工具易于理解和正确使用。",[195,1997,1999],{"id":1998},"七总结","七、总结",[205,2001,2002],{},"从聊天机器人到 Agent，AI 正在经历一场从\"会说\"到\"会做\"的质变。这场质变由三个核心能力驱动：",[217,2004,2005,2010,2015],{},[220,2006,2007,2009],{},[209,2008,1595],{},"：通过 CoT、ToT、ReAct 等技术，Agent 能够将复杂任务分解为可执行的步骤，并在推理与行动的交替循环中逐步逼近目标。",[220,2011,2012,2014],{},[209,2013,1632],{},"：通过短期记忆（上下文窗口）和长期记忆（向量存储 + Embedding），Agent 能够在会话之间保持状态，从经验中学习。",[220,2016,2017,2019],{},[209,2018,1658],{},"：通过 Function Calling 和 MCP 等机制，Agent 能够调用外部 API、执行代码、读写文件，将能力边界扩展到训练数据之外。",[205,2021,2022,2023,2026],{},"Claude Code 是这一范式转移的工程化典范。它以 Claude LLM 为大脑，通过 ReAct 循环自主规划与执行，借助 CLAUDE.md 和 Auto Memory 实现跨会话记忆，通过内置工具和 MCP 扩展与外部世界的交互能力。当你下一次在终端中输入 ",[462,2024,2025],{},"claude"," 时，你启动的不只是一个聊天程序，而是一个具备规划、记忆和工具使用能力的智能代理——一个正在与你协作完成软件开发任务的数字伙伴。",[2028,2029],"hr",{},[195,2031,2032],{"id":2032},"参考来源",[2034,2035,2038,2043],"section",{"className":2036,"dataFootnotes":250},[2037],"footnotes",[195,2039,2042],{"className":2040,"id":249},[2041],"sr-only","Footnotes",[614,2044,2045,2062,2117,2130,2139,2159,2172,2181,2201,2214,2267,2280,2293],{},[220,2046,2048,2049,2054,2055],{"id":2047},"user-content-fn-1","IBM. \"AI Agents vs. AI Assistants.\" IBM Think, 2025. ",[245,2050,2051],{"href":2051,"rel":2052},"https:\u002F\u002Fwww.ibm.com\u002Fthink\u002Ftopics\u002Fai-agents-vs-ai-assistants",[2053],"nofollow"," ",[245,2056,2061],{"href":2057,"ariaLabel":2058,"className":2059,"dataFootnoteBackref":250},"#user-content-fnref-1","Back to reference 1",[2060],"data-footnote-backref","↩",[220,2063,2065,2066,2054,2070,2054,2075,2054,2082,2054,2089,2054,2096,2054,2103,2054,2110],{"id":2064},"user-content-fn-2","Weng, Lilian. \"LLM Powered Autonomous Agents.\" Lil'Log, Jun 2023. ",[245,2067,2068],{"href":2068,"rel":2069},"https:\u002F\u002Flilianweng.github.io\u002Fposts\u002F2023-06-23-agent\u002F",[2053],[245,2071,2061],{"href":2072,"ariaLabel":2073,"className":2074,"dataFootnoteBackref":250},"#user-content-fnref-2","Back to reference 2",[2060],[245,2076,2061,2080],{"href":2077,"ariaLabel":2078,"className":2079,"dataFootnoteBackref":250},"#user-content-fnref-2-2","Back to reference 2-2",[2060],[242,2081,301],{},[245,2083,2061,2087],{"href":2084,"ariaLabel":2085,"className":2086,"dataFootnoteBackref":250},"#user-content-fnref-2-3","Back to reference 2-3",[2060],[242,2088,447],{},[245,2090,2061,2094],{"href":2091,"ariaLabel":2092,"className":2093,"dataFootnoteBackref":250},"#user-content-fnref-2-4","Back to reference 2-4",[2060],[242,2095,488],{},[245,2097,2061,2101],{"href":2098,"ariaLabel":2099,"className":2100,"dataFootnoteBackref":250},"#user-content-fnref-2-5","Back to reference 2-5",[2060],[242,2102,530],{},[245,2104,2061,2108],{"href":2105,"ariaLabel":2106,"className":2107,"dataFootnoteBackref":250},"#user-content-fnref-2-6","Back to reference 2-6",[2060],[242,2109,585],{},[245,2111,2061,2115],{"href":2112,"ariaLabel":2113,"className":2114,"dataFootnoteBackref":250},"#user-content-fnref-2-7","Back to reference 2-7",[2060],[242,2116,612],{},[220,2118,2120,2121,2054,2125],{"id":2119},"user-content-fn-3","Wei, Jason, et al. \"Chain-of-Thought Prompting Elicits Reasoning in Large Language Models.\" NeurIPS 2022. ",[245,2122,2123],{"href":2123,"rel":2124},"https:\u002F\u002Farxiv.org\u002Fabs\u002F2201.11903",[2053],[245,2126,2061],{"href":2127,"ariaLabel":2128,"className":2129,"dataFootnoteBackref":250},"#user-content-fnref-3","Back to reference 3",[2060],[220,2131,2133,2134],{"id":2132},"user-content-fn-4","Yao, Shunyu, et al. \"Tree of Thoughts: Deliberate Problem Solving with Large Language Models.\" arXiv:2305.10601, 2023. ",[245,2135,2061],{"href":2136,"ariaLabel":2137,"className":2138,"dataFootnoteBackref":250},"#user-content-fnref-4","Back to reference 4",[2060],[220,2140,2142,2143,2054,2147,2054,2152],{"id":2141},"user-content-fn-5","Yao, Shunyu, et al. \"ReAct: Synergizing Reasoning and Acting in Language Models.\" ICLR 2023. ",[245,2144,2145],{"href":2145,"rel":2146},"https:\u002F\u002Farxiv.org\u002Fabs\u002F2210.03629",[2053],[245,2148,2061],{"href":2149,"ariaLabel":2150,"className":2151,"dataFootnoteBackref":250},"#user-content-fnref-5","Back to reference 5",[2060],[245,2153,2061,2157],{"href":2154,"ariaLabel":2155,"className":2156,"dataFootnoteBackref":250},"#user-content-fnref-5-2","Back to reference 5-2",[2060],[242,2158,301],{},[220,2160,2162,2163,2054,2167],{"id":2161},"user-content-fn-6","Shinn, Noah, Federico Cassano, Edward Berman, Ashwin Gopinath, Karthik Narasimhan, and Shunyu Yao. \"Reflexion: Language Agents with Verbal Reinforcement Learning.\" arXiv:2303.11366v4, 2023. ",[245,2164,2165],{"href":2165,"rel":2166},"https:\u002F\u002Farxiv.org\u002Fabs\u002F2303.11366",[2053],[245,2168,2061],{"href":2169,"ariaLabel":2170,"className":2171,"dataFootnoteBackref":250},"#user-content-fnref-6","Back to reference 6",[2060],[220,2173,2175,2176],{"id":2174},"user-content-fn-7","Miller, George A. \"The magical number seven, plus or minus two: Some limits on our capacity for processing information.\" Psychological Review, 1956. ",[245,2177,2061],{"href":2178,"ariaLabel":2179,"className":2180,"dataFootnoteBackref":250},"#user-content-fnref-7","Back to reference 7",[2060],[220,2182,2184,2185,2054,2189,2054,2194],{"id":2183},"user-content-fn-8","Anthropic. \"How Claude remembers your project - Memory.\" Claude Code Docs. ",[245,2186,2187],{"href":2187,"rel":2188},"https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fmemory",[2053],[245,2190,2061],{"href":2191,"ariaLabel":2192,"className":2193,"dataFootnoteBackref":250},"#user-content-fnref-8","Back to reference 8",[2060],[245,2195,2061,2199],{"href":2196,"ariaLabel":2197,"className":2198,"dataFootnoteBackref":250},"#user-content-fnref-8-2","Back to reference 8-2",[2060],[242,2200,301],{},[220,2202,2204,2205,2054,2209],{"id":2203},"user-content-fn-9","OpenAI. \"Function calling.\" OpenAI API Docs. ",[245,2206,2207],{"href":2207,"rel":2208},"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Ffunction-calling",[2053],[245,2210,2061],{"href":2211,"ariaLabel":2212,"className":2213,"dataFootnoteBackref":250},"#user-content-fnref-9","Back to reference 9",[2060],[220,2215,2217,2218,2222,2223,2054,2227,2054,2232,2054,2239,2054,2246,2054,2253,2054,2260],{"id":2216},"user-content-fn-10","Anthropic. \"Claude Code sandboxing.\" Anthropic Engineering Blog, 2025. ",[245,2219,2220],{"href":2220,"rel":2221},"https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fclaude-code-sandboxing",[2053],"; Anthropic. \"Create custom subagents.\" Claude Code Docs. ",[245,2224,2225],{"href":2225,"rel":2226},"https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fsub-agents",[2053],[245,2228,2061],{"href":2229,"ariaLabel":2230,"className":2231,"dataFootnoteBackref":250},"#user-content-fnref-10","Back to reference 10",[2060],[245,2233,2061,2237],{"href":2234,"ariaLabel":2235,"className":2236,"dataFootnoteBackref":250},"#user-content-fnref-10-2","Back to reference 10-2",[2060],[242,2238,301],{},[245,2240,2061,2244],{"href":2241,"ariaLabel":2242,"className":2243,"dataFootnoteBackref":250},"#user-content-fnref-10-3","Back to reference 10-3",[2060],[242,2245,447],{},[245,2247,2061,2251],{"href":2248,"ariaLabel":2249,"className":2250,"dataFootnoteBackref":250},"#user-content-fnref-10-4","Back to reference 10-4",[2060],[242,2252,488],{},[245,2254,2061,2258],{"href":2255,"ariaLabel":2256,"className":2257,"dataFootnoteBackref":250},"#user-content-fnref-10-5","Back to reference 10-5",[2060],[242,2259,530],{},[245,2261,2061,2265],{"href":2262,"ariaLabel":2263,"className":2264,"dataFootnoteBackref":250},"#user-content-fnref-10-6","Back to reference 10-6",[2060],[242,2266,585],{},[220,2268,2270,2271,2054,2275],{"id":2269},"user-content-fn-11","Anthropic. \"Model Context Protocol.\" 2024. ",[245,2272,2273],{"href":2273,"rel":2274},"https:\u002F\u002Fmodelcontextprotocol.io",[2053],[245,2276,2061],{"href":2277,"ariaLabel":2278,"className":2279,"dataFootnoteBackref":250},"#user-content-fnref-11","Back to reference 11",[2060],[220,2281,2283,2284,2054,2288],{"id":2282},"user-content-fn-13","Li, Minghao, et al. \"APIBench: A Benchmark for Tool-Augmented LLMs.\" arXiv:2304.08244, 2023. ",[245,2285,2286],{"href":2286,"rel":2287},"https:\u002F\u002Farxiv.org\u002Fabs\u002F2304.08244",[2053],[245,2289,2061],{"href":2290,"ariaLabel":2291,"className":2292,"dataFootnoteBackref":250},"#user-content-fnref-13","Back to reference 12",[2060],[220,2294,2296,2297,2054,2301,2054,2306],{"id":2295},"user-content-fn-12","Schluntz, Erik, and Zhang, Barry. \"Building Effective Agents.\" Anthropic Research, 2024. ",[245,2298,2299],{"href":2299,"rel":2300},"https:\u002F\u002Fwww.anthropic.com\u002Fresearch\u002Fbuilding-effective-agents",[2053],[245,2302,2061],{"href":2303,"ariaLabel":2304,"className":2305,"dataFootnoteBackref":250},"#user-content-fnref-12","Back to reference 13",[2060],[245,2307,2061,2311],{"href":2308,"ariaLabel":2309,"className":2310,"dataFootnoteBackref":250},"#user-content-fnref-12-2","Back to reference 13-2",[2060],[242,2312,301],{},[2314,2315,2316],"style",{},"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 .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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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);}",{"title":250,"searchDepth":1079,"depth":1086,"links":2318},[2319,2324,2330,2336,2342,2347,2353,2354],{"id":197,"depth":1086,"text":198,"children":2320},[2321,2322,2323],{"id":202,"depth":1093,"text":203},{"id":256,"depth":1093,"text":257},{"id":324,"depth":1093,"text":325},{"id":427,"depth":1086,"text":428,"children":2325},[2326,2327,2328,2329],{"id":431,"depth":1093,"text":432},{"id":469,"depth":1093,"text":470},{"id":518,"depth":1093,"text":519},{"id":570,"depth":1093,"text":571},{"id":596,"depth":1086,"text":597,"children":2331},[2332,2333,2334,2335],{"id":600,"depth":1093,"text":601},{"id":695,"depth":1093,"text":696},{"id":750,"depth":1093,"text":751},{"id":815,"depth":1093,"text":816},{"id":986,"depth":1086,"text":987,"children":2337},[2338,2339,2340,2341],{"id":990,"depth":1093,"text":991},{"id":1026,"depth":1093,"text":1027},{"id":1456,"depth":1093,"text":1457},{"id":1538,"depth":1093,"text":1539},{"id":1576,"depth":1086,"text":1577,"children":2343},[2344,2345,2346],{"id":1580,"depth":1093,"text":1581},{"id":1673,"depth":1093,"text":1674},{"id":1767,"depth":1093,"text":1768},{"id":1833,"depth":1086,"text":1834,"children":2348},[2349,2350,2351,2352],{"id":1837,"depth":1093,"text":1838},{"id":1855,"depth":1093,"text":1856},{"id":1902,"depth":1093,"text":1903},{"id":1932,"depth":1093,"text":1933},{"id":1998,"depth":1086,"text":1999},{"id":2032,"depth":1086,"text":2032},"Planning + Memory + Tool Use","md",null,{"date":2359},"2026-04-26",{"title":27,"description":2355},"5UCQgOobkamnDZoe8O8cjVzS8iqQ7v0-9ZdusmZK2Cw",[2363,2365],{"title":23,"path":24,"stem":25,"description":2364,"children":-1},"为什么 AI 会\"胡说\"",{"title":31,"path":32,"stem":33,"description":250,"children":-1},1777395307965]