SessionReader
SessionReader 用于读取和查询 AI 对话会话数据。
方法
ListSessions
获取所有会话列表。
go
func (r *SessionReader) ListSessions() ([]Session, error)返回值:
[]Session- 会话列表error- 错误信息
示例:
go
sessions, err := client.Sessions().ListSessions()
if err != nil {
log.Fatal(err)
}
for _, session := range sessions {
fmt.Printf("Session ID: %s\n", session.ID)
fmt.Printf("Created: %s\n", session.CreatedAt)
}GetSession
根据 ID 获取单个会话。
go
func (r *SessionReader) GetSession(id string) (*Session, error)参数:
id- 会话 ID
返回值:
*Session- 会话对象error- 错误信息
示例:
go
session, err := client.Sessions().GetSession("session-id")
if err != nil {
log.Fatal(err)
}
fmt.Printf("Session: %+v\n", session)SearchSessions
搜索会话。
go
func (r *SessionReader) SearchSessions(query *QueryBuilder) ([]Session, error)参数:
query- 查询条件
返回值:
[]Session- 匹配的会话列表error- 错误信息
示例:
go
query := cursor.NewQueryBuilder().
TimeRange(startTime, endTime).
Keyword("bug fix").
Limit(10).
Build()
sessions, err := client.Sessions().SearchSessions(query)
if err != nil {
log.Fatal(err)
}GetRecentSessions
获取最近的会话。
go
func (r *SessionReader) GetRecentSessions(limit int) ([]Session, error)参数:
limit- 返回数量限制
返回值:
[]Session- 会话列表error- 错误信息
示例:
go
sessions, err := client.Sessions().GetRecentSessions(10)
if err != nil {
log.Fatal(err)
}数据结构
Session
go
type Session struct {
ID string // 会话 ID
CreatedAt time.Time // 创建时间
UpdatedAt time.Time // 更新时间
Messages []Message // 消息列表
WorkspaceID string // 工作区 ID
Model string // 使用的模型
}Message
go
type Message struct {
ID string // 消息 ID
Role string // 角色(user/assistant)
Content string // 消息内容
CreatedAt time.Time // 创建时间
}完整示例
go
package main
import (
"fmt"
"log"
"time"
cursor "github.com/vibe-coding-labs/go-cursor-sdk"
)
func main() {
client, err := cursor.NewCursorClient(nil)
if err != nil {
log.Fatal(err)
}
defer client.Close()
// 获取所有会话
sessions, err := client.Sessions().ListSessions()
if err != nil {
log.Fatal(err)
}
fmt.Printf("Total sessions: %d\n", len(sessions))
// 获取最近 10 个会话
recent, err := client.Sessions().GetRecentSessions(10)
if err != nil {
log.Fatal(err)
}
for _, session := range recent {
fmt.Printf("Session: %s, Messages: %d\n",
session.ID, len(session.Messages))
}
// 搜索包含特定关键词的会话
query := cursor.NewQueryBuilder().
Keyword("refactor").
TimeRange(time.Now().AddDate(0, -1, 0), time.Now()).
Build()
results, err := client.Sessions().SearchSessions(query)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Found %d sessions with keyword\n", len(results))
}相关文档
- Session 模型 - Session 数据结构详解
- QueryBuilder - 查询构建器
- 搜索会话示例 - 实际使用示例