最新文章 查看全部 489 篇 →

扩展实战:编写第一个插件

系列收尾篇。先给出四种扩展姿势的选型表与树外插件的完整生命周期,然后三次实操:用 cordis.patch.yml 关掉内置行为、写一个最小工具插件、简述 LLM 适配器与 Conversation 节点,最后回到"一切皆插件"的主题。

客户端:从会话投影到桌面壳

会话状态活在 Host 进程的 Cordis 树里,UI 活在浏览器的 React 树里。本篇解析 dsh 的 host/client 六层所有权、Web 服务端的路由与信任围栏、会话跟踪的分数 seq 与结算暂存,以及桌面壳为什么只是一个薄壳。

能力 Seam:可替换的执行世界

解析 dsh 的能力 seam 体系:服务定义、提供方、消费方三角色如何一并设计;fs/shell/sandbox/subprocess 如何共享同一个执行世界;subagent 的六提供方接口,以及 MCP 与 skills 的两种接入方式。

系统提示词:组装与准入

系统提示词不是请求上的一个字段,而是会话日志里的一组 surface 节点。本篇讲清提示词片段如何组装与渲染,以及 SystemPromptProjection 的准入决策树如何让模型历史与提示词变更保持一致。

持久化:格式代际、迁移与崩溃恢复

第 5 篇的会话日志活在内存里,本篇看它如何穿越进程存活:磁盘布局与单写者租约、代际选择与"永不返回撕裂尾部"的读契约、相邻迁移链的编译时验证、隔离 worker 全量校验的排他发布,以及崩溃恢复中持久化层与 agent 层的职责划分。

会话日志:追加即事实

离开内核进入运行时状态。本篇拆解 dsh 的会话事件日志:为什么它是唯一事实源,SessionEvent 的连续性契约与四类事件,append 的写入路径与持久性屏障,以及 deriveMessages 与会话投影如何"从日志派生一切视图"。

浏览更多文章 →