Session Engine

Session Engine 是 SDK 的核心会话管理模块,负责管理独立的对话会话。

基本使用

import { ClaudeCodeSDK } from 'claude-code-sdk-ts'

const sdk = new ClaudeCodeSDK({
  llm: {
    provider: 'anthropic',
    apiKey: process.env.ANTHROPIC_API_KEY!,
    model: 'claude-sonnet-4-20250514',
  },
})

// 创建会话
const session = sdk.createSession()

// 发送消息
const response = await session.send('What is TypeScript?')
console.log(response.text)

// 继续对话(上下文自动累积)
const followUp = await session.send('What about generics?')
console.log(followUp.text)

会话配置

import { ClaudeCodeSDK } from 'claude-code-sdk-ts'

const sdk = new ClaudeCodeSDK({
  llm: { /* ... */ },
  session: {
    maxTurns: 100,           // 最大对话轮次
    timeout: 300000,         // 会话超时 (5min)
    idleTimeout: 60000,      // 空闲超时 (1min)
    autoSave: true,          // 自动保存
    autoSaveInterval: 30000, // 自动保存间隔
    storageDir: './sessions',// 存储目录
  },
})

会话持久化

import { SessionPersistence } from 'claude-code-sdk-ts'

// 列出所有保存的会话
const sessions = await SessionPersistence.list('./sessions')
console.log(sessions)
// [{ id: 'abc123', createdAt: '2024-...', messageCount: 5 }]

// 恢复会话
const session = await SessionPersistence.restore('./sessions/abc123.json', sdk)
const response = await session.send('Continue from where we left off')

归因 (Attribution)

归因组件追踪每个消息的来源,便于审计和调试:

const snapshots = session.getAttributionSnapshots()
snapshots.forEach(s => {
  console.log(`Turn ${s.turn}: ${s.mode} (${s.sources.join(', ')})`)
})