dsh README 引用的论文:把「效果」(effect)与「余效果」(coeffect)两个经典概念搬进运行时,给插件系统一个形式化地基。
dsh 的 README 一开头就引用了这篇论文——它不是装饰,而是 Cordis 框架(因此也是整个 dsh)的数学地基。
论文指出,现代软件(插件系统、自进化 agent harness)需要动态组合,但形式化基础薄弱,于是把问题拆成两个正交维度:
| 论文概念 | Cordis/dsh 机制 |
|---|---|
| revertible effects | 「注册即可逆 effect」:插件卸载时按逆序回退所有注册 |
| reactive coeffects | inject 声明依赖:所需服务出现/消失驱动插件挂载/卸载 |
| 上下文变换 | context 的服务挂载/移除 |
| 组件 | 插件 |
所以「每个注册都有 disposer」不是工程洁癖,而是时间可组合性的定义要求;「依赖靠声明而非 import」是空间可组合性的落地。这也解释了 dsh 为什么能做到热重载、按 profile 任意组合而不留残渣。
论文偏形式化,建议的顺序:先读摘要和引言 → 回来看 Cordis 五个核心思想对照机制 → 再回论文看形式化定义。工程读者读完前两步就能获得 80% 的价值。