核心概念
会话与消息管理
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) |