<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[利威尔的博客，主要分享一些go后端，agent相关知识，都是最新最前沿而且是免费的，在我的专栏里有各种方向的详细分类和内容整理，详细内容请阅读主页置顶文章，希望对你有帮助。]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/2604_97047541</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; 2604_97047541]]></copyright><item><title><![CDATA[Go IM 源码实战（8）：四个 Kafka topic，落库失败不返 error 会静默丢消息]]></title><link>https://blog.csdn.net/2604_97047541/article/details/169070408</link><guid>https://blog.csdn.net/2604_97047541/article/details/169070408</guid><author>2604_97047541</author><pubDate>Tue, 27 Oct 2026 20:44:48 +0800</pubDate><description><![CDATA[一条消息从 msg 服务发出去到落进 Mongo，中间经过了四个 Kafka topic。我一开始以为这层是多余的，直到 Mongo 抖了一次——发送接口毫无感觉，队列自己积压自己消化。这篇讲清四个 topic 各干什么、同会话保序靠的三层防线、批处理为什么必须有两个触发条件，以及我在这套代码里找到的四个坑：Do 没有返回值，所以业务失败根本没法表达。]]></description><category></category></item><item><title><![CDATA[Go IM 源码实战（7）：断线三天重连，水位算错就漏消息]]></title><link>https://blog.csdn.net/2604_97047541/article/details/169070314</link><guid>https://blog.csdn.net/2604_97047541/article/details/169070314</guid><author>2604_97047541</author><pubDate>Tue, 27 Oct 2026 20:44:28 +0800</pubDate><description><![CDATA[用户点了"清空聊天记录"，退出重进，消息全回来了；另一个用户把历史往下翻，翻到第 40 页还在加载。两个 bug 一个原因：拉取接口少夹了一层水位边界。这篇把同步的四个水位、四道边界、镜像的 isEnd 判定讲透，也讲清未读数为什么能直接用 maxSeq 减 hasReadSeq——这个减法成立是有前提的。]]></description><category></category></item><item><title><![CDATA[RAG 检索面试十连问：召回率从 92% 掉到 61%，答案句被拦腰截断怎么排查]]></title><link>https://blog.csdn.net/2604_97047541/article/details/169266388</link><guid>https://blog.csdn.net/2604_97047541/article/details/169266388</guid><author>2604_97047541</author><pubDate>Tue, 27 Oct 2026 19:56:10 +0800</pubDate><description><![CDATA[召回率从 92% 掉到 61%，团队折腾两天换 embedding 模型却没搞清楚问题出在切分。本文用 10 个面试追问拆开 RAG 检索链路：切分怎么切、混合检索怎么融、rerank 什么时候上、召回率暴跌的排查顺序，附一个能直接跑的 chunk 切分评估脚本和排查速查表。]]></description><category></category></item><item><title><![CDATA[Go IM 源码实战（6）：一条消息只占 1/100 个文档，100 是改不了的硬编码]]></title><link>https://blog.csdn.net/2604_97047541/article/details/169070042</link><guid>https://blog.csdn.net/2604_97047541/article/details/169070042</guid><author>2604_97047541</author><pubDate>Mon, 26 Oct 2026 20:34:58 +0800</pubDate><description><![CDATA[一条 500 人群里的消息只存一份，但 500 个人打开看到 500 种样子——撤回的看不到、删了的不显示、自己的那条带已读。这背后是"分桶 + 读时改写"两个设计：100 条消息塞一个 Mongo 文档，靠 (seq-1)/100 定位；展示形态在读取时才拼。这篇顺带算清一件事：为什么这个 100 一旦上线就不能改，改了历史消息会全乱。]]></description><category></category></item><item><title><![CDATA[Go IM 源码实战（5）：seq 分配两段式 Lua，号段发完那 3 秒会撞号]]></title><link>https://blog.csdn.net/2604_97047541/article/details/169069727</link><guid>https://blog.csdn.net/2604_97047541/article/details/169069727</guid><author>2604_97047541</author><pubDate>Mon, 26 Oct 2026 20:34:19 +0800</pubDate><description><![CDATA[群聊里两个人同时发消息，序号撞成了同一个。查了半小时日志才发现，问题不在并发写，而在号段发完那一刻：Redis 里这一段用尽，第二段 Lua 还没写回，两个请求同时走了 Mongo 兜底。这篇拆开 518 行 seq 分配器，讲清两段式 Lua 的 4 个状态、10 次重试失败后为什么只打日志、以及单聊 50 / 群聊 100 这两个数字是从哪来的。]]></description><category></category></item><item><title><![CDATA[万字详解 | Go 进阶（三）内存分配器：一次 make 背后 9 次跳转，它和 GC 怎么配合不拖垮延迟]]></title><link>https://blog.csdn.net/2604_97047541/article/details/169167664</link><guid>https://blog.csdn.net/2604_97047541/article/details/169167664</guid><author>2604_97047541</author><pubDate>Mon, 26 Oct 2026 19:56:42 +0800</pubDate><description><![CDATA[网关服务白天正常，晚上高峰 P99 从 3ms 飙到 40ms，gctrace 里 GC 占比只涨到 2.1%，调大 GOGC 却只降 5ms。本文顺着一次 make([]byte, 512) 的 9 站旅程拆开 Go 内存分配器：66 个 size class 怎么分、mcache 凭什么无锁、span 双位图怎么与 GC 互不打架，附可复制的 benchmark 代码和分配慢/GC 频繁排查速查表。Go 1.25 源码口径，建议收藏备用。]]></description><category></category></item><item><title><![CDATA[Go IM 源码实战（4）：发消息 16 行不落库，11 个开关配错满屏红点]]></title><link>https://blog.csdn.net/2604_97047541/article/details/168775045</link><guid>https://blog.csdn.net/2604_97047541/article/details/168775045</guid><author>2604_97047541</author><pubDate>Sun, 25 Oct 2026 20:54:26 +0800</pubDate><description><![CDATA[发送接口只有 16 行，而且它不落库——消息投进 Kafka 就直接返回成功。这篇拆 OpenIM 的消息发送链路：三个 ID 各管什么、为什么通知类型完全不校验、11 个开关怎么决定一条消息的一生、已读回执为什么必须关掉 4 个开关，以及我读代码时挖到的两个真 bug。]]></description><category></category></item><item><title><![CDATA[Go IM 源码实战（3）：HTTP 155 条路由，限流退避永远只等 1 秒]]></title><link>https://blog.csdn.net/2604_97047541/article/details/168774824</link><guid>https://blog.csdn.net/2604_97047541/article/details/168774824</guid><author>2604_97047541</author><pubDate>Sun, 25 Oct 2026 20:53:59 +0800</pubDate><description><![CDATA[一个 README 里写着「可选」的参数，代码里却是必填；一个限流中间件写成了 CPU/CPU，退避时间永远 1 秒。这篇拆 OpenIM 的 HTTP API 层：11 层中间件为什么顺序不能乱、155 条路由怎么做到风格完全一致、认证中间件只处理 POST 会留下什么隐患，以及那个恒等于 1.0 的 loadRatio 到底算什么 bug。]]></description><category></category></item><item><title><![CDATA[RAG 检索层变天：NVIDIA 三模型全开源，官方实测 token 成本立降 14%，旧方案会失效吗]]></title><link>https://blog.csdn.net/2604_97047541/article/details/168882626</link><guid>https://blog.csdn.net/2604_97047541/article/details/168882626</guid><author>2604_97047541</author><pubDate>Sun, 25 Oct 2026 19:55:55 +0800</pubDate><description><![CDATA[10 月 17 日到 21 日四天，NVIDIA 把文档解析、向量嵌入、重排序三个模型接连开源，权重开放可商用，官方实测换套检索配置每轮 token 成本降约 14%，Embed 8B 在 ViDoRe v3.1 拿到 61.17 nDCG@10。这篇不吹不黑：三个模型各管哪段、14% 该怎么打折看、和 BGE/Jina 怎么选，三张对照表直接拿走。]]></description><category></category></item><item><title><![CDATA[Go IM 源码实战（2）：WebSocket 握手 11 步，少 1 个参数连不上]]></title><link>https://blog.csdn.net/2604_97047541/article/details/168774460</link><guid>https://blog.csdn.net/2604_97047541/article/details/168774460</guid><author>2604_97047541</author><pubDate>Fri, 23 Oct 2026 20:37:16 +0800</pubDate><description><![CDATA[照着文档连 WebSocket 网关，握手一直失败，报错只有一行 strconv.ParseBool: parsing "": invalid syntax——文档说这参数可选，代码里却是必填。这篇拆 OpenIM 网关握手的 11 步：每一步失败返回什么、连接数检查为什么必须放在鉴权之前、10 万连接到底吃掉多少 fd 和内存，以及多端互踢为什么必须连 token 一起废掉。]]></description><category></category></item><item><title><![CDATA[Go IM 源码实战（1）：一条群消息 1500 次写入，同步做会拖垮整个服务]]></title><link>https://blog.csdn.net/2604_97047541/article/details/168773648</link><guid>https://blog.csdn.net/2604_97047541/article/details/168773648</guid><author>2604_97047541</author><pubDate>Fri, 23 Oct 2026 20:36:44 +0800</pubDate><description><![CDATA[给 App 加个聊天功能，很多人的第一反应是建一张 message 表、发消息就 INSERT。等群聊、离线补拉、多端同步、未读红点一个个压上来，才发现查询全乱、消息会重、红点永远对不上。这篇从一个 400 个 Go 文件的开源 IM 服务端讲起：一条 500 人群消息为什么会产生 1500 次写入，以及它凭什么敢在投完 Kafka 就立刻返回成功。]]></description><category></category></item><item><title><![CDATA[万字详解 | Go 进阶（二）GC 三色标记：STW 从 10ms 压到 40μs，1 次 Full GC 让线上 P99 抖了 3 秒]]></title><link>https://blog.csdn.net/2604_97047541/article/details/168771937</link><guid>https://blog.csdn.net/2604_97047541/article/details/168771937</guid><author>2604_97047541</author><pubDate>Fri, 23 Oct 2026 20:00:29 +0800</pubDate><description><![CDATA[Go 服务平时不卡，一到业务高峰就周期性抖一下？八成是 GC 并发标记被分配速率拖垮，辅助标记全压在业务 goroutine 上。这篇从三色标记主干讲到混合写屏障，用 gctrace 逐段拆开 STW 为什么只有 40 微秒，再给 GOGC 调优、GOMEMLIMIT 配置和三个线上故障的真实定位过程。看完能看懂自己服务的 GC 曲线，知道参数该往哪边调。]]></description><category></category></item><item><title><![CDATA[Go 项目骨架 25 个目录只用 9 个：错误码错 1 位，线上排查多花 3 小时]]></title><link>https://blog.csdn.net/2604_97047541/article/details/168661951</link><guid>https://blog.csdn.net/2604_97047541/article/details/168661951</guid><author>2604_97047541</author><pubDate>Thu, 22 Oct 2026 19:04:52 +0800</pubDate><description><![CDATA[新手搭 Go 工程最爱直接套 project-layout 的 25 个目录，结果一半目录从建起来就没用过，错误码还随手从 1001 开始编。上线后排查一个问题，先在十几个空目录里迷路，再对着对不上的错误码猜位置，一下午就没了。这篇把我们团队实际留下的 9 个目录、三段式错误码编码和配置分层一次讲清，附可运行的骨架代码和目录取舍速查表。]]></description><category></category></item><item><title><![CDATA[Go GMP 调度器 10 个高频追问：3 个线上故障让 P99 从 80ms 飙到 2s、10 万 goroutine 泄漏]]></title><link>https://blog.csdn.net/2604_97047541/article/details/168559644</link><guid>https://blog.csdn.net/2604_97047541/article/details/168559644</guid><author>2604_97047541</author><pubDate>Wed, 21 Oct 2026 20:33:52 +0800</pubDate><description><![CDATA[线上一个 Go 服务，QPS 没涨、内存却一路飙到 8G，P99 从 80ms 直接跳到 2s——查下来是 GMP 调度器在偷偷拖后腿：goroutine 泄漏、P 被系统调用卡住、GOMAXPROCS 在容器里取错。这篇把 G、M、P 怎么配合、调度循环怎么转、10 个面试高频追问和 3 个真实线上故障一次讲清，每个故障都给排查命令和定位路径。]]></description><category></category></item><item><title><![CDATA[万字详解 | Go 进阶（一）GMP 调度器：10万个goroutine凭什么不慌？]]></title><link>https://blog.csdn.net/2604_97047541/article/details/168453593</link><guid>https://blog.csdn.net/2604_97047541/article/details/168453593</guid><author>2604_97047541</author><pubDate>Tue, 20 Oct 2026 14:46:53 +0800</pubDate><description><![CDATA[GMP 调度器是 Go 高并发的发动机。本文用一家餐厅的故事讲透 G/M/P 三角色、本地队列与 work stealing、从协作式到异步抢占的演进、netpoller，并拆解容器里 GOMAXPROCS 配错导致 P99 飙高的经典事故与 Go 1.25 的自动修复。万字长文，建议收藏慢读。]]></description><category></category></item><item><title><![CDATA[一周AI热点速览 | Gemini 4 Argon百万上下文全球上线、Meta开源8160亿参数Muse Spark：大模型进入“比干活“时代]]></title><link>https://blog.csdn.net/2604_97047541/article/details/168408971</link><guid>https://blog.csdn.net/2604_97047541/article/details/168408971</guid><author>2604_97047541</author><pubDate>Mon, 19 Oct 2026 08:00:49 +0800</pubDate><description><![CDATA[过去一周AI圈依旧神仙打架：Google Gemini 4 Argon全球上线、Meta首款前沿模型亮相并开源8160亿参数模型、DeepSeek深夜更新、Kimi K3.1预告百万上下文……本文用5分钟带你看完本周最值得关注的AI动态，文末附对Go后端/Agent开发者的3条落地建议。]]></description><category></category></item><item><title><![CDATA[上下文一长就忘事？万字长文教你构建Agent“工作台便签+档案柜”记忆系统]]></title><link>https://blog.csdn.net/2604_97047541/article/details/167702018</link><guid>https://blog.csdn.net/2604_97047541/article/details/167702018</guid><author>2604_97047541</author><pubDate>Fri, 16 Oct 2026 20:01:11 +0800</pubDate><description><![CDATA[万字长文！工具稳了，下一个翻车点就是记性。用“工作台便签和档案柜”的生活比喻，带你掌握短期上下文窗口管理、长期记忆存储、读写策略与淘汰机制。记忆和RAG到底有什么区别？窗口满了只会截断怎么办？新旧记忆冲突听谁的？面试高频考点全解析，配面试追问提示与答题框架，帮你打通记忆分层。]]></description><category></category></item><item><title><![CDATA[Agent 线上翻车最多的地方！万字拆解工具调用、幂等设计与面试八股]]></title><link>https://blog.csdn.net/2604_97047541/article/details/167701926</link><guid>https://blog.csdn.net/2604_97047541/article/details/167701926</guid><author>2604_97047541</author><pubDate>Wed, 14 Oct 2026 20:08:06 +0800</pubDate><description><![CDATA[万字长文！循环让Agent动起来，但手脚乱动照样出事。用“给师傅配工具箱”的生活比喻，把工具定义、参数校验、权限分级、幂等设计和结果回灌讲透。工具描述怎么写才能防幻觉？写操作幂等键怎么设计？工具太多塞不下prompt怎么办？每个技术点附带面试官追问提示，帮你彻底解决Agent手脚不听使唤的问题。]]></description><category></category></item><item><title><![CDATA[Agent死循环一晚上烧掉一个月预算？万字拆解工程级循环设计与面试考点]]></title><link>https://blog.csdn.net/2604_97047541/article/details/167701860</link><guid>https://blog.csdn.net/2604_97047541/article/details/167701860</guid><author>2604_97047541</author><pubDate>Tue, 13 Oct 2026 20:00:00 +0800</pubDate><description><![CDATA[万字长文！Agent是接单制的，不是一问一答。用“接单、干活、交活、复盘”四大场景，带你吃透ReAct循环的工程实现。为什么状态机比while循环更稳？终止条件怎么设三层？死循环怎么排查？融合面试高频追问与答题框架，带你从Demo跑起来到稳上线，面试时讲明白，一篇讲透。]]></description><category></category></item><item><title><![CDATA[RAG 不进化就淘汰！2026到2027年 最新趋势全解读：Agentic RAG、GraphRAG、多模态、长上下文，面试官都在问]]></title><link>https://blog.csdn.net/2604_97047541/article/details/167177051</link><guid>https://blog.csdn.net/2604_97047541/article/details/167177051</guid><author>2604_97047541</author><pubDate>Mon, 12 Oct 2026 20:04:20 +0800</pubDate><description><![CDATA[万字番外篇！2026 年 RAG 生态大变天：Agentic RAG 让检索从被动变主动研究，多模态 RAG 把图片表格录音全拉进语义空间，GraphRAG 用知识图谱补上关系推理，长上下文和 RAG 分层共存，自适应检索让参数自己学，评估治理成了合规硬要求。每一条趋势都标了官方发布时间和来源，回扣前六篇基础，附赠面试话术。面试官问“最近 RAG 有什么新进展”，这一篇直接甩他脸上。建议收藏。]]></description><category></category></item></channel></rss>