会话事件日志、投影与持久化
本页用于说明会话事件日志(event log)、状态投影(projection)以及持久化链路的实现边界。当前可用源材料中未找到与该目录主题直接对应的事件日志、投影器或持久化实现,因此本文只记录已验证的范围与信息缺口,不对未见源代码的 API、数据模型或运行时行为作假设。
Purpose and Scope
本页的目标是为 agent-sessions.event-log-persistence 建立一个准确的工程入口,覆盖会话事件如何记录、如何投影为当前状态,以及如何写入或恢复持久化存储。
在本次受限源代码检索中,针对 apps/cli/src 的 event、EventLog、projection、Projection、persist 等关键词没有得到实现匹配;文件名检索也只发现测试 fixture、平台会话文件和 Web 测试文件,未能验证它们构成事件日志持久化实现。因此以下内容明确排除:
- 未验证的事件类型、事件版本和序列化格式;
- 未验证的 projection 类、reducer、重放(replay)入口;
- 未验证的数据库、文件、JSONL 或其他存储后端;
- 未验证的重试、幂等、并发锁、崩溃恢复和一致性保证。
如果仓库中存在未被当前目录和关键词检索覆盖的实现位置,应先补充该实现文件,再扩展本页。与会话 UI、桌面平台适配和 CLI 启动流程相关的内容属于相邻主题,除非它们直接调用事件日志或投影 API,否则不在本页展开。
Overview
从目录名称可以确定本页的概念边界是“会话事件日志、投影与持久化”这一端到端能力,但源代码证据不足以确认具体设计。尤其不能仅凭 session 出现在恢复参数或测试文件名中,就推断这些文件实现了事件追加、事件重放或状态快照。
当前检索到的可确认事实是:CLI 帮助文本提到 dsh tui --resume <session>,仓库存在平台会话相关文件以及多个会话生命周期测试 fixture;这些事实只能说明仓库有会话相关入口和测试资料,不能证明它们使用 event-sourcing 或 projection 架构。相关入口可作为后续追踪起点:apps/cli/src/args.ts、apps/desktop-host/src/platform-session.ts、apps/web/tests/details-session-lifecycle.e2e.ts。这些文件本次未读取,因此不在本文中推断其内部行为。
Architecture
由于没有读取到可验证的实现类、函数或存储接口,不能绘制声称反映真实组件关系的架构图。下面的图只表示本次分析的证据边界:从目录主题出发,检索到会话相关入口,但事件日志、投影和持久化三层均尚未被源代码确认。
Source: apps/cli/src/args.ts
已验证的检索结果
会话恢复入口
CLI 参数帮助中出现 --resume <session>,但这只是用户入口描述。源代码片段未被读取,且当前证据没有显示该参数如何解析、如何定位事件流、如何加载快照或如何执行投影重放。因此不能为它编写准确的参数类型、返回值或异常说明。
事件日志实现
Implementation details not found in source。关键词检索没有找到 EventLog、eventLog、appendEvent 等明确实现标识,也没有找到可确认的事件存储接口。不能推断日志是追加写入、覆盖写入,还是由外部服务托管。
投影实现
Implementation details not found in source。关键词检索没有找到 Projection 或 projection 的实现匹配。不能推断投影是同步更新、异步消费、按会话重放,还是通过快照直接恢复。
持久化实现
Implementation details not found in source。虽然检索结果中出现 profile 持久化相关注释,但该内容属于 profile boot/composition 范围,不能据此归入会话事件日志能力,也没有读取其实现文件进行交叉验证。
Core Flow
真正的核心流程需要至少确认四个实现点:事件写入入口、事件存储格式、投影/重放入口,以及恢复后的会话状态消费者。本次证据不足,以下流程图仅用于标记待验证步骤,而不是实现说明。
Usage Examples
本页不提供代码示例。根据约束,代码示例必须从实际读取的源文件中提取;本次源代码预算已用尽,且没有读取到事件日志、投影或持久化实现,因此 No code example available。
Configuration Options
未发现可归属于本能力的配置键、环境变量或默认值。不要将仓库中其他 profile、CLI 或 Web 配置推断为事件日志持久化配置。
| Option | Type | Default | Description |
|---|---|---|---|
| 未定位 | — | — | 未读取到事件日志、投影或持久化配置实现。 |
API Reference
未发现可验证的公开 API。当前不能安全地记录事件追加、事件读取、投影更新、快照保存或会话恢复方法的签名、返回值和异常。
Failure Modes, Edge Cases & Concurrency
源代码中没有足够证据支持以下行为的文档化:
- 事件写入失败时是否重试或回滚;
- 重复事件是否通过 event ID 去重;
- 多个会话写入者是否使用锁、版本号或 compare-and-swap;
- 投影失败是否阻断事件提交,或由后台重试;
- 日志损坏、版本不兼容或缺失事件如何处理;
- 快照与事件流之间如何保证一致性。
这些项目必须在读取实际实现后补充,当前应标记为 Implementation details not found in source,而不是写成默认行为。
Performance / Operational Notes
未定位到事件追加、重放、快照、缓存、批处理或清理任务的实现,因此无法从源代码得出吞吐量、延迟、存储增长或扩展策略结论。对于运维文档,至少需要确认存储介质、保留策略、日志轮转、指标和故障恢复入口。
Extension Points
未发现可验证的事件接口、投影接口、序列化器接口或存储适配器接口。当前不能给出安全的扩展步骤,也不能假设系统采用 ports-and-adapters、repository 或 reducer 模式。
Tests
文件名检索发现若干 session 测试和 JSONL fixture,包括 apps/web/tests/details-session-lifecycle.e2e.ts 与 CLI profile 测试资料;但本次未读取测试内容,无法确认这些测试覆盖事件顺序、重放一致性、持久化恢复或并发行为。测试保证仍待源代码读取后补充。
Related Links
apps/cli/src/args.ts:会话恢复参数的已发现入口。apps/desktop-host/src/platform-session.ts:会话相关平台文件的已发现位置;实现细节本次未读取。apps/web/tests/details-session-lifecycle.e2e.ts:会话生命周期测试的已发现位置;测试内容本次未读取。
要将本页升级为完整的 DeepWiki 参考文档,需要下一轮读取上述入口及其实际调用的会话存储、事件模型和投影实现文件。