追加一条消息到 JSONL 文件。返回生成的 uuid。 CC 的两层设计: - TS 层用 async queue + 100ms 合并 (高性能) - Rust 层用 save_to_path (整体写入) 我们用简单的同步 append — 保持 JSONL 追加语义。
(
self,
session_id: str,
message: Message,
parent_uuid: Optional[str] = None,
)
| 70 | return self._storage_dir / f"{session_id}.jsonl" |
| 71 | |
| 72 | def save_message( |
| 73 | self, |
| 74 | session_id: str, |
| 75 | message: Message, |
| 76 | parent_uuid: Optional[str] = None, |
| 77 | ) -> str: |
| 78 | """追加一条消息到 JSONL 文件。返回生成的 uuid。 |
| 79 | |
| 80 | CC 的两层设计: |
| 81 | - TS 层用 async queue + 100ms 合并 (高性能) |
| 82 | - Rust 层用 save_to_path (整体写入) |
| 83 | |
| 84 | 我们用简单的同步 append — 保持 JSONL 追加语义。 |
| 85 | """ |
| 86 | path = self._session_path(session_id) |
| 87 | |
| 88 | entry = StorageEntry( |
| 89 | uuid=str(uuid.uuid4()), |
| 90 | parent_uuid=parent_uuid, |
| 91 | message=message.model_dump(), |
| 92 | timestamp=datetime.now(timezone.utc).isoformat(), |
| 93 | ) |
| 94 | |
| 95 | self._append_entry(path, entry) |
| 96 | return entry.uuid |
| 97 | |
| 98 | def load_session(self, session_id: str) -> list[Message]: |
| 99 | """从 JSONL 恢复完整对话。 |
no test coverage detected