session

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 3, 2026 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const (
	AutoCompactBuffer = 13000 // 自动压缩缓冲 token(CC: AUTOCOMPACT_BUFFER_TOKENS)
	SummaryReserve    = 20000 // 摘要生成保留的输出 token(CC: MAX_OUTPUT_TOKENS_FOR_SUMMARY)
	WarningBuffer     = 20000 // 警告阈值缓冲(CC: WARNING_THRESHOLD_BUFFER_TOKENS)
	MicroCompactSize  = 50000 // 单个工具输出超过 50KB 时微压缩
	MicroCompactHead  = 10240 // 微压缩保留头部 10KB
	MicroCompactTail  = 5120  // 微压缩保留尾部 5KB
	KeepRecentTurns   = 5     // 压缩时保留最近 5 轮
)

压缩相关常量(对标 CC src/services/compact/autoCompact.ts)

Variables

This section is empty.

Functions

func CompactMessages

func CompactMessages(messages []provider.Message) ([]provider.Message, string)

CompactMessages 压缩消息历史 策略:保留最近 KeepRecentTurns 轮对话,中间消息生成摘要

func MicroCompact

func MicroCompact(content string) string

MicroCompact 微压缩:截断过大的工具输出

func NeedsCompact

func NeedsCompact(totalTokens, maxContext int) bool

NeedsCompact 检查是否需要自动压缩 CC 公式:threshold = (maxContext - SummaryReserve) - AutoCompactBuffer 例:200K context → threshold = (200000 - 20000) - 13000 = 167000

Types

type CompactResult

type CompactResult struct {
	BeforeTokens int
	AfterTokens  int
	Compacted    bool
	Message      string
}

CompactResult 压缩结果

type IndexEntry

type IndexEntry struct {
	ID         string    `json:"id"`
	Name       string    `json:"name,omitempty"`
	Model      string    `json:"model"`
	Provider   string    `json:"provider,omitempty"`
	BaseURL    string    `json:"base_url,omitempty"`
	AuthSource string    `json:"auth_source,omitempty"`
	WorkDir    string    `json:"work_dir"`
	CreatedAt  time.Time `json:"created_at"`
	UpdatedAt  time.Time `json:"updated_at"`
	Turns      int       `json:"turns"`
	CostUSD    float64   `json:"cost_usd"`
}

IndexEntry 会话索引条目

type Session

type Session struct {
	ID        string             `json:"id"`
	Name      string             `json:"name,omitempty"`
	Model     string             `json:"model"`
	WorkDir   string             `json:"work_dir"`
	CreatedAt time.Time          `json:"created_at"`
	UpdatedAt time.Time          `json:"updated_at"`
	Messages  []provider.Message `json:"messages"`
	Turns     int                `json:"turns"`

	// 运行环境元数据(/resume 兼容性判断用,omitempty 兼容旧会话)
	Provider   string `json:"provider,omitempty"`
	BaseURL    string `json:"base_url,omitempty"`
	AuthSource string `json:"auth_source,omitempty"`

	// 费用信息
	TotalInputTokens  int     `json:"total_input_tokens"`
	TotalOutputTokens int     `json:"total_output_tokens"`
	TotalCostUSD      float64 `json:"total_cost_usd"`
}

Session 会话

func NewSession

func NewSession(cfg SessionConfig) *Session

NewSession 创建新会话(带完整运行环境元数据)

func (*Session) AddMessage

func (s *Session) AddMessage(msg provider.Message)

AddMessage 追加消息

func (*Session) ExportMarkdown

func (s *Session) ExportMarkdown() string

ExportMarkdown 导出为 Markdown

func (*Session) UpdateCost

func (s *Session) UpdateCost(inputTokens, outputTokens int, costUSD float64)

UpdateCost 更新费用信息

type SessionConfig

type SessionConfig struct {
	Model      string
	WorkDir    string
	Provider   string
	BaseURL    string
	AuthSource string
}

SessionConfig 创建会话所需的运行环境配置

type Store

type Store struct {
	// contains filtered or unexported fields
}

Store 会话持久化存储

func NewStore

func NewStore(xincodeDir string) *Store

NewStore 创建存储

func (*Store) Delete

func (s *Store) Delete(id string) error

Delete 删除会话

func (*Store) List

func (s *Store) List(workDir string) ([]IndexEntry, error)

List 列出所有会话(按工作目录过滤,时间倒序)

func (*Store) Load

func (s *Store) Load(id string) (*Session, error)

Load 加载会话

func (*Store) Save

func (s *Store) Save(sess *Session) error

Save 保存会话到文件(原子写入:先写 .tmp 再 rename)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL