DeepSeek Harness 工具怎么注册?DSH plugin 的 ToolDefinition 与执行流水线

概念与架构发布于 2026-10-03作者: DeepSeek Plugin 插件市场
DeepSeek HarnessDSH plugin工具调用ToolDefinition运行原理
DeepSeek Harness 里一个工具就是一份 ToolDefinition:schema 加执行函数,output 必须声明;参数与输出用同一套 JSON 值 schema 描述,执行则走 waterfall 事件流水线并受 ToolRestriction 实时过滤。

DeepSeek Harness 里一个已注册工具就是一份 ToolDefinition:一份 schema 加一个执行函数,其中 output 声明是必填的;参数与输出用同一套 JSON 值 schema 描述(来源)。 工具是模型与外界之间的桥:模型自己不能读写文件、不能访问网络,它只能「请求调用工具」,真正干活的是注册进系统的那份执行函数。这篇讲工具怎么注册、怎么被模型看见、怎么跑;内置工具清单见《DeepSeek Harness 内置工具有哪些》,自己写一个工具见《怎么开发一个工具插件》,工具在链路里的位置见《DeepSeek Harness 一轮对话怎么跑》。

为什么工具是模型与外界之间的桥

模型只能生成文本,它无法直接触碰文件系统、网络或任何外部资源——所有对外动作都必须经由工具完成,这也是工具机制存在的根本原因(来源)。 这条边界一旦想清楚,几件事就顺了:

  1. 工具决定「能做什么」:模型能读到多少能力说明,取决于有哪些工具被注册进当前环境;没注册的能力,模型连「想」都无从想起。
  2. 工具是权限的落点:因为真正的执行发生在工具里,所以「某个动作会不会动你的文件」要看工具本身与它受到的约束,而不是看模型说了什么。
  3. 工具是插件能力的主要出口:一个 DSH plugin 想让模型获得新本事,最常见的方式就是注册一个工具;这也是「一切皆插件」最直观的体现。

所以理解工具机制,等于理解「模型能做多少事、这些事由谁执行、又受什么限制」这三个问题的答案。

一个工具是什么:schema 加执行函数

DeepSeek Harness 里一个已注册的工具就是一份 ToolDefinition——一份 schema 加一个执行函数,output 声明为必填,执行函数只在被接受的调用上运行并返回规范值(来源)。 三个要点:

  1. schema 定义边界:描述工具接受哪些参数、返回什么,是模型能看到的那部分;模型据此判断「该用哪个工具、要传什么」。
  2. output 必填:返回值必须有明确的规范声明,执行结果据此校验,模型拿到的内容因此是可预期的。
  3. 执行函数负责干活:拿到已冻结的参数快照后运行,返回符合 output 声明的值;它不与模型直接对话,只按约定收参数、给结果。

注册是一项同进程内的受信约定:注册表校验 schema 与语义要求,再让执行与展示共享同一份已解析定义。自己写工具的做法见《怎么开发一个工具插件》。

参数与输出共用一套 schema

DeepSeek Harness 用同一套 JSON 值 schema DSL 描述工具的参数和输出,作者用一套词汇声明类型,编译时再转成受支持的原始 JSON Schema 子集(来源)。 这样设计的好处:

  1. 声明一致:参数与输出不做两套词汇,减少两头写法不一致带来的问题。
  2. 支持常见类型:string、number、integer、boolean、null、array、object,以及要求恰好命中一个分支的 oneOf;覆盖了绝大多数工具的形状。
  3. 默认开放、受控收紧:原始 JSON Schema 默认保持开放,不支持的关键字会被拒绝,而不是放进来却不强制执行——宁可提前报错,也不留下「声明了却没生效」的隐患。
  4. 作者侧类型推导:因为是一套受控词汇,写声明时配合工具作者侧的类型推导,能更早发现参数与输出的写法问题。

工具是怎么被模型看见的:schema 投影进提示词

模型之所以「知道」有哪些工具,是因为工具的 schema 被投影进了每轮的系统提示词前缀——模型读到的工具说明,正是从注册表投影出来的那一份(来源)。 这条连线解释了三个现象:

  1. 注册即可见:工具一旦注册成功,其 schema 就参与前缀组装,模型在后续轮次里便能看到它。
  2. 工具越多,前缀越长:每多一个工具,就多一段说明要写进前缀,这也是上下文开销的一个主要来源;相关机制见《DeepSeek Harness 系统提示词怎么来的》。
  3. 改了 schema 就改了模型的行为依据:调整参数说明或描述,会直接影响模型「什么时候用、怎么用」这个工具,而不只是文档意义上的变化。

执行流水线:waterfall 让执行可环绕

工具执行走一条可扩展的 waterfall 事件流水线并施加单调策略,各环节按瀑布式语义依次处理(来源)。 为什么用 waterfall、而不是直接调函数:

  1. 执行可环绕:在真正的执行函数前后都留有环节,插件可以在不改工具本身的前提下介入,比如包装执行、记录、施加额外约束。
  2. 单调策略保证不放松:流水线上施加的策略按单调方向收紧——下游环节可以加限制,但不会把上游已定的约束撤销,因此约束只会越来越严,不会互相抵消。
  3. ctx.tools 是服务入口:注册、schema 投影与分派执行都通过这个入口暴露,DSH plugin 借此参与工具生命周期,而不是去改内核。

作用域过滤:ToolRestriction 怎么收窄可见范围

在 DeepSeek Harness 里,ToolRestriction 是某个作用域对其继承来的工具施加的实时过滤器:它按名称收窄当前作用域可见的工具集合,多个限制取交集,而该作用域自身的注册不受影响(来源)。 三点值得记住:

  1. 只作用于继承来的工具:它筛的是「从上层继承下来的可见集合」,不惩罚自己在当前作用域里注册的工具。
  2. 多个限制取交集:叠加的限制只会让范围更窄,不会互相放宽,与流水线的单调策略是同一个思路。
  3. 子作用域因此各有视野:被委派的子 agent 可以在更窄的工具集里工作,同时仍保留它回报结果所依赖的那些工具——这正是限制「自身注册不受约束」的意义。

理解工具流水线的注意事项

把工具当成「schema + 执行函数 + 环绕流水线」三件事,就不容易混。

  1. 模型只看到 schema:说明与参数是模型可见的部分,执行细节不暴露给协议。
  2. output 不能省:返回值必须规范声明,否则结果无从校验。
  3. 注册是一种受信约定:同进程内的注册表会校验 schema 与语义要求,别指望系统替你兜住不合规的定义。
  4. 执行可被环绕:waterfall 设计上留出了介入点,方便插件协作,也意味着约束可被下游收紧。
  5. 可见范围可按作用域收窄:ToolRestriction 决定某作用域能看到哪些继承工具,多个限制取交集。
  6. 工具越多前缀越长:注册工具同时增加能力与上下文开销,两者要一起权衡。
  7. 内置清单看实操文:有哪些现成工具见《DeepSeek Harness 内置工具有哪些》;工具在链路中的位置见《DeepSeek Harness 一轮对话怎么跑》。

来源:DeepSeek Harness 官方文档 - 工具子系统、官方文档 - 核心子系统。

常见问题

DeepSeek Harness 里一个工具到底是什么,由哪两部分组成?

**DeepSeek Harness 里一个已注册的工具就是一份 ToolDefinition:一份 schema 加一个执行函数,其中 output 声明是必填的。** schema 描述这个工具接受什么参数、返回什么值,执行函数负责真正干活;两者一起注册后,模型才能看到并调用它。

为什么 DeepSeek Harness 的工具必须声明 output?

**DeepSeek Harness 要求工具必须声明 output,是为了让返回值有明确的规范类型。** 有了 output schema,执行结果会被校验成规范值,模型拿到的内容因此是可预期的;这也让工具的作者侧类型推导成为可能。

DeepSeek Harness 用什么描述工具的参数和输出?

**DeepSeek Harness 用同一套 JSON 值 schema DSL 描述工具的参数和输出。** 作者用一套词汇声明 string、number、object、array 等类型,编译时再转成受支持的原始 JSON Schema 子集;参数与输出共用一套声明,减少了不一致。

DeepSeek Harness 的工具执行流水线是怎样的?

**DeepSeek Harness 的工具执行走一条可扩展的 waterfall 事件流水线,并在分派前后施加单调策略。** 调用会经过一系列可介入的环节,各环节按瀑布式语义依次处理;这样插件可以在不改工具本身的前提下,环绕式地影响执行过程。

ToolRestriction 在 DeepSeek Harness 里是做什么用的?

**在 DeepSeek Harness 里,ToolRestriction 是某个作用域对其继承来的工具施加的实时过滤器。** 它可以按名称收窄当前作用域可见的工具集合,多个限制取交集,而该作用域自身的注册不受影响;这让不同作用域能看到不同的工具范围。

相关术语

ToolDefinition
ToolDefinition 是 DeepSeek Harness 中一个已注册工具的定义:包含 schema、必填的 output 声明与执行函数,是工具进入系统的统一形态。— DeepSeek Harness 官方文档 - 工具子系统
JSON 值 schema DSL
JSON 值 schema DSL 是 DeepSeek Harness 中作者侧的统一 schema 词汇,用同一套声明同时描述工具参数与输出值,再编译为受支持的原始 JSON Schema 子集。— DeepSeek Harness 官方文档 - 工具子系统
ToolRestriction
ToolRestriction 是 DeepSeek Harness 中作用域级、对继承工具生效的实时过滤器,多个限制取交集,作用域自身注册的工具不受其约束。— DeepSeek Harness 官方文档 - 工具子系统
ctx.tools
ctx.tools 是 DeepSeek Harness 暴露的工具运行时服务入口,负责工具的注册、schema 投影与分派执行。— DeepSeek Harness 官方文档 - 工具子系统

来源