news 2026/6/12 14:30:05

DeepSeek RAGMCP + Agent智能体项目 —— 引入定时任务组件并完成管理端接口

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DeepSeek RAGMCP + Agent智能体项目 —— 引入定时任务组件并完成管理端接口

一、前言

这一节将引入扳手工程中的定时任务,可用于自动定时执行发帖以及其他MCP服务,原理很简单,就是通过定时执行调度器,同时向调度器中传预制的数据,最终会让调度器定时执行相同的任务。

二、定时任务

1.配置文件

这里面主要要去完成关于定时部分的配置,比如时间间隔等,这个配置文件最终会写入扳手工程的定时任务配置类中。

# 小傅哥扳手通用组件配置 xfg: wrench: # 任务调度配置 task: job: enabled: true pool-size: 5 thread-name-prefix: "test-task-scheduler-" wait-for-tasks-to-complete-on-shutdown: true await-termination-seconds: 30 refresh-interval: 30000 clean-invalid-tasks-cron: "0 0/5 * * * ?"

2.填充定时任务

其实整体流程在前言部分就已经讲完了,现在主要是看看怎么实施,首先是定时执行调度器,这个需要借助扳手工程中的TaskScheduleVO来实现,这个值对象中主要包含以下内容,很显然的我们需要借助数据库中对定时任务的配置信息来填充VO。

@Data public class TaskScheduleVO { /** 任务ID */ private Long id; /** 任务描述 */ private String description; /** Cron表达式 */ private String cronExpression; /** 任务参数 */ private String taskParam; /** 任务执行器函数式接口 */ private Supplier<Runnable> taskExecutor; public TaskScheduleVO() { } /** * 便捷方法:设置任务执行逻辑 * @param taskLogic 任务执行逻辑 */ public void setTaskLogic(Runnable taskLogic) { this.taskExecutor = () -> taskLogic; } /** * 便捷方法:设置带参数的任务执行逻辑 * @param taskLogic 任务执行逻辑,接收taskId和taskParam */ public void setTaskLogic(BiConsumer<Long, String> taskLogic) { this.taskExecutor = () -> () -> taskLogic.accept(this.id, this.taskParam); } @Override public String toString() { return "TaskScheduleVO{" + "id=" + id + ", description='" + description + '\'' + ", cronExpression='" + cronExpression + '\'' + ", taskParam='" + taskParam + '\'' + ", hasTaskExecutor=" + (taskExecutor != null) + '}'; } }

因此我们需要去仓储层新增一些查询方法,不过还是比较简单的,所以这里就不细讲了。

最核心的是下面的AgentTaskJob类,在这个类中我们要实现ITaskDataProvider接口,这个接口用于提供定时任务的数据,因此TaskScheduleVO就要在这里装填了,同时在taskLogic字段中要填充执行调度的方法。

@Service @Slf4j public class AgentTaskJob implements ITaskDataProvider { @Resource private ITaskService taskService; @Resource private IAgentDispatchService dispatchService; @Override public List<TaskScheduleVO> queryAllValidTaskSchedule() { List<AiAgentTaskScheduleVO> aiAgentTaskScheduleVOS = taskService.queryAllValidTaskSchedule(); List<TaskScheduleVO> result = new ArrayList<>(); for (AiAgentTaskScheduleVO aiAgentTaskScheduleVO : aiAgentTaskScheduleVOS) { TaskScheduleVO taskScheduleVO = new TaskScheduleVO(); taskScheduleVO.setId(aiAgentTaskScheduleVO.getId()); taskScheduleVO.setDescription(aiAgentTaskScheduleVO.getDescription()); taskScheduleVO.setCronExpression(aiAgentTaskScheduleVO.getCronExpression()); taskScheduleVO.setTaskParam(aiAgentTaskScheduleVO.getTaskParam()); taskScheduleVO.setTaskLogic(() -> { try { dispatchService.dispatch( ExecuteCommandEntity.builder() .aiAgentId(aiAgentTaskScheduleVO.getAgentId()) .sessionId(String.valueOf(System.nanoTime())) .maxStep(1) .build(), new ResponseBodyEmitter()); } catch (Exception e) { log.error("任务执行失败", e); } }); result.add(taskScheduleVO); } return result; } @Override public List<Long> queryAllInvalidTaskScheduleIds() { return taskService.queryAllInvalidTaskScheduleIds(); } }

3.定时任务走的固定执行链

这是一个新的执行模式,与ReAct Loop和Plan-and-Execute是同级的,是最简单的一种,单纯就是和一个AgentClient对话,并且没有预设任何的提示词,提示词仅为用户的(用户在数据库中固定设置的),也没有记忆,单纯只有一轮对话,但是可以调MCP工具,这个需要依靠在数据库中配置。

/** * @author 印东升 * @description * @create 2026-06-10 17:46 */ @Slf4j @Service("fixedAgentExecuteStrategy") public class FixedAgentExecuteStrategy implements IExecuteStrategy { @Resource protected ApplicationContext applicationContext; @Resource protected IAgentRepository repository; public static final String CHAT_MEMORY_CONVERSATION_ID_KEY = "chat_memory_conversation_id"; public static final String CHAT_MEMORY_RETRIEVE_SIZE_KEY = "chat_memory_response_size"; @Override public void execute(ExecuteCommandEntity requestParam, ResponseBodyEmitter emitter) throws Exception { List<AiAgentClientFlowConfigVO> agentClientFlowConfigVOList = repository.queryAiClientByAgentId(requestParam.getAiAgentId()); String content = ""; for (AiAgentClientFlowConfigVO configVO : agentClientFlowConfigVOList) { ChatClient chatClient = getChatClientByClientId(configVO.getClientId()); content = chatClient.prompt(requestParam.getMessage() + "," + content) .system(s -> s.param("current_date", LocalDate.now().toString())) .advisors(a -> a .param(CHAT_MEMORY_RETRIEVE_SIZE_KEY, requestParam.getSessionId()) .param(CHAT_MEMORY_RETRIEVE_SIZE_KEY, 100)) .call().content(); } } protected ChatClient getChatClientByClientId(String clientId) { return getBean(AiAgentEnumVO.AI_CLIENT.getBeanName(clientId)); } protected <T> T getBean(String beanName) { return (T) applicationContext.getBean(beanName); } }

三、管理端接口

其实就是写CRUD的一个一个接口,一堆Controller,没有复杂的业务逻辑。

同时使用flowgram.ai框架去做前端页面对接,最终效果如下:

完结撒花!!!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/12 14:27:02

告别模糊画面:用Waifu2x-Extension-GUI实现图片视频智能高清化

告别模糊画面&#xff1a;用Waifu2x-Extension-GUI实现图片视频智能高清化 【免费下载链接】Waifu2x-Extension-GUI Video, Image and GIF upscale/enlarge(Super-Resolution) and Video frame interpolation. Achieved with Waifu2x, Real-ESRGAN, Real-CUGAN, RTX Video Supe…

作者头像 李华
网站建设 2026/6/12 14:25:53

5分钟快速上手:Unity游戏汉化神器XUnity.AutoTranslator终极指南

5分钟快速上手&#xff1a;Unity游戏汉化神器XUnity.AutoTranslator终极指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为外语游戏的复杂剧情和界面而烦恼吗&#xff1f;语言障碍是否让你错失了…

作者头像 李华
网站建设 2026/6/12 14:24:51

wflow工作流设计器:企业流程自动化的终极解决方案

wflow工作流设计器&#xff1a;企业流程自动化的终极解决方案 【免费下载链接】wflow workflow 工作流设计器&#xff0c;企业OA流程设计。表单流程设计界面操作超级简单&#xff01;&#xff01;普通用户也能分分钟上手&#xff0c;不需要专业知识。本设计器支持可视化拖拽表单…

作者头像 李华
网站建设 2026/6/12 14:24:50

从 Copilot 到 Agent——我的开发工作流正在被颠覆

AI 编程助手的发展速度&#xff0c;比大多数开发者预想得更快。 两年前&#xff0c;我们还在讨论 GitHub Copilot 是否会取代部分重复编码工作&#xff1b; 一年前&#xff0c;我们开始习惯让 AI 帮忙写函数、补全代码和生成单元测试&#xff1b; 而今天&#xff0c;一个新的时…

作者头像 李华
网站建设 2026/6/12 14:20:58

2026电商流量转化导师客观测评榜单|全域流量选型干货指南

一、测评引言&#xff1a;行业现状与测评说明 1.1 行业公开数据与发展趋势 依据艾瑞咨询《2026中国电商全域流量经营白皮书》公开数据&#xff1a;2025年国内电商全域付费流量单UV成本同比上涨22.7%&#xff0c;天猫、抖音、小红书、谷歌FB全渠道流量红利消退&#xff0c;81.…

作者头像 李华
网站建设 2026/6/12 14:20:00

Android进程管理:Linux内核级保活技术深度解析

Android进程管理&#xff1a;Linux内核级保活技术深度解析 【免费下载链接】AndroidKeepAlive Android 保活方案&#xff0c;进程永生, 无权限自启动, 安装自启动,禁止卸载,后台弹出页面,体外弹出,现已全面支持安卓16&#xff01; 项目地址: https://gitcode.com/gh_mirrors/…

作者头像 李华