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 某家族时怎么分析
- 先找定义包里 service key 与 Request/Result 类型。
- 找本地/远程 provider 如何注册。
- 找 tool consumer 如何只依赖定义包。
- 找配置文件如何选择 provider。