Claude Code 源码分析笔记
Claude Code 源码分析对照 nanobot 逆向理解 Claude Code Agent 架构。
目录
Ch 00 - 全局流程图
Ch 01 - 项目概览
Ch 02 - 技术栈
Ch 03 - 目录结构
Ch 04 - 启动流程
Ch 05 - LLM 流式调用细节
Ch 06 - 工具调用系统
Ch 07 - 流式执行引擎(默认关闭)
Ch 08 - Thinking 推理模式
Ch 09 - Task 系统
Ch 10 - Skill 系统
Ch 11 - Compact:对话压缩
Ch 12 - 记忆系统
Ch 13 - 上下文管理
Ch 14 - Hooks 扩展
Ch 15 - 沙盒与权限系统
Ch 16 - MAS 转向 Harness Engineering
Ch 17 - MCP 集成
Ch 18 - 总结:Claude Code 架构全景
Ch 00 - 全局流程图
方括号为章节引用:Ch04 · Ch05 · Ch06 · Ch07 · Ch08 · Ch09 · Ch10 · Ch11 · Ch14
1234567891011121314151 ...
Nano Bot 源码分析笔记
nanobot 技术要点1. 适配器模式实现多 LLM 统一响应核心思想:不同 LLM 提供商的 API 返回格式各异,通过适配器模式统一转换为 LLMResponse 格式。
实现方式:
每个 Provider 实现 _parse_response() 方法
将原始 API 响应转换为统一的 LLMResponse 数据结构
上层代码(AgentRunner)无需关心底层使用哪个 LLM
支持的提供商:
AnthropicProvider 处理 Anthropic 格式
OpenAICompatProvider 处理 OpenAI 格式
DeepSeekProvider 处理 DeepSeek 格式
统一数据结构:
12345678910111213141516@dataclassclass ToolCallRequest: """工具调用请求""" id: str # 工具调用 ID name: str # 工具名称 a ...
Hello Agents - 基础概念
Agent构成&运行原理PEAS
运行机制
AI模型进化路线
符号主义范式知识库(规则)+ 推理机。不智能,需要人工输入规则比如 IF THEN,且比较死板导致健壮性差,诞生了“专家系统”这类产物。
联结主义范式与符号主义自上而下、依赖明确逻辑规则的设计哲学不同,联结主义是一种自下而上的方法,其灵感来源于对生物大脑神经网络结构的模仿。做出神经元(小的功能),把他们分布式的连接起来,并通过算法学习对系统设置神经元的连接权重。这一范式能成功源于计算机已经能对图片声音文本等信息直接进行理解,反映了心智社会。
强化学习通过给行为设置奖励权重,来让智能体在大量“试错”中有目的性的学习。通过“感知-行动-学习”的闭环中持续迭代自己,让其更有远见。
预训练在进行强化学习等特化目标的训练前,先用自然语言处理+监督自学习,把大量的网络文本进行输入训练出一个基础的通用模型LLM,它的目的是有一些基础常识,比如“预测下一个词”。
然后再对预训练好的模型,根据具体任务要求进行微调(小样本数据标注学习),来实现目的。
通过大量预训练的LLM,涌现出了预料外的能力:
上下文学习(In-context ...
Hello Agents - 上下文工程
上下文工程是什么?所谓“上下文”,是指在对大语言模型(LLM)进行采样时所包含的那组 tokens。手头的工程问题,是在 LLM 的固有约束之下,优化这些 tokens 的效用,以便稳定地得到预期结果。
上下文工程 vs. 提示工程
提示工程关注如何编写与组织 LLM 的指令以获得更优结果(例如系统提示的写法与结构化策略);而上下文工程则是在推理阶段,如何策划与维护“最优的信息集合(tokens)”,其中不仅包含提示本身,还包含其他会进入上下文窗口的一切信息。
上下文腐蚀(context rot)
是指随着上下文窗口中的 tokens 增加,模型从上下文中准确回忆信息的能力反而下降。因此,上下文必须被视作一种有限资源,且具有边际收益递减。
上下文工程的目标与实现用尽可能少、但高信号密度的 tokens,最大化获得期望结果的概率。
系统提示(System Prompt):语言清晰、直白,信息层级把握在“刚刚好”的高度。常见两极误区:
过度硬编码:在提示中写入复杂、脆弱的 if-else 逻辑,长期维护成本高、易碎。
过于空泛:只给出宏观目标与泛化指引,缺少对期望输出的具体信号或假定了错 ...
Hello Agents - 记忆与检索&RAG
记忆与检索需求原因局限一:无状态导致的对话遗忘
当前的大语言模型虽然强大,但设计上是无状态的。这意味着,每一次用户请求(或API调用)都是一次独立的、无关联的计算。模型本身不会自动“记住”上一次对话的内容。这带来了几个问题:
上下文丢失:在长对话中,早期的重要信息可能会因为上下文窗口限制而丢失
个性化缺失:Agent无法记住用户的偏好、习惯或特定需求
学习能力受限:无法从过往的成功或失败经验中学习改进
一致性问题:在多轮对话中可能出现前后矛盾的回答
要解决这个问题,我们的框架需要引入记忆系统。
局限二:模型内置知识的局限性
除了遗忘对话历史,LLM 的另一个核心局限在于其知识是静态的、有限的。这些知识完全来自于它的训练数据,并因此带来一系列问题:
知识时效性:大模型的训练数据有时间截止点,无法获取最新信息
专业领域知识:通用模型在特定领域的深度知识可能不足
事实准确性:通过检索验证,减少模型的幻觉问题
可解释性:提供信息来源,增强回答的可信度
为了克服这一局限,RAG技术应运而生。它的核心思想是在模型生成回答之前,先从一个外部知识库(如文档、数据库、API)中检索出最相关的信息 ...
Hello Agents - 构建Agent
Agent 经典范式为了更好地组织智能体的“思考”与“行动”过程,业界涌现出了多种经典的架构范式。在本章中,我们将聚焦于其中最具代表性的三种,并一步步从零实现它们:
ReAct (Reasoning and Acting): 一种将“思考”和“行动”紧密结合的范式,让智能体边想边做,动态调整。
Plan-and-Solve: 一种“三思而后行”的范式,智能体首先生成一个完整的行动计划,然后严格执行。
Reflection: 一种赋予智能体“反思”能力的范式,通过自我批判和修正来优化结果。
ReAct基本模式思考与行动是相辅相成的,思考指导行动,而行动的结果又反过来修正思考。
具体执行分成3步:
Thought (思考): 这是智能体的“内心独白”。它会分析当前情况、分解任务、制定下一步计划,或者反思上一步的结果。
Action (行动): 这是智能体决定采取的具体动作,通常是调用一个外部工具,例如 Search['华为最新款手机']。
Observation (观察): 这是执行Action后从外部工具返回的结果,例如搜索结果的摘要或API的返回值。
智能体将不 ...
UGUI学习 - 合批规则
1.抛开UGUI的概念,什么是drawcall?什么是批处理?他俩有啥关系?
CPU告诉GPU“可以渲染这个模型”的过程或者说这个命令叫做Draw Call(我们在Stats面板上看到的Batches其实就是Draw Call的调用次数)。在NGUI里甚至有UIDrawCall这个具体的类去抽象一次drawcall。
批处理(UGUI里类似的行为叫合批)就是把渲染时使用相同材质(Shader)、相同贴图的3D模型的网格合并在一起,成为一个大网格,然后再调用一次Draw Call,直接渲染这一个大网格。
关系就是,批处理是降低CPU发起drawcall次数的手段。
2.Unity中我怎么直观的去检查它?
frame debugger可以查看一帧整体的绘制流程,从而观察到UGUI层调了多少次Draw Mesh、每次是怎么样的。
profiler可以更直接的看到一个Canvas下的batch 0、batch 1…
3.基础的UGUI合批规则
无论是UGUI还是NGUI,都以一个基础的合批规则:当前渲染的UI组件与上一个UI组件的material+shader(也就是材质球)、texture( ...
AB包基础
2023年6月更新:已完成学习并实现huatuo+yooasset+uniTask的demo,下一步是接入自己的ui框架并迭代,地址:https://github.com/CodingCodingK/CodingK_SutureFramework
=================================================================================
学习计划:(我感觉用脑图好像比md更适合这种架构的学习和复习)
什么是热更 https://www.bilibili.com/video/BV1Np4y1e7DX/
AB入门 https://www.bilibili.com/video/BV1LD4y1m7kF
AB实战 https://www.bilibili.com/video/BV1VP411G7w2/
AA包 https://blog.csdn.net/u011366226/article/details/104506802
UniTask https://www.lfzxb.top/unitask_reademe_cn/ ...
Unity中如何把RGB图和Alpha图分离的图片还原
Unity中如何把RGB图和Alpha图分离的图片还原一.RGB图、Alpha图简述RGB图RGB图是指由红、绿、蓝三个基本色光按不同比例合成的图像,是最常见的彩色图像。RGB图像的每个像素点由三个通道的颜色值组成,通常用三元组(R,G,B)表示,其中R表示红色通道,G表示绿色通道,B表示蓝色通道,三个通道的值均为0-255之间的整数。
Alpha图Alpha图是指一种用于描述图像透明度的图像格式,通常用于PNG格式的图像中。Alpha图像的每个像素点也由一个通道的值表示,通常用A表示,取值范围为0-255,0表示完全透明,255表示完全不透明。
二.为什么需要拆成2种图打包?1.ETC不支持透明通道ETC是一种Unity支持的贴图压缩格式,用于安卓设备,不过目前不支持ETC2的已经少到可以忽略了。
ETC:不支持透明通道,被所有 android 设备支持
ETC2:支持透明通道,Android 设备的 GPU 必须支持 OpenGL es 3.0 才可以使用,对于不支持的设备,会以未压缩的形式存在内存中,占用更多内存
PVRTC:所有苹果设备都可以使用,要求压缩纹理长宽相等,且是 ...
战斗同步思考(未完)
需求拆解战斗同步1.战斗同步有2种模式,一种是离线验证模式,在本地记录操作帧和随机种子,发送到服务端,再重新演算战斗逻辑;另一种是同步模式,客户端只转发操作帧,由服务端下发真实操作帧。服务器成本原因,优先实现第一种。
2.结果验证
3.掉落验证
战斗流程1.实现战前匹配(可以是玩家也可以是Boss)、匹配成功后在服务端对所有玩家建立房间,下发开始。房间用状态机管理。进入房间后,启动倒计时,超过设定的最长战斗时长(10分钟)就判定失败,战斗视为失败,服务器回收资源。
2.从第一回合到最终回合,每一个回合的内部,进行回合触发时机的执行、行动优先级的判定、技能逻辑的执行、存活死亡的结算、战斗胜负的判定这几个程序步骤。
技术实现伪随机1.PRD算法
这是伪随机在游戏中最常见的用法,因此直接就被玩家用Pseudo Random Distribution的缩写PRD来指代了。
在WAR3中,一个暴击率20%的英雄,并不是每一刀都20%暴击率的。而是以5.57%作为初始暴率,如果第一刀不暴,则第二刀的暴率增加到初始值的2倍:11.14%;如果还是不暴,就继续增加到初始值的3倍:16.71%,以此类 ...

