-- 科研智能体会话与消息持久化表 -- 支持 ReAct 框架的多轮对话、工具调用与思考链存储 CREATE TABLE IF NOT EXISTS agent_sessions ( session_id TEXT PRIMARY KEY, title TEXT NOT NULL DEFAULT '', model TEXT NOT NULL DEFAULT '', turn_count INTEGER NOT NULL DEFAULT 0, last_error TEXT, summary TEXT, metadata TEXT, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, deleted_at DATETIME ); CREATE TABLE IF NOT EXISTS agent_messages ( id INTEGER PRIMARY KEY AUTOINCREMENT, session_id TEXT NOT NULL, turn_index INTEGER NOT NULL DEFAULT 0, step_index INTEGER NOT NULL DEFAULT 0, role TEXT NOT NULL CHECK(role IN ('system', 'user', 'assistant', 'tool')), content TEXT NOT NULL DEFAULT '', thought TEXT, tool_calls TEXT, tool_call_id TEXT, token_count INTEGER NOT NULL DEFAULT 0, metadata TEXT, raw_json TEXT, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (session_id) REFERENCES agent_sessions(session_id) ON DELETE CASCADE ); CREATE INDEX IF NOT EXISTS idx_agent_messages_session ON agent_messages(session_id); CREATE INDEX IF NOT EXISTS idx_agent_messages_turn ON agent_messages(session_id, turn_index); CREATE INDEX IF NOT EXISTS idx_agent_sessions_updated ON agent_sessions(updated_at) WHERE deleted_at IS NULL;