← 返回目录

第 22 卷

第 22 / 43 卷作者:Un-named日期:

`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 秒版)

  1. **MCP = 给 Agent 插外部工具**:通过 MCP 协议接入数据库、浏览器、公司内部

系统等——先跑通内置工具,有明确缺口再加 MCP

  1. **子代理 = 并行干活**:把任务委派给子 Agent 并行执行(大仓调研、长任务分解、

独立验证)——先用好单 Agent 再上子代理

  1. **工作流 = 确定性流程编排**:和"多轮对话"不同,工作流把步骤定义成流程按顺序

/条件执行——适合数据拉取→清洗→报表→校验

  1. **组合起来 = Agent 系统**:父 Agent 规划 → 子代理并行调研 → 工具链 + MCP
  • 工作流汇总 → 产物
  1. **新手路径四阶段**:单 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(数据库)↓ 工作流(如:校验 → 汇总 → 输出报

告)↓ 产物(可打开/追踪)

**新手路径建议**:

  1. **阶段一**:单 Agent + 内置工具(第 2-5 章)
  2. **阶段二**:+ MCP(接外部工具)
  3. **阶段三**:+ 子代理(并行)
  4. **阶段四**:+ 工作流(确定性流程)
全站分卷索引 · 43 卷
  1. 1第 1 卷
  2. 2第 2 卷
  3. 3第 3 卷
  4. 4第 4 卷
  5. 5第 5 卷
  6. 6第 6 卷
  7. 7第 7 卷
  8. 8第 8 卷
  9. 9第 9 卷
  10. 10第 10 卷
  11. 11第 11 卷
  12. 12第 12 卷
  13. 13第 13 卷
  14. 14第 14 卷
  15. 15第 15 卷
  16. 16第 16 卷
  17. 17第 17 卷
  18. 18第 18 卷
  19. 19第 19 卷
  20. 20第 20 卷
  21. 21第 21 卷
  22. 22第 22 卷
  23. 23第 23 卷
  24. 24第 24 卷
  25. 25第 25 卷
  26. 26第 26 卷
  27. 27第 27 卷
  28. 28第 28 卷
  29. 29第 29 卷
  30. 30第 30 卷
  31. 31第 31 卷
  32. 32第 32 卷
  33. 33第 33 卷
  34. 34第 34 卷
  35. 35第 35 卷
  36. 36第 36 卷
  37. 37第 37 卷
  38. 38第 38 卷
  39. 39第 39 卷
  40. 40第 40 卷
  41. 41第 41 卷
  42. 42第 42 卷
  43. 43第 43 卷