Sessions API
使用工作階段列表和載入功能管理對話歷史。
Sessions API 提供管理對話歷史的端點,讓使用者可以檢視和載入過去的對話。
概觀
Sessions API 提供兩個主要端點:
GET /sessions- 列出所有使用者對話GET /sessions/[id]- 取得特定對話的訊息
列出工作階段
src/app/api/lens/agent/sessions/route.ts
import { NextResponse } from "next/server";
import { auth } from "@/auth";
import { LensClient } from "@lens-os/sdk";
const client = new LensClient({ apiKey: process.env.LENS_OS_API_KEY! });
export async function GET() {
const session = await auth();
if (!session?.user) {
return NextResponse.json(
{ success: false, error: "Unauthorized" },
{ status: 401 }
);
}
const userId = session.user.id || "default-user";
try {
const sessions = await client.listSessions(userId);
// Add title for each session (first user message)
const enriched = await Promise.all(
sessions.map(async (s) => {
try {
const messages = await client.getMessages(s.id);
const firstUserMsg = messages.find((m) => m.role === "user");
const title = typeof firstUserMsg?.content === "string"
? firstUserMsg.content.slice(0, 60)
: "New Conversation";
return {
...s,
title,
messageCount: messages.length,
};
} catch {
return { ...s, title: "New Conversation", messageCount: 0 };
}
})
);
return NextResponse.json({ success: true, sessions: enriched });
} catch (err) {
console.error("[Sessions API] Error:", err);
return NextResponse.json(
{ success: false, error: "Failed to list sessions" },
{ status: 500 }
);
}
}取得工作階段訊息
src/app/api/lens/agent/sessions/[id]/route.ts
import { NextRequest, NextResponse } from "next/server";
import { auth } from "@/auth";
import { LensClient } from "@lens-os/sdk";
const client = new LensClient({ apiKey: process.env.LENS_OS_API_KEY! });
export async function GET(
_request: NextRequest,
{ params }: { params: Promise<{ id: string }> }
) {
const session = await auth();
if (!session?.user) {
return NextResponse.json(
{ success: false, error: "Unauthorized" },
{ status: 401 }
);
}
const { id: sessionId } = await params;
try {
const messages = await client.getMessages(sessionId);
return NextResponse.json({ success: true, messages });
} catch (err) {
console.error("[Sessions API] Error:", err);
return NextResponse.json(
{ success: false, error: "Failed to load messages" },
{ status: 500 }
);
}
}回應格式
列出工作階段
回應
{
success: true,
sessions: [
{
id: "session-123",
created_at: "2024-01-15T10:30:00Z",
title: "Help me find TypeScript books",
messageCount: 8
},
// ...
]
}取得訊息
回應
{
success: true,
messages: [
{ role: "user", content: "Help me find TypeScript books" },
{ role: "assistant", content: "Let me search for you..." },
// ...
]
}Tip
工作階段會由 SDK 自動建立和儲存。你不需要手動管理工作階段的建立或儲存。