Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

持久化

MoFA 提供内置的持久化功能,用于保存智能体状态、对话历史和会话数据。

概述

持久化功能支持:

  • 会话连续性 — 跨重启保持会话
  • 对话历史 — 保存上下文
  • 智能体状态恢复 — 故障后恢复

支持的后端

后端功能标志使用场景
PostgreSQLpersistence-postgres生产环境
MySQLpersistence-mysql生产环境
SQLitepersistence-sqlite开发/小规模
内存(默认)测试

配置

PostgreSQL

[dependencies]
mofa-sdk = { version = "0.1", features = ["persistence-postgres"] }
#![allow(unused)]
fn main() {
use mofa_sdk::persistence::PostgresStore;

let store = PostgresStore::connect("postgres://user:pass@localhost/mofa").await?;
}

SQLite

[dependencies]
mofa-sdk = { version = "0.1", features = ["persistence-sqlite"] }
#![allow(unused)]
fn main() {
use mofa_sdk::persistence::SqliteStore;

let store = SqliteStore::connect("sqlite://mofa.db").await?;
}

使用持久化

配合 LLMAgent

#![allow(unused)]
fn main() {
use mofa_sdk::persistence::PersistencePlugin;

let persistence = PersistencePlugin::new(
    "persistence",
    store,
    user_id,
    tenant_id,
    agent_id,
    session_id,
);

let agent = LLMAgentBuilder::from_env()?
    .with_persistence_plugin(persistence)
    .with_session_id(session_id.to_string())
    .build_async()
    .await;
}

会话管理

#![allow(unused)]
fn main() {
// 创建新会话
let session_id = agent.create_session().await;

// 切换到现有会话
agent.switch_session(&session_id).await?;

// 列出会话
let sessions = agent.list_sessions().await;

// 删除会话
agent.delete_session(&session_id).await?;
}

存储架构

MoFA 自动创建以下表:

CREATE TABLE sessions (
    id UUID PRIMARY KEY,
    user_id UUID,
    tenant_id UUID,
    agent_id UUID,
    created_at TIMESTAMP,
    updated_at TIMESTAMP
);

CREATE TABLE messages (
    id UUID PRIMARY KEY,
    session_id UUID REFERENCES sessions(id),
    role VARCHAR(20),
    content TEXT,
    metadata JSONB,
    created_at TIMESTAMP
);

CREATE TABLE agent_state (
    id UUID PRIMARY KEY,
    session_id UUID REFERENCES sessions(id),
    state JSONB,
    created_at TIMESTAMP
);

相关链接