Readers
Readers 是 Go Cursor SDK 的核心组件,每个 Reader 负责读取特定类型的数据。本文档介绍所有可用的 Reader 及其用途。
Reader 概述
所有 Reader 都遵循以下设计原则:
- 只读访问:不修改任何数据
- 资源管理:实现
Close()方法清理资源 - 错误处理:返回详细的错误信息
- 并发安全:使用互斥锁保护共享资源
核心 Readers
SessionReader
读取和管理 AI 对话会话记录。
go
reader := client.Sessions()
// 列出所有会话
sessions, err := reader.ListSessions()
// 根据 ID 获取会话
session, err := reader.GetSessionByID("session-id")
// 搜索会话
sessions, err := reader.SearchSessions("关键词")
// 根据时间范围过滤
sessions, err := reader.GetSessionsByTimeRange(startTime, endTime)ComposerReader
读取 Composer 数据和代码修改统计。
go
reader := client.Composers()
// 列出所有 Composer
composers, err := reader.ListComposers()
// 获取特定 Composer
composer, err := reader.GetComposerByID("composer-id")
// 列出归档的 Composer
archived, err := reader.ListArchivedComposers()StatsReader
读取 AI 代码生成的统计数据。
go
reader := client.Stats()
// 获取每日统计
stats, err := reader.GetDailyStats(date)
// 获取日期范围统计
stats, err := reader.GetStatsRange(startDate, endDate)
// 获取总计统计
total, err := reader.GetTotalStats()ConfigReader
读取用户配置和设置。
go
reader := client.Config()
// 获取用户配置
config, err := reader.GetUserConfig()
// 获取个人上下文
context, err := reader.GetPersonalContext()
// 获取用户邮箱
email, err := reader.GetUserEmail()WorkspaceReader
读取特定工作区的数据。
go
reader := client.Workspace("/path/to/workspace")
// 获取工作区信息
workspace, err := reader.GetWorkspaceInfo()
// 获取工作区的 Composer
composers, err := reader.GetWorkspaceComposers()扩展 Readers
TerminalHistoryReader
读取终端命令和目录历史记录。
go
reader := client.TerminalHistory()
// 获取完整历史
history, err := reader.GetHistory()
// 获取最近的命令
commands, err := reader.GetRecentCommands(10)
// 搜索命令
commands, err := reader.SearchCommands("git")MCPServiceReader
读取 MCP (Model Context Protocol) 服务器信息。
go
reader := client.MCPService()
// 获取所有 MCP 服务数据
mcpData, err := reader.GetMCPServiceData()
// 获取服务器详细信息
server, err := reader.GetServerByID("server-id")
// 搜索服务器
servers, err := reader.SearchServers("关键词")AgentLayoutReader
读取 Cursor Agent 的布局配置信息。
go
reader := client.AgentLayout()
// 获取布局配置
layout, err := reader.GetAgentLayout()
// 检查面板可见性
visible := layout.SidebarVisible
// 获取面板宽度
width := layout.EditorWidthAITrackingReader
读取 AI 代码追踪和使用数据。
go
reader := client.AITracking()
// 列出 AI 代码哈希记录
hashes, err := reader.ListAICodeHashes()
// 按时间范围获取记录
records, err := reader.GetRecordsByTimeRange(startTime, endTime)
// 获取代码生成统计
stats, err := reader.GetCodeGenerationStats()IDEStateReader
读取 IDE 状态信息。
go
reader := client.IDEState()
// 获取 IDE 状态
state, err := reader.GetIDEState()
// 获取最近查看的文件
files, err := reader.GetRecentlyViewedFiles()辅助 Readers
AdminSettingsReader
读取管理员设置。
go
reader := client.AdminSettings()
// 获取所有管理员设置
settings, err := reader.GetAllSettings()
// 获取允许的模型列表
models, err := reader.GetAllowedModels()
// 检查模型是否被允许
allowed := reader.IsModelAllowed("gpt-4")CommandPaletteReader
读取命令面板数据。
go
reader := client.CommandPalette()
// 获取最常用的命令
commands, err := reader.GetMostUsedCommands(10)
// 搜索命令
commands, err := reader.SearchCommands("关键词")
// 获取统计信息
stats, err := reader.GetStats()RepositoryTrackerReader
读取仓库跟踪数据。
go
reader := client.RepositoryTracker()
// 列出所有跟踪的仓库
repos, err := reader.ListRepositories()
// 根据路径获取仓库信息
repo, err := reader.GetRepositoryByPath("/path/to/repo")
// 获取统计信息
stats, err := reader.GetStats()KVReader
通用键值对读取器,用于访问未被其他 Reader 覆盖的数据。
go
reader := client.KV()
// 读取任意键值对
value, err := reader.Get("some.key")使用建议
推荐使用统一客户端
go
// 推荐:使用统一客户端
client, err := cursor.NewCursorClient(config)
defer client.Close()
sessions, _ := client.Sessions().ListSessions()
composers, _ := client.Composers().ListComposers()直接使用 Reader(不推荐)
go
// 不推荐:直接创建 Reader
reader, err := cursor.NewSessionReader(config)
defer reader.Close()
sessions, _ := reader.ListSessions()下一步
- 学习如何使用 Query Builder 构建复杂查询
- 了解 数据导出 功能
- 探索 缓存机制 提升性能