From 4259125060e874052314e7bbfc0790a8b80ce784 Mon Sep 17 00:00:00 2001 From: xuxueli <931591021@qq.com> Date: Sun, 7 Jun 2026 22:54:59 +0800 Subject: [PATCH] =?UTF-8?q?refactor(admin):=20=E8=B0=83=E6=95=B4=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E9=85=8D=E7=BD=AE=E7=A7=BB=E9=99=A4context-path?= =?UTF-8?q?=E5=89=8D=E7=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除调度中心默认context-path配置 /xxl-job-admin - 更新数据库脚本中的AI模型配置从 qwen3.5:2b 到 qwen3.5:0.8b - 升级多项Maven依赖版本包括Spring Boot、Netty、MySQL连接器等 - 修改应用配置文件中的服务器上下文路径为根路径 - 更新测试代码中的地址URL配置 - 添加Git忽略文件配置支持前端和AI相关文件 - 更新AI聊天客户端配置以支持对话记忆功能 --- .gitignore | 19 +++++++++++++++--- doc/XXL-JOB-English-Documentation.md | 4 ++-- doc/XXL-JOB官方文档.md | 14 ++++++++----- doc/db/tables_xxl_job.sql | 2 +- docker/.env | 2 +- pom.xml | 20 +++++++++---------- .../src/main/resources/application.properties | 12 +++++++---- .../{ => business}/XxlJobGroupMapper.xml | 0 .../{ => business}/XxlJobInfoMapper.xml | 0 .../{ => business}/XxlJobLockMapper.xml | 0 .../{ => business}/XxlJobLogGlueMapper.xml | 0 .../mapper/{ => business}/XxlJobLogMapper.xml | 0 .../{ => business}/XxlJobLogReportMapper.xml | 0 .../{ => business}/XxlJobRegistryMapper.xml | 0 .../{ => framework}/XxlJobUserMapper.xml | 0 .../com/xxl/job/openapi/AdminBizTest.java | 2 +- .../resources/xxl-job-executor.properties | 2 +- .../executor/controller/IndexController.java | 9 ++++++--- .../xxl/job/executor/jobhandler/AIXxlJob.java | 7 +++++-- .../src/main/resources/application.properties | 2 +- .../job/executor/test/ollama/OllamaTest.java | 11 ++++++---- .../executor/test/openclaw/OpenClawTest.java | 1 + .../src/main/resources/application.properties | 2 +- 23 files changed, 70 insertions(+), 39 deletions(-) rename xxl-job-admin/src/main/resources/mapper/{ => business}/XxlJobGroupMapper.xml (100%) rename xxl-job-admin/src/main/resources/mapper/{ => business}/XxlJobInfoMapper.xml (100%) rename xxl-job-admin/src/main/resources/mapper/{ => business}/XxlJobLockMapper.xml (100%) rename xxl-job-admin/src/main/resources/mapper/{ => business}/XxlJobLogGlueMapper.xml (100%) rename xxl-job-admin/src/main/resources/mapper/{ => business}/XxlJobLogMapper.xml (100%) rename xxl-job-admin/src/main/resources/mapper/{ => business}/XxlJobLogReportMapper.xml (100%) rename xxl-job-admin/src/main/resources/mapper/{ => business}/XxlJobRegistryMapper.xml (100%) rename xxl-job-admin/src/main/resources/mapper/{ => framework}/XxlJobUserMapper.xml (100%) diff --git a/.gitignore b/.gitignore index 52c1b008..44d96294 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,20 @@ -.idea +# for backend +*.iml +/.idea +**/target/ .classpath .project -*.iml -target/ .DS_Store .gitattributes + +# for fontend +node_modules/ +dist/ +package-lock.json + +# for ai +.opencode +.omo +.claude +.specify +specs \ No newline at end of file diff --git a/doc/XXL-JOB-English-Documentation.md b/doc/XXL-JOB-English-Documentation.md index 24f8569f..67c84084 100644 --- a/doc/XXL-JOB-English-Documentation.md +++ b/doc/XXL-JOB-English-Documentation.md @@ -881,7 +881,7 @@ The concrete contet describe as follows: #### Step 2:Deploy: If you has finished step 1,then you can compile the project in maven and deploy the war package to tomcat. -the url to visit is :http://localhost:8080/xxl-job-admin (this address will be used by executor and use it as callback url),the index page after login in is as follow +the url to visit is :http://localhost:8080 (this address will be used by executor and use it as callback url),the index page after login in is as follow ![index page after login in](https://www.xuxueli.com/project/static/xxl-job/images/img_6yC0.png "index page after login in") @@ -910,7 +910,7 @@ Relative path of the executor configuration file is as follows: The concret content of configuration file as follows: ### xxl-job admin address list:xxl-job-admin address list: Multiple addresses are separated by commas,this address is used for "heart beat and register" and "task execution result callback" between the executor and xxl-job-admin. - xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin + xxl.job.admin.addresses=http://127.0.0.1:8080 ### xxl.job.executor.appname is used to group by executors xxl.job.executor.appname=xxl-job-executor-sample diff --git a/doc/XXL-JOB官方文档.md b/doc/XXL-JOB官方文档.md index 89518c69..1661a93c 100644 --- a/doc/XXL-JOB官方文档.md +++ b/doc/XXL-JOB官方文档.md @@ -940,7 +940,7 @@ xxl.job.logretentiondays=30 #### 步骤二:部署项目: 如果已经正确进行上述配置,可将项目编译打包部署。 -调度中心访问地址:http://localhost:8080/xxl-job-admin (该地址执行器将会使用到,作为回调地址) +调度中心访问地址:http://localhost:8080 (该地址执行器将会使用到,作为回调地址) 默认登录账号 "admin/123456", 登录后运行界面如下图所示。 @@ -1006,7 +1006,7 @@ xuxueli/xxl-job-admin:{指定版本} ``` ### 调度中心部署根地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册; -xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin +xxl.job.admin.addresses=http://127.0.0.1:8080 ### 调度中心通讯TOKEN [选填]:非空时启用; xxl.job.admin.accessToken=default_token ### 调度中心通讯超时时间[选填],单位秒;默认3s; @@ -1277,7 +1277,7 @@ public void demoJobHandler() throws Exception { { "input": "{输入信息,必填信息}", "prompt": "{模型prompt,可选信息}", - "model": "{模型实现,如qwen3.5:2b,可选信息}" + "model": "{模型实现,如qwen3.5:0.8b,可选信息}" } ``` @@ -2840,8 +2840,12 @@ alter table xxl_job_log ``` ### 7.45 版本 v3.4.1 Release Notes[ING] -- 1、【TODO】调度中心OpenAPI完善,提供任务管理能力;封装Agent Skill并推送ClawHub; -- 2、【TODO】AccessToken升级:执行器维度隔离,支持线上化配置;升级双端OpenApi,适配AccessToken升级; +- 1、【重构】项目结构AI Ready重构,将业务逻辑与数据访问逻辑分离,提升项目可读性与可维护性; +- 2、【调整】消息中心移除context-path前缀配置项,简化客户端配置; + (存量客户端升级需要注意:升级后需要将配置项 "xxl.job.admin.addresses" 中的 context-path 前缀移除) +- 3、【升级】升级多项maven依赖至较新版本,如 spring、netty 等; +- 4、【TODO】调度中心OpenAPI完善,提供任务管理能力;封装Agent Skill并推送ClawHub; +- 5、【TODO】AccessToken升级:执行器维度隔离,支持线上化配置;升级双端OpenApi,适配AccessToken升级; ### TODO LIST diff --git a/doc/db/tables_xxl_job.sql b/doc/db/tables_xxl_job.sql index 921279bc..fb314226 100644 --- a/doc/db/tables_xxl_job.sql +++ b/doc/db/tables_xxl_job.sql @@ -161,7 +161,7 @@ VALUES (1, 1, '示例任务01', now(), now(), 'XXL', '', 'CRON', '0 0 0 * * ? *' 'DO_NOTHING', 'FIRST', 'ollamaJobHandler', '{ "input": "Java实现二叉树层序遍历", "prompt": "你是一个研发工程师,擅长解决技术类问题。", - "model": "qwen3.5:2b" + "model": "qwen3.5:0.8b" }', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', now(), ''), (3, 2, 'Dify示例任务', now(), now(), 'XXL', '', 'NONE', '', diff --git a/docker/.env b/docker/.env index 37d1605a..4bc0a312 100644 --- a/docker/.env +++ b/docker/.env @@ -2,7 +2,7 @@ # xxl-job, admin XXL_JOB_ADMIN_PORT=8080 -XXL_JOB_ADMIN_CONTEXT_PATH=/xxl-job-admin +XXL_JOB_ADMIN_CONTEXT_PATH=/ # xxl-job, database MYSQL_ROOT_PASSWORD=root_pwd diff --git a/pom.xml b/pom.xml index 17514dd3..4b36293e 100644 --- a/pom.xml +++ b/pom.xml @@ -31,35 +31,35 @@ 3.2.8 0.10.0 - 2.0.17 - 6.0.3 + 2.0.18 + 6.1.0 3.0.0 - 4.0.5 - 7.0.6 + 4.0.6 + 7.0.7 4.0.1 - 9.6.0 + 9.7.0 - 4.2.12.Final + 4.2.15.Final - 5.0.5 + 5.0.6 2.4.0 2.5.0 - 2.13.2 + 2.14.0 - 2.0.0-M4 + 2.0.0-M8 - 1.2.5 + 1.2.7 diff --git a/xxl-job-admin/src/main/resources/application.properties b/xxl-job-admin/src/main/resources/application.properties index 4ea78699..3ba372e4 100644 --- a/xxl-job-admin/src/main/resources/application.properties +++ b/xxl-job-admin/src/main/resources/application.properties @@ -1,9 +1,13 @@ ### web server.port=8080 -server.servlet.context-path=/xxl-job-admin +server.servlet.context-path=/ -### actuator -management.endpoints.web.base-path=/actuator +### web config: actuator、error page、controller-format +management.server.base-path=/actuator +spring.web.error.whitelabel.enabled=false +spring.jackson.date-format=yyyy-MM-dd HH:mm:ss + +### mail health management.health.mail.enabled=false ### resources @@ -20,7 +24,7 @@ spring.freemarker.settings.number_format=0.########## spring.freemarker.settings.new_builtin_class_resolver=safer ### mybatis -mybatis.mapper-locations=classpath:/mapper/*Mapper.xml +mybatis.mapper-locations=classpath:/mapper/**/*Mapper.xml ### datasource-pool spring.datasource.type=com.zaxxer.hikari.HikariDataSource diff --git a/xxl-job-admin/src/main/resources/mapper/XxlJobGroupMapper.xml b/xxl-job-admin/src/main/resources/mapper/business/XxlJobGroupMapper.xml similarity index 100% rename from xxl-job-admin/src/main/resources/mapper/XxlJobGroupMapper.xml rename to xxl-job-admin/src/main/resources/mapper/business/XxlJobGroupMapper.xml diff --git a/xxl-job-admin/src/main/resources/mapper/XxlJobInfoMapper.xml b/xxl-job-admin/src/main/resources/mapper/business/XxlJobInfoMapper.xml similarity index 100% rename from xxl-job-admin/src/main/resources/mapper/XxlJobInfoMapper.xml rename to xxl-job-admin/src/main/resources/mapper/business/XxlJobInfoMapper.xml diff --git a/xxl-job-admin/src/main/resources/mapper/XxlJobLockMapper.xml b/xxl-job-admin/src/main/resources/mapper/business/XxlJobLockMapper.xml similarity index 100% rename from xxl-job-admin/src/main/resources/mapper/XxlJobLockMapper.xml rename to xxl-job-admin/src/main/resources/mapper/business/XxlJobLockMapper.xml diff --git a/xxl-job-admin/src/main/resources/mapper/XxlJobLogGlueMapper.xml b/xxl-job-admin/src/main/resources/mapper/business/XxlJobLogGlueMapper.xml similarity index 100% rename from xxl-job-admin/src/main/resources/mapper/XxlJobLogGlueMapper.xml rename to xxl-job-admin/src/main/resources/mapper/business/XxlJobLogGlueMapper.xml diff --git a/xxl-job-admin/src/main/resources/mapper/XxlJobLogMapper.xml b/xxl-job-admin/src/main/resources/mapper/business/XxlJobLogMapper.xml similarity index 100% rename from xxl-job-admin/src/main/resources/mapper/XxlJobLogMapper.xml rename to xxl-job-admin/src/main/resources/mapper/business/XxlJobLogMapper.xml diff --git a/xxl-job-admin/src/main/resources/mapper/XxlJobLogReportMapper.xml b/xxl-job-admin/src/main/resources/mapper/business/XxlJobLogReportMapper.xml similarity index 100% rename from xxl-job-admin/src/main/resources/mapper/XxlJobLogReportMapper.xml rename to xxl-job-admin/src/main/resources/mapper/business/XxlJobLogReportMapper.xml diff --git a/xxl-job-admin/src/main/resources/mapper/XxlJobRegistryMapper.xml b/xxl-job-admin/src/main/resources/mapper/business/XxlJobRegistryMapper.xml similarity index 100% rename from xxl-job-admin/src/main/resources/mapper/XxlJobRegistryMapper.xml rename to xxl-job-admin/src/main/resources/mapper/business/XxlJobRegistryMapper.xml diff --git a/xxl-job-admin/src/main/resources/mapper/XxlJobUserMapper.xml b/xxl-job-admin/src/main/resources/mapper/framework/XxlJobUserMapper.xml similarity index 100% rename from xxl-job-admin/src/main/resources/mapper/XxlJobUserMapper.xml rename to xxl-job-admin/src/main/resources/mapper/framework/XxlJobUserMapper.xml diff --git a/xxl-job-admin/src/test/java/com/xxl/job/openapi/AdminBizTest.java b/xxl-job-admin/src/test/java/com/xxl/job/openapi/AdminBizTest.java index a21b5cb3..4e656e7a 100644 --- a/xxl-job-admin/src/test/java/com/xxl/job/openapi/AdminBizTest.java +++ b/xxl-job-admin/src/test/java/com/xxl/job/openapi/AdminBizTest.java @@ -25,7 +25,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; public class AdminBizTest { private static final Logger logger = LoggerFactory.getLogger(AdminBizTest.class); - private static String addressUrl = "http://127.0.0.1:8080/xxl-job-admin"; + private static String addressUrl = "http://127.0.0.1:8080"; private static String accessToken = "default_token"; private AdminBiz buildClient(){ diff --git a/xxl-job-executor-samples/xxl-job-executor-sample-frameless/src/main/resources/xxl-job-executor.properties b/xxl-job-executor-samples/xxl-job-executor-sample-frameless/src/main/resources/xxl-job-executor.properties index 5d987e2e..af4f070f 100644 --- a/xxl-job-executor-samples/xxl-job-executor-sample-frameless/src/main/resources/xxl-job-executor.properties +++ b/xxl-job-executor-samples/xxl-job-executor-sample-frameless/src/main/resources/xxl-job-executor.properties @@ -1,5 +1,5 @@ ### xxl-job admin address list, such as "http://address" or "http://address01,http://address02" -xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin +xxl.job.admin.addresses=http://127.0.0.1:8080 ### xxl-job access token xxl.job.admin.accessToken=default_token ### xxl-job timeout by second, default 3s diff --git a/xxl-job-executor-samples/xxl-job-executor-sample-springboot-ai/src/main/java/com/xxl/job/executor/controller/IndexController.java b/xxl-job-executor-samples/xxl-job-executor-sample-springboot-ai/src/main/java/com/xxl/job/executor/controller/IndexController.java index 0b5f2358..86bf73e1 100644 --- a/xxl-job-executor-samples/xxl-job-executor-sample-springboot-ai/src/main/java/com/xxl/job/executor/controller/IndexController.java +++ b/xxl-job-executor-samples/xxl-job-executor-sample-springboot-ai/src/main/java/com/xxl/job/executor/controller/IndexController.java @@ -16,6 +16,7 @@ import org.slf4j.LoggerFactory; import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor; import org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor; +import org.springframework.ai.chat.memory.ChatMemory; import org.springframework.ai.chat.memory.MessageWindowChatMemory; import org.springframework.ai.ollama.OllamaChatModel; import org.springframework.ai.ollama.api.OllamaChatOptions; @@ -50,7 +51,7 @@ public class IndexController { @Resource private OllamaChatModel ollamaChatModel; private String prompt = "你好,你是一个研发工程师,擅长解决技术类问题。"; - private String modle = "qwen3.5:2b"; + private String modle = "qwen3.5:0.8b"; /** * ChatClient 简单调用 @@ -64,12 +65,13 @@ public class IndexController { .builder(ollamaChatModel) .defaultAdvisors(MessageChatMemoryAdvisor.builder(MessageWindowChatMemory.builder().build()).build()) // add memory .defaultAdvisors(SimpleLoggerAdvisor.builder().build()) // add logger - .defaultOptions(OllamaChatOptions.builder().model(modle).build()) // assign model + .defaultOptions(OllamaChatOptions.builder().model(modle)) // assign model .build(); // call ollama String response = ollamaChatClient .prompt(prompt) + .advisors(a -> a.param(ChatMemory.CONVERSATION_ID, "conversationId-default")) .user(input) .call() .content(); @@ -90,12 +92,13 @@ public class IndexController { .builder(ollamaChatModel) .defaultAdvisors(MessageChatMemoryAdvisor.builder(MessageWindowChatMemory.builder().build()).build()) .defaultAdvisors(SimpleLoggerAdvisor.builder().build()) - .defaultOptions(OllamaChatOptions.builder().model(modle).build()) + .defaultOptions(OllamaChatOptions.builder().model(modle)) .build(); // call ollama return ollamaChatClient .prompt(prompt) + .advisors(a -> a.param(ChatMemory.CONVERSATION_ID, "conversationId-default")) .user(input) .stream() .content(); diff --git a/xxl-job-executor-samples/xxl-job-executor-sample-springboot-ai/src/main/java/com/xxl/job/executor/jobhandler/AIXxlJob.java b/xxl-job-executor-samples/xxl-job-executor-sample-springboot-ai/src/main/java/com/xxl/job/executor/jobhandler/AIXxlJob.java index 06c39f66..34b0a16a 100644 --- a/xxl-job-executor-samples/xxl-job-executor-sample-springboot-ai/src/main/java/com/xxl/job/executor/jobhandler/AIXxlJob.java +++ b/xxl-job-executor-samples/xxl-job-executor-sample-springboot-ai/src/main/java/com/xxl/job/executor/jobhandler/AIXxlJob.java @@ -12,6 +12,7 @@ import jakarta.annotation.Resource; import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor; import org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor; +import org.springframework.ai.chat.memory.ChatMemory; import org.springframework.ai.chat.memory.MessageWindowChatMemory; import org.springframework.ai.ollama.OllamaChatModel; import org.springframework.ai.ollama.api.OllamaChatOptions; @@ -73,7 +74,7 @@ public class AIXxlJob { return; } if (ollamaParam.getModel()==null || ollamaParam.getModel().isBlank()) { - ollamaParam.setModel("qwen3.5:2b"); + ollamaParam.setModel("qwen3.5:0.8b"); } } catch (Exception e) { XxlJobHelper.log(new RuntimeException("OllamaParam parse error", e)); @@ -89,12 +90,13 @@ public class AIXxlJob { .builder(ollamaChatModel) .defaultAdvisors(MessageChatMemoryAdvisor.builder(MessageWindowChatMemory.builder().build()).build()) .defaultAdvisors(SimpleLoggerAdvisor.builder().build()) - .defaultOptions(OllamaChatOptions.builder().model(ollamaParam.getModel()).build()) + .defaultOptions(OllamaChatOptions.builder().model(ollamaParam.getModel())) .build(); // call ollama String response = ollamaChatClient .prompt(ollamaParam.getPrompt()) + .advisors(a -> a.param(ChatMemory.CONVERSATION_ID, "conversationId-default")) .user(ollamaParam.getInput()) .call() .content(); @@ -312,6 +314,7 @@ public class AIXxlJob { // call opencalw String response = openclawChatClient .prompt(openClawParam.getPrompt()) + .advisors(a -> a.param(ChatMemory.CONVERSATION_ID, "conversationId-default")) .user(openClawParam.getInput()) .call() .content(); diff --git a/xxl-job-executor-samples/xxl-job-executor-sample-springboot-ai/src/main/resources/application.properties b/xxl-job-executor-samples/xxl-job-executor-sample-springboot-ai/src/main/resources/application.properties index c42edcd8..db6b0277 100644 --- a/xxl-job-executor-samples/xxl-job-executor-sample-springboot-ai/src/main/resources/application.properties +++ b/xxl-job-executor-samples/xxl-job-executor-sample-springboot-ai/src/main/resources/application.properties @@ -10,7 +10,7 @@ logging.config=classpath:logback.xml ### xxl-job admin address list, such as "http://address" or "http://address01,http://address02" -xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin +xxl.job.admin.addresses=http://127.0.0.1:8080 ### xxl-job access token xxl.job.admin.accessToken=default_token ### xxl-job timeout by second, default 3s diff --git a/xxl-job-executor-samples/xxl-job-executor-sample-springboot-ai/src/test/java/com/xxl/job/executor/test/ollama/OllamaTest.java b/xxl-job-executor-samples/xxl-job-executor-sample-springboot-ai/src/test/java/com/xxl/job/executor/test/ollama/OllamaTest.java index 985efe17..0c6c77d4 100644 --- a/xxl-job-executor-samples/xxl-job-executor-sample-springboot-ai/src/test/java/com/xxl/job/executor/test/ollama/OllamaTest.java +++ b/xxl-job-executor-samples/xxl-job-executor-sample-springboot-ai/src/test/java/com/xxl/job/executor/test/ollama/OllamaTest.java @@ -8,6 +8,7 @@ import org.slf4j.LoggerFactory; import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor; import org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor; +import org.springframework.ai.chat.memory.ChatMemory; import org.springframework.ai.chat.memory.MessageWindowChatMemory; import org.springframework.ai.ollama.OllamaChatModel; import org.springframework.ai.ollama.api.OllamaChatOptions; @@ -32,7 +33,7 @@ public class OllamaTest { @Test public void chatTest() { - String model = "qwen3.5:2b"; + String model = "qwen3.5:0.8b"; String prompt = "你是一个研发工程师,擅长解决技术类问题。"; String input = "Java实现二叉树层序遍历"; @@ -42,12 +43,13 @@ public class OllamaTest { .builder(ollamaChatModel) .defaultAdvisors(MessageChatMemoryAdvisor.builder(MessageWindowChatMemory.builder().build()).build()) .defaultAdvisors(SimpleLoggerAdvisor.builder().build()) - .defaultOptions(OllamaChatOptions.builder().model(model).build()) + .defaultOptions(OllamaChatOptions.builder().model(model)) .build(); // call ollama String response = ollamaChatClient .prompt(prompt) + .advisors(a -> a.param(ChatMemory.CONVERSATION_ID, "conversationId-default")) .user(input) .call() .content(); @@ -59,7 +61,7 @@ public class OllamaTest { @Test public void chatStreamTest() throws InterruptedException { - String model = "qwen3.5:2b"; + String model = "qwen3.5:0.8b"; String prompt = "你是一个研发工程师,擅长解决技术类问题。"; String input = "Java实现二叉树层序遍历"; @@ -69,13 +71,14 @@ public class OllamaTest { .builder(ollamaChatModel) .defaultAdvisors(MessageChatMemoryAdvisor.builder(MessageWindowChatMemory.builder().build()).build()) .defaultAdvisors(SimpleLoggerAdvisor.builder().build()) - .defaultOptions(OllamaChatOptions.builder().model(model).build()) + .defaultOptions(OllamaChatOptions.builder().model(model)) .build(); // call ollama logger.info("input: {}", input); Flux flux = ollamaChatClient .prompt(prompt) + .advisors(a -> a.param(ChatMemory.CONVERSATION_ID, "conversationId-default")) .user(input) .stream() .content(); diff --git a/xxl-job-executor-samples/xxl-job-executor-sample-springboot-ai/src/test/java/com/xxl/job/executor/test/openclaw/OpenClawTest.java b/xxl-job-executor-samples/xxl-job-executor-sample-springboot-ai/src/test/java/com/xxl/job/executor/test/openclaw/OpenClawTest.java index e031ba82..2afd6c75 100644 --- a/xxl-job-executor-samples/xxl-job-executor-sample-springboot-ai/src/test/java/com/xxl/job/executor/test/openclaw/OpenClawTest.java +++ b/xxl-job-executor-samples/xxl-job-executor-sample-springboot-ai/src/test/java/com/xxl/job/executor/test/openclaw/OpenClawTest.java @@ -7,6 +7,7 @@ import org.slf4j.LoggerFactory; import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor; import org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor; +import org.springframework.ai.chat.memory.ChatMemory; import org.springframework.ai.chat.memory.MessageWindowChatMemory; import org.springframework.ai.openai.OpenAiChatModel; import org.springframework.boot.test.context.SpringBootTest; diff --git a/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/application.properties b/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/application.properties index 3067097c..78c01da3 100644 --- a/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/application.properties +++ b/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/application.properties @@ -8,7 +8,7 @@ logging.config=classpath:logback.xml ### xxl-job admin address list, such as "http://address" or "http://address01,http://address02" -xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin +xxl.job.admin.addresses=http://127.0.0.1:8080 ### xxl-job access token xxl.job.admin.accessToken=default_token ### xxl-job timeout by second, default 3s