自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 Claude Code源码剖析 - Claude Code 上下文压缩机制

Claude Code 上下文压缩机制摘要 Claude Code 的上下文压缩是一套多层级的上下文治理系统,旨在解决模型运行时的上下文窗口限制问题。该系统通过以下机制协同工作: 输入视图切片:从最近的压缩边界开始截取消息 工具结果清理:限制单条工具结果的体积 历史视图裁剪:选择性保留关键历史消息 自动压缩:生成历史摘要替代冗长内容 失败恢复:处理API错误后的上下文重建 压缩过程集成在Agent Loop中,每轮模型调用前都会重新整理上下文视图,确保不超过窗口限制,同时保留工具调用、文件状态等关键信息。系

2026-06-10 18:19:51 290

原创 Claude Code源码剖析 - AgentTool 与 Subagent 机制

文章摘要: Claude Code中的AgentTool机制实现了子代理功能,其核心是将子代理运行环境封装为一个普通工具。当父代理调用AgentTool时,会启动完整的子代理运行流程:选择代理定义、构建独立上下文、隔离工具池和权限、运行新的query()循环,最后将结果包装为父代理可读取的tool_result。 该机制包含多个关键技术点: AgentTool作为工具接口,支持同步/异步、fork代理、远程代理等模式 子代理拥有完全独立的运行环境,包括系统提示、工具池和上下文 通过LocalAgentTas

2026-06-10 18:18:49 223

原创 Claude Code源码剖析 - ShellTool与真实动作

摘要:Bash工具的安全执行机制 Claude Code中的Bash工具通过结构化schema控制命令执行流程: 输入控制:使用Zod schema严格定义输入参数(命令、超时、后台执行等),隐藏内部字段(如_simulatedSedEdit)防止模型绕过安全检查 权限分离:区分完整输入schema(内部使用)和模型可见schema(有限权限) 输出扩展:执行结果不仅包含stdout/stderr,还包括执行状态、后台任务ID、沙箱状态、大文件输出路径等元数据 安全边界:通过schema设计建立安全边界,模

2026-06-10 18:16:30 186

原创 Claude Code源码剖析 - 权限系统

Phase 5: 权限系统摘要 权限系统采用双层设计,包含全局策略(PermissionMode)和单次行为(PermissionBehavior)。PermissionMode定义会话级别的权限策略(如default/plan/bypassPermissions等),而PermissionBehavior决定单次工具调用的执行结果(allow/deny/ask)。 核心流程通过hasPermissionsToUseToolInner实现: 首先检查工具是否被全局禁止(deny规则) 然后检查是否需要用户确

2026-06-10 18:15:34 384

原创 Claude Code源码剖析 - 文件读取与代码搜索工具

本文介绍了Claude Code中的文件读取工具(Read Tool)的设计与实现。该工具允许AI模型通过结构化请求读取本地文件内容,支持文本、图片、PDF和Jupyter notebook等多种文件类型。工具设计考虑了上下文长度限制,支持分页读取和局部读取功能。文章详细解析了工具的输入输出Schema、注册流程、并发安全属性、路径规范化处理以及权限检查机制。特别强调了该工具虽然是只读操作,但仍需通过严格的权限验证,包括路径归属检查、PDF页码验证和用户自定义的deny规则匹配。

2026-05-25 14:38:27 399

原创 Claude Code源码剖析 - Claude 中Tools的抽象

模型说“我要用工具”Claude Code runtime 如何把它变成本地动作,再把结果变回模型能理解的消息?-> 本地 runtime 找工具-> 校验输入-> 权限检查-> 执行工具-> 生成 user/tool_result-> 回填 messages-> 下一轮模型调用ToolnameisReadOnlycall工具不是普通函数。工具 = schema + 权限 + 执行 + 结果映射 + 上下文/展示能力。

2026-05-22 12:54:04 442 2

原创 Claude Code源码剖析 - Message 与上下文结构

消息处理与工具交互机制 Claude Code 的消息系统采用结构化设计,核心要点包括: 消息创建: 支持多种内容类型(字符串/ContentBlock数组) 工具调用请求(tool_use)和结果(tool_result)分别封装为assistant和user消息 消息规范化: normalizeMessages()将多block消息拆分为单block消息 便于UI展示和工具处理 工具交互: 通过isToolUseRequestMessage和isToolUseResultMessage判断工具调用状态

2026-05-20 08:49:25 425 2

原创 Claude Code源码剖析 - Agent 最小闭环

摘要 本文档记录了Claude Code源码解析的第一阶段笔记,聚焦Agent最小闭环的实现机制。主要内容包括: 阅读目标:追踪Agent循环的主线流程,理解模型与工具交互的核心机制 文件结构分析:query.ts的主体是1500行的queryLoop函数 QueryParams:启动Agent循环所需的完整参数包,包含对话历史、工具权限、运行环境等 State类型:记录循环间的可变状态,重点是messages和toolUseContext的更新 query函数:作为外层包装器,管理整个异步生成过程 核心理

2026-05-13 21:40:03 423 2

原创 AI应用开发 - AI Agent Practical Exercise

使用@tool@tool"""数学计算器Args:expression: 数学表达式,如 "2+3*5"Returns:计算结果字符串"""try:return f"计算错误:str@tool def calculator(expression : str) - > str : """数学计算器Args:expression: 数学表达式,如 "2+3*5"Returns:计算结果字符串。

2026-04-24 22:46:40 643

原创 AI应用开发 - RAG Practical Exercise

"""自定义检索器,支持重排序"""# 允许任意类型(绕过 Pydantic 检查)db: Any = Field(description="向量数据库")retrieve_k: int = Field(default=12) # 粗排返回数量rerank_k: int = Field(default=5) # 精排返回数量# 1. 向量搜索,粗排取回 retrieve_k 个# 2. 如果有 reranker,进行精排# 构建 (query, document) 对# 合并分数并排序。

2026-04-23 22:36:29 277

原创 AI应用开发 - What are RAGs?

RAG(检索增强生成)技术解析与应用 RAG技术通过结合检索与生成能力,为LLM提供实时知识支持。其核心流程分为三步:索引阶段将文档分块存储为向量;检索阶段根据问题匹配最相关文档;生成阶段结合检索内容输出答案。关键技术包括Embedding(将文本转为语义向量)和相似度计算(如余弦相似度)。RAG可实现智能客服、虚拟主播等场景,但需注意数据质量和参数调优。实现方式上,Agent模式更灵活,Chain模式更高效。实际应用中需平衡检索精度与生成质量,防范安全风险。

2026-04-22 21:14:51 378

原创 AI应用开发 - Embeddings Practical Exercises(附参考源码)

本文系统介绍了从文本Embedding到语义搜索的完整技术流程。首先讲解了Embedding的基本概念和实现方法,使用SentenceTransformer将文本转换为固定维度向量。然后详细阐述了相似度计算(特别是余弦相似度)的原理和批量计算方法。接着介绍了语义搜索的核心流程,包括查询编码、向量匹配和结果排序。文章还展示了如何手写一个简单的向量数据库(VectorDB)以及使用高效的FAISS库进行大规模向量检索,比较了不同索引类型的特点。最后封装了FaissVectorDB类,提供便捷的向量存储和搜索功能

2026-04-21 23:29:04 445

原创 AI应用开发 - Vector Databases

向量数据库是一种专为存储和检索高维向量数据设计的数据库系统,通过相似度搜索而非精确匹配来查找最相关的结果。其核心原理是将非结构化数据(如文本、图像)转换为数值向量表示,使用余弦相似度、欧氏距离等度量方法进行相似度匹配。与传统数据库相比,向量数据库更适合处理语义搜索、推荐系统等AI场景。主流产品包括Pinecone、Milvus、FAISS等,各具特点:Pinecone提供全托管服务,FAISS是轻量级库,而Chroma则以开源易用著称。典型应用涵盖NLP、图像识别、异常检测等12大领域。选择时需权衡可扩展性

2026-04-21 23:28:00 481

原创 AI应用开发 - What are Embeddings

优势局限个性化体验,76% 用户期待个性化需要大量用户数据发现新内容,用户可能从未主动搜索计算资源投入大提升转化和收入(推荐占电商收入 31%)实时性要求高(毫秒级响应)长尾产品曝光,优化库存隐私合规挑战(GDPR 等)推荐多样性,可发现意外惊喜冷启动问题(新用户/新产品)

2026-04-20 19:52:31 511

原创 AI应用开发 - Hugging Face入门

Hugging Face Transformers库中的Pipeline功能将复杂模型调用简化为简单API,支持多种AI任务。它包含预处理、模型和后处理三个核心组件,支持文本、语音、图像和多模态任务。用户可指定模型、批量处理数据,并通过参数优化性能。Pipeline支持batching加速(GPU环境下可达13倍性能提升),但需注意序列长度差异可能导致内存问题。对于单输入多forward任务,Pipeline自动采用Chunk Batching机制处理。使用时应根据硬件和数据特性调整batch_size,并

2026-04-19 18:37:55 226

原创 AI应用开发 - Type Of Models

预训练模型(PTMs)是通过大规模数据预先训练的模型,可迁移到下游任务微调使用。其发展经历了监督学习预训练(如ResNet)和自监督学习预训练(如BERT、GPT)两个时代。PTMs按架构可分为自回归模型(GPT系列)、自编码模型(BERT)和编码器-解码器模型(T5);按训练任务包括MLM、NSP等;按模态涵盖文本、图像及多模态模型(如CLIP、DALL-E)。BERT擅长理解任务,GPT擅长生成任务,T5统一了理解和生成。多模态模型(如GPT-4V)能处理图文等跨模态任务。为提升计算效率,可采用知识蒸馏

2026-04-17 20:16:26 412

原创 AI应用开发 - Context Engineering(上下文工程)

文章摘要 本文探讨了AI Agent记忆管理和上下文优化两大核心技术。External Memory通过agents.md等外部文件存储对话历史、项目信息和偏好设置,解决LLM"冷启动"问题,避免重复指令。Context Engineering则从RAG进化而来,提出Write/Select/Compress/Isolate四大策略优化上下文窗口使用,包括记忆持久化、信息筛选、内容压缩和多Agent隔离。动态过滤器作为RAG的升级版,通过重排序机制提升检索精准度。这些技术共同推动AI A

2026-04-17 16:01:53 504

原创 AI应用开发 - Prompt Engineering(提示词工程)

摘要:Prompt Engineering 方法对比与应用 Zero-shot 和 Few-shot 是两种核心的Prompt Engineering方法。Zero-shot依赖预训练模型的知识直接推理,无需示例,适合快速验证或数据稀缺场景,但性能依赖模型质量;Few-shot提供少量示例,能稳定输出格式并适配特定领域,但需人工设计示例。两者各有优劣,选择取决于任务复杂度、数据可用性和格式要求。 ReAct(Reasoning+Acting)通过结合推理与外部工具调用(如搜索、计算器)解决CoT的静态知识局

2026-04-16 20:37:25 674

原创 AI应用开发 - LLM及其相关概念

Embedding(嵌入)是将真实世界对象(文本、图片、视频等)转换为连续向量空间中的点的技术,使机器学习模型能够理解和处理这些对象。模型训练是将机器学习算法与训练数据结合,调整权重以最小化损失函数的过程。推理(Inference)是经过训练的机器学习模型从全新数据中得出结论或预测的过程。简言之,推理就是模型的"运行"阶段。向量数据库 (Vector Database)存储、检索和搜索以高维空间向量表示的数据。通过比较向量嵌入而非精确匹配实现高效相似性搜索。

2026-04-14 17:24:53 799

原创 消息队列学习计划 - 阶段三:面试高频问题

消息队列面试准备摘要 本学习计划聚焦消息队列高频面试问题,覆盖基础概念、进阶原理、系统设计等核心知识点。基础部分包括MQ价值(解耦、削峰、异步)、Kafka高吞吐原理(顺序写入、零拷贝等)、ACK机制和消息丢失解决方案。进阶部分深入Rebalance机制、日志清理策略、Leader选举流程,以及Kafka与RabbitMQ的选型对比(吞吐量、延迟、可靠性等维度)。计划强调理解而非死记,通过分层防御策略解决消息丢失和重复消费问题,并针对大厂面试设计联级追问场景。建议每天1-2小时,结合业务场景记忆关键点,重点

2026-04-13 16:24:43 598

原创 消息队列学习计划 - 阶段二:深入 Kafka 原理

这篇文章摘要总结了Kafka消息队列第二阶段的学习计划,重点包括: 学习架构与存储机制(第一周): 掌握Kafka基本架构概念(Broker/Topic/Partition/Replica) 深入理解Partition与Replica机制及ISR动态变化 研究日志分段存储、零拷贝和页缓存等核心存储机制 生产消费与高可用(第二周): 分析生产者ACK机制(0/1/all)与重试策略 学习消费者组机制和Rebalance过程 掌握Controller选举和一致性保证等高可用特性 综合应用

2026-04-12 17:59:15 407

原创 消息队列学习计划 - 阶段一:理解核心概念

本文摘要:消息队列(MQ)学习计划第一阶段聚焦核心概念理解,重点包括:1)MQ的三大价值(异步处理、系统解耦、流量削峰),通过实际案例(如秒杀系统)说明应用场景;2)四种消息模式(P2P、Pub/Sub、事务消息、顺序消息)的运作机制与适用场景;3)MQ三大隐患(消息丢失、重复消费、顺序破坏)的产生原因与解决方案;4)不适合使用MQ的场景分析(如强一致性要求)。学习强调实践导向,要求通过画架构图、场景分析等方式巩固理解,并设置了6个核心检验问题确保学习效果。

2026-04-09 17:22:18 396

原创 14000+字详解SGI-STL仿函数&配接器(Functor&Adapter)

本文深入解析了SGI-STL中仿函数(Functor)与适配器(Adapter)的设计原理与实现。仿函数通过重载operator()实现函数调用语义,STL将其分为算术、比较和逻辑三类,均继承自unary_function或binary_function基类提供类型标签。适配器通过适配器模式转换函数对象接口,包括取反适配器(not1/not2)、绑定参数适配器(binder1st/binder2nd)和函数指针适配器(ptr_fun)等。这些组件实现了算法与策略的分离,支持"同一种算法,不同行为"的灵活组合

2026-04-04 16:19:49 371 1

原创 15000w+字详解SGI-STL关联式容器(Associative_Containers)

本文解析了SGI STL中关联式容器的实现,重点剖析了红黑树作为有序关联容器(set/map等)的底层数据结构。文章详细介绍了红黑树的五大性质、节点结构设计、迭代器实现以及关键的旋转与再平衡操作。红黑树通过颜色标记和旋转操作保持平衡,确保操作时间复杂度为O(log n),是STL有序关联容器的核心实现基础。

2026-04-04 16:18:12 367 1

原创 muduo源码剖析(demo实现对比)

本文深入解析了muduo网络库的核心模块实现,包括Buffer、Socket和Channel模块。Buffer模块通过巧妙设计减少数据拷贝,采用readv提升性能;Socket模块封装底层操作,提供TCP连接管理功能;Channel模块负责事件回调管理。文章揭示了muduo高效处理网络I/O的关键设计,如缓冲区收缩/扩容机制、Nagle算法优化等,展现了高性能网络编程的精妙实现。

2026-03-30 18:01:25 624 1

原创 60000+字详解SGI-STL 序列式容器(Sequence_Containers)

本文摘要: STL中的序列式容器包括vector、list、deque等,其中vector是最常用的动态数组实现。vector通过继承_Vector_base基类实现内存管理,内部维护三个关键指针:_M_start(起始位置)、_M_finish(当前元素末尾)和_M_end_of_storage(存储空间末尾)。当空间不足时,vector采用扩容机制:如果还有剩余空间,直接在末尾构造新元素并移动元素;若空间耗尽,则分配更大内存(通常是原大小的两倍),复制原有元素到新空间。这种设计保证了高效的元素访问(O(

2026-03-16 16:24:32 405

原创 14000+字详解SGI-STL迭代器,走进traits编程技法

设计适当的相应型别(associated types),是迭代器的责任。设计适当的选代器,则是容器的责任。唯容器本身,才知道该设计出怎样的迭代器来遍历自己,并执行迭代器该有的各种行为(前进、后退、取值、取用成员)至于算法,完全可以独立于容器和迭代器之外自行发展,只要设计时以迭代器对外接口就行。traits编程技法大量运用于STL实现品中。它利用“内嵌型别”的编程技巧与编译器的 template 参数推导功能,

2026-03-14 01:26:22 420

原创 18000+字详解SGI-STL空间配置器(增加对uninitialized_xx函数讲解)

本文分析了C++标准Allocator接口和SGI STL的特殊空间配置器std::alloc的实现差异。标准Allocator将内存分配与对象构造分离,但SGI STL设计了更高效的二级配置器结构。重点解读了stl_construct.h中的构造/析构机制,展示了如何通过类型特性(trivial/non-trivial destructor)优化大规模对象析构性能。文章揭示了STL在内存管理上的精细设计,特别是对小对象分配和批量析构的特殊处理。

2026-03-13 00:41:45 643 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除