- 博客(74)
- 收藏
- 关注
原创 从 0 到 1 学 Codex 源码:一轮对话,到底是怎么发生的?
一句请求为什么能带出多次生成和工具执行?以修复分页错误为线索,沿固定版本 Codex 源码串起 Thread、Turn、Item,追踪输入受理、结果回填、继续条件、Stop hook 与任务终态,理解运行结束为何不等于业务完成。
2026-10-29 21:30:39
328
原创 从 0 到 1 学 Codex 源码:Rust绕不开的所有权,一篇讲透
只加一行 let b = a,原来的 a 为什么就不能用了?从一个字符串出发,逐步理解 Rust 的移动、复制、借用与生命周期,再通过 Request 接口和分支练习追踪数据去向。配套 36 个独立示例,为继续阅读 Codex 源码打下基础。
2026-10-23 22:13:00
179
原创 从 0 到 1 学 Codex 源码:顺着 main,摸清 Codex 的启动骨架
借 Codex app-server 的真实 main 入口,快速摸清 Codex 启动时的核心代码结构:参数结构体、arg0 分发、线程与 Tokio 运行时怎样衔接;顺带拆开 move |...| async move、泛型约束和 #[...] 属性这些读源码绕不开的写法。
2026-10-21 16:15:08
90
原创 从 0 到 1 学 Codex 源码:Rust 基础(一)
准备读 Codex 源码,先把 Rust 的语言全景、编译运行方式和基础语法连起来。从 rustc、Cargo 到 struct、impl、enum、match 和 Option,结合六个 GitHub 示例,逐步读懂小程序。
2026-10-19 20:46:54
180
原创 只知道 Chat Completions?来看看 Responses 协议
从 Chat Completions 出发,拆解 Responses 五层能力、角色语义与 DeepSeek 兼容边界,看清工具由谁执行、上下文如何接续。
2026-10-18 20:30:18
255
原创 从 0 到 1 学 Codex 源码:从 Rust 开始
想读 Codex 源码,却先被 Rust 劝退了?从一个内存出错的例子认识 Rust,再把 Java、Python、C++、Rust 放进同一个命令行助手任务里,比较它们的执行、内存、并发和交付方式,最后看看 Codex 为什么选择 Rust。
2026-10-16 20:27:08
354
2
原创 temperature 设为 0,就不会产生幻觉了吗?从解码机制到生产选值
temperature=0 不能保证没有幻觉,也不能单独保证生产输出完全可复现。用 Qwen2.5-7B 的真实分数、概率、生成轨迹和缓存对照,看清温度改变什么,再讨论生产选值与证据验证。
2026-10-10 07:51:31
240
原创 跟着 Qwen2.5-7B 走一遍真实推理:理解 Transformer 如何生成下一个 token
跟着一次真实的 Qwen2.5-7B 推理,从 25 个输入 token 到下一个 token,串起 Embedding、Transformer、RoPE、LM Head、logits 与采样,用实际编号、向量和候选分数理解生成过程。
2026-10-03 21:56:45
415
原创 子 Agent:它是怎么变成标配的、什么时候该派、活多久
子 Agent 不是更聪明的助手,是一次带独立上下文的工具调用。本文对照 Nous Research Hermes Agent 与 OpenAI Codex CLI 源码,回答何时该派、父子哪些共享哪些独立、父默认如何等待、交卷为何只是 self-report。
2026-09-17 21:34:49
320
原创 Function calling、Tool、MCP、Skill、CLI、Plugin:从一次真实调用讲起
先看一次真实的模型调用。密钥已去掉,其余是原文。2026-09-13,兼容 OpenAI Chat Completions 的接口,模型,温度 0。模型回来的不是标题。content是空字符串,是tool_calls模型没有去 GitHub。它只是对着parametersownerrepomethod。arguments在协议里是,外面的程序自己json.loads。这一枪 211 个输入 token、31 个输出 token——tools[]里哪怕只有一项,定义本身也要进上下文。循环还没走完。
2026-09-13 18:42:09
350
原创 Agent 怎么知道任务做完了?答案是:它不知道
你让 Agent 写个爬虫并跑通。它回了一段漂亮的计划——目录结构、依赖、三步走——然后停了。一行代码没写。你让它修一个失败的测试。它改了 40 轮还在改,同一条命令换着参数试,直到你按下 Ctrl+C。我是某天突然被这个问题问住的。以前做 LangGraph 的 Agent,这个问题好回答:图是一张 DAG,节点走完、走到 END,就结束了。但现在的 Agent 大多不是这么写的。它们是一个while True:模型说要调工具就调,调完再问模型,直到模型不再要工具。
2026-09-06 20:19:42
331
原创 Grok Bot 注入工作流的新变量:云端会话 + 终验闸
Agent 会写代码,不等于这条需求能被关掉。Grok Bot 往工作流里注入云端会话与终验闸两个新变量:会话可跨机器续上,验收口径钉在 Issue/PR 上。单机开发验证阶段的工程复盘。
2026-08-31 22:48:11
217
原创 1200 万向量检索从 40 秒到 4 秒:我没有换数据库
1200 万向量、一次 40 秒的检索,最后降到 4 秒,没有更换任何组件。复盘一次真实生产优化:先定位、再算账、再治理、最后抠语义,以及为什么没迁 Milvus。
2026-08-25 21:05:23
348
原创 LangGraph 源码学习笔记
基于对 LangGraph 源码的阅读与讨论,整理成一份以「概念 + 入口 + 结构」为主的学习笔记,方便后续翻查和扩展。
2026-02-12 14:38:41
1193
原创 亿级向量检索:Elasticsearch vs. Milvus,性能鸿沟与架构抉择
在处理亿级规模的向量检索时,专用向量数据库相比于:对于大规模、高性能的 RAG 应用,采用的混合架构是兼顾性能、成本与扩展性的最佳实践。
2026-01-28 11:35:46
1291
原创 算法学习常用函数详解
激活函数:ReLU、Sigmoid、Tanh、Softmax等,引入非线性线性变换:Affine变换,神经网络的基础归一化:Batch Norm、Layer Norm等,稳定训练损失函数:交叉熵、MSE等,衡量预测误差池化函数:Max Pooling、Average Pooling等,降维正则化:Dropout、L1/L2等,防止过拟合注意力机制:Self-Attention、Multi-Head等,序列建模其他函数。
2026-01-05 22:59:41
692
原创 我的 MCP 学习之旅:从困惑到理解
最近在开发 AgentCrew 项目时,第一次深入接触了 MCP(Model Context Protocol)。作为一个优化"氛围式编程"(Vibe Coding)反馈循环的工具,我需要让 Cursor 能够通过 MCP 协议与我的 Agent 系统交互。在这个过程中,我遇到了很多疑问,也学到了很多。这篇文章记录了我的学习历程,希望能帮助到同样在学习 MCP 的朋友。MCP 是协议标准,不是 npm 包类似 HTTP 协议可以有多种实现方式开放标准,任何人都可以实现MCP 支持多种传输方式。
2026-01-05 17:38:06
788
原创 大索引 Dump 失败问题的完整解决方案
特性ScrollPIT快照机制创建上下文时创建 PIT 时生命周期管理自动过期可手动延长资源占用较高较低断点续传不支持支持(配合 search_after)跨索引查询不支持支持合理设置分片数:建议每个分片 20-50 万文档考虑迁移场景:如果经常需要迁移,分片不要太大大索引 dump 失败问题的解决过程,是一个典型的从技术优化到思路转变初期:试图通过技术手段(断点续传、增强容错)解决问题中期:发现技术手段的局限性最终:转变思路,将大任务拆分成小任务。
2026-01-05 09:21:45
1054
原创 Linux top 命令详解:系统监控的必备工具
top是 Linux 系统中最常用的实时系统监控工具之一。它能够动态显示系统中各个进程的资源占用情况,包括 CPU、内存、负载等关键指标,是系统管理员和开发人员诊断系统性能问题的重要工具。top系统摘要部分(顶部)和进程列表部分(底部)。我们先从系统摘要部分开始。指标健康值警告值危险值CPU idle> 50%20-50%< 20%CPU wait< 5%5-20%> 20%< CPU核心数= CPU核心数> CPU核心数可用内存> 20%10-20%< 10%Swap used。
2025-12-31 09:57:39
563
原创 Elasticsearch Dump 失败问题排查:Store: True 导致的字段数组化问题
source字段:存储原始 JSON,不受 mapping 影响索引层:根据 mapping 类型索引,用于搜索:单独存储的字段值,返回格式为数组。
2025-12-29 18:15:41
770
原创 Elasticsearch Update 机制与 docs.deleted 详解
✅ ES 的 update 是"获取旧文档 → 合并更新 → 创建新文档 → 旧文档逻辑删除"✅ 支持字段级更新,只更新指定字段✅ 内部会获取完整文档进行合并(不受查询_source限制)✅ 查询时只获取必要字段仍然有意义(减少网络传输)
2025-12-25 17:10:25
1273
原创 Elasticsearch Range查询性能优化:从20秒到1秒的优化实践
这次性能问题的根本原因是字段类型选择不当。text类型适合文本搜索,但不适合数值范围的range查询。通过添加long类型的字段,我们成功将查询性能提升了7-20倍。字段类型的选择直接影响查询性能mapping设计需要在项目初期就考虑好遇到性能问题,先检查字段类型和mapping配置生产环境优化要优先考虑零停机方案。
2025-12-25 16:20:41
696
原创 Elasticdump 如何优雅地处理百万级数据?深入解析 Scroll 稳定性保障机制
需要从 Elasticsearch 导出几百万条数据,但程序总是 OOM(内存溢出)自己写的 dump 脚本把 ES 集群压垮了,导致其他服务受影响网络波动导致 dump 任务失败,需要从头开始,浪费大量时间如果你有这些困扰,那么 Elasticdump 的实现方式值得学习。作为一个成熟的 ES 数据导入导出工具,Elasticdump 在处理大量数据时展现出了惊人的稳定性。它不会 OOM,不会压垮 ES 集群,还能优雅地处理各种异常情况。
2025-12-22 15:24:12
708
原创 Elasticsearch Scroll ID 详解
Scroll是 Elasticsearch 提供的一种深度分页机制,用于高效地遍历大量数据。与传统的from/size分页不同,scroll 专门设计用于需要获取大量数据(如数据导出、迁移)的场景。✅ Scroll 是高效的深度分页机制,适合大量数据导出✅ Scroll ID 类似 Kafka Offset,但更复杂(包含上下文信息)✅ 快照是元数据快照,不是数据快照,内存占用极小✅ Keep-Alive 是滑动时间窗口,每次使用都会刷新✅ 使用完成后要主动清理,避免内存泄漏。
2025-12-22 15:06:55
889
原创 Elasticsearch Explain API 详解:KNN 混合查询的分数计算与性能分析
在使用 Elasticsearch 进行混合检索(Hybrid Search)时,理解文档得分的计算过程至关重要。特别是当结合向量检索(KNN)和传统文本检索(Query String)时,分数计算会变得更加复杂。本文将通过一个真实的查询案例,深入解析 ES 的explainAPI 用法,以及混合查询场景下的分数计算机制。分数差异的原因高分文档:KNN + Query String 双重匹配低分文档:仅 KNN 匹配,Query String 未命中Explain API 的价值。
2025-12-22 09:05:34
882
原创 Elasticsearch Bulk 写入性能问题排查实录
从简单到复杂:先检查索引配置、资源使用等基础问题关注异常指标异常高是重要信号深入分析日志:慢查询日志能揭示性能瓶颈验证假设:通过隔离测试验证每个假设。
2025-12-12 17:42:03
914
原创 大模型上下文窗口、Memory 与历史对话:深入理解与实践指南
模型的上下文长度限制是多少?Memory 和历史对话有什么区别?它们是否占用 token 上限?如何在实际项目中合理使用它们?本文将深入探讨这些概念,并结合实际代码示例,帮助你更好地理解和使用这些功能。上下文窗口(Context Window)是指模型在一次对话中能够处理的输入和输出 token 的总数上限。关键点:上下文窗口是输入 + 输出共享的!如果输入占用 30000 token那么输出最多约 10960 token(还要留一些缓冲)注意力机制的限制。
2025-12-11 14:49:47
1710
原创 Elasticsearch 分数计算完全指南
Elasticsearch 的分数(_score)是衡量文档与查询相关性的重要指标。理解分数计算机制对于构建精确的搜索查询至关重要。特性FilterQuery计算分数❌ 否✅ 是字段权重有效❌ 否✅ 是boost 有效❌ 否✅ 是影响排序❌ 否✅ 是作用过滤文档搜索和排序。
2025-12-10 17:44:37
1065
原创 Elasticsearch minimum_should_match 参数详解
是 Elasticsearch 中一个非常重要的查询参数,用于控制查询中至少需要匹配多少个条件。它在不同的查询类型中有不同的行为,理解这些差异对于构建精确的搜索查询至关重要。用于指定在should子句中至少需要匹配多少个条件才能返回文档。数字2表示至少匹配 2 个条件百分比"60%"表示至少匹配 60% 的条件组合"2<75%"表示少于 2 个时全部匹配,2 个或以上时匹配 75%查询类型minimum_should_match 是否有效说明bool只有must❌ 无效没有should子句。
2025-12-10 17:44:02
941
原创 大规模向量搜索集群设计:从需求到实现的完整方案
本文记录了一个大规模向量搜索系统的Elasticsearch集群设计过程。系统需要处理千万级文档的向量检索,每篇文档包含高维向量。文章从数据量分析开始,逐步拆解存储需求、计算资源需求,最终给出完整的集群配置方案。节点数量 vs 单节点资源增加节点数可以提升并行度和故障隔离单节点资源要合理,避免过度分配平衡点:5个节点,每个128GB内存内存分配比例JVM堆内存:不超过32GB(ES最佳实践)系统内存:用于Page Cache,提升磁盘I/O性能合理比例:JVM:系统 = 1:3存储策略。
2025-12-10 17:03:04
805
原创 Elasticsearch Bulk 写入优化实践:从线程池拒绝到高效批量写入
约 10% 的文档在迁移过程中丢失。通过深入分析 ES 的 bulk 写入机制和线程池工作原理,我们找到了问题的根本原因,并实施了一套有效的优化方案。本文将详细记录这次问题定位和优化的全过程。小文档(< 1KB):64-128 条/ bulk中等文档(1-10KB):32-64 条/ bulk大文档(> 10KB):16-32 条/ bulk原则:确保每个 bulk 的处理时间在 0.1-1 秒之间。
2025-12-09 09:17:10
1036
原创 RAG系统中的检索策略选择:一次性检索 vs 动态检索
是在生成过程中让Agent动态检索知识,还是在生成前一次性检索所有需要的知识?在大多数场景下,一次性检索策略在工程复杂度、系统可靠性和用户体验上都显著优于动态检索。
2025-12-02 09:59:35
882
原创 Elasticsearch 存储优化实践:从冷热集群到分配策略
在构建一个包含1500万篇文献的检索系统时,存储优化是一个关键问题。本文记录了我在 Elasticsearch 存储架构设计过程中的思考与实践,包括对冷热集群的深入理解、适用场景分析,以及最终选择的存储优化方案。冷热集群(Hot-Warm-Cold Architecture)是 Elasticsearch 的一种数据分层存储架构,通过将数据按照访问频率或时间特征分配到不同类型的节点上,实现性能与成本的平衡。关键点:冷热节点是逻辑角色,不是物理节点类型。热节点(Hot Nodes)
2025-11-27 09:57:56
380
原创 Elasticsearch 索引迁移优化实战:从合并索引到原样导入
不要盲目增加并发数:ES 的写入能力受限于多个因素,不是并发数越多越好建议并发数:对于 3 节点集群,建议并发数不超过 2-3。
2025-11-14 16:46:11
1108
原创 优化Elasticsearch批量写入性能:从单分片瓶颈到多索引架构
分片规划:单分片不超过50GB,推荐20-30GB索引拆分:大数据量使用多索引+Alias架构并发控制:根据集群节点数合理设置并发度错误处理:检查bulk写入的实际成功数量日志记录:使用标准logging,记录关键步骤时间字段:使用精确的时间戳而非日期字符串通过这次优化,我们不仅解决了单分片容量瓶颈问题,还建立了可扩展的多索引架构。架构层面:从单索引转向多索引+Alias代码层面:完善的错误处理和日志系统数据层面:添加准确的时间戳字段运维层面:详细的日志便于问题排查。
2025-11-03 15:06:15
796
原创 在Windows上使用Selenium + Chrome Profile实现自动登录爬虫
避免冲突:独立Profile目录防止文件锁定状态持久:登录信息自动保存和复用操作简单:一次配置,永久使用完全隔离:不影响正常使用的Chrome文件优化:清理不必要的缓存文件,保持Profile精简这种方案特别适合需要登录的爬虫项目,既保证了功能的完整性,又避免了复杂的Cookie管理。
2025-10-24 16:23:38
1158
原创 从零开始手写机器学习框架:我的深度学习之旅
这个项目是一个从零开始手写的机器学习框架,专门用于实现MNIST手写数字识别。通过实现每个组件,我深入理解了机器学习的底层原理。这个手写机器学习框架项目让我从一个后端研发的角度,深入理解了机器学习的核心原理。通过从零开始实现每个组件,我不仅掌握了理论知识,更重要的是培养了解决实际问题的能力。关键收获:理论理解:深入理解了机器学习的数学原理实践能力:能够实现完整的机器学习框架问题解决:学会了如何为新场景设计解决方案学习策略:找到了适合自己的学习方法参数调优:理解了超参数对模型性能的巨大影响。
2025-09-16 16:51:47
1258
3
原创 服务注册与发现:实现原理与常用组件
服务注册:服务启动时注册到注册中心服务发现:通过注册中心获取服务实例信息健康检查:监控服务状态,自动剔除故障服务负载均衡:在多个服务实例间分发请求选择合适的组件需要考虑技术栈、性能要求、运维复杂度等多个因素。没有最好的方案,只有最适合的方案。
2025-09-10 11:03:32
412
原创 服务注册与发现:什么时候需要引入
服务注册:服务启动时自动注册到注册中心服务发现:服务如何找到其他服务健康检查:监控服务状态,自动剔除故障服务负载均衡:在多个服务实例间分发请求简单业务系统:使用K8s Service或静态配置即可中型微服务:使用Spring Gateway + Eureka中台系统:使用Kong + Consul大型平台:使用Istio + 服务网格架构是演进的,不是一蹴而就的。从简单开始,根据实际需求逐步演进。
2025-09-10 11:02:25
590
原创 Git Cherry-pick 批量合并:从源分支到目标分支的完整指南
分支策略:始终基于目标分支创建新分支,避免状态混乱范围选择:使用A..B语法,表示从A之后到B的所有commit冲突处理:遇到冲突时逐个解决,确保代码质量MR流程:通过代码审查确保合并的安全性。
2025-09-01 10:46:38
661
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅