Ollama vs vLLM 怎么选:从本地部署到高并发推理

Ollama vs vLLM 怎么选?围绕并发请求、GPU 显存、模型规模、量化格式和 API 兼容性,梳理本地部署与共享推理服务的取舍。两者自托管软件费用均为 $0,真正拉开成本的是硬件与运维。结合预算示例和迁移清单,判断何时保留 Ollama,何时评估 vLLM,并在切换前验证模型、延迟与回滚方案。

发布于

Ollama vs vLLM 怎么选:从本地部署到高并发推理

Ollama vs vLLM 怎么选,关键在于:是机器大多在等人提问,还是人经常在等机器响应。只有一台机器、少量用户偶尔使用,可以从 Ollama 起步;当请求持续重叠,吞吐量和延迟成为部署难题时,再选 vLLM。两者的自托管软件费用都是 $0,真正有差别的是硬件开支和运维投入。

Ollama vs vLLM:哪种部署更适合你?

如果是在笔记本上使用、运行私人助手,或小型内部服务的响应已经够快,就继续用 Ollama。如果要搭建持续承接并发请求的共享 GPU 服务,或者需要明确控制分布式推理,就选 vLLM。 部署在服务器上,本身并不是更换引擎的理由。

Ollama 是模型运行工具,把下载、配置和提供服务整合成了简洁的工作流程。vLLM 则是推理引擎,核心工作是调度大量请求,以及管理这些请求所需的工作内存。它们都不是模型本身:把同一个应用从一方迁到另一方,改变的是模型的运行方式。

选择取决于四件事:峰值同时请求数、可用 GPU 显存、具体的模型文件与配置,以及向用户承诺的响应延迟。注册用户数不能有效替代这些指标。一个运行智能体的小型编程团队,可能比偶尔提问的大团队产生更多并发任务。

软件费用及文档核查于 2026 年 10 月 12 日。本文依据官方文档进行对比,并通过算例分析成本;没有为本文运行推理基准测试。Ollama 的在线定价页列有免费的本地使用方式,vLLM 的项目许可证允许使用,无需支付软件费用。 Ollama 定价、vLLM 许可证。

决策维度OllamavLLM哪个更适合这项需求
自托管软件费用$0;硬件费用仍需自付$0;硬件费用仍需自付引擎费用相同
启动小型服务应用或 CLI、拉取模型、本地服务器Python 环境或容器、后端及模型配置Ollama 更容易上手
持续并发流量支持并行请求,可控制内存与队列连续批处理、PagedAttention、分块预填充vLLM 的服务调度控制更强
扩展到多块 GPU可在单块 GPU 上运行,也可分布到可用的多块 GPU可明确配置张量并行和流水线并行服务,包括多节点部署分布式部署选 vLLM
可能阻碍迁移的问题现有模型包和设置可能绑定 OllamaGGUF 方案仍属实验性支持,需要插件验证目标模型文件之前,先保留 Ollama

表中的功能依据官方 Ollama 并发文档、vLLM 功能概览和 vLLM 扩展指南。适用性结论是根据这些已记录能力作出的编辑判断,并非实测速率排名。

按用户负载、GPU 和模型规模选择

下面这些场景用于确定优先评估哪种方案,不是容量保证。 表中的“用户”指会产生重叠任务的人或智能体;各人数区间只是规划示例。8B 模型约有八十亿个参数,也就是定义模型的那些数值。

使用场景硬件模型与内存条件建议从哪里开始
1 至 5 名用户偶尔使用;短时突发请求笔记本、CPU 或一块受支持的 GPU小型 7B/8B 级模型,并留有请求所需的上下文空间先用 Ollama;测量后再考虑迁移
5 至 20 名用户,请求存在重叠一块受支持的服务器 GPU能容纳 7B/8B 或 13B/14B 模型,以及并发对话所需内存同时评估 vLLM 和经过调优的 Ollama
20+ 名用户并发使用,或智能体产生突发请求一块或多块服务器 GPU模型能装下,但排队导致响应不达标优先评估 vLLM;通过压测确定容量
少量用户需要较大模型单机上有两块或更多 GPU30B/32B 或 70B 模型权重超过单块 GPU 的显存简单本地使用选 Ollama;持续增长的共享服务选 vLLM
不限用户数,需要跨服务器运行同一个模型多台机器上的 GPU模型或工作内存需求超过单个节点采用 vLLM 文档中的分布式方案

不能只看模型规模就决定买哪块 GPU。在理想化计算中,稠密 8B 模型按每个权重 4 位存储,仅权重就至少需要 4 GB;70B 模型则至少需要 35 GB。 计算方式是参数量 × 位数 ÷ 8,按十进制字节计算。量化元数据、更高精度的张量、运行时和对话内存都会增加占用。这两个数都不能直接当作显存配置建议。

因此,“模型成功加载”远远不够作为验收标准。机器也许能装下权重,却没有足够空间承接用户持续进行的对话。先参考本地编程模型指南选定模型检查点,再为它的实际服务负载规划容量。

安装与硬件:第一台机器优先考虑 Ollama

如果眼前的任务是在已有硬件上跑起一个实用模型,Ollama 更合适。 桌面端下载和命令行流程减少了需要自行决定的部署细节。Linux 文档给出的安装方式是:

Bash
curl -fsSL https://ollama.com/install.sh | sh
ollama run llama3.2

如果服务尚未启动,使用 ollama serve。Linux 指南也介绍了开机启动服务的配置;要承接其他人的请求,常驻服务比一直开着终端更合适。

Ollama 文档,介绍 Linux 安装和服务配置
Ollama:Linux 安装和服务配置

Ollama 通过 Metal 支持 Apple GPU 加速,通过 ROCm 支持部分 AMD 硬件,也支持 NVIDIA GPU,并通过 Vulkan 支持更多 Windows/Linux 设备。其 NVIDIA 页面目前列出的要求是计算能力 5.0 或更高,较老显卡的驱动要求有所不同。请在 Ollama 硬件列表中核对具体显卡和操作系统。

如果安装只是搭建受管理推理服务环境的第一步,vLLM 更合适。 当前的 NVIDIA 快速入门指南使用独立的 Python 环境。已安装 uv 且 GPU 驱动兼容时,文档给出的安装步骤是:

Bash
uv venv --python 3.12 --seed
source .venv/bin/activate
uv pip install vllm --torch-backend=auto

这些安装命令来自文档,本文没有实际执行验证。AMD 和 Intel 的安装需遵循各自的后端说明。参见 vLLM 快速入门。

vLLM 文档,列出针对不同硬件的 GPU 安装方式
vLLM:按硬件区分的安装方式

vLLM 的 NVIDIA 安装方案要求使用 Linux,GPU 计算能力为 7.5 或更高。该方案不支持原生 Windows;文档建议 Windows 用户使用 WSL。NVIDIA 并非唯一的硬件选择:安装索引还涵盖 AMD ROCm、Intel XPU、CPU,以及通过社区维护的 vLLM-Metal 插件使用 Apple Silicon 的方案。参见 GPU 要求、安装索引。

Apple 方案使用 MLX 和针对 MLX 优化的模型。应把它当作独立后端评估,不能默认其行为与 CUDA 服务器相同。对于以 Mac 为主的工作流程,Ollama 仍是更简单的入门选择。如果主要纠结的是桌面工作环境,可以另看 Ollama 与 LM Studio 对比。

Ollama 与 vLLM 性能对比:分界在持续并发

面对持续并发负载,vLLM 通常更值得优先考虑,因为其文档列出的调度能力正是为这类负载设计的。 吞吐量指单位时间内完成的总工作量,和单独一个回答出现得有多快,是不同的指标。

vLLM 支持连续批处理:正在运行的请求向前推进时,可以接纳新的任务;还提供 PagedAttention,用于管理生成文本时使用的键值缓存。这个缓存通常简称 KV cache,是模型处理对话 token 时的工作内存。参见 vLLM 功能概览。

分块预填充把读取长提示词的工作拆成较小的片段,让它们与正在进行的回答生成共享调度时间。前缀缓存则复用相同提示词开头的处理结果,例如反复出现的系统提示词。前缀缓存有助于提示词处理,但不会省去生成新回答 token 的计算。参见调度与调优、前缀缓存的限制。

Ollama 本身就支持并行请求

Ollama 文档说明,在内存允许的情况下,可以对同一模型并行发起请求,也可以同时加载多个模型。OLLAMA_NUM_PARALLEL 控制前者,OLLAMA_MAX_LOADED_MODELS 控制后者。OLLAMA_MAX_QUEUE 限制等待中的任务量,服务器过载时可能返回 HTTP 503。当前 FAQ 列出的默认并行请求数为 1。参见 Ollama 并发设置。

对于小型客服助手,提高允许的并发量也许就够了。但加长队列不会增加算力,只可能让客户在首个 token 出现前等得更久。调优应围绕响应目标,而不是追求服务器能容纳的最大队列。

上下文可能吃掉原本留给并发用户的空间

对比两个引擎前,先显式设置上下文长度。 Ollama 的上下文专页描述的是随显存容量变化的默认值,FAQ 却仍给出固定默认值。文档存在这种不一致,更应检查实际生效的设置,不能默认笔记本和服务器的配置相同。ollama ps 可以查看已加载的上下文长度,以及模型在 CPU/GPU 上的分布。参见 Ollama 上下文说明。

举个配置示例:四路并行对话,每路 8,192 个 token,需要为总计 32,768 个上下文 token 预留容量。相比单路 4,096 个 token,总上下文容量扩大了八倍,并不意味着进程总 RAM 占用也扩大八倍。模型权重和其他内存分配并不按相同比例增长。Ollama 的并发文档解释了这种上下文倍增关系。

建筑剖面示意图,区分固定模型权重、对话 KV 缓存、运行时分配与剩余内存
权重只是内存预算的一部分,对话状态也需要单独预留空间。图中面积仅作概念示意,并非实测比例。

vLLM 同样会遇到内存瓶颈。其调优指南提醒,KV 空间不足可能导致抢占和重新计算,进而损害延迟表现。减少并发序列数或批处理 token 预算是一种应对方式,增加 GPU 是另一种。再强的调度器,也无法凭空增加机器没有的内存。

真正触发迁移的条件是:经过合理调优后,在有代表性的峰值负载下,服务仍无法达标。 记录首 token 延迟、回答完成时间、成功请求数、队列增长和错误情况。除了中位数,还要对比尾部分位数,因为用户会感受到那些特别慢的请求。vLLM 提供生产环境指标,便于开展这项工作。

对比时,要对齐模型修订版本、精度、提示词长度、输出上限和流量模式。拿 Ollama 上的小型量化模型与 vLLM 上更大、更高精度的模型检查点比较,测出的是两套部署的差异,不能单独归因于引擎。

量化格式:迁移引擎,也要迁移模型

已有本地模型包时,Ollama 更方便;需要为特定硬件选择服务格式时,vLLM 更有优势。 量化通过降低模型数值的存储精度来减少内存需求。文件容器、量化方法和执行后端,是三个需要分别核对的兼容性问题。

Ollama 文档介绍了如何导入 Safetensors 权重,以及单文件和分片 GGUF 模型。GGUF 是本地推理常用的模型文件格式;Ollama 当前的导入指南指出,GGUF 量化必须在导入之前完成,而非在导入过程中执行。其 create API 则另行列出 nvfp4,作为导入时量化的示例。这不代表每种模型架构和 GPU 都支持这条路径。参见 Ollama 导入指南、create API。

Ollama 还为 KV cache 列出了 f16、q8_0 和 q4_0。这些是缓存设置,不能混同于模型权重格式列表。使用量化缓存需要启用 Flash Attention。参见 Ollama 缓存文档。

vLLM 列出的量化集成包括 AWQ/GPTQ、FP8、INT8、INT4、MXFP4/MXFP8、NVFP4 等。支持情况因实现和硬件而异,因此仅凭“支持 4 位量化”不足以决定采购。需要核对具体模型检查点与计算内核的组合。参见 vLLM 量化文档、格式概览。

分词器负责把文本转换为模型能理解的 token ID。权重、分词器、聊天格式或量化方式发生变化,都可能改变回答、工具调用和内存占用。即使模型家族名称相同,也要为回归检查预留投入。

Mellum2.1:发布时提供哪些模型文件,直接影响选择

JetBrains 2026 年 10 月 8 日发布的 Mellum2.1 公告,体现了优先面向服务器发布的模式:公告称,用于 Ollama、llama.cpp 和 LM Studio 的 GGUF 版本即将推出。该版本的模型页面提供了 vLLM 服务启动方案,首发集成也包括 vLLM 和另一款推理服务器 SGLang。参见 JetBrains 发布公告、模型发布页。

**首发时的差距已经缩小:**截至 10 月 12 日核查时,JetBrains 官方 GGUF 仓库已有可下载的量化文件。不能把发布公告中的“即将推出”当作今天的可用状态。实际选择时,应先检查当前可用的模型文件和服务启动方案,再决定是否仅仅为了使用新模型而更换引擎。参见官方 GGUF 文件。

兼容 OpenAI 的服务端:客户端可沿用,接口行为仍要核对

两者的文档都提供兼容 OpenAI 的服务端,但请求格式相同,不代表行为相同。 Ollama 的本地基础 URL 是 http://localhost:11434/v1/,vLLM 示例使用的是 http://localhost:8000/v1。如果应用调用的是 Ollama 原生 /api/chat,迁移时需要适配 API,不能只改端口。参见 Ollama 兼容性说明、vLLM 服务端文档。

例如,在兼容硬件上安装 vLLM 后,可以用以下命令启动其文档示例中的模型,并显式指定上下文上限和面向应用的模型名称:

Bash
vllm serve NousResearch/Meta-Llama-3-8B-Instruct \
  --host 127.0.0.1 \
  --port 8000 \
  --max-model-len 8192 \
  --served-model-name app-model

这只是配置示例,所用模型检查点与前面的 Ollama 命令并不相同,也不是生产环境容量建议。--served-model-name 可以让客户端在部署变化时继续使用稳定的模型名称。参见 vLLM 引擎参数。

检查聊天模板如何把消息角色转换成模型输入格式,并显式设置采样参数。vLLM 可能采用模型仓库中 generation_config.json 的默认值;--generation-config vllm 可禁用这项覆盖。用应用实际发送的请求,对比工具调用解析、结构化输出、流式响应、取消请求和错误处理。

迁移也必须涵盖身份验证。 Ollama 的本地兼容示例会忽略客户端传入的 API 密钥值。vLLM 支持 API 密钥,但其安全文档提醒,这并不能保护所有端点。让后端保持私有,并在服务入口实施身份验证、TLS 和路由访问限制。参见 vLLM API 密钥的限制。

如果应用经常切换基础模型,还要考虑另一项迁移成本:vLLM FAQ 给出的多基础模型方案是运行独立的服务实例,再加一层路由。API 别名本身不会加载另一个模型。对于使用频率不高的内部工具,Ollama 管理多个已加载模型的能力可能更方便。参见 vLLM 的多模型限制。

费用对比:相同负载,运维成本可能不同

两者都不能靠更便宜的自托管 token 单价胜出,因为引擎本身并不按 token 收费。 Ollama 的付费云套餐是独立服务,并非本地模型服务的使用前提。Ollama 定价指南解释了这一区别;当前的云服务套餐请查看前文链接的官方在线定价页。

自有硬件的月度成本包括电费、硬件成本分摊和时间投入。租用硬件则先按报价计算机器运行时长,再加上存储、网络和运维费用。推理效率提高,只有在减少已配置资源、缩短计费运行时间,或带来可估值的业务收益时,才会真正节省成本。

用同一组假设算一笔账

下面采用的是明确设定的预算假设,不是厂商报价,也不是基准测试结果:GPU 每小时 $1,每月 730 小时,完成 100,000 个成功任务。每个任务包含 2,000 个提示词 token 和 1,000 个输出 token;两个引擎使用相同模型、量化方式、质量标准和延迟目标。

如果两者在持续租用一块 GPU 的条件下都能达标,每月计算费用都是 $730,即每个成功任务 $0.0073,按每 1,000 个输出 token 计算也是这个费用。按输出 token 计价时,提示词处理量保持不变;这不是输入与输出混合后的单价。

现在假设 vLLM 部署每月额外需要两小时运维,按每小时 $100 计算,此外还有一次性的四小时迁移工作:

  • **Ollama 参考部署:**持续性费用为 $730,尚未计入两者共有的成本。
  • **相同硬件上的 vLLM:**持续性费用为 $930,即每 1,000 个输出 token $0.0093。
  • vLLM 首月,计入迁移:$1,330,即每 1,000 个输出 token $0.0133。

这些工时是预算输入项,需要替换成自己的估算,并非对迁移耗时的断言。双方的计算都未包含共有运维工作、存储、网络费用和税费。

什么情况下 vLLM 才更省钱?

按上述 GPU 时租价格,vLLM 每月必须节省超过 200 个 GPU 小时,才能抵消假设中的额外运维成本。 如果还要在首月收回全部 $400 迁移投入,门槛就提高到节省超过 600 个 GPU 小时。

再看一个全天运行的例子:假设自己的压测表明,要满足相同负载和响应目标,Ollama 需要两个配置相同的 GPU 副本,而 vLLM 只需一个。此时 Ollama 的计算费用变为 $1,460;vLLM 的计算费用加额外运维仍为 $930。在这个条件下,每月可节省 $530,约 0.75 个月即可收回 $400 迁移成本。

这是盈亏平衡计算,不代表 vLLM 能把你的 GPU 需求减半。如果两者需要相同硬件,也没有其他足以支持迁移的收益,那么仅比较软件费用,vLLM 始终不会更占优势。不存在一个适用于所有场景的用户数分界点,超过它就一定值得迁移。

从 Ollama 迁移到 vLLM 的简明清单

先验证模型与 API 的行为,再通过可回退的路由切换服务。 下载下来的权重,只是用户所依赖的整套服务的一部分。

  1. 记录当前可用的部署

    保存模型标识、量化方式、上下文、系统提示词、采样参数和 Ollama Modelfile。保留有代表性的请求,并记录预期的应用结果。既要包含短聊天提示词,也要包含长对话和工具使用。参见 Modelfile 参考文档。

  2. 选择目标模型文件与 GPU 后端

    核对架构、分词器、量化支持和内存余量。固定模型修订版本和运行环境。单独下载目标权重,避免回滚时还要重新构建旧模型包。

  3. 对齐 API 行为

    映射基础 URL 和模型名称,复现提示词与模板设置,并测试应用实际使用的请求字段。继续在应用现有可控的处理路径中保留对话历史;切换前检查任何由服务端管理的状态。

  4. 回放峰值流量,再逐步切换

    对齐提示词和输出长度,测试并发请求,并比较成功率与尾延迟。在服务前设置需要身份验证的入口,先把少量流量送到新后端,在验收标准达成前保留旧路由。

迁移架构示意图:应用代理将请求路由至 vLLM,同时保留通往 Ollama 的回滚路由和独立测试入口
保持应用侧路由稳定,验证新后端,并保留一条可用的 Ollama 回滚路径。

如果 Ollama 已满足服务目标、所需模型尚无经过验证的 vLLM 运行方案,或者迁移只是在用陌生后端替换一套已经可用的模型包,就先别切换。在笔记本上保留 Ollama、共享服务器上使用 vLLM,也可以是合理搭配,前提是测试两者的差异,而不是默认开发和生产环境完全一致。想扩大候选范围,可以参考 Ollama 替代方案。

下一步很具体:记录一组最繁忙且有代表性的工作负载,明确可接受的响应时间,在准备采用的服务器上回放,再决定是否购买更多容量。

常见问题

为什么要用 vLLM 替代 Ollama?

当持续并发请求、精细的批处理调优或分布式模型服务,值得你投入额外运维工作时,选择 vLLM。如果 Ollama 更简单的模型管理流程已经满足应用的响应目标,就继续使用 Ollama。

Ollama 和 vLLM 哪个更快?

如果关注负载下的总吞吐量,vLLM 更值得优先评估。但要得出适用于自己应用的速度结论,仍需对齐硬件、权重、精度、上下文和请求。单个请求的响应速度与服务器的总吞吐量,可能在不同配置下各有优势。

为什么 Ollama 运行很慢?

先检查请求是否在排队、模型是否有一部分转移到了 CPU,以及上下文或输出长度是否超过容量规划时的预期。更换引擎前,先检查实际生效的部署状态;把超出容量的负载搬到另一个引擎上,并不会让它的内存需求消失。

为什么 Ollama 占用这么多 RAM?

权重只是内存分配的一部分。更长的上下文、并行对话,以及额外加载的模型也都需要内存。先减少不必要的上下文和已加载模型,再重新测试应用所需的并发量。

使用 AI 业务工作流评估清单,判断哪些私有工作流程值得配备共享模型服务器;也可以订阅通讯,跟进后续工具变化。

发布日期
分类
Build
smolagents 教程:Python 代码智能体原理、沙箱与框架选型

smolagents 教程:Python 代码智能体原理、沙箱与框架选型

smolagents 如何用 Python 驱动 AI 智能体?了解两种智能体的区别、工具与模型的搭配,以及 Docker 示例的执行流程。本文梳理沙箱边界、权限与资源限制,并对比 LangGraph 和 OpenAI Agents SDK,帮助开发者判断何时适合动态组合代码,何时应采用持久化工作流或专职智能体协作。2026年10月31日Build
Warp Terminal 评测:先换终端,再决定要不要换 AI 编程助手

Warp Terminal 评测:先换终端,再决定要不要换 AI 编程助手

Warp Terminal 值得替换现有终端吗?本文拆解命令块、外部编程智能体集成与 Warp Drive,比较 iTerm2、Ghostty,并梳理套餐价格、平台计费、隐私设置、共享会话保留和离线限制。先保留 Claude Code 或 Codex,用实际任务判断终端体验是否改善,再决定是否更换智能体或推广到团队。2026年10月31日Build
Kilo Code 评测:多模型、云端任务与代码审查,值得换吗?

Kilo Code 评测:多模型、云端任务与代码审查,值得换吗?

Kilo Code 评测:梳理 VS Code、JetBrains、CLI 与云端智能体的工作方式,比较 Cline、Claude Code 等替代方案,拆解模型选择、共享账单、推理与计算费用,并说明云端配置、代码审查和数据路由的限制,帮助个人开发者与小团队判断,是否值得为一套相互衔接的开源 AI 编程工作流迁移。2026年10月31日Build
Amazon Bedrock AgentCore 架构详解:组件分工、适用场景与试点指南

Amazon Bedrock AgentCore 架构详解:组件分工、适用场景与试点指南

Amazon Bedrock AgentCore 能替代智能体技术栈中的哪些自建工作?本文梳理各组件的职责与适用场景,讲清执行隔离、会话归属、记忆、工具访问和业务权限的边界,并说明运行限制与区域支持如何影响架构。附 CLI 试点流程,帮助团队判断何时值得采用、哪些责任仍需自己承担,以及上线前该验证什么。2026年10月30日Build
投机解码实战:原理、性能边界与大模型推理加速配置

投机解码实战:原理、性能边界与大模型推理加速配置

投机解码如何让大模型更快输出,同时保留目标模型的采样行为?本文讲清草稿生成、精确验证与接受率,比较独立草稿模型、EAGLE 和 MTP,给出 vLLM、SGLang、TensorRT-LLM 配置示例,并说明并发、显存与草稿开销如何影响收益,帮助自建推理服务和托管 API 团队确定评估与上线条件。2026年10月30日Build
GPU云服务器怎么选?2026 年 7 家服务商价格与场景对比

GPU云服务器怎么选?2026 年 7 家服务商价格与场景对比

GPU云服务器怎么选?对比 Runpod、Lambda、CoreWeave、Vast.ai、Modal、Together AI 和 Google Cloud,梳理模型微调、无服务器推理与集群的适用场景。从显存需求、计费单位、冷启动、存储和传输费用到区域限制,帮你核算完整成本,判断该租机器、调用 API,还是预留算力。2026年10月30日Build
GitHub Copilot Fusion 怎么用?模型协作、档位与积分详解

GitHub Copilot Fusion 怎么用?模型协作、档位与积分详解

GitHub Copilot Fusion 如何选择并协调模型?本文梳理各客户端的开启方式、Standard、High 与 Max 档位,以及 AI 积分计费和官方基准的适用边界,并给出单仓库试用流程,帮助开发者和团队核对用量、审查完整代码差异,再决定是否将 Fusion 设为默认配置。2026年10月29日Build
Bright Data 评测:代理、网页抓取与 AI 数据采集怎么选

Bright Data 评测:代理、网页抓取与 AI 数据采集怎么选

Bright Data 评测:梳理代理、Web Unlocker、Scraper API、数据集及智能体浏览器的用途与计费差异,说明共享免费额度、住宅代理 KYC 和浏览器限制。结合价格监控成本模型,比较 Firecrawl 与 Browse AI,帮助开发和运营团队按所需输出、时效与维护职责选型。2026年10月28日Build
订阅通讯

每周日,一封信。写运转中的系统,不写热评。

每周一期。无垃圾邮件。随时退订。