根据AiAgent案例,设计库表
一、介绍
根据 AI Agent 的代码案例,设计用于解耦硬编码流程的数据库表。后续开发中将依据库表配置的流程要素(模型、提示词、顾问、工具等),动态实例化并编排出 AI Agent 服务。
二、库表设计
如图,为对应的Ai Agent 案例代码,映射出要拆分的库表设计;

第一步:自上而下,OpenAiApi 是最基础的单元,可被多个 OpenAiChatModel 复用;可单独拆分为 第一张表。
第二步:构建 OpenAiChatModel。该阶段需要 openAiApi、对话模型 model、以及 tool(MCP 工具)。其中 model 属于相对固定的资源,可直接落在 ai_client_model;而 openAiApi 与 MCP 工具 配置较为复杂,需要通过后续的 ai_client_config 进行 外部关联与衔接。
第三步:ChatClient 对话客户端的实例化依赖外部资源关联;其本表仅需 客户端唯一 ID 与 描述信息 等基础元数据。
第四步: 为 MCP 单独建表。MCP 是 Agent 能力的关键;其启动方式包含 stdio 与 sse,每种方式对应各自的 JSON 配置。
第五步:将 defaultSystem 系统提示词 独立拆分。提示词相当于智能体的“大脑”(不少实践将 AI Agent 视作 Prompt 的堆叠),因此需要专门的表来承载与版本化。
第六步:advisor 顾问角色 独立建表。Spring AI 通过顾问模式访问 上下文记忆 与 知识库,需为其提供专属的结构化配置。
第七步:设计 ai_client_config,用于配置并串联 api / model / client / prompt / mcp / advisor 的 衔接关系 与依赖拓扑。
第八步:
设计 ai_agent 与 ai_agent_flow_config。一个 AI Agent 可以 顺序或编排式 调用多个 AI Client,需以流程配置来描述编排关系。
第九步:设计 任务触达:ai_agent_task_schedule。通过定时任务(task)执行已配置的流程,例如:自动发帖、系统异常巡检、舆情风险检测、配置变更审计、运营报表生成等。
第十步:ai_client_rag_order 作为 知识库记录表,用于登记与管理上传的知识库资源,便于顾问角色进行检索与访问。
注意: 在 chat_client 客户端的初始化过程中也可注入 MCP 服务;同样地,在 chat_model 的构建阶段亦可配置 MCP。建议在 chat_model 层统一增加 MCP,以减少冗余与提升复用性。
三、库表细节
本系统基于 Spring AI 框架 构建,定位为一个 AI Agent 智能体平台。其核心特点是通过 数据库驱动的配置化方式,实现 AI 模型、客户端、工具及智能体的 解耦与自动实例化。
系统具备以下能力:
- 支持多种 AI 模型 的灵活接入;
- 集成 工具体系(MCP 协议),增强智能体功能;
- 提供 任务调度 能力,实现智能体的自动化执行。
这样的平台架构使得智能体能够以 配置即服务 的形式快速构建与扩展,满足多样化业务需求。

1. 智能体
1.1 ai_agent
CREATE TABLE `ai_agent` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`agent_id` varchar(64) NOT NULL COMMENT '智能体ID',
`agent_name` varchar(50) NOT NULL COMMENT '智能体名称',
`description` varchar(255) DEFAULT NULL COMMENT '描述',
`channel` varchar(32) DEFAULT NULL COMMENT '渠道类型(agent,chat_stream)',
`status` tinyint(1) DEFAULT '1' COMMENT '状态(0:禁用,1:启用)',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_agent_id` (`agent_id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='AI智能体配置表';表说明: AI 智能体配置表 是系统的核心表,用于存储智能体的基本信息。每个智能体代表一个可独立运行的 AI 服务单元,并可通过多种渠道(如 agent 或 chat_stream)与外部进行交互。智能体作为系统的 顶层实体,能够关联多个客户端,进而组成完整的 工作流,实现复杂任务的编排与执行。
1.2 ai_agent_task_schedule
CREATE TABLE `ai_agent_task_schedule` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`agent_id` bigint NOT NULL COMMENT '智能体ID',
`task_name` varchar(64) DEFAULT NULL COMMENT '任务名称',
`description` varchar(255) DEFAULT NULL COMMENT '任务描述',
`cron_expression` varchar(50) NOT NULL COMMENT '时间表达式(如: 0/3 * * * * *)',
`task_param` text COMMENT '任务入参配置(JSON格式)',
`status` tinyint(1) DEFAULT '1' COMMENT '状态(0:无效,1:有效)',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_agent_id` (`agent_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='智能体任务调度配置表';表说明:智能体任务调度配置表 用于定义和管理智能体的定时任务。通过 Cron 表达式 配置任务的执行频率,实现智能体的自动化运行。典型应用包括:定期生成业务报告、系统状态监控、自动回复消息等。任务参数以 JSON 格式 存储,支持灵活扩展和动态配置,能够满足多样化的任务需求。
1.3 ai_agent_flow_config
REATE TABLE `ai_agent_flow_config` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`agent_id` bigint NOT NULL COMMENT '智能体ID',
`client_id` bigint NOT NULL COMMENT '客户端ID',
`sequence` int NOT NULL COMMENT '序列号(执行顺序)',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_agent_client_seq` (`agent_id`,`client_id`,`sequence`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='智能体-客户端关联表';表说明:智能体-客户端关联表 用于定义智能体的工作流程。通过 sequence 字段 指定多个客户端的执行顺序,从而实现复杂的流程编排。在执行时,一个智能体可以按照预设顺序依次调用多个客户端,形成完整的 处理链路,以支持复杂的 多步骤 AI 任务处理。
2. 功能表
2.1 ai_client_api
CREATE TABLE `ai_client_api` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '自增主键ID',
`api_id` varchar(64) NOT NULL COMMENT '全局唯一配置ID',
`base_url` varchar(255) NOT NULL COMMENT 'API基础URL',
`api_key` varchar(255) NOT NULL COMMENT 'API密钥',
`completions_path` varchar(255) NOT NULL COMMENT '补全API路径',
`embeddings_path` varchar(255) NOT NULL COMMENT '嵌入API路径',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:0-禁用,1-启用',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_api_id` (`api_id`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='OpenAI API配置表';表说明: OpenAI API 配置表 用于存储与外部 AI 服务提供商的连接信息,是系统与 AI 服务通信的基础配置。表中包含 API 密钥、基础 URL 以及各类 API 路径配置,可支持不同的 API 端点(如 补全、嵌入 等)。作为系统中最基础的配置单元,该表的记录可被多个模型共享使用,从而避免重复配置并提升可维护性。
2.2 ai_client_model
CREATE TABLE `ai_client_model` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '自增主键ID',
`model_id` varchar(64) NOT NULL COMMENT '全局唯一模型ID',
`api_id` varchar(64) NOT NULL COMMENT '关联的API配置ID',
`model_name` varchar(64) NOT NULL COMMENT '模型名称',
`model_type` varchar(32) NOT NULL COMMENT '模型类型:openai、deepseek、claude',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:0-禁用,1-启用',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_model_id` (`model_id`),
KEY `idx_api_config_id` (`api_id`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='聊天模型配置表';表说明:聊天模型配置表 用于定义系统可用的 AI 模型。通过与 API 配置表 关联,可指定具体使用的模型(如 GPT-4、Claude 等)。该表支持多种模型类型(如 openai、deepseek、claude 等),使系统能够根据任务需求灵活选择不同的 AI 模型来处理,从而提升系统的 适应性 与 整体性能。
2.3 ai_client
CREATE TABLE `ai_client` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`client_id` varchar(64) NOT NULL COMMENT '客户端ID',
`client_name` varchar(50) NOT NULL COMMENT '客户端名称',
`description` varchar(1024) DEFAULT NULL COMMENT '描述',
`status` tinyint(1) DEFAULT '1' COMMENT '状态(0:禁用,1:启用)',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `client_id` (`client_id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='AI客户端配置表';表说明: AI 客户端配置表 用于存储对话客户端的基本信息。客户端是系统中的 功能单元,能够独立处理特定类型的 AI 任务。通过与配置表的关联,客户端可连接 模型、提示词、工具 等资源,从而形成一个完整的功能模块。多个客户端之间可以组合编排,构建出 智能体工作流,以实现复杂的业务逻辑与任务处理。
3. 工具表
3.1 顾问角色
REATE TABLE `ai_client_advisor` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`advisor_id` varchar(64) NOT NULL COMMENT '顾问ID',
`advisor_name` varchar(50) NOT NULL COMMENT '顾问名称',
`advisor_type` varchar(50) NOT NULL COMMENT '顾问类型(PromptChatMemory/RagAnswer/SimpleLoggerAdvisor等)',
`order_num` int DEFAULT '0' COMMENT '顺序号',
`ext_param` varchar(2048) DEFAULT NULL COMMENT '扩展参数配置,json 记录',
`status` tinyint(1) DEFAULT '1' COMMENT '状态(0:禁用,1:启用)',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_advisor_id` (`advisor_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='顾问配置表';表说明: 顾问配置表 用于定义系统中的 顾问角色。在 Spring AI 框架 中,顾问是访问 记忆上下文 与 知识库资源 的关键组件。
该表支持多种顾问类型,例如:
- 对话记忆管理(PromptChatMemory)
- 知识库检索(RagAnswer)
- 日志记录(SimpleLoggerAdvisor)
通过顾问的扩展,AI 客户端可以获得更强的能力,包括 上下文管理、知识检索 及其他增强功能,从而更好地支持复杂的对话和业务场景。
3.2 ai_client_system_prompt
CREATE TABLE `ai_client_system_prompt` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`prompt_id` varchar(64) NOT NULL COMMENT '提示词ID',
`prompt_name` varchar(50) NOT NULL COMMENT '提示词名称',
`prompt_content` text NOT NULL COMMENT '提示词内容',
`description` varchar(1024) DEFAULT NULL COMMENT '描述',
`status` tinyint(1) DEFAULT '1' COMMENT '状态(0:禁用,1:启用)',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_prompt_id` (`prompt_id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='系统提示词配置表';表说明:系统提示词配置表 用于存储 AI 模型的系统提示词。提示词是智能体的“大脑”,决定了 AI 的 行为方式 和 回答风格。通过精心设计与配置提示词,可以有效引导 AI 生成更符合预期的回答。因此,系统提示词是 AI Agent 的核心组成部分,对 AI 的 输出质量 起着决定性作用。
3.3 ai_client_tool_mcp
CREATE TABLE `ai_client_tool_mcp` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`mcp_id` varchar(64) NOT NULL COMMENT 'MCP名称',
`mcp_name` varchar(50) NOT NULL COMMENT 'MCP名称',
`transport_type` varchar(20) NOT NULL COMMENT '传输类型(sse/stdio)',
`transport_config` varchar(1024) DEFAULT NULL COMMENT '传输配置(sse/stdio)',
`request_timeout` int DEFAULT '180' COMMENT '请求超时时间(分钟)',
`status` tinyint(1) DEFAULT '1' COMMENT '状态(0:禁用,1:启用)',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_mcp_id` (`mcp_id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='MCP客户端配置表';表说明: MCP 客户端配置表 用于定义系统中的 工具集成配置。MCP(Model Control Protocol)是实现 AI Agent 功能 的关键组件,使 AI 能够调用外部工具与服务。该表支持多种 传输类型(如 sse / stdio),可灵活配置不同的通信方式。借助 MCP 工具,AI 可以执行实际操作,如 数据查询、API 调用 等,是支撑智能体实现真正执行能力的 核心模块。
4. 关系衔接表
CREATE TABLE `ai_client_config` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`source_type` varchar(32) NOT NULL COMMENT '源类型(model、client)',
`source_id` varchar(64) NOT NULL COMMENT '源ID(如 chatModelId、chatClientId 等)',
`target_type` varchar(32) NOT NULL COMMENT '目标类型(model、client)',
`target_id` varchar(64) NOT NULL COMMENT '目标ID(如 openAiApiId、chatModelId、systemPromptId、advisorId 等)',
`ext_param` varchar(1024) DEFAULT NULL COMMENT '扩展参数(JSON格式)',
`status` tinyint(1) DEFAULT '1' COMMENT '状态(0:禁用,1:启用)',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_source_id` (`source_id`),
KEY `idx_target_id` (`target_id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='AI客户端统一关联配置表';表说明:AI 客户端统一关联配置表 是系统的 核心关联表,用于定义各组件之间的关系。
通过 source_type / source_id 与 target_type / target_id 字段,可以灵活描述不同组件间的映射关系,例如:
- 模型与 API 的关联
- 客户端与模型 的关联
- 客户端与提示词 的关联
这种统一的设计方式为系统带来高度的 灵活性 与 可配置性,能够支持复杂的组件组合与动态扩展,满足多样化的业务场景。