统一客户端
CursorClient 提供了一个统一的访问点,用于访问所有 Cursor IDE 的数据。它简化了多个 Reader 的管理,并提供了缓存、日志和资源管理等功能。
创建客户端
基本用法
go
package main
import (
"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()
// 使用客户端访问数据
sessions, err := client.Sessions().ListSessions()
if err != nil {
log.Fatal(err)
}
}自定义配置
go
config := &cursor.ClientConfig{
// 启用缓存
EnableCache: true,
CacheTTL: 5 * time.Minute,
// 启用数据监听
EnableWatcher: true,
// 设置日志级别
LogLevel: cursor.LogLevelInfo,
// 自定义存储路径(可选)
StoragePath: "/custom/path/to/cursor/storage",
}
client, err := cursor.NewCursorClient(config)
if err != nil {
log.Fatal(err)
}
defer client.Close()访问不同的 Reader
CursorClient 提供了便捷的方法来访问各种 Reader:
会话数据
go
// 访问会话 Reader
sessionReader := client.Sessions()
sessions, err := sessionReader.ListSessions()Composer 数据
go
// 访问 Composer Reader
composerReader := client.Composers()
composers, err := composerReader.ListComposers()统计数据
go
// 访问统计 Reader
statsReader := client.Stats()
stats, err := statsReader.GetDailyStats(time.Now())配置数据
go
// 访问配置 Reader
configReader := client.Config()
userConfig, err := configReader.GetUserConfig()终端历史
go
// 访问终端历史 Reader
terminalReader := client.TerminalHistory()
history, err := terminalReader.GetHistory()MCP 服务
go
// 访问 MCP 服务 Reader
mcpReader := client.MCPService()
mcpData, err := mcpReader.GetMCPServiceData()Agent 布局
go
// 访问 Agent 布局 Reader
layoutReader := client.AgentLayout()
layout, err := layoutReader.GetAgentLayout()资源管理
CursorClient 会自动管理所有 Reader 的生命周期。当调用 Close() 方法时,所有打开的数据库连接和资源都会被正确释放。
go
client, err := cursor.NewCursorClient(config)
if err != nil {
log.Fatal(err)
}
// 确保资源被释放
defer client.Close()
// 使用客户端...错误处理
CursorClient 提供了详细的错误信息:
go
client, err := cursor.NewCursorClient(config)
if err != nil {
switch {
case errors.Is(err, cursor.ErrStorageNotFound):
log.Fatal("Cursor 存储路径未找到")
case errors.Is(err, cursor.ErrDatabaseOpen):
log.Fatal("无法打开数据库")
default:
log.Fatal(err)
}
}完整示例
go
package main
import (
"fmt"
"log"
"time"
cursor "github.com/vibe-coding-labs/go-cursor-sdk"
)
func main() {
// 创建配置
config := &cursor.ClientConfig{
EnableCache: true,
CacheTTL: 5 * time.Minute,
EnableWatcher: false,
LogLevel: cursor.LogLevelInfo,
}
// 创建客户端
client, err := cursor.NewCursorClient(config)
if err != nil {
log.Fatal(err)
}
defer client.Close()
// 访问会话数据
sessions, err := client.Sessions().ListSessions()
if err != nil {
log.Fatal(err)
}
fmt.Printf("找到 %d 个会话\n", len(sessions))
// 访问 Composer 数据
composers, err := client.Composers().ListComposers()
if err != nil {
log.Fatal(err)
}
fmt.Printf("找到 %d 个 Composer\n", len(composers))
// 访问统计数据
stats, err := client.Stats().GetStatsRange(
time.Now().AddDate(0, 0, -7),
time.Now(),
)
if err != nil {
log.Fatal(err)
}
fmt.Printf("最近 7 天的统计数据:%d 条记录\n", len(stats))
// 访问配置
userConfig, err := client.Config().GetUserConfig()
if err != nil {
log.Fatal(err)
}
fmt.Printf("用户邮箱:%s\n", userConfig.Email)
}下一步
- 了解 Readers 的详细功能
- 学习如何使用 Query Builder 构建复杂查询
- 探索 数据导出 功能