<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>LLM on Zampo Blog</title><link>https://blog.cpdd.fyi/tags/llm/</link><description>Recent content in LLM on Zampo Blog</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Mon, 06 Jul 2026 18:20:00 +0800</lastBuildDate><atom:link href="https://blog.cpdd.fyi/tags/llm/index.xml" rel="self" type="application/rss+xml"/><item><title>AI 写了 10 万行 K8s 代码，真正难的不是生成</title><link>https://blog.cpdd.fyi/posts/webernetes-browser-k8s/</link><pubDate>Mon, 06 Jul 2026 18:20:00 +0800</pubDate><guid>https://blog.cpdd.fyi/posts/webernetes-browser-k8s/</guid><description>&lt;p&gt;你可能已经用了几年 K8s。&lt;/p&gt;
&lt;p&gt;Deployment 会写，Service 会配，Pod 挂了也知道先看 events。可真要问 kubelet、scheduler、controller、CNI 在里面怎么配合，很多人心里还是一团黑箱。&lt;/p&gt;
&lt;p&gt;你也可能已经开始用 AI 写代码。&lt;/p&gt;
&lt;p&gt;让它补测试、改函数、迁移一段逻辑，确实省时间。但到了 code review，你又会忍不住多看两眼：这个 helper 哪来的？这个边界条件是不是少了？它看起来很顺，真的和原来的行为一样吗？&lt;/p&gt;
&lt;p&gt;webernetes 这个项目有意思，就卡在这两个不信任中间。&lt;/p&gt;
&lt;p&gt;Sam Rose 在 ngrok 博客里写，他把 Kubernetes 的一部分核心行为搬进了浏览器：kubelet、调度器、deployment controller、kube-proxy、CNI 网络模拟、容器运行时。博客开头还给了几个很刺眼的数字：接近 10 万行代码，552 个 commit，629 个文件，两个月。&lt;/p&gt;
&lt;p&gt;更反常识的是，它的 gzip 后体积大约 140KiB。&lt;/p&gt;
&lt;p&gt;作为对比，一个 Go 写的 hello world 编译成 WebAssembly，gzip 后大约 540KiB。也就是说，你直觉里那个“把 K8s 编译成 WASM 塞进浏览器”的方案，连一个 hello world 的体积都先把你劝退了。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.cpdd.fyi/images/webernetes-browser-k8s/cover.png" alt="浏览器里的 webernetes 与可信度回路"&gt;&lt;/p&gt;
&lt;p&gt;所以 webernetes 最值得看的地方，不是“AI 写了 10 万行代码”。&lt;/p&gt;
&lt;p&gt;真正值得看的是：这些 AI 写出来的代码，最后是怎么被人审查、被测试、被对照到可以相信的。&lt;/p&gt;
&lt;h2 id="它不是把完整-k8s-编译进浏览器"&gt;它不是把完整 K8s 编译进浏览器&lt;/h2&gt;
&lt;p&gt;很多人第一反应会问：这是不是把 Kubernetes 编译成 WebAssembly？&lt;/p&gt;</description></item><item><title>你装的 Ollama，在多用户场景下会慢 20 倍——但这不是它的错</title><link>https://blog.cpdd.fyi/posts/ollama-vllm-local-llm-guide/</link><pubDate>Mon, 29 Jun 2026 20:00:00 +0800</pubDate><guid>https://blog.cpdd.fyi/posts/ollama-vllm-local-llm-guide/</guid><description>&lt;p&gt;你装了 Ollama，跑个 Qwen3 8B。一个人用，很流畅。&lt;/p&gt;
&lt;p&gt;然后给团队搭了个内部 chatbot。三个人同时用——卡炸了。&lt;/p&gt;
&lt;p&gt;你以为是模型太大，换了更小的模型。还是卡。&lt;/p&gt;
&lt;p&gt;这时候你可能开始怀疑：是不是 Ollama 性能不行？&lt;/p&gt;
&lt;p&gt;不是。问题根本不在于 Ollama 快不快。而在于你把它用在了它不被设计服务的场景里。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一个人-vs-三个人不是慢一点是架构决定的"&gt;一个人 v.s. 三个人，不是「慢一点」，是架构决定的&lt;/h2&gt;
&lt;p&gt;先说一组数据。同一块 GPU，跑同一个模型：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;并发数&lt;/th&gt;
 &lt;th&gt;Ollama（总 tok/s）&lt;/th&gt;
 &lt;th&gt;vLLM（总 tok/s）&lt;/th&gt;
 &lt;th&gt;差距&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;~62&lt;/td&gt;
 &lt;td&gt;~71&lt;/td&gt;
 &lt;td&gt;~1.1x&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;8&lt;/td&gt;
 &lt;td&gt;~82&lt;/td&gt;
 &lt;td&gt;~187&lt;/td&gt;
 &lt;td&gt;~2.3x&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;50&lt;/td&gt;
 &lt;td&gt;~155&lt;/td&gt;
 &lt;td&gt;~920&lt;/td&gt;
 &lt;td&gt;~5.9x&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;100+&lt;/td&gt;
 &lt;td&gt;封顶&lt;/td&gt;
 &lt;td&gt;继续涨&lt;/td&gt;
 &lt;td&gt;~15-20x&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;一个人用，Ollama 和 vLLM 几乎一样快。&lt;/p&gt;
&lt;p&gt;两个人开始，vLLM 慢慢拉开距离。&lt;/p&gt;
&lt;p&gt;五十个人？Ollama 的吞吐量基本封顶了——请求在排队，后来的等着前面的完成才能开始。vLLM 还在涨。&lt;/p&gt;
&lt;p&gt;这不是 Ollama「性能不行」。「性能」这个词让你觉得是优化做得不够，换个版本、换个模型、换个量化格式就能追上。但这不是优化问题——是&lt;strong&gt;架构不为此设计&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;Ollama 做推理的方式很简单：来一个请求，生成完，再来下一个。它不做 continuous batching。&lt;/p&gt;
&lt;p&gt;什么叫 continuous batching？想象一个收银台。传统做法：排一队，一个一个结。轮到你才开始，结完才叫下一个。&lt;/p&gt;
&lt;p&gt;Continuous batching 的做法：柜台一有空位，就让新人进来。不等前面的人全结完。柜台利用率直接拉满。&lt;/p&gt;
&lt;p&gt;vLLM 就是这样调度请求的。每一轮推理迭代，它重新看一遍「现在谁还需要计算」，有空位就把新请求塞进去。GPU 利用率从 ~50% 拉到 85-92%。&lt;/p&gt;
&lt;p&gt;Ollama 的设计目标从来不是「服务多用户」。它的价值是另一件事——让开发者用一条命令跑起一个模型。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ollama pull qwen3:8b
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ollama run qwen3:8b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;两条命令，从选模型到本地 API，全程不超过两分钟。这个体验就是 Ollama 的核心竞争力。&lt;/p&gt;</description></item><item><title>tRPC-Agent-Go 快速上手：Go 生态终于有了自己的 Agent 框架</title><link>https://blog.cpdd.fyi/posts/trpc-agent-go-quickstart/</link><pubDate>Fri, 26 Jun 2026 10:00:00 +0800</pubDate><guid>https://blog.cpdd.fyi/posts/trpc-agent-go-quickstart/</guid><description>&lt;h2 id="引子go-生态的-agent-空白"&gt;引子：Go 生态的 Agent 空白&lt;/h2&gt;
&lt;p&gt;如果你是一个 Go 后端开发者，过去两年一定被各种 AI Agent 框架刷过屏。LangChain、CrewAI、AutoGen、LangGraph…… 清一色 Python。而你手上的 Go 项目要做 Agent 能力，选项屈指可数：要么嵌一个 Python 子进程（运维噩梦），要么自己手搓胶水代码（重复造轮子），要么指望社区那几个半成品框架。&lt;/p&gt;
&lt;p&gt;这个局面在 2025 年中开始改变。腾讯 tRPC 团队开源了 &lt;strong&gt;tRPC-Agent-Go&lt;/strong&gt;，到今天刚好 13 个月，115 个 Release，1.4k Stars，已经在腾讯元宝、腾讯视频、腾讯新闻等业务线跑过了生产流量。&lt;/p&gt;
&lt;p&gt;这篇文章的目标很简单：&lt;strong&gt;用 10 分钟让你知道 tRPC-Agent-Go 是什么、能不能用、怎么上手&lt;/strong&gt;。第二篇再深入工程落地。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="trpc-agent-go-是什么"&gt;tRPC-Agent-Go 是什么&lt;/h2&gt;
&lt;p&gt;一句话：&lt;strong&gt;tRPC-Agent-Go 是腾讯 tRPC 团队出品的 Go 语言生产级 Agent 框架&lt;/strong&gt;，对标 Python 生态的 LangChain / LangGraph / CrewAI。&lt;/p&gt;
&lt;p&gt;它的定位不是&amp;quot;Go 版的 LangChain&amp;quot;，而是自顶向下重新设计：以 Agent 接口为核心执行单元，以图工作流为高级编排手段，以事件流为通信载体。覆盖了单 Agent 对话、多 Agent 协作、图工作流、MCP/A2A/AG-UI 协议、RAG、可观测性、评测等全栈能力。&lt;/p&gt;
&lt;p&gt;关键背景数据：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;腾讯 tRPC 是覆盖近 200w+ 节点、5w+ 服务的内部 RPC 框架，tRPC-Agent-Go 是其 AI 方向的延伸&lt;/li&gt;
&lt;li&gt;已生产验证于腾讯元宝、腾讯视频、腾讯新闻、IMA、QQ 音乐等业务&lt;/li&gt;
&lt;li&gt;要求 Go 1.21+，Apache-2.0 协议&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不强制依赖 tRPC 框架&lt;/strong&gt;，可以独立使用&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="核心概念速览点到为止"&gt;核心概念速览（点到为止）&lt;/h2&gt;
&lt;p&gt;tRPC-Agent-Go 的核心抽象只有五个 Agent 类型 + 一个 Runner + Tool + Memory，一看就懂。&lt;/p&gt;</description></item></channel></rss>