Skip to content

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))
}

相关文档

Released under the MIT License.