系统如何被组合起来

一张图理解 DSH 架构

从 Profile、Bundle、Cordis 插件树到 Agent Loop 与 Session log,建立最小但准确的架构地图。

官方事实适用 0.1.0-rc.512 分钟核验于 2026-08-14

DeepSeek Harness 不是一个固定的“内核 + 外挂插件”程序。连 Agent Loop 本身也由插件贡献,最终运行时是多层配置合并后形成的 Cordis 插件树。

Profile
  └─ Bundles + Patch layers
       └─ Cordis plugin tree
            ├─ Model adapters
            ├─ Tools and capability providers
            ├─ Agent + Agent Loop
            ├─ Session event log
            ├─ Permissions / sandbox
            └─ Web or Headless surface

组合入口:Profile

Profile 是一个具名的可运行组合,例如官方内置的 webheadless。它决定加载哪些 Bundle、额外插件和 Patch。

使用下面的命令查看本机最终组合,而不是只猜默认值:

dsh --profile web --dump-config

该命令不会启动应用。

执行入口:Agent Loop

Agent Loop 从 Session log 读取上下文,请求模型,解析工具调用,执行工具,再把结果写回 Session。一个 Step 是一次模型请求及其中的工具调用;一个 Turn 可以包含零个或多个 Step。

事实来源:Session log

Session log 是模型历史、恢复、fork、回放、持久化和 UI 的事实来源。新增任何“模型可见”的输入时,都应保证它能从日志重建,否则恢复后的行为会与原会话漂移。

可替换能力:三角色 seam

官方推荐把可替换能力拆成:

  • Service Definition:定义接口和上下文属性;
  • Service Provider:提供一种具体实现;
  • Consumer:依赖并使用该服务。

这让本地 Bash、远程 Sandbox、不同文件系统策略或不同模型适配器可以在同一个调用面下替换。

预发布边界

Event、Session 格式和包边界仍可能变化。不要把当前内部结构当作长期稳定 API;插件应绑定兼容版本并保留迁移说明。

证据与修订

一手来源

本页叙事经过压缩;命令、行为与风险边界以以下官方源码或文档为准。