mirror of
https://gitee.com/mateos/mateclaw.git
synced 2026-09-15 11:58:34 +08:00
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
374 lines
15 KiB
SQL
374 lines
15 KiB
SQL
-- 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;
|