Posts
All the articles I've posted.
压缩自己也进日志:dsh 的 Compaction 设计
长会话总会撞上下文上限,做 agent 的都逃不掉压缩这个课题。多数做法是「改历史」——把旧消息替换成摘要。dsh 的做法不太一样:压缩产生的摘要不是历史的一部分,压缩这个动作本身才进日志。(约 5 分钟)
第 03 课 · 五种事件分发模式:协作的语法
第 02 课解决了「谁先激活」。这一课解决「事件发生时,多个监听器如何协作」。 dsh 的事件不是一种泛型广播,而是五种语义——同一个 on() 注册,按事件名声明的模式被调度。选错模式的后果从「副作用顺序错乱」到「整条链被意外否决」不等,所以这是写插件的语法课。
声明即授权:dsh Web 客户端的 slot 体系
dsh 的浏览器端同样是插件系统,但 UI 组合有个额外难题:谁有权把组件渲染进谁的洞里?前端插件化项目在这里常常退化成约定俗成,dsh 把它做成了加载期的硬约束。(约 6 分钟)
Capability Seam:让 shell、文件系统和沙箱都可替换
读 dsh 源码最大的一个疑问:为什么 packages/shell/ 这一个「能力域」下面有九个包,一个跑 bash 的活儿至于拆这么细吗?看到 docs/glossary.md 里的一个词才反应过来:seam(接缝)。(约 6 分钟)