🐳 DeepSeek Harness 技术架构原理 · 目录

🐳 DeepSeek Harness 技术架构原理

照着《DeepSeek Harness 技术入门与架构原理》做的自学笔记 —— 前面那门 Agent+RPA实战 讲的是【把 AI 接进真实工作流】,这一课往下钻一层,讲Agent 软件本身应该怎么组织。全书 导读 + 8 章 + 2 附录 共 95 篇:为什么现在需要 Harness、Harness 不只是另一个 Coding Agent、从零开始运行 DSH、一切皆插件意味着什么、从 Skill / Tool 到 Hook、Cordis 让插件能够动态组合、Agent 一轮工作的全过程、从 Tool Call 到 Agent Runtime、设计自己的 Harness,最后是术语与快速演进两个附录——把 DSH 那句等式 Model + Harness = Agent 拆开,讲中间那一层的每一块怎么做成可自由装卸的插件。这是混合课:概念篇的 Demo 是沙箱里真跑过的 Python 小脚本,动手实验篇(第 2、4、5、7、8 章)则真的把 DSH 装起来跑(npx @deepseek-ai/dsh,实测 0.2.0-rc.2),复现只需一台装了 Node.js 的电脑,不需要服务器。DSH 处于 developer preview(主版本号 0),凡与教材写法不同处,各篇都用【⚠️ 2026 现状】单列。大白话、不跳步骤、必带生活比喻、常见误区、可折叠自测题。
前置课程:Agent+RPA实战(把 AI 接进工作流)、编程原理(程序怎么组织)、云计算(基础设施怎么被抽象成服务)。

内容来自我的 Obsidian 自学笔记 · 全 10 个部分 95 篇完结 ✅

导读 为什么现在需要Harness

第一章 Harness不只是另一个Coding Agent

第二章 从零开始运行DSH

第三章 一切皆插件意味着什么

第四章 从Skill、Tool到Hook

第五章 Cordis让插件能够动态组合

第六章 Agent一轮工作的全过程

6.1

Agent Loop 不是黑盒

从消息进来到回复出去,中间的每个站位都点…

⭐⭐阅读全文 →
6.2

Turn 与 Step:一轮工作可以包含多次模型推进

Turn 是用户消息到最终回复的一整轮…

⭐⭐阅读全文 →
6.3

Tool Call 要经过统一执行管线

一轮里模型可能调多次工具,每次都从同一道…

⭐⭐阅读全文 →
6.4

Session 不是简单的消息数组

实测 session 系列包有 14 件…

⭐⭐⭐阅读全文 →
6.5

模型看见的内容应当可追溯

会话流水至少记四类事件(用户消息/ass…

⭐⭐阅读全文 →
6.6.1

持久会话事件与实时 Agent 能力事件:记录事实和支持干预

同一轮工作,事件分两路:持久会话事件(落…

⭐⭐⭐阅读全文 →
6.6.2

为什么还要保留 assistant/chunk

chunk 是流式输出的一小段;逐段保留…

⭐⭐阅读全文 →
6.6.3

Projection:同一组事实可以生成不同视图

事实只有一份(JSONL 流水),视图随…

⭐⭐⭐阅读全文 →
6.6.4

上下文压缩也必须保持可解释

实测 compaction 分组三件包…

⭐⭐⭐阅读全文 →
6.7

稳定的请求前缀与 KV Cache

模型推理有前缀缓存:请求开头完全一样就命…

⭐⭐⭐阅读全文 →
6.8.1

重建一次模型请求,至少需要哪些材料

六样材料:系统提示、人格指令、事件流水…

⭐⭐阅读全文 →
6.8.2

能回放,不等于结果一定能复现

回放=同样的输入重放;复现=得到同样的输…

⭐⭐阅读全文 →
6.8.3

用 Session 调试 Agent:先找证据,再判断是不是模型问题

三步:SQL 查流水找证据 → 视图定位…

⭐⭐⭐阅读全文 →
6.9

本章小结

一轮工作 = N 次模型推进 + 每次都…

⭐阅读全文 →

第七章 从Tool Call到Agent Runtime

7.1

PTC:让模型用程序编排已有工具

模型不再【调一次看一眼】,而是写一段程序…

⭐⭐阅读全文 →
7.2

PTC 不能绕过安全治理

程序里写的每一次工具调用,照样从统一管线…

⭐⭐⭐阅读全文 →
7.3.1

代码执行能力与具体实现分离

实测 ptc-runtime 的实现包叫…

⭐⭐⭐阅读全文 →
7.3.2

PTC 压缩的是确定性控制流,不是依赖语义理解的决策

PTC 把确定性控制流(顺序、循环、条件…

⭐⭐⭐阅读全文 →
7.3.3

PTC 中的工具调用为什么还要经过统一执行管线

程序里的调用依然要过统一管线——因为管线…

⭐⭐⭐阅读全文 →
7.3.4

动手实验:用同一任务比较 Native Tool Calling 与 PTC 的效果

两次补丁真跑:实验 A 证明顶层补丁下不…

⭐⭐阅读全文 →
7.3.5

PTC 什么时候反而不划算

PTC 省的是往返,不是判断——步骤很少…

⭐⭐⭐阅读全文 →
7.4.1

同一种 Subagent 能力,可以有不同的实现

实测配置里 4 个 provider 用…

⭐⭐⭐阅读全文 →
7.4.2

委派子任务的 3 个问题

派活之前先回答三问:谁来做(provid…

⭐⭐阅读全文 →
7.4.3

委派还要明确任务和返回结果

委派指令必须写清任务与范围,还要写死返回…

⭐⭐阅读全文 →
7.5

Sandbox:决定能力在哪个受控环境中执行

实测沙箱是三处接缝+一条策略:bash-…

⭐⭐⭐阅读全文 →
7.6

持续任务机制:让工作跨越多个 Turn

普通对话一轮就结束;目标+跨轮驱动+后台…

⭐⭐阅读全文 →
7.7

Extensions:让 Agent 可以观察和修改当前 Runtime

tool-cordis 让模型能列出插件…

⭐⭐阅读全文 →
7.8

Creative 为什么属于高信任能力

Creative 只比 Standard…

⭐⭐⭐阅读全文 →
7.9

Runtime 到底多做了什么

把本章的大件横过来看:模型只负责产生下一…

⭐⭐阅读全文 →
7.10

本章小结

十章复盘收成一句:Runtime 的每个…

⭐阅读全文 →

第八章 设计自己的Harness

8.1

从需求出发,而不是从插件列表出发

造 Harness 的第一个动作不是【翻…

⭐⭐阅读全文 →
8.2.1

设计一种新能力时,需要先确定什么

设计一种新能力,先定四件事:能力 id…

⭐⭐阅读全文 →
8.2.2

把可替换点放在正确的层

接缝放错层的后果不是报错,而是静默无效…

⭐⭐⭐阅读全文 →
8.3.1

最终项目:设计一套 Preset

最终项目是设计一套自己的预设——目标一句…

⭐⭐阅读全文 →
8.3.2

第一步:先列任务与权限清单,再写 YAML

写 YAML 之前先写清单——清单是给人…

⭐⭐阅读全文 →
8.3.3

第二步:把 Host 的共享能力与 Reviewer 的会话级组合分开

同一份清单,要按【该活多久】分两堆:跨会…

⭐⭐⭐阅读全文 →
8.3.4

第三步:只向模型暴露审查真正需要的工具

Standard 的 19 件里,审查预…

⭐⭐阅读全文 →
8.3.5

第四步:规定审查结果的输出格式

不写格式,模型每次给的报告都长得不一样…

⭐⭐阅读全文 →
8.3.6

第五步:用失败路径验证 Preset,而不只测试正常情况

正常情况只能证明【能跑】,失败路径才证明…

⭐⭐⭐阅读全文 →
8.4

不要把 Preset 当成权限系统

预设能决定装哪些件,决定不了能踩多大范围…

⭐⭐⭐阅读全文 →
8.5

插件生态越强,边界越重要

件越多,越需要一套【谁能在哪一层动什么】…

⭐⭐阅读全文 →
8.6

模型表现与 Agent 整体表现必须分开

一个分数是模型与 Harness 一起跑…

⭐⭐⭐阅读全文 →
8.7

DSH 最值得学习的不是某个 API

DSH 是主版本 0 的预览软件,接口明…

⭐⭐阅读全文 →
8.8

Harness Lab 的最终架构

把全书拼成一张图:模型在上,宿主与会话两…

⭐⭐阅读全文 →
8.9

本章小结

十章收成一句:造一套自己的 Harnes…

⭐阅读全文 →

附录 核心术语与快速演进