Chapter 12

Capability Seam:Definition / Provider / Consumer 三角色

目标不是背 API,而是建立能从顶层设计一路推导到源码细节的心智模型。读完本章,你应该能解释“为什么这样设计”,而不仅是“代码在哪里”。

1. Seam 的三角色

当一项能力需要被替换时,DSH 推荐把它分成:Service Definition(接口)、Service Provider(实现)、Consumer(使用者,常是模型工具)。

Definition: ctx.shell contract ↑ ↑ Provider: local shell Consumer: bash tool Provider: remote shell Provider: container shell

2. 为什么 Provider 与 Consumer 不能互相依赖

如果 bash tool import LocalShell,那么换远程 sandbox 必须改 bash tool;反之亦然。正确依赖图是二者都只依赖 Definition。

3. 什么时候不要过度拆包

并非每个小工具都要三包。只有“提供方确实需要独立替换/演化”的能力,才值得形成 seam。简单纯函数工具可以一个插件完成。

4. 看到 DSH 某家族时怎么分析

  1. 先找定义包里 service key 与 Request/Result 类型。
  2. 找本地/远程 provider 如何注册。
  3. 找 tool consumer 如何只依赖定义包。
  4. 找配置文件如何选择 provider。
源码定位:Three-role capability design · docs/user/develop/practice/index.md
打开官方源码/文档