conversation_entity

package
v1.11.0 Latest Latest
Warning

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

Go to latest
Published: Jul 16, 2026 License: GPL-3.0 Imports: 2 Imported by: 0

Documentation

Index

Constants

View Source
const (
	StatusActive  = 1
	StatusDeleted = 2
)

状态常量

Variables

This section is empty.

Functions

This section is empty.

Types

type ContentBlock

type ContentBlock struct {
	Type       string `json:"type"` // "text" | "tool" | "agent" | "approval" | "thinking" | "error"
	Content    string `json:"content"`
	ToolName   string `json:"toolName,omitempty"`
	ToolInput  string `json:"toolInput,omitempty"`
	ToolCallID string `json:"toolCallId,omitempty"` // 跨 turn 还原 tool_calls 历史;老数据无此字段,前端兜底为塌缩消息
	Status     string `json:"status,omitempty"`     // "running" | "completed" | "error" | "canceled"
	// error 块字段:
	//   ErrorKind   — "rate_limit" | "server" | "network" | "auth" | "interrupted" | "unknown"
	//   ErrorDetail — 原始错误正文,UI 直接展示
	ErrorKind   string `json:"errorKind,omitempty"`
	ErrorDetail string `json:"errorDetail,omitempty"`
}

ContentBlock 前端内容块(用于持久化显示状态)

"error" 类型的 block 用于持久化对话级错误:

  • EventError 命中时由前端推入(含分类标签 + 原始错误正文)
  • 重试期间被关闭 tab/切会话/应用退出时,由前端 materializeRetryStatusAsError 把 retryStatus 物化成 kind=interrupted 的 ErrorBlock 落盘

历史回放(internal/ai/message_convert.go ToAgentMessages)必须跳过 type="error", 否则错误正文会作为 assistant 历史发回给 LLM。

type Conversation

type Conversation struct {
	ID           int64  `gorm:"column:id;primaryKey;autoIncrement"`
	Title        string `gorm:"column:title;type:varchar(255)"`
	ProviderType string `gorm:"column:provider_type;type:varchar(50);not null"`
	Model        string `gorm:"column:model;type:varchar(100)"`
	ProviderID   int64  `gorm:"column:provider_id"`
	SessionData  string `gorm:"column:session_data;type:text"`
	WorkDir      string `gorm:"column:work_dir;type:varchar(500)"`
	Status       int    `gorm:"column:status;default:1"`
	Createtime   int64  `gorm:"column:createtime"`
	Updatetime   int64  `gorm:"column:updatetime"`
}

Conversation 会话实体

func (*Conversation) GetSessionInfo

func (c *Conversation) GetSessionInfo() (*SessionInfo, error)

GetSessionInfo 获取会话数据

func (*Conversation) IsLocalCLI

func (c *Conversation) IsLocalCLI() bool

IsLocalCLI 是否为本地 CLI 模式

func (*Conversation) SetSessionInfo

func (c *Conversation) SetSessionInfo(info *SessionInfo) error

SetSessionInfo 设置会话数据

func (Conversation) TableName

func (Conversation) TableName() string

TableName GORM表名

type Message

type Message struct {
	ID             int64  `gorm:"column:id;primaryKey;autoIncrement"`
	ConversationID int64  `gorm:"column:conversation_id;index;not null"`
	Role           string `gorm:"column:role;type:varchar(20);not null"`
	Content        string `gorm:"column:content;type:text"`
	ToolCalls      string `gorm:"column:tool_calls;type:text"`
	ToolCallID     string `gorm:"column:tool_call_id;type:varchar(100)"`
	Blocks         string `gorm:"column:blocks;type:text"`
	TokenUsage     string `gorm:"column:token_usage;type:text"` // JSON: TokenUsage,仅 assistant 消息可能有
	SortOrder      int    `gorm:"column:sort_order;default:0"`
	Createtime     int64  `gorm:"column:createtime"`
}

Message 会话消息实体

func (*Message) GetBlocks

func (m *Message) GetBlocks() ([]ContentBlock, error)

GetBlocks 获取前端显示块

func (*Message) GetTokenUsage added in v1.3.0

func (m *Message) GetTokenUsage() (*TokenUsage, error)

GetTokenUsage 反序列化 token_usage 字段

func (*Message) SetBlocks

func (m *Message) SetBlocks(blocks []ContentBlock) error

SetBlocks 设置前端显示块

func (*Message) SetTokenUsage added in v1.3.0

func (m *Message) SetTokenUsage(u *TokenUsage) error

SetTokenUsage 序列化 token_usage 字段;nil 或全零值视为清空

func (Message) TableName

func (Message) TableName() string

TableName GORM表名

type SessionInfo

type SessionInfo struct {
	SessionID string `json:"session_id,omitempty"` // Claude CLI session ID
}

SessionInfo 会话数据(JSON)

type TokenUsage added in v1.3.0

type TokenUsage struct {
	InputTokens         int `json:"inputTokens,omitempty"`
	OutputTokens        int `json:"outputTokens,omitempty"`
	CacheCreationTokens int `json:"cacheCreationTokens,omitempty"`
	CacheReadTokens     int `json:"cacheReadTokens,omitempty"`
}

TokenUsage 一条 assistant 消息累计消耗的 token 数

Jump to

Keyboard shortcuts

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