Skip to content

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.EditorWidth

AITrackingReader

读取 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()

下一步

Released under the MIT License.