OpenCowork
核心概念

会话与消息管理

OpenCowork 的会话和消息存储机制。

会话与消息管理 / Sessions & Messages

数据模型 / Data Model

interface Session {
  id: string
  title: string
  model: string
  provider: string
  createdAt: number
  updatedAt: number
}

interface Message {
  id: string
  sessionId: string
  role: 'user' | 'assistant' | 'tool'
  content: MessageContent[]
  createdAt: number
}

持久化 / Persistence

会话和消息通过 IPC 调用持久化到 SQLite:

// 保存消息(fire-and-forget)
window.electron.ipc.invoke('db:saveMessage', message)

// 加载会话历史
const messages = await window.electron.ipc.invoke('db:getMessages', sessionId)

chat-store

chat-store 是会话管理的核心 Zustand store:

interface ChatStore {
  sessions: Session[]
  activeSessionId: string | null
  messages: Record<string, Message[]>

  createSession(): Session
  deleteSession(id: string): void
  addMessage(sessionId: string, message: Message): void
  updateMessage(sessionId: string, messageId: string, updates: Partial<Message>): void
}

消息内容类型 / Content Types

消息内容支持多种类型:

类型描述
text纯文本
thinking扩展思考内容
tool_use工具调用
tool_result工具结果
image图片(base64 或 URL)

On this page