Documentation Index
Fetch the complete documentation index at: https://docs.ag-kit.dev/llms.txt
Use this file to discover all available pages before exploring further.
会话管理允许您通过内存操作中的sessionId参数处理多个并发对话。这是构建在AG-Kit内存应用程序接口之上的应用级模式。
核心概念
会话本质上是一个隔离对话上下文的唯一标识符(字符串)。所有内存操作都接受可选的sessionId参数,用于区分不同用户或对话的数据。
快速入门
基础会话管理
import { InMemoryMemory } from '@ag-kit/agents';
// 创建内存实例
const memory = new InMemoryMemory();
// 为用户A创建会话
const sessionA = 'user-alice-session-1';
await memory.add(
{
message: {
id: 'msg-1',
role: 'user',
content: 'Hello, I\'m Alice',
timestamp: new Date()
},
state: { userId: 'alice' }
},
{ sessionId: sessionA }
);
// 为用户B创建会话
const sessionB = 'user-bob-session-1';
await memory.add(
{
message: {
id: 'msg-1',
role: 'user',
content: 'Hi, I\'m Bob',
timestamp: new Date()
},
state: { userId: 'bob' }
},
{ sessionId: sessionB }
);
// 获取会话专属历史记录
const aliceHistory = await memory.list({ sessionId: sessionA });
const bobHistory = await memory.list({ sessionId: sessionB });
console.log('Alice:', aliceHistory[0].message.content); // "Hello, I'm Alice"
console.log('Bob:', bobHistory[0].message.content); // "Hi, I'm Bob"
常见会话ID模式
您可以根据应用需求设计会话ID:
// 基于用户:每个用户一个会话
const sessionId = `user-${userId}`;
// 基于对话:每个用户多个会话
const sessionId = `user-${userId}-conv-${conversationId}`;
// 基于时间:带时间戳的会话
const sessionId = `user-${userId}-${Date.now()}`;
// 层级结构:复杂组织结构
const sessionId = `org-${orgId}/team-${teamId}/user-${userId}`;
与Agent配合使用会话
import { InMemoryMemory } from '@ag-kit/agents';
const memory = new InMemoryMemory();
// Agent处理带会话隔离的请求
async function handleUserMessage(userId: string, message: string) {
const sessionId = `user-${userId}`;
// 将用户消息添加到会话
await memory.add(
{
message: {
id: crypto.randomUUID(),
role: 'user',
content: message,
timestamp: new Date()
}
},
{ sessionId }
);
// 获取Agent所需的会话历史
const history = await memory.list({ sessionId });
// 使用Agent处理...
const response = await agent.run({
messages: history.map(m => m.message),
sessionId
});
return response;
}
最佳实践
- 使用有意义的会话ID - 包含用户/对话标识符便于调试
- 实现会话清理机制 - 移除旧会话防止内存泄漏
- 处理会话过期 - 在应用中实现超时逻辑
- 单独存储会话元数据 - 记录创建时间、最后活动时间等
- 考虑隐私保护 - 及时清除不再需要的敏感会话数据
后续步骤