session-sqlite

command
v0.35.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 29, 2025 License: MIT Imports: 8 Imported by: 0

README

SQLite Session Store 示例

本示例演示如何使用 SQLite 作为会话存储后端,这是桌面应用的理想选择。

功能特点

  • 🗄️ 轻量级本地存储,无需外部数据库服务
  • ⚡ WAL 模式提高读写性能
  • 🔄 支持与 PostgreSQL/MySQL 相同的接口
  • 💾 数据持久化在单个文件中
  • 🔒 支持事务和 ACID 保证

运行示例

go run ./examples/session-sqlite/

代码示例

创建 SQLite 服务
import "github.com/astercloud/aster/pkg/session/sqlite"

// 创建 SQLite 会话服务
service, err := sqlite.New("./data/sessions.db")
if err != nil {
    log.Fatal(err)
}
defer service.Close()
使用跨平台路径
import (
    "github.com/astercloud/aster/pkg/config"
    "github.com/astercloud/aster/pkg/session/sqlite"
)

// 使用标准应用数据目录
dbPath := config.DatabaseFile("sessions.db")
service, err := sqlite.New(dbPath)
创建和管理会话
ctx := context.Background()

// 创建会话
sess, err := service.Create(ctx, &session.CreateRequest{
    AppName: "my-app",
    UserID:  "user-123",
    AgentID: "agent-001",
    Metadata: map[string]any{
        "source": "desktop",
    },
})

// 添加事件
sess.AddEvent(ctx, session.AddEventOptions{
    Author:  "user",
    Content: "Hello, AI!",
})

// 列出会话
sessions, err := service.List(ctx, &session.ListRequest{
    AppName: "my-app",
    UserID:  "user-123",
})

// 获取会话
sess, err = service.Get(ctx, &session.GetRequest{
    AppName:   "my-app",
    UserID:    "user-123",
    SessionID: "session-id",
})

数据库结构

SQLite 数据库包含以下表:

sessions 表
字段 类型 说明
id TEXT 会话 ID (主键)
app_name TEXT 应用名称
user_id TEXT 用户 ID
agent_id TEXT Agent ID
metadata TEXT JSON 格式的元数据
created_at DATETIME 创建时间
updated_at DATETIME 更新时间
events 表
字段 类型 说明
id TEXT 事件 ID (主键)
session_id TEXT 关联的会话 ID
author TEXT 作者 (user/assistant/system)
content TEXT 消息内容
reasoning TEXT 推理过程
actions TEXT JSON 格式的工具调用
metadata TEXT JSON 格式的元数据
created_at DATETIME 创建时间

适用场景

  • ✅ 桌面应用 (Wails, Tauri, Electron)
  • ✅ CLI 工具
  • ✅ 单用户应用
  • ✅ 开发和测试环境
  • ✅ 嵌入式系统

不适用场景

  • ❌ 高并发多用户服务
  • ❌ 分布式部署
  • ❌ 需要主从复制的场景

相关示例

Documentation

Overview

Session-SQLite 演示 SQLite 会话存储,适用于桌面应用和单机场景。 这是轻量级的本地持久化方案,使用 WAL 模式提高性能。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL