DeepSeek Harness 蓝皮书
用户指南

Agent Preset

用 agent preset 按会话组装 agent:一份 agent.cordis.yml 决定该会话的 persona、工具、提示词段落与技能

agent preset 是一个目录,其中放置一份 agent.cordis.yml。把它挂载到某个 agent(智能体)的 scope 上下文之下,该会话就获得自己的工具与提示词段落,而其他正在运行的会话各自保持不变——因此一个进程可以同时运行多个组装方式不同的 agent。

一份组合长什么样

agent.cordis.yml 是一份顶层插件行列表,与宿主组合使用相同的 Loader 方言(包括 !!js)。它承载的是单个 agent 对全局注册表的贡献:工具、提示词段落、变量、限制,以及 persona(人设)行。注册表与跨会话设施仍是进程单例,留在宿主组合中;preset 只负责"这一个会话"的组装。

preset 可以携带 preset.yml 提供展示文本,但仅此而已:

name: 极简模式
description: 仅提供持久 bash 与 str_replace_editor 的双工具编码 Agent。

id 是目录名,trust 来自发现它的根目录,两者都不能在这里写入。展示元数据不是能力:name 损坏的 preset 仍然可以挂载。

preset 存在哪里

部署随附的 preset 位于已安装应用的配置目录 apps/cli/config/agent-presets/,一个 preset 一个目录。用户自己的 preset 放在 <dshHome>/.agent-presets(默认 $DSH_HOME/.agent-presets~/.dsh/.agent-presets)下,作为 user 信任根被自动发现。发现不缓存:进程运行期间新建的 preset 立即可见,删除的也会在下一次读取时消失。

随附的 minimal(极简模式)preset 固定系统提示词为 You are a helpful software engineer assistant.,只组合持久 bashstr_replace_editor 两个工具,其余提示词段落与面向模型的插件一概不出现。

选择与切换

新建 Web 会话时可选择 preset;未指定时使用默认 preset。默认值是用户设置,由 agent-presets 命名空间下的 default 字段决定:

agent-presets:
  default: minimal

该值在每次解析时读取,热重载的设置在下一个会话创建时生效,而每个正在运行的会话仍保持它被组装时所依据的 preset。清除该字段会重新继承组合层的默认值。

只能在空白会话切换

一个会话一旦产出过任何内容,就不能再切换 preset:中途换工具集会让日志中已有的工具调用无法被新组合执行。切换只对尚未产出的空白会话开放。

创作:复制,而非手写

创作只支持"复制"。新建 preset 是对一个已有 preset 的整目录复制(组合、元数据、技能目录、资源),落到第一个 user 根目录下;复制只接收两个 id 与可选显示名,绝不接收组合文本。复制前会拒绝三件事:

  • 不是合法 preset id 的 id——id 会成为目录名,只接受 [a-z0-9][a-z0-9-]*../escapea/b、绝对路径都会被拒绝;
  • 已被占用的 id——复制永不覆盖;
  • 不存在的源——失败时回滚半成品目录。

复制出的 preset.yml 会保留源的 description 供你就地编辑,但丢弃其 name 与排序 order,以免副本与源在清单中无法区分。

preset 中的行如何解析

  • 行里的包名从宿主组合解析,而非从 preset 目录解析——本地 preset 位于用户 home 下,Node 向上查找 node_modules 永远到不了 harness,因此挂载会把宿主 base 记录下来并把裸 specifier 送过去;
  • 相对路径仍从 preset 自己的目录解析,所以 preset 自带的插件文件与技能目录随它一起移动;
  • 绝对路径保持原位,挂载时转换为 file: URL 再交给 ESM import。

挂载会拒绝什么

  • 无 scope 的目标:在没有 agent scope 的上下文里挂载,会把 preset 的工具注册成全局、对所有 agent 可见;
  • 永远无法就绪的行:等待一个组合永不提供的服务的行会被审计点名;
  • 向根领域发布服务的行:这类服务是进程级的,两个 preset 发布同名服务会冲突。preset 若确实拥有某服务,应放到 isolate 领域,或把服务上移到宿主组合。

信任边界

preset 就是组合,因此一个 preset 的权限等同于它点名加载的插件。user preset 与人手 shell 访问同级;trust 字段只是为了让消费方展示这一差异,而非强制执行。

下一步

本页目录