第 22 卷
`context/*` 负责"组装每次请求的上下文"(系统提示 + 技能目录 + 对话历史 + 工具 schema)。`compaction/*` 负责"长对话压缩"(检测溢出 → 修剪 → 摘要)。一个是"装什
么",一个是"装不下时怎么压缩"。
**Q5:安全模型里"沙箱"和"交互审批"有什么区别?**
沙箱(`sandbox/*`)隔离命令执行环境(如 pwsh 沙箱有 ACL 约束,限制文件访问)。交互审批(`interaction/*`)是"危险操作前要求用户确认"(如删除文件、执行未知命令)。一
个管"在哪执行",一个管"能不能执行"。
**Q6:我想给 dsh 加一个新工具(比如"查数据库"),应该怎么做?**
两种方式:① 写一个 host 插件,用 `ctx.provide` 注册工具服务(参考第 3 章 3.4 节扩展点);② 用 MCP 接入外部工具服务器(第 9 章 9.1 节)。前者适合深度集成,后者适合快
速接入现有系统。
---
**下一章**:[第 9 章:MCP、子代理与工作流](./09-mcp-subagent-workflow.md)
第 9 章:MCP、子代理与工作流
> 本章目标:了解 dsh 的三项扩展能力——MCP(接入外部工具)、子代理(并行任务)、工作流(多步编排)。**这些是把 dsh 从"单 Agent"升级为"Agent 系统"的开关。**
> ⚠️ 本章基于官方架构文档(`packages/AGENTS.md`)与包结构整理;部分功能示例标注「待实测」——rc 版本迭代快,具体用法以官方 changelog 为准。
TL;DR(本章核心,30 秒版)
- **MCP = 给 Agent 插外部工具**:通过 MCP 协议接入数据库、浏览器、公司内部
系统等——先跑通内置工具,有明确缺口再加 MCP
- **子代理 = 并行干活**:把任务委派给子 Agent 并行执行(大仓调研、长任务分解、
独立验证)——先用好单 Agent 再上子代理
- **工作流 = 确定性流程编排**:和"多轮对话"不同,工作流把步骤定义成流程按顺序
/条件执行——适合数据拉取→清洗→报表→校验
- **组合起来 = Agent 系统**:父 Agent 规划 → 子代理并行调研 → 工具链 + MCP
- 工作流汇总 → 产物
- **新手路径四阶段**:单 Agent + 内置工具 → + MCP → + 子代理 → + 工作流(逐
步叠加,别跳级)
<details><summary>本章导航</summary>
- [9.1 MCP:接入外部工具生态](#91-mcp接入外部工具生态)
- [9.2 子代理(subagent):并行干活](#92-子代理subagent并行干活)
- [9.3 工作流(workflow):多步编排](#93-工作流workflow多步编排)
- [9.4 组合起来:一个"Agent 系统"长什么样](#94-组合起来一个agent-系统长什么样)
- [9.5 社区生态示例(2026-08-13 快照)](#95-社区生态示例2026-08-13-快照)
- [9.6 MCP 接入配置示例](#96-mcp-接入配置示例)
- [9.7 子代理配置示例](#97-子代理配置示例)
- [9.8 工作流 YAML 示例](#98-工作流-yaml-示例)
- [9.9 三者对比表](#99-三者对比表)
- [9.10 踩坑补充](#910-踩坑补充)
- [9.11 四阶段新手路径(含验收标准)](#911-四阶段新手路径含验收标准)
</details>
9.1 MCP:接入外部工具生态
**MCP(Model Context Protocol)**是"给 Agent 插外部工具"的开放协议。dsh 提供 `mcp` 客户端包(`@deepseek-ai/dsh-mcp-client`)。
**能做什么**:通过 MCP 接入任何 MCP 服务器(数据库、浏览器、图表、公司内部系统……)——比如社区已出现的 `dsh-plugin-cost-tracker`(追踪 token)就是 MCP/插件形
态。
**新手定位**:MCP 是"生态扩展",等你在 dsh 里有了明确的工具缺口再来接。先跑通内置工具,再加 MCP。
9.2 子代理(subagent):并行干活
**是什么**:把任务委派给子 Agent 并行执行(`packages/subagent/*`)。
**典型场景**:
- 大仓库多模块调研(各模块一个子代理)
- 长任务分解(父代理规划,子代理执行)
- 独立验证(子代理交叉检查)
**对新手**:子代理是"高阶武器"——先用好单 Agent,理解任务分解后再上子代理。错误示范是"什么任务都开子代理",反而增加协调开销。
**已知限制(社区反馈)**:当前**不能动态指定子代理模型**——子代理模型跟随父 Agent 配置,社区已在讨论区反馈([#118](https://github.com/deepseek-ai/deepseek-
harness/discussions/118) 评论区,对比 Claude Code"可指定子代理模型"的体验)。需要不同模型能力时,目前只能整体切换父 Agent 的模型配置,或拆成独立会话分别指定。
9.3 工作流(workflow):多步编排
**是什么**:`packages/workflow/*` 提供多步工作流编排(worker-thread provider + tool Consumer)。
**和"多轮对话"的区别**:普通对话是"模型自由发挥",工作流是"把步骤定义成流程,按顺序 /条件执行"——适合**确定性流程**(如:拉取数据 → 清洗 → 生成报表 → 校验)。
**官方示例**(`packages/examples/`):有可运行的 cordis.yml 工作流示例。
9.4 组合起来:一个"Agent 系统"长什么样
<!-- [style] 流程图代码块统一补 text 语言标签 -->
你的提示词(目标)↓ 父 Agent(规划)├── 子代理 A:调研模块 A(并行)├── 子代理 B:调研模块 B(并行)└── 工具链:read/grep/bash + MCP(数据库)↓ 工作流(如:校验 → 汇总 → 输出报
告)↓ 产物(可打开/追踪)
**新手路径建议**:
- **阶段一**:单 Agent + 内置工具(第 2-5 章)
- **阶段二**:+ MCP(接外部工具)
- **阶段三**:+ 子代理(并行)
- **阶段四**:+ 工作流(确定性流程)
全站分卷索引 · 43 卷
- 1第 1 卷
- 2第 2 卷
- 3第 3 卷
- 4第 4 卷
- 5第 5 卷
- 6第 6 卷
- 7第 7 卷
- 8第 8 卷
- 9第 9 卷
- 10第 10 卷
- 11第 11 卷
- 12第 12 卷
- 13第 13 卷
- 14第 14 卷
- 15第 15 卷
- 16第 16 卷
- 17第 17 卷
- 18第 18 卷
- 19第 19 卷
- 20第 20 卷
- 21第 21 卷
- 22第 22 卷
- 23第 23 卷
- 24第 24 卷
- 25第 25 卷
- 26第 26 卷
- 27第 27 卷
- 28第 28 卷
- 29第 29 卷
- 30第 30 卷
- 31第 31 卷
- 32第 32 卷
- 33第 33 卷
- 34第 34 卷
- 35第 35 卷
- 36第 36 卷
- 37第 37 卷
- 38第 38 卷
- 39第 39 卷
- 40第 40 卷
- 41第 41 卷
- 42第 42 卷
- 43第 43 卷