feat(core): 为 CostTracker/ContextSlot/MergeStrategy 加 Clone+Serialize+Deserialize

Phase 17 前置 derive 改动:
- CostTracker 加 Clone + Serialize + Deserialize(3 行)—— 用于 SessionSnapshot
  序列化 cost_so_far 字段
- ContextSlot 加 Serialize + Deserialize(1 行)—— 用于 SessionSnapshot
  序列化 slots HashMap
- MergeStrategy 加 Serialize + Deserialize(1 行)—— 与 ContextSlot 一致

零破坏性:派生仅为新增能力,不修改现有行为。ContextSlot 的 save()
路径独立序列化 messages/meta/config,不走整体 serde,两组路径可共存。

Phase 17: Agent 执行引擎 — Step 1
This commit is contained in:
徐涛
2026-07-15 08:58:43 +08:00
parent fbbf8bf6e5
commit 1d51dcdfe0
2 changed files with 3 additions and 3 deletions
+2 -2
View File
@@ -17,7 +17,7 @@ use crate::memory::store::MemoryStore;
use crate::memory::types::{MemoryFilter, MemoryItem};
/// 上下文槽 —— 一段带策略配置的消息列表。
#[derive(Debug, Clone)]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ContextSlot {
/// 当前 slot 的唯一标识(同一个 session_id 内唯一)。
pub id: String,
@@ -107,7 +107,7 @@ pub enum DeriveStrategy {
/// 合并策略 —— Phase 13 新增,控制 `ContextSlot::merge` 如何将子 slot 消息合入父 slot。
///
/// `#[non_exhaustive]` 预留未来扩展(如 `Summarize` 变体)。
#[derive(Debug, Clone)]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[non_exhaustive]
pub enum MergeStrategy {
/// 子 slot 消息追加到父 slot 末尾。
+1 -1
View File
@@ -31,7 +31,7 @@ pub struct PromptTokensDetails {
pub cached_tokens: Option<u32>,
}
#[derive(Debug, Default)]
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CostTracker {
accumulated: Usage,
}