Skip to content

ComposerReader

ComposerReader 用于读取 Composer 会话和统计数据。

方法

ListComposers

获取所有 Composer 会话列表。

go
func (r *ComposerReader) ListComposers() ([]Composer, error)

返回值:

  • []Composer - Composer 会话列表
  • error - 错误信息

示例:

go
composers, err := client.Composers().ListComposers()
if err != nil {
    log.Fatal(err)
}

for _, composer := range composers {
    fmt.Printf("Composer ID: %s\n", composer.ID)
}

GetComposer

根据 ID 获取单个 Composer 会话。

go
func (r *ComposerReader) GetComposer(id string) (*Composer, error)

参数:

  • id - Composer ID

返回值:

  • *Composer - Composer 对象
  • error - 错误信息

示例:

go
composer, err := client.Composers().GetComposer("composer-id")
if err != nil {
    log.Fatal(err)
}

GetComposerStats

获取 Composer 统计信息。

go
func (r *ComposerReader) GetComposerStats() (*ComposerStats, error)

返回值:

  • *ComposerStats - 统计信息
  • error - 错误信息

示例:

go
stats, err := client.Composers().GetComposerStats()
if err != nil {
    log.Fatal(err)
}

fmt.Printf("Total composers: %d\n", stats.TotalCount)
fmt.Printf("Acceptance rate: %.2f%%\n", stats.AcceptanceRate*100)

数据结构

Composer

go
type Composer struct {
    ID          string    // Composer ID
    CreatedAt   time.Time // 创建时间
    UpdatedAt   time.Time // 更新时间
    Prompt      string    // 用户提示
    Response    string    // AI 响应
    Accepted    bool      // 是否被接受
    WorkspaceID string    // 工作区 ID
}

ComposerStats

go
type ComposerStats struct {
    TotalCount     int     // 总数
    AcceptedCount  int     // 接受数量
    RejectedCount  int     // 拒绝数量
    AcceptanceRate float64 // 接受率
}

完整示例

go
package main

import (
    "fmt"
    "log"
    
    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()
    
    // 获取所有 Composer 会话
    composers, err := client.Composers().ListComposers()
    if err != nil {
        log.Fatal(err)
    }
    
    // 统计接受率
    accepted := 0
    for _, composer := range composers {
        if composer.Accepted {
            accepted++
        }
    }
    
    rate := float64(accepted) / float64(len(composers)) * 100
    fmt.Printf("Acceptance rate: %.2f%%\n", rate)
    
    // 获取统计信息
    stats, err := client.Composers().GetComposerStats()
    if err != nil {
        log.Fatal(err)
    }
    
    fmt.Printf("Stats: %+v\n", stats)
}

相关文档

Released under the MIT License.