DeepSeek 开源昇腾版 TileLang:一份写给非底层读者的阅读指南
DeepSeek 开源昇腾版 TileLang:一份写给非底层读者的阅读指南
2026 年 9 月 30 日,DeepSeek 官宣开源一批面向华为昇腾算力平台的基础设施组件:TileLang 高级语言编译器、计算库、分布式通信库,共六个组件,与它此前面向英伟达平台开源的那一套「一一对应」。
这条新闻在国内被反复转述为「对标 CUDA」。这个说法方向对、程度夸。本文想做的事只有一件:让没写过 CUDA、也没碰过昇腾的读者,读完之后能自己判断这类新闻里哪句是事实、哪句是厂商自评、哪句是媒体加的戏。
一、30 秒结论
先把答案给出来,后面全是展开。
- 发生了什么:DeepSeek 把自己训练和推理真正在用的那套底层软件,从英伟达平台搬到了华为昇腾平台上,并且开源了。核心是编程语言层(TileLang),外围是六个可直接调用的库。
- 为什么重要:英伟达真正难被替代的不是芯片,是芯片外面那层软件。别人能做出一块算力接近的卡,但做不出「让四百万开发者不用重新学习就能把模型跑起来」的那层东西。这次是模型厂商第一次把自己吃饭的家伙下沉到国产芯片上,性质比「适配一下模型」重得多。
- 哪句要打折:所有性能数字都是厂商自评,没有第三方基准;跑出那些数字用的还是非公开的 PoC 固件;官方没有说 V4 已经在昇腾上完成了全量训练。
- 一句话定位:这不是「国产 CUDA 建成了」,而是「国产芯片的软件生态,第一次有了一个由顶级模型团队亲手填上的、可用的关键零件」。
二、补三个概念:写给不写底层代码的人
要读懂这条新闻,只需要三个概念。它们都有日常类比。
2.1 算子(kernel):AI 芯片的「招式」
大模型跑起来,本质上是无数次的矩阵乘法、加法、数据搬运。每完成一个不能再拆的基本运算单元,就叫一个算子(英文 kernel,直译「内核」,但在中文语境里叫算子更准确)。
类比:如果 AI 芯片是一台厨房设备,算子就是一套固定的刀工——切片、切丝、剁馅。市面上有现成的刀工(框架自带的算子),但顶级厨师遇到特殊食材时,必须自己设计一套新刀法。这套新刀法就是「自定义算子」。
关键点:算子的效率决定了芯片效率。 同一块芯片,算子写得好能跑到理论性能的 99%,写得差可能只有 30%。芯片参数的差距,经常被算子水平的差距盖过去。
2.2 编译器 / DSL:从「人话」到「机器指令」的翻译官
直接对着芯片写指令,等于让人用汇编语言写 App——不是不行,是太慢太痛苦。于是有了编译器:你用一门更接近人话的语言描述「我要做什么」,它负责翻译成芯片能执行的指令,并顺手做优化。
这门「更接近人话的语言」如果只为某个领域服务,就叫 DSL(领域专用语言)。TileLang 就是这类东西,而且是 Python 风格的——这一点很重要,因为后面所有性能优势都来自「写起来像 Python,跑起来像手写汇编」。
2.3 CUDA:英伟达真正的护城河
CUDA 是英伟达的编程语言 + 整套工具链。它之所以是护城河,不是因为语言本身多优美,而是因为:
- 十几年积累的库、调试器、性能分析器、文档;
- 几乎所有 AI 框架都优先支持它;
- 据《纽约时报》估计,全球约 400 万开发者 已经会用它。
换一块卡容易,换掉这 400 万人脑子里的东西很难。这就是为什么「国产芯片」的瓶颈常常不在算力,而在软件。
DeepSeek Harness 解读(四):minimal 真的是最小 Agent 吗?
这是 DSH 系列的最后一篇。我们之前问过:minimal preset 只有两个工具,它是否已经是最小化 Agent?答案是:对模型可见能力来说接近最小,对真实运行时来说并不是。
DSH 的四种 preset 不是四个产品
DSH 当前把 Agent 能力组合成几类 preset:
standard 完整 Coding Agent
ptc TypeScript Code Mode / PTC
minimal persistent bash + str_replace_editor
creator 运行时检查和插件实验
它们不是四个独立程序,而是同一个 Cordis Runtime 上的不同能力组合。
这一区分很重要:preset 决定的是某个 Agent Scope 可以看到和使用哪些能力,而不是重新启动一套完全不同的 Agent 实现。
minimal 为什么看起来很小
DSH 的 minimal 配置对模型暴露的主要能力只有:
1. persistent bash
2. str_replace_editor
同时它关闭或抑制了很多额外上下文:
- 不加载完整 Coding Agent 的复杂工具集;
- 不注入运行时上下文;
- 不使用默认的复杂压缩能力;
- 使用固定、短的系统提示;
- 让 Bash 在多个 step 之间保持状态。
相关实现可以直接看 minimal agent preset 和 minimal runtime 设计记录。
DeepSeek Harness 解读(三):会话、记忆与上下文压缩
这是 DSH 系列的第三篇。很多 Agent 都声称支持“记忆”,但这个词往往同时指会话保存、上下文压缩、跨会话召回和目标续跑。DSH 的有趣之处,是把这些问题明确拆开了。
先把“记忆”拆成五件事
Session Persistence 保存发生过什么
Context History 决定模型当前看到什么
Compaction 压缩当前可见历史
Long-term Memory 跨会话主动召回知识
Goal State Agent 还要继续完成什么
DSH 内置支持前四项中的一部分:它强内置会话事件日志和上下文压缩,Goal 是持久任务状态;真正的语义长期记忆则通过外部 Provider 或 MCP 接入。
1. Session Persistence:日志才是事实来源
DSH 不把 messages[] 当作唯一状态,而是将一次交互保存为 append-only 的类型化事件:
turn/start
user/message
assistant/chunk
assistant/message
tool/call
tool/result
step/end
turn/end
模型的历史消息由这些事件重新派生。这样可以让 UI、Replay、Fork、Telemetry 和恢复逻辑共享同一份事实来源。Session 文档
持久化层通过 ctx.sessionPersistence 抽象出来,目前支持 JSONL 和 SQLite 后端。写入采用批处理和 flush checkpoint;崩溃恢复时,DSH 会识别没有关闭的 turn,并以 interrupted 结束它,而不是粗暴截断日志。Persistence 文档
这是一种“事实优先”的设计:
原始日志尽量完整
模型上下文可以变化
历史投影可以重新计算
2. Compaction:压缩可见表面,不删除原始历史
上下文接近模型窗口时,DSH 不直接删除旧事件,而是选择一段旧的 surface,调用 summarizer 生成摘要,然后追加一个 checkpoint:
DeepSeek Harness 解读(二):内核不是 Agent,而是 Cordis 运行时
上一篇讨论了 DSH 为什么不应该被简单看成“另一个 Codex”。这一篇进入源码架构:DSH 的真正内核不是一个大而全的 Agent 类,而是一套用来组装 Agent 的插件运行时。
先给一个简化模型
Runtime = Profile + Bundle + Patch + Plugin
Agent = Scoped Context + Session + Agent Driver
Turn = LLM Request + Tool Pipeline + Durable Events
DSH 官方文档对自己的描述很直接:模型适配器、工具注册表、会话日志和 Agent Loop 都是插件;没有一个需要被所有扩展修改的 privileged core。DSH Architecture
这里的“没有核心”不是说系统没有基础代码,而是说:基础服务存在,但业务能力没有被绑死在一个不可替换的中心对象里。
Cordis:Context 是服务仓库
Cordis 是 DSH 底层的插件框架。每个插件可以向共享 Context 注册服务:
ctx.llm 模型适配器
ctx.sessions 会话存储
ctx.tools 工具注册表
ctx.systemPrompt Prompt 组装
ctx.fs 文件系统能力
ctx.sandbox 沙箱能力
ctx.agents Agent 注册表
插件不直接依赖具体实现,而是通过 ctx.<key> 找到能力;依赖通过 inject 声明,加载顺序由服务依赖关系决定。插件注册的工具、Prompt、Provider 和事件监听器都会通过 effect 安装,并在插件卸载时撤销。Cordis Primer
DeepSeek Harness 解读(一):它不是另一个 Codex
这是一组关于 DeepSeek Harness(简称 DSH)的源码级解读。第一篇先回答一个很现实的问题:市场上已经有 Codex、Claude Code,为什么还需要 DSH?
先说结论
如果需求是“给我一个现在就能写代码的 Agent”,普通用户没有太多理由选择 DSH。Codex 和 Claude Code 的优势在于完整的产品体验:安装、权限、上下文、编辑、测试、恢复和日常交互都已经被包装好了。
DSH 的合理定位不是“另一个更好用的 Codex”,而是:
一个可编程、可替换、可嵌入、可自托管的 Agent Runtime,同时提供一个 DeepSeek 原生的 Coding Agent。
这两个定位看起来相近,实际上面对的是不同买家。
三种产品不是同一层
可以把 Agent 市场拆成三层:
模型层:DeepSeek / OpenAI / Anthropic / 自建模型
运行时层:DSH / OpenAI Agents SDK / Google ADK / LangGraph / Pi
产品层:Codex / Claude Code / 企业内部 Agent 产品
Codex 和 Claude Code 的核心目标是让用户完成任务。它们当然也在开放 Skills、MCP、SDK 和企业部署能力,但用户不需要先理解运行时内部结构,就可以开始工作。Codex 开发者主页、Claude Code CLI 文档
DSH 的重点则是把运行时本身暴露出来:模型适配器、工具注册表、Session Log、Agent Loop、沙箱和审批都可以通过插件和配置组合。官方架构文档甚至明确写道,产品中的这些部分都属于插件,而不是一个必须修改的特权核心。DSH 架构文档