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

@@ -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