开源项目观察|ds4:本地 Agent 推理,不只是把模型跑起来

简介: Redis作者antirez新开源项目ds4(DwarfStar 4),是专为DeepSeek V4 Flash设计的轻量级本地推理引擎。聚焦Agent场景,支持OpenAI/Anthropic API、Disk KV Cache复用、工具调用精准映射与长上下文优化,在MacBook等高端个人设备上实现高效端到端推理。

上周末,Redis 作者 antirez 开源了一个新项目:ds4,GitHub 地址是:https://github.com/antirez/ds4。

有意思的是,虽然仓库名叫 ds4,但 README 里它的名字是 DwarfStar 4,也就是“矮星 4”。这个名字倒是贴切:它不像一个大而全的通用推理框架,更像一个小而高密度的专用引擎,把 DeepSeek V4 Flash、Metal / CUDA、KV Cache 和 Agent API 这些东西压进了一套实现里。

ds4 是什么

先解释一下 ds4 到底是什么。

简单说,它是一个面向 DeepSeek V4 Flash 的本地推理引擎。但它不是那种“给我一个 GGUF 模型文件,我都尽量帮你跑起来”的通用工具。这里先解释下 GGUF 是什么。它是本地大模型生态里常见的一种模型文件格式,很多开源模型都会被转换成 .gguf 文件,方便在本地加载、量化和推理。而 GGUF runner,就是读取 .gguf 模型文件,并把模型跑起来的运行器,llama.cpp 就是这类工具的代表。

ds4 在 README 里特别强调自己不是通用 GGUF runner,这说明它不打算支持任意 GGUF 模型,只是围绕 DeepSeek V4 Flash 做专用实现:包括模型加载、prompt 渲染、KV 状态管理,以及面向 OpenAI / Anthropic 风格 API 的服务端适配。

图注:ds4 不是一个通用本地推理框架,是针对 DeepSeek V4 Flash 做的专用推理引擎。

表面上看,它是在做“本地跑大模型”;实际上 ds4 有意思的地方在于,它把本地推理往 Agent 工作流这一层推进了一步。

为什么是 DeepSeek V4 Flash

ds4 选择 DeepSeek V4 Flash,不只是因为它是最近的热点。

按照 antirez 在 README 中的说法,DeepSeek V4 Flash 有几个特点:MoE 模型,推理时激活参数更少;thinking 模式相对克制。如果不强行开启 max thinking,它不会对所有问题都生成很长的思考内容,而是随着问题复杂度调整思考长度,这对本地推理很重要,因为 thinking token 本身也会带来计算成本;模型上下文窗口达到 100 万 token;KV Cache 压缩程度较高;在特殊 2-bit 量化下,可以在 128GB RAM 的 MacBook 上运行。

这些特点放在一起,构成了 ds4 选择 DeepSeek V4 Flash 的原因。毕竟,一个模型很大的话,每次都要激活大量参数,本地机器很难承受;如果模型虽然能跑,但每次都生成很长的 thinking 内容,本地使用体验也会变差;如果 KV Cache 占用过高,长上下文和多轮 Agent 工作流也很难持续。

所以,ds4 不是想简单地做个“本地也能跑大模型”,更想实现:特定的模型结构、量化方式和上下文机制结合起来之后,高端个人机器也可以承担一部分原本属于云端推理的工作。

被放弃的通用性

很多本地推理 Agent 项目会追求通用性:支持更多模型、更多格式、更多硬件、更多后端。但 ds4 走的是反方向。

它只支持 DeepSeek V4 Flash GGUF 文件,不支持加载一个任意 GGUF 文件。README 里明确写到,普通 DeepSeek/GGUF 文件不会具备它所期待的 tensor layout、量化组合、元数据和可选的 MTP 状态信息。

这是一种很典型的工程取舍。

通用框架的优势是覆盖面广,生态更大;专用引擎的优势是可以围绕一个模型、一类硬件和一种使用方式做更深的优化。ds4 就是后者:先让一个模型在本地 Agent 场景里尽量跑得完整,并不考虑把所有的模型都接进来。

撇开 Redis 作者的明星光环,这种取舍也解释了为什么它会引起关注。它不是又一个“模型加载器”,只是在试图回答一个更具体的问题:如果我们真的想把本地模型接进 coding agent、tool agent 或长期会话系统里,推理引擎应该长什么样?

Agent 场景下的本地推理难点

以前讨论本地推理,大家最容易只关注几个指标:模型能不能跑、速度多少 token/s、显存或内存占用多少、量化后质量掉了多少。

这些当然重要,但 Agent 场景会把问题变复杂。因为 Agent 客户端通常是无状态的。每次请求,它都会把当前任务、系统提示词、历史消息、工具调用结果重新发给模型。对于普通聊天来说,只是多传一点上下文;但对于 coding agent 来说,初始 prompt 可能就很长,工具调用也会不断扩展上下文。README 里提到,Claude Code 这类客户端初始化可能就会发送 2.5 万 token 左右的大 prompt。

如果每一轮都从头 prefill,成本会非常高。

所以 ds4-server 做了一件很重要的事:它会维护一份可变的后端 KV checkpoint。当前端客户端重复发送更长版本的同一段 prompt 时,服务端可以复用共享前缀,而不是每次都从第一个 token 开始重新处理。

这就是 ds4 项目里很值得关注的 Disk KV Cache

它不只在内存里保存当前会话,还会把有用的前缀写到磁盘。这样即使切换会话,或者重启服务,后续请求也有机会复用之前保存过的 KV 状态。README 中明确地指出:在 DeepSeek V4 Flash 这种压缩 KV Cache 和现代 MacBook 高速 SSD 的条件下,KV Cache 不一定只能待在内存里,它可以成为“磁盘上的一等公民”。

图注:ds4-server 会尝试复用请求中的共享 prompt 前缀;当前会话依赖内存 checkpoint,写入 Disk KV Cache 的前缀则可以在会话切换或服务重启后继续复用。

这个点比“本地跑模型”更有工程含量。因为 Agent 真正消耗资源的地方,不一定只在回答的生成阶段,也在一次又一次长上下文 prefill 里。只要 Agent 还在持续调用工具、读取文件、修改代码、追加历史,KV Cache 复用就会直接影响实际体验。

工具调用和 KV Cache 复用

ds4 另一个细节,是它对工具调用格式做了比较细的处理。

DeepSeek V4 Flash 生成工具调用时,会使用 DSML 文本格式。但 OpenAI / Anthropic 风格的 Agent 客户端,下一轮请求通常不会把原始 DSML 文本原样发回来,只会发送标准化后的 JSON 工具调用对象。

OpenAI / Anthropic 客户端
        ↓
JSON 工具定义 / 工具调用历史
        ↓
ds4-server 转成 DeepSeek 能理解的 DSML 文本
        ↓
DeepSeek V4 Flash 生成 DSML tool call
        ↓
ds4-server 再转回 OpenAI / Anthropic 风格 tool call

这会带来一个问题:如果服务端把这些 JSON 对象重新渲染成 DSML 时,哪怕只和模型原始生成的文本有一点差别,token 前缀就可能对不上,已有的 KV checkpoint 也就不能直接复用。

ds4 的做法是记录 tool id 到原始 DSML block 的映射。下一轮客户端带着这个 tool id 回来时,服务端优先复现模型当时生成过的原始 DSML,而不是重新格式化一份“看起来等价”的文本。必要时,它再退回到一套确定性的格式重建流程。

这类细节很容易被忽略,但它恰恰说明了 Agent 推理服务和普通聊天服务的区别。普通聊天里,协议适配大多是输入输出格式的问题;Agent 工作流里,协议格式会进一步影响上下文复用、工具调用稳定性和服务恢复能力。

换句话说,推理引擎不再只是负责“把 token 算出来”,还要理解上层工作流对状态一致性的要求。

一套端到端的本地推理系统

ds4 README 里有一句话很能概括它的目标:本地推理不只要一个 engine,还要三件事一起工作:带 HTTP API 的推理引擎、按照 ds4 执行路径专门制作的 GGUF 文件,以及面向 coding agent 的测试和验证

这其实也是 ds4 和很多本地模型项目的区别。

它把重点从“模型文件 + 命令行运行”,继续推进到更接近实际工作流的几个环节:

  • 支持 OpenAI 风格的 /v1/chat/completions

  • 支持 Anthropic 风格的 /v1/messages

  • 处理 streaming、thinking、tool calls;

  • 为 OpenCode、Pi、Claude Code 这类 Agent 客户端提供接入示例;

  • 围绕长上下文和工具调用做 KV Cache 复用。

README 中列出的 server endpoint 包括 /v1/models/v1/chat/completions/v1/completions/v1/messages,并说明 /v1/chat/completions 会把工具 schema 渲染成 DeepSeek 的 DSML tool format,生成后的 DSML tool call 也会映射回 OpenAI tool call。

ds4 的性能

ds4 README 也给出了一组性能数据。

在 MacBook Pro M3 Max 128GB 上,q2 量化短 prompt 的 prefill 是 58.52 t/s,生成速度是 26.68 t/s;在 Mac Studio M3 Ultra 512GB 上,q4 量化短 prompt 的 prefill 是 78.95 t/s,生成速度是 35.50 t/s。

需要注意的是,这些是 antirez 给出的单次 Metal CLI 测试结果,配置是 --ctx 32768--nothink、greedy decoding、-n 256,不能简单泛化成所有场景下的稳定性能。

当然 ds4 真正有意思的地方,并不是某一项 token/s 数字,在于它把性能问题放回到了完整工作流里看:prefill、生成速度、KV Cache、工具调用、服务重启、客户端协议,这些都会影响本地 Agent 的实际可用性。

但它还不是一个成熟产品

这一点也需要说清楚。

ds4 目前仍然是 alpha 状态。项目文档明确提醒,代码和 GGUF 文件都应该被视为 alpha quality,因为推理和 serving 本身很复杂,而项目存在时间还很短,要达到更稳定的形态还需要时间。

它的硬件门槛也不低。README 中给出的模型下载建议是:128GB RAM 机器使用 q2,256GB 以上机器使用 q4;如果使用完整 100 万 token 上下文,还会额外带来明显内存占用。因此在 128GB 机器上,更现实的配置是 100K 到 300K 上下文。

另外,当前优化图执行路径主要面向 macOS 上的 Metal 和 Linux 上的 CUDA;CPU 路径更多是给正确性检查、模型和 tokenizer 诊断、调试用的,不是面向日常推理的主路径。

总之,它像是一个方向明确的工程实验:在高端个人机器上,把一个足够大的本地模型做成可以被 Agent 使用的端到端系统。从现阶段看,它更适合作为一个观察窗口:本地推理如果继续往 Agent 场景走,会遇到哪些具体问题,又可能形成哪些新的工程取舍。

小小地延伸下

ds4 会火,当然有一些显性原因:antirez 本身有很高的开发者关注度,DeepSeek V4 Flash 又站在开源模型、本地推理、长上下文和 Agent 的交汇处。

但只把它理解成“名人开源 + DeepSeek 热度”,还是有点浅了。它真正踩中的,是开发者对本地 Agent 的一个长期期待:当模型能力和个人硬件都继续往前走,本地推理能不能不只是试玩,还成为一套可工作的基础设施?

这种关注也已经开始外溢到周边项目。比如 Armin Ronacher 的 pi-ds4,就是一个用于把 antirez/ds4 作为本地 DeepSeek V4 Flash 模型接入 Pi 的 provider extension。它会注册 ds4/deepseek-v4-flash 模型,按需启动 ds4-server,并维护运行状态,目标是观察本地模型在实际 UX 和行为上的表现。

这说明社区不是只在围观“能不能跑”,也在尝试把它接进真实的 Agent 使用流程。

小结

ds4 的意义不在于证明“本地模型可以替代云端模型”。它更像是把本地推理的问题往前推了一步:当模型开始接入工具、处理长上下文、服务 coding agent,并在多轮任务里持续运行时,推理引擎要解决的就不只是生成速度,还包括状态管理、缓存机制、协议适配、工具调用,以及任务中断后的恢复能力。

所以,ds4 值得关注的地方,是它把一个更具体的工程问题摆到了台面上:本地 Agent 推理,也许需要一套不同于普通聊天模型的工程系统。

相关文章
|
25天前
|
人工智能 前端开发 测试技术
AI Coding Agent 如何工程化:从上下文污染到多 Agent 分工
复杂任务不仅需要会写代码 Agent,更需要能够负责派活、整理结果与汇报 Manager Agent~
278 1
AI Coding Agent 如何工程化:从上下文污染到多 Agent 分工
|
1月前
|
数据采集 自然语言处理 算法
可计算元认知文本分析:肿瘤生物物理学语义基线的构建与边界信号检测
本研究首次为肿瘤生物物理学提供可计算的语义基线,揭示该学科围绕力学信号与细胞行为的核心知识结构,并量化了力学/黏附/成像阈值作为学科边界信号。相比传统综述,本工作从“学科如何说话”的元认知视角实现了可复现、可扩展、跨层次对齐的计量基准,为肿瘤生物物理学在精准医学、组织工程及材料科学中的跨学科协作提供了方法学支撑。
|
20天前
|
人工智能 JavaScript API
实战分享:生产级AI Agents 7天内上线完成网站主页/域名/Agent Workflow/ 部署和出海打榜
实战分享: 从0到1的一周时间上线生产级AI Agent:Craftsman-Agent(一句话生成3D组装方案,支持乐高/Minecraft/特斯拉车衣设计)和CoachOwl(AI协同日程编排工具,支持目标管理、多Agent协作与自动任务调度),打榜均上线Product Hunt,技术栈涵盖Gemini/Qwen、FastAPI、3D渲染API及DeepNLP OneKey Gateway,部署于AI Agent A2Z 平台*.aiagenta2z.com,获得部署托管网站和子域名。
|
18天前
|
人工智能 安全 搜索推荐
我用 PAI/Codex 理解 Harness Engineering:Agent 工作环境到底怎么搭
从工程师视角出发,带你过一遍 Harness Engineering
165 2
 我用 PAI/Codex 理解 Harness Engineering:Agent 工作环境到底怎么搭
|
1月前
|
人工智能 安全 API
Claude Cowork 支持第三方模型接入 开放而不开源
Claude Cowork 正式支持第三方推理平台接入(如Bedrock、Vertex AI、Azure Foundry及兼容/v1/messages的LLM网关),实现工具层与模型层解耦。用户可自由配置国产模型(如Qwen、GLM、DeepSeek等),降低使用门槛与成本,同时保留桌面端Agent工作流、MCP、插件及本地文件访问等核心体验——开放接口,不开放入口。
1538 7
Claude Cowork 支持第三方模型接入 开放而不开源
|
16天前
|
人工智能 自然语言处理 文字识别
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
Qwen3.7-Max是阿里云百炼面向智能体时代推出的新一代旗舰模型,对标GPT-5.5、Claude Opus 4.7等闭源旗舰。该模型支持百万级token上下文窗口,具备顶级推理能力、多模态搜索与视觉理解增强、流式输出低延迟响应等核心优势,覆盖编程、办公、长周期自主执行等复杂场景。同时支持OpenAI接口兼容,便于系统快速迁移。用户可通过Token Plan团队或节省计划等订阅方式灵活调用,适合企业级高要求场景使用。
5994 30
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
|
27天前
|
人工智能 前端开发 数据可视化
HTML is the new Markdown:来自 Claude Code 团队的实践
AI Agent兴起后,Markdown因简洁易编辑成为默认输出格式。但Anthropic工程师Thariq提出:HTML正成为“新Markdown”——它通过CSS、交互元素、图表与响应式布局,显著提升信息密度与可读性,更适合PR评审、设计原型、技术报告等复杂场景。业界共识渐明:Markdown适合作为AI与开发者的轻量底稿,HTML则担当面向人类的展示与协作层。
372 3
HTML is the new Markdown:来自 Claude Code 团队的实践
|
13天前
|
PyTorch API 调度
在 AMD ROCm DSW 上跑通 DeepSeek-V4-Flash:vLLM 兼容部署、长上下文验证与 8K 性能扫参
本文记录一次在 ModelScope DSW AMD GPU/ROCm 环境中部署 DeepSeek-V4-Flash 的工程实践:通过 vLLM、ROCm/AITER/PyTorch fallback 与兼容补丁建立可复现 baseline,并用短问答、2K/8K/32K needle retrieval 和 8K top-k 扫参验证正确性与性能边界。
358 1
在 AMD ROCm DSW 上跑通 DeepSeek-V4-Flash:vLLM 兼容部署、长上下文验证与 8K 性能扫参
|
2月前
|
人工智能 测试技术 Apache
Gemma 4 开源发布: Google 迄今最强开放模型,主打推理与 Agent 能力
Google正式开源Gemma 4系列(Apache 2.0许可),含E2B/E4B(端侧多模态)、26B MoE与31B Dense四款模型。参数效率卓越:31B位列开放模型榜第3,26B第6;边缘模型支持128K上下文、原生音视频处理,单卡/手机均可高效运行。
1277 12
Gemma 4 开源发布: Google 迄今最强开放模型,主打推理与 Agent 能力

热门文章

最新文章