首页 > 教程 > DeepSeek Harness 教程 > DeepSeek Harness 服务隔离与作用域
DeepSeek Harness 教程

DeepSeek Harness 服务隔离与作用域

第 21 / 35 节 2026-11-07

服务隔离:isolate

同一个服务,怎样让不同插件组看到不同实例?靠 Cordis 的服务隔离(service isolation):cordis.yml 中的 isolate 配置配合 group 插件把插件分组,让同一服务按组独立实例化:

# 文件:scratch-plugin/cordis.yml
- id: group-a
  name: '@deepseek-ai/cordis-plugin-group'
  group: true
  isolate:
    shell: true            # 本组内的 shell 服务独立实例化
  config:
    - name: '@deepseek-ai/dsh-bash-local'
      config:
        timeoutMs: 5000    # group-a 的 Bash 超时 5 秒
    - name: './src/plugin-a.ts'

- id: group-b
  name: '@deepseek-ai/cordis-plugin-group'
  group: true
  isolate:
    shell: true
  config:
    - name: '@deepseek-ai/dsh-bash-local'
      config:
        timeoutMs: 60000   # group-b 的 Bash 超时 60 秒
    - name: './src/plugin-b.ts'

两个插件各自看到本组的 Bash 实例,一边超时 5 秒、一边 60 秒,互不影响。隔离的意义在于:不同任务对同一能力的需求可能完全不同——快速交互要短超时,长任务要给足时间,隔离让服务按组配置、按组生效,而非全局一刀切。

作用域:scope

scope 是按 agent(智能体)划分的注册单位,只有两层、扁平结构。一项贡献(工具、提示词段、变量、限制、监听器)要么是全局的,要么恰好归属于一个 scope key——一个活跃 agent 就是其自身 scope 的不透明标识。相关概念:

  • agent.ctx:agent 的带作用域上下文,注册具有 scope 可见性,生命周期绑定该 scope。
  • shadowing:最具体者胜出,带作用域的工具/片段/变量仅在自身 scope 内替换全局同名项。
  • restriction:tools.restrict 为单个 scope 过滤全局工具集合,多个 restriction 取交集。
  • lineage:以数据形式携带的父子关系事实(parentSession、delegationDepth 等),从不影响可见性。

注意:带作用域的注册不会向下继承给 subagent,子树行为通过 lineage 数据表达,而不是通过 scope 结构。

shadowing 与 restriction

shadowing 用于按 agent 定制 persona 与工具变体:带作用域的工具只在该 scope 内替换同名全局工具,其他 agent 仍看到全局版本。restriction 则让被过滤的全局工具既不进入提示词、也拒绝执行,与不存在的工具无法区分——agent 彻底「看不见」这些工具,而不是调用时才被拒绝。

小结自测

isolate 让同一服务按组实例化,scope 按 agent 划分注册,shadowing 与 restriction 分别实现同名替换与全局过滤。自测:isolate: { shell: true } 让两组的 Bash 实例是什么关系?带作用域的注册会不会继承给 subagent?shadowing 与 restriction 各解决什么问题?

©️版权声明:
本网站(https://aigc.izzi.cn)刊载的所有内容,包括文字、图片、音频、视频等均在网上搜集。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。除此以外,将本网站任何内容或服务用于其他用途时,须征得本网站及相关权利人的书面许可,并支付报酬。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,予以删除。

继续学习其他教程