在 DSH 的工作流中,同时运行多个会话(例如一个用于研究,一个用于编码)是常态。问题不在于会话无法“看见”彼此,而在于缺乏一种程序化的关系层来管理权限边界、共享资源和加载能力。现有方法往往将这些硬编码在插件内部,缺乏灵活性。dsh-connection-card-host 旨在解决这个问题。
插件介绍¶
该插件将“连接”提升为 DSH 中的一等公民。它定义了会话为节点,连接为容器,卡片为连接作用域的插件。本质上,它提供了一个“连接级插件宿主”。
- 维护者:Noob-stupid
- 许可:MIT
- 分类:工作流
核心功能¶
该插件通过连接层为两个会话提供多种交互方式,且互不干扰:
- 互相看见:自动收集对方的状态,包括正在运行的命令、最近编辑的文件、计划进度等。这些信息由对方按需拉取,不产生额外成本。
- 互相交谈:支持多种消息传递方式(通知、队列、打断、抢占式打断),但发送消息会强制接收方运行一轮。
- 共享工具:通过挂载在连接上的“卡片”来实现。卡片可以提供工具给会话,且不受限于插件本身的大小,支持数十 MB 的真实依赖。
- 共享约定:提供一个“约定盒”,用于存放接口、单位、命名规范和资源归属等双方达成的共识。
- 不打扰:感知机制是拉取式的,除非对方主动询问,否则不会产生开销。不相关的连接不会打断当前会话。
典型用法¶
建立连接¶
在 DSH 界面中建立连接非常直观:
- 操作:按住作曲器左侧的圆圈,或者会话行上的
...,将其拖拽到会话列表中的目标行上。 - 目标:放置目标会话行即为“连接”,已连接的行则为“断开”。
- 恢复:连接会在 DSH 下次启动时自动恢复。
视觉与权限¶
连接建立后,会话行旁边会出现一条“轨道”,每端有一个彩色圆点,表示该方向的权限。权限由双方共同决定。
适用场景与注意¶
- 适用场景:适合需要多个会话协同工作,但又希望保持隔离和按需交互的场景。例如,一个会话负责编写代码,另一个负责运行实验,两者通过连接共享工具和约定,但不互相打扰。
- 注意事项:
- 拉取式感知:对方对你的状态“看见”与否,完全取决于对方是否主动发起询问。如果对方不询问,你对其状态的感知就是零成本的。
- 消息强制运行:在 DSH 中,发送消息不仅仅是通知,它会强制接收会话进入下一轮运行。
- 卡片限制:挂载在连接上的卡片受连接权限的约束,且所有功能必须由连接提供。