---
标题: 官方架构文档——为什么说 dsh 没有「不可动的内核」
类型: 官方文档
来源平台: GitHub
原始链接: https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/architecture.md
发布日期: 2026-08-13
热度: star 149,856（主仓库，采集于 2026-08-18）
语言: 英文（有官方中文版 architecture.zh.md）
作者: deepseek-ai
---

## 中文摘要
架构文档把「一切皆插件」讲透了：dsh 没有特权内核，模型适配器、工具注册表、会话日志、agent 循环全是插件，都能通过配置替换。运行中的 dsh 是启动时按层组合出来的一棵「插件树」：**profile**（配置档案，如 web / headless）决定叠哪些 **bundle**（插件组合包），用户还能用 patch 文件覆盖任意一行配置——想换掉官方某个组件，写个补丁指向自己的插件即可，不用改源码。文档还定义了「seam」（能力接缝）概念：文件系统、子进程等能力走统一接口，换一个 provider（提供方）整个产品跟着变，比如指向远程沙箱后，Bash、终端、LSP 全部搬过去。对插件作者最有用的是文末那张「新行为挂在哪」的对照表：加模型、加工具、加命令、加 UI……每件事对应一个注册点。

## 原文要点/摘录
- "There is no privileged core to patch: you extend dsh by mounting a plugin beside the others."（没有需要修改的特权内核：扩展 dsh 就是在其他插件旁边挂一个自己的插件）
- 插件卸载时注册自动回滚（reversible effects），不留残留
- 分层组合：bundle 按序叠加 → profile 的 cordis.patch.yml → 用户主目录补丁 → `--patch` 命令行覆盖；`dsh --profile web --dump-config` 可打印实际启动的插件树，任何一行都可被替换
- 核心包：core/session（会话日志）、core/tools（工具注册）、core/agent-loop（默认循环）、llm/llm（模型适配接缝）等
- 扩展点即事件：session 事件（持久）、agent/* 事件（拦截运行中的请求）、能力事件（fs/*、tools/*）
- "Model-visible means logged."——凡是进入模型请求的内容都必须能从会话日志重建（可回放、可审计）
- 扩展对照表：加模型 provider → 注册到 ctx.llm；加工具 → ctx.tools；加人类命令 → ctx.commands；加 UI → 驱动 ctx.agents……共 18 行

## 素材价值点
1. 给读者解释「为什么 dsh 的插件生态爆发这么快」的技术底座：官方把每个部件都留了替换口
2. 「换一个 provider，整个产品跟着变」适合做金句/类比（换积木底板而不是拆房子）
3. 扩展对照表可改写成文章里的「你想做什么插件 → 挂哪」速查表

## 配图
无（文档为纯文字+代码块，可自制插件树/分层示意图）
