- 新增chat_sessions和chat_groups数据库表 - 更新skill_handler和model相关接口 - 修改main.go注册新路由 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
106 lines
3.9 KiB
SQL
106 lines
3.9 KiB
SQL
-- =====================================================
|
|
-- Agent System Database Migration
|
|
-- Run this script if you want vector-based memory storage
|
|
-- Note: Requires pgvector extension for PostgreSQL
|
|
-- =====================================================
|
|
|
|
-- Enable pgvector extension (PostgreSQL only)
|
|
-- CREATE EXTENSION IF NOT EXISTS vector;
|
|
|
|
-- Agent Memory with Vector Embedding (Optional - for vector search)
|
|
-- This table is optional. If not using vector search, use agent_memories table instead.
|
|
-- CREATE TABLE IF NOT EXISTS agent_memory_vectors (
|
|
-- id VARCHAR(191) PRIMARY KEY,
|
|
-- agent_id VARCHAR(191) NOT NULL,
|
|
-- user_id VARCHAR(191),
|
|
-- content TEXT NOT NULL,
|
|
-- embedding vector(1536), -- Adjust dimension based on your embedding model
|
|
-- memory_type VARCHAR(20), -- experience/preference/conversation
|
|
-- importance INT DEFAULT 5,
|
|
-- created_at DATETIME(3),
|
|
-- updated_at DATETIME(3),
|
|
-- INDEX idx_agent_vector USING ivfflat (agent_id, embedding vector_cosine_ops),
|
|
-- INDEX idx_importance (agent_id, importance DESC)
|
|
-- );
|
|
|
|
-- For MySQL (without vector support, use text search instead)
|
|
CREATE TABLE IF NOT EXISTS agent_memory_vectors (
|
|
id VARCHAR(191) PRIMARY KEY,
|
|
agent_id VARCHAR(191) NOT NULL,
|
|
user_id VARCHAR(191),
|
|
content TEXT NOT NULL,
|
|
embedding_text TEXT, -- Store serialized vector for MySQL
|
|
memory_type VARCHAR(20),
|
|
importance INT DEFAULT 5,
|
|
created_at DATETIME(3),
|
|
updated_at DATETIME(3),
|
|
INDEX idx_agent_memory_agent (agent_id),
|
|
INDEX idx_agent_memory_user (agent_id, user_id),
|
|
INDEX idx_importance (agent_id, importance DESC)
|
|
);
|
|
|
|
-- Agent Task Indexes
|
|
CREATE INDEX IF NOT EXISTS idx_agent_tasks_agent_user ON agent_tasks(agent_id, user_id);
|
|
CREATE INDEX IF NOT EXISTS idx_agent_tasks_session ON agent_tasks(session_id);
|
|
CREATE INDEX IF NOT EXISTS idx_agent_tasks_status ON agent_tasks(status);
|
|
CREATE INDEX IF NOT EXISTS idx_agent_tasks_created ON agent_tasks(created_at DESC);
|
|
|
|
-- Agent Team Indexes
|
|
CREATE INDEX IF NOT EXISTS idx_agent_team_supervisor ON agent_teams(supervisor_agent_id);
|
|
CREATE INDEX IF NOT EXISTS idx_agent_team_member ON agent_teams(member_agent_id);
|
|
|
|
-- Chat Sessions Table
|
|
CREATE TABLE IF NOT EXISTS chat_sessions (
|
|
id VARCHAR(36) PRIMARY KEY,
|
|
user_id VARCHAR(36) NOT NULL,
|
|
agent_id VARCHAR(36),
|
|
title VARCHAR(255),
|
|
model_id VARCHAR(36),
|
|
status VARCHAR(20) DEFAULT 'active',
|
|
created_at DATETIME(3),
|
|
updated_at DATETIME(3),
|
|
INDEX idx_chat_sessions_user (user_id),
|
|
INDEX idx_chat_sessions_agent (agent_id),
|
|
INDEX idx_chat_sessions_updated (updated_at DESC)
|
|
);
|
|
|
|
-- Chat Messages Table
|
|
CREATE TABLE IF NOT EXISTS chat_messages (
|
|
id VARCHAR(36) PRIMARY KEY,
|
|
session_id VARCHAR(36) NOT NULL,
|
|
role VARCHAR(20),
|
|
content TEXT,
|
|
tokens_used INT DEFAULT 0,
|
|
duration_ms INT DEFAULT 0,
|
|
metadata TEXT,
|
|
created_at DATETIME(3),
|
|
INDEX idx_chat_messages_session (session_id),
|
|
INDEX idx_chat_messages_created (created_at ASC)
|
|
);
|
|
|
|
-- Chat Groups Table
|
|
CREATE TABLE IF NOT EXISTS chat_groups (
|
|
id VARCHAR(36) PRIMARY KEY,
|
|
user_id VARCHAR(36) NOT NULL,
|
|
name VARCHAR(100) NOT NULL,
|
|
description TEXT,
|
|
agent_ids TEXT,
|
|
status VARCHAR(20) DEFAULT 'active',
|
|
created_at DATETIME(3),
|
|
updated_at DATETIME(3),
|
|
INDEX idx_chat_groups_user (user_id)
|
|
);
|
|
|
|
-- Agent Memory Indexes
|
|
CREATE INDEX IF NOT EXISTS idx_agent_memory_agent ON agent_memories(agent_id);
|
|
CREATE INDEX IF NOT EXISTS idx_agent_memory_user ON agent_memories(agent_id, user_id);
|
|
CREATE INDEX IF NOT EXISTS idx_agent_memory_type ON agent_memories(memory_type);
|
|
|
|
-- Agent Skills Indexes
|
|
CREATE INDEX IF NOT EXISTS idx_agent_skills_agent ON agent_skills(agent_id);
|
|
CREATE INDEX IF NOT EXISTS idx_agent_skills_skill ON agent_skills(skill_id);
|
|
|
|
-- Agent Knowledge Base Indexes
|
|
CREATE INDEX IF NOT EXISTS idx_agent_kb_agent ON agent_knowledge_bases(agent_id);
|
|
CREATE INDEX IF NOT EXISTS idx_agent_kb_kb ON agent_knowledge_bases(knowledge_base_id);
|