开源项目观察|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 推理,也许需要一套不同于普通聊天模型的工程系统。

相关文章
|
13天前
|
人工智能 JSON 供应链
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
LucianaiB分享零成本畅用JVS Claw教程(学生认证享7个月使用权),并开源GeoMind项目——将JVS改造为科研与产业地理情报可视化AI助手,支持飞书文档解析、地理编码与腾讯地图可视化,助力产业关系图谱构建。
23495 11
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
|
17天前
|
人工智能 缓存 BI
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro,跑完 Skills —— OA 审批、大屏、报表、部署 5 大实战场景后的真实体验 ![](https://oscimg.oschina.net/oscnet/up608d34aeb6bafc47f
5475 20
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
|
18天前
|
人工智能 JSON BI
DeepSeek V4 来了!超越 Claude Sonnet 4.5,赶紧对接 Claude Code 体验一把
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro 的真实体验与避坑记录 本文记录我将 Claude Code 对接 DeepSeek 最新模型(V4Pro)后的真实体验,测试了 Skills 自动化查询和积木报表 AI 建表两个场景——有惊喜,也踩
6539 16
|
7天前
|
人工智能 缓存 Shell
Claude Code 全攻略:命令大全 + 实战工作流(完整版)
Claude Code 是一款运行在终端环境下的 AI 编码助手,能够直接在项目目录中理解代码结构、编辑文件、执行命令、执行开发计划,并支持持久化记忆、上下文压缩、后台任务、多模型切换等专业能力。对于日常开发、项目维护、快速重构、代码审查等场景,它可以大幅减少手动操作、提升编码效率。本文从常用命令、界面模式、核心指令、记忆机制、图片处理、进阶工作流等维度完整说明,帮助开发者快速上手并稳定使用。
1664 3
|
6天前
|
前端开发 API 内存技术
对比claude code等编程cli工具与deepseek v4的适配情况
DeepSeek V4发布后,多家编程工具因未适配其强制要求的`reasoning_content`字段而报错。本文对比Claude Code、GitHub Copilot、Langcli、OpenCode及DeepSeek-TUI等主流工具的兼容性:Claude Code需按官方方式配置;Langcli表现最佳,开箱即用且无报错;Copilot与OpenCode暂未修复问题;DeepSeek-TUI尚处早期阶段。
1130 3
对比claude code等编程cli工具与deepseek v4的适配情况
|
2天前
|
人工智能 BI 持续交付
Claude Code 深度适配 DeepSeek V4-Pro 实测:全场景通关与真实体验报告
在 AI 编程工具日趋主流的今天,Claude Code 凭借强大的任务执行、工具调用与工程化能力,成为开发者与自动化运维的核心效率工具。但随着原生模型账号稳定性问题频发,寻找一套兼容、稳定、能力在线的替代方案变得尤为重要。DeepSeek V4-Pro 作为新一代高性能大模型,提供了完整兼容 Claude 协议的 API 接口,只需简单配置即可无缝驱动 Claude Code,且在任务执行、工具调用、复杂流程处理上表现极为稳定。
838 0
|
1月前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
27256 65
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)

热门文章

最新文章