mateclaw/mateclaw-server/src/main/resources/db/schema-mysql.sql
matevip 579d60125b Initial commit: MateClaw — Java + Vue 3 AI Assistant System
Full-stack AI assistant built on Spring AI Alibaba.
Features: ReAct Agent, Plan-and-Execute, MCP Protocol, Multi-Model, Multi-Channel.

Apache-2.0 License
2026-04-04 19:03:49 +08:00

374 lines
15 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- MateClaw 数据库初始化脚本MySQL / MariaDB 专用)
-- 用户表
CREATE TABLE IF NOT EXISTS mate_user (
id BIGINT NOT NULL PRIMARY KEY,
username VARCHAR(64) NOT NULL UNIQUE,
password VARCHAR(200) NOT NULL,
nickname VARCHAR(64),
avatar VARCHAR(256),
email VARCHAR(128),
role VARCHAR(32) NOT NULL DEFAULT 'user',
enabled TINYINT(1) NOT NULL DEFAULT 1,
create_time DATETIME NOT NULL,
update_time DATETIME NOT NULL,
deleted INT NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Agent 配置表
CREATE TABLE IF NOT EXISTS mate_agent (
id BIGINT NOT NULL PRIMARY KEY,
name VARCHAR(128) NOT NULL,
description TEXT,
agent_type VARCHAR(32) NOT NULL DEFAULT 'react',
system_prompt TEXT,
model_name VARCHAR(128),
max_iterations INT NOT NULL DEFAULT 10,
enabled TINYINT(1) NOT NULL DEFAULT 1,
icon VARCHAR(256),
tags VARCHAR(256),
create_time DATETIME NOT NULL,
update_time DATETIME NOT NULL,
deleted INT NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 模型配置表
CREATE TABLE IF NOT EXISTS mate_model_config (
id BIGINT NOT NULL PRIMARY KEY,
name VARCHAR(128) NOT NULL,
provider VARCHAR(64) NOT NULL DEFAULT 'dashscope',
model_name VARCHAR(128) NOT NULL,
description TEXT,
temperature DOUBLE,
max_tokens INT,
top_p DOUBLE,
builtin TINYINT(1) NOT NULL DEFAULT 1,
enabled TINYINT(1) NOT NULL DEFAULT 1,
is_default TINYINT(1) NOT NULL DEFAULT 0,
max_input_tokens INT DEFAULT 0,
enable_search TINYINT(1) DEFAULT 0,
search_strategy VARCHAR(32) DEFAULT NULL,
create_time DATETIME NOT NULL,
update_time DATETIME NOT NULL,
deleted INT NOT NULL DEFAULT 0,
INDEX idx_model_config_model_name (model_name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 模型 Provider 表
CREATE TABLE IF NOT EXISTS mate_model_provider (
provider_id VARCHAR(64) NOT NULL PRIMARY KEY,
name VARCHAR(128) NOT NULL,
api_key_prefix VARCHAR(32),
chat_model VARCHAR(64),
api_key VARCHAR(256),
base_url VARCHAR(512),
generate_kwargs TEXT,
is_custom TINYINT(1) NOT NULL DEFAULT 0,
is_local TINYINT(1) NOT NULL DEFAULT 0,
support_model_discovery TINYINT(1) NOT NULL DEFAULT 0,
support_connection_check TINYINT(1) NOT NULL DEFAULT 0,
freeze_url TINYINT(1) NOT NULL DEFAULT 0,
require_api_key TINYINT(1) NOT NULL DEFAULT 1,
create_time DATETIME NOT NULL,
update_time DATETIME NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 系统设置表
CREATE TABLE IF NOT EXISTS mate_system_setting (
id BIGINT NOT NULL PRIMARY KEY,
setting_key VARCHAR(128) NOT NULL UNIQUE,
setting_value TEXT,
description VARCHAR(256),
create_time DATETIME NOT NULL,
update_time DATETIME NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 技能表
CREATE TABLE IF NOT EXISTS mate_skill (
id BIGINT NOT NULL PRIMARY KEY,
name VARCHAR(128) NOT NULL,
description TEXT,
skill_type VARCHAR(32) NOT NULL DEFAULT 'dynamic',
icon VARCHAR(256),
version VARCHAR(32),
author VARCHAR(64),
config_json TEXT,
source_code TEXT,
skill_content TEXT,
enabled TINYINT(1) NOT NULL DEFAULT 1,
builtin TINYINT(1) NOT NULL DEFAULT 0,
tags VARCHAR(256),
create_time DATETIME NOT NULL,
update_time DATETIME NOT NULL,
deleted INT NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 工具表
CREATE TABLE IF NOT EXISTS mate_tool (
id BIGINT NOT NULL PRIMARY KEY,
name VARCHAR(128) NOT NULL,
display_name VARCHAR(128),
description TEXT,
tool_type VARCHAR(32) NOT NULL DEFAULT 'builtin',
bean_name VARCHAR(128),
icon VARCHAR(256),
mcp_endpoint VARCHAR(256),
params_schema TEXT,
enabled TINYINT(1) NOT NULL DEFAULT 1,
builtin TINYINT(1) NOT NULL DEFAULT 0,
create_time DATETIME NOT NULL,
update_time DATETIME NOT NULL,
deleted INT NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 渠道表
CREATE TABLE IF NOT EXISTS mate_channel (
id BIGINT NOT NULL PRIMARY KEY,
name VARCHAR(128) NOT NULL,
channel_type VARCHAR(32) NOT NULL,
agent_id BIGINT,
bot_prefix VARCHAR(64),
config_json TEXT,
enabled TINYINT(1) NOT NULL DEFAULT 0,
description VARCHAR(256),
create_time DATETIME NOT NULL,
update_time DATETIME NOT NULL,
deleted INT NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 会话表
CREATE TABLE IF NOT EXISTS mate_conversation (
id BIGINT NOT NULL PRIMARY KEY,
conversation_id VARCHAR(64) NOT NULL UNIQUE,
title VARCHAR(256),
agent_id BIGINT,
username VARCHAR(64),
message_count INT NOT NULL DEFAULT 0,
last_message TEXT,
last_active_time DATETIME,
stream_status VARCHAR(16) NOT NULL DEFAULT 'idle',
create_time DATETIME NOT NULL,
update_time DATETIME NOT NULL,
deleted INT NOT NULL DEFAULT 0,
INDEX idx_conversation_username (username)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 消息表
CREATE TABLE IF NOT EXISTS mate_message (
id BIGINT NOT NULL PRIMARY KEY,
conversation_id VARCHAR(64) NOT NULL,
role VARCHAR(32) NOT NULL,
content TEXT,
content_parts TEXT,
tool_name VARCHAR(128),
token_usage INT,
prompt_tokens INT DEFAULT 0,
completion_tokens INT DEFAULT 0,
runtime_model VARCHAR(128),
runtime_provider VARCHAR(64),
status VARCHAR(32) NOT NULL DEFAULT 'completed',
metadata JSON COMMENT '存储 toolCalls, plan, currentPhase, pendingApproval 等元数据',
create_time DATETIME NOT NULL,
update_time DATETIME NOT NULL,
deleted INT NOT NULL DEFAULT 0,
INDEX idx_message_conversation (conversation_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 执行计划表
CREATE TABLE IF NOT EXISTS mate_plan (
id BIGINT NOT NULL PRIMARY KEY,
agent_id VARCHAR(64),
goal TEXT,
status VARCHAR(32) NOT NULL DEFAULT 'pending',
total_steps INT NOT NULL DEFAULT 0,
completed_steps INT NOT NULL DEFAULT 0,
summary TEXT,
start_time DATETIME,
end_time DATETIME,
create_time DATETIME NOT NULL,
update_time DATETIME NOT NULL,
deleted INT NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 子计划步骤表
CREATE TABLE IF NOT EXISTS mate_sub_plan (
id BIGINT NOT NULL PRIMARY KEY,
plan_id BIGINT NOT NULL,
step_index INT NOT NULL,
description TEXT,
status VARCHAR(32) NOT NULL DEFAULT 'pending',
result TEXT,
start_time DATETIME,
end_time DATETIME,
create_time DATETIME NOT NULL,
update_time DATETIME NOT NULL,
deleted INT NOT NULL DEFAULT 0,
INDEX idx_sub_plan_plan_id (plan_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 定时任务表
CREATE TABLE IF NOT EXISTS mate_cron_job (
id BIGINT NOT NULL PRIMARY KEY,
name VARCHAR(128) NOT NULL,
cron_expression VARCHAR(128) NOT NULL,
timezone VARCHAR(64) NOT NULL DEFAULT 'Asia/Shanghai',
agent_id BIGINT NOT NULL,
task_type VARCHAR(16) NOT NULL DEFAULT 'text',
trigger_message TEXT,
request_body TEXT,
enabled TINYINT(1) NOT NULL DEFAULT 1,
next_run_time DATETIME,
last_run_time DATETIME,
create_time DATETIME NOT NULL,
update_time DATETIME NOT NULL,
deleted INT NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 渠道会话存储表
CREATE TABLE IF NOT EXISTS mate_channel_session (
id BIGINT NOT NULL PRIMARY KEY,
conversation_id VARCHAR(128) NOT NULL UNIQUE,
channel_type VARCHAR(32) NOT NULL,
target_id VARCHAR(512) NOT NULL,
sender_id VARCHAR(128),
sender_name VARCHAR(128),
channel_id BIGINT,
last_active_time DATETIME NOT NULL,
create_time DATETIME NOT NULL,
update_time DATETIME NOT NULL,
deleted INT NOT NULL DEFAULT 0,
INDEX idx_channel_session_type (channel_type),
INDEX idx_channel_session_channel_id (channel_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 工作区文件表Agent 级 Markdown 文档管理)
CREATE TABLE IF NOT EXISTS mate_workspace_file (
id BIGINT NOT NULL PRIMARY KEY,
agent_id BIGINT NOT NULL,
filename VARCHAR(256) NOT NULL,
content LONGTEXT,
file_size BIGINT NOT NULL DEFAULT 0,
enabled TINYINT(1) NOT NULL DEFAULT 0,
sort_order INT NOT NULL DEFAULT 0,
create_time DATETIME NOT NULL,
update_time DATETIME NOT NULL,
deleted INT NOT NULL DEFAULT 0,
INDEX idx_workspace_file_agent (agent_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- ==================== MCP Server 管理 ====================
CREATE TABLE IF NOT EXISTS mate_mcp_server (
id BIGINT NOT NULL PRIMARY KEY,
name VARCHAR(128) NOT NULL,
description TEXT,
transport VARCHAR(32) NOT NULL DEFAULT 'stdio',
url VARCHAR(512),
headers_json TEXT,
command VARCHAR(512),
args_json TEXT,
env_json TEXT,
cwd VARCHAR(512),
enabled TINYINT(1) NOT NULL DEFAULT 1,
connect_timeout_seconds INT NOT NULL DEFAULT 30,
read_timeout_seconds INT NOT NULL DEFAULT 30,
last_status VARCHAR(32) NOT NULL DEFAULT 'disconnected',
last_error TEXT,
last_connected_time DATETIME,
tool_count INT NOT NULL DEFAULT 0,
builtin TINYINT(1) NOT NULL DEFAULT 0,
create_time DATETIME NOT NULL,
update_time DATETIME NOT NULL,
deleted INT NOT NULL DEFAULT 0,
INDEX idx_mcp_server_enabled (enabled)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- ==================== 工具安全治理ToolGuard ====================
-- 工具审批表
CREATE TABLE IF NOT EXISTS mate_tool_approval (
id BIGINT NOT NULL PRIMARY KEY,
pending_id VARCHAR(32) NOT NULL UNIQUE,
conversation_id VARCHAR(128) NOT NULL,
user_id VARCHAR(64),
agent_id VARCHAR(64),
channel_type VARCHAR(32),
requester_name VARCHAR(128),
reply_target VARCHAR(512),
tool_name VARCHAR(128) NOT NULL,
tool_arguments TEXT,
tool_call_payload TEXT,
tool_call_hash VARCHAR(64),
sibling_tool_calls TEXT,
summary TEXT,
findings_json TEXT,
max_severity VARCHAR(16),
status VARCHAR(32) NOT NULL DEFAULT 'PENDING',
resolved_by VARCHAR(64),
created_at DATETIME NOT NULL,
resolved_at DATETIME,
expire_at DATETIME,
create_time DATETIME NOT NULL,
update_time DATETIME NOT NULL,
deleted INT NOT NULL DEFAULT 0,
INDEX idx_tool_approval_conv (conversation_id),
INDEX idx_tool_approval_status (status),
INDEX idx_tool_approval_pending_id (pending_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 安全规则表
CREATE TABLE IF NOT EXISTS mate_tool_guard_rule (
id BIGINT NOT NULL PRIMARY KEY,
rule_id VARCHAR(64) NOT NULL UNIQUE,
name VARCHAR(128) NOT NULL,
description TEXT,
tool_name VARCHAR(128),
param_name VARCHAR(128),
category VARCHAR(64) NOT NULL,
severity VARCHAR(16) NOT NULL,
decision VARCHAR(16) NOT NULL DEFAULT 'NEEDS_APPROVAL',
pattern VARCHAR(512) NOT NULL,
exclude_pattern VARCHAR(512),
remediation TEXT,
builtin TINYINT(1) NOT NULL DEFAULT 0,
enabled TINYINT(1) NOT NULL DEFAULT 1,
priority INT NOT NULL DEFAULT 100,
create_time DATETIME NOT NULL,
update_time DATETIME NOT NULL,
deleted INT NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 安全全局配置表
CREATE TABLE IF NOT EXISTS mate_tool_guard_config (
id BIGINT NOT NULL PRIMARY KEY,
enabled TINYINT(1) NOT NULL DEFAULT 1,
guard_scope VARCHAR(32) NOT NULL DEFAULT 'all',
guarded_tools_json TEXT,
denied_tools_json TEXT,
file_guard_enabled TINYINT(1) NOT NULL DEFAULT 1,
sensitive_paths_json TEXT,
create_time DATETIME NOT NULL,
update_time DATETIME NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 安全审计日志表
CREATE TABLE IF NOT EXISTS mate_tool_guard_audit_log (
id BIGINT NOT NULL PRIMARY KEY,
conversation_id VARCHAR(128),
agent_id VARCHAR(64),
user_id VARCHAR(64),
channel_type VARCHAR(32),
tool_name VARCHAR(128) NOT NULL,
tool_params_json TEXT,
decision VARCHAR(16) NOT NULL,
max_severity VARCHAR(16),
findings_json TEXT,
pending_id VARCHAR(32),
replay_payload_hash VARCHAR(64),
create_time DATETIME NOT NULL,
update_time DATETIME NOT NULL,
deleted INT NOT NULL DEFAULT 0,
INDEX idx_guard_audit_conv (conversation_id),
INDEX idx_guard_audit_time (create_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;