newMessage = getStringStringMap();
+ conversation.getMessages().add(0, newMessage);
+ log.info("gpt-4模型,添加系统消息注入!");
+ }
+ String json = com.alibaba.fastjson2.JSON.toJSONString(conversation);
+ RequestBody requestBody = RequestBody.create(json, JSON);
+ Request.Builder requestBuilder = new Request.Builder().url(github_chat_url).post(requestBody);
+ headersMap.forEach(requestBuilder::addHeader);
+ Request streamRequest = requestBuilder.build();
+ return streamRequest;
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
/**
* ghu/gho 请求
* 请求体不是json 会报Request body is missing or not in JSON format
@@ -889,13 +829,12 @@ public class ChatController {
return new ResponseEntity<>(Result.error("Github Copilot APIKey is wrong"), HttpStatus.UNAUTHORIZED);
}
copilotTokenLimitList.put(apiKey, new AtomicInteger(1));
- String machineId = generateMachineId();
- machineIdList.put(apiKey, machineId);
+ String machineId = saveMadchineId(apiKey);
copilotTokenList.put(apiKey, token);
log.info("Github CopilotToken初始化成功!对应的机械码为:" + machineId);
} else {
int requestNum = copilotTokenLimitList.get(apiKey).incrementAndGet();
- if (requestNum > one_copilot_limit) {
+ if (requestNum > systemSetting.getOne_copilot_limit()) {
log.info(apiKey + " requests is " + requestNum + " rate limit exceeded");
return new ResponseEntity<>(Result.error("current requests is " + requestNum + " rate limit exceeded"), HttpStatus.TOO_MANY_REQUESTS);
}
@@ -990,13 +929,12 @@ public class ChatController {
return new ResponseEntity<>(Result.error("copilot APIKey is wrong"), HttpStatus.UNAUTHORIZED);
}
coCopilotTokenLimitList.put(apiKey, new AtomicInteger(1));
- String machineId = generateMachineId();
- machineIdList.put(apiKey, machineId);
+ String machineId = saveMadchineId(apiKey);
coCopilotTokenList.put(apiKey, token);
log.info("coCopilotToken初始化成功!对应的机械码为:" + machineId);
} else {
int requestNum = coCopilotTokenLimitList.get(apiKey).incrementAndGet();
- if (requestNum > one_coCopilot_limit) {
+ if (requestNum > systemSetting.getOne_coCopilot_limit()) {
log.info(apiKey + " requests is " + requestNum + " rate limit exceeded");
return new ResponseEntity<>(Result.error("current requests is " + requestNum + " rate limit exceeded"), HttpStatus.TOO_MANY_REQUESTS);
}
@@ -1070,13 +1008,12 @@ public class ChatController {
return new ResponseEntity<>(Result.error("自定义APIKey is wrong"), HttpStatus.UNAUTHORIZED);
}
selfTokenLimitList.put(apiKey, new AtomicInteger(1));
- String machineId = generateMachineId();
- machineIdList.put(apiKey, machineId);
+ String machineId = saveMadchineId(apiKey);
selfTokenList.put(apiKey, token);
log.info("自定义selfToken初始化成功!对应的机械码为:" + machineId);
} else {
int requestNum = selfTokenLimitList.get(apiKey).incrementAndGet();
- if (requestNum > one_selfCopilot_limit) {
+ if (requestNum > systemSetting.getOne_selfCopilot_limit()) {
log.info(apiKey + " requests is " + requestNum + " rate limit exceeded");
return new ResponseEntity<>(Result.error("current requests is " + requestNum + " rate limit exceeded"), HttpStatus.TOO_MANY_REQUESTS);
}
@@ -1154,9 +1091,9 @@ public class ChatController {
Request request = new Request.Builder().url(github_get_token_url)
.addHeader("Host", "api.github.com")
.addHeader("authorization", "token " + apiKey)
- .addHeader("Editor-Version", vscode_version)
- .addHeader("Editor-Plugin-Version", "copilot-chat/" + copilot_chat_version)
- .addHeader("User-Agent", "GitHubCopilotChat/" + copilot_chat_version)
+ .addHeader("Editor-Version", systemSetting.getVscode_version())
+ .addHeader("Editor-Plugin-Version", "copilot-chat/" + systemSetting.getCopilot_chat_version())
+ .addHeader("User-Agent", "GitHubCopilotChat/" + systemSetting.getCopilot_chat_version())
.addHeader("Accept", "*/*").build();
return getToken(request);
}
@@ -1186,9 +1123,9 @@ public class ChatController {
private String getCoCoToken(String apiKey) throws IOException {
Request request = new Request.Builder().url(get_cocopilotToken_url)
.addHeader("authorization", "token " + apiKey)
- .addHeader("Editor-Version", vscode_version)
- .addHeader("Editor-Plugin-Version", "copilot-chat/" + copilot_chat_version)
- .addHeader("User-Agent", "GitHubCopilotChat/" + copilot_chat_version)
+ .addHeader("Editor-Version", systemSetting.getVscode_version())
+ .addHeader("Editor-Plugin-Version", "copilot-chat/" + systemSetting.getCopilot_chat_version())
+ .addHeader("User-Agent", "GitHubCopilotChat/" + systemSetting.getCopilot_chat_version())
.addHeader("Accept", "*/*").build();
return getToken(request);
}
@@ -1201,13 +1138,13 @@ public class ChatController {
* @throws IOException
*/
private String getSelfToken(String apiKey, String temRequestUrl) throws IOException {
- String requestUrl = Optional.ofNullable(temRequestUrl).orElse(get_token_url);
+ String requestUrl = Optional.ofNullable(temRequestUrl).orElse(systemSetting.getGet_token_url());
log.info("请求token地址: " + requestUrl + " apiKey: " + apiKey);
Request request = new Request.Builder().url(requestUrl)
.addHeader("authorization", "token " + apiKey)
- .addHeader("Editor-Version", vscode_version)
- .addHeader("Editor-Plugin-Version", "copilot-chat/" + copilot_chat_version)
- .addHeader("User-Agent", "GitHubCopilotChat/" + copilot_chat_version)
+ .addHeader("Editor-Version", systemSetting.getVscode_version())
+ .addHeader("Editor-Plugin-Version", "copilot-chat/" + systemSetting.getCopilot_chat_version())
+ .addHeader("User-Agent", "GitHubCopilotChat/" + systemSetting.getCopilot_chat_version())
.addHeader("Accept", "*/*").build();
return getToken(request);
}
@@ -1255,12 +1192,12 @@ public class ChatController {
headersMap.put("X-Github-Api-Version", "2023-07-07");
headersMap.put("Vscode-Sessionid", UUID.randomUUID().toString() + System.currentTimeMillis());
headersMap.put("vscode-machineid", machineIdList.get(apiKey));
- headersMap.put("Editor-Version", vscode_version);
- headersMap.put("Editor-Plugin-Version", "copilot-chat/" + copilot_chat_version);
+ headersMap.put("Editor-Version", systemSetting.getVscode_version());
+ headersMap.put("Editor-Plugin-Version", "copilot-chat/" + systemSetting.getCopilot_chat_version());
headersMap.put("Openai-Organization", "github-copilot");
headersMap.put("Copilot-Integration-Id", "vscode-chat");
headersMap.put("Openai-Intent", "conversation-panel");
- headersMap.put("User-Agent", "GitHubCopilotChat/" + copilot_chat_version);
+ headersMap.put("User-Agent", "GitHubCopilotChat/" + systemSetting.getCopilot_chat_version());
}
/**
@@ -1270,10 +1207,9 @@ public class ChatController {
* @param resp
* @param conversation
*/
- private void outPutChat(HttpServletResponse response, Response resp, Conversation conversation) {
+ private void outPutChat(HttpServletResponse response, Response resp, Conversation conversation, String model) {
try {
boolean isStream = (conversation.getStream() != null) ? conversation.getStream() : false;
- String model = (conversation.getModel() != null) ? conversation.getModel() : "gpt-3.5-turbo";
int sleep_time = calculateSleepTime(model, isStream);
if (isStream) {
response.setContentType("text/event-stream; charset=UTF-8");
@@ -1292,7 +1228,9 @@ public class ChatController {
Thread.sleep(sleep_time);
}
}
- log.info("使用模型:" + model + ",vscode_version:" + vscode_version + ",copilot_chat_version:" + copilot_chat_version + ",字符间隔时间:" + sleep_time + "ms,响应:" + resp);
+ log.info("使用模型:" + model + ",vscode_version:" + systemSetting.getVscode_version() +
+ ",copilot_chat_version:" + systemSetting.getCopilot_chat_version()
+ + ",字符间隔时间:" + sleep_time + "ms,响应:" + resp);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
throw new IOException("Thread was interrupted", e);
@@ -1308,9 +1246,9 @@ public class ChatController {
private int calculateSleepTime(String model, boolean isStream) {
if (isStream) {
if (!model.contains("gpt-4")) {
- return gpt3_sleepTime;
+ return systemSetting.getGpt3_sleepTime();
} else {
- return gpt4_sleepTime;
+ return systemSetting.getGpt4_sleepTime();
}
} else {
return 0;
@@ -1339,4 +1277,28 @@ public class ChatController {
throw new RuntimeException(e);
}
}
+
+ /**
+ * 按照请求生成机械码并保存
+ */
+ private String saveMadchineId(String apiKey) {
+ try {
+ String machineId = generateMachineId();
+ log.info("机械码生成成功!对应的机械码为:" + machineId);
+ machineIdList.put(apiKey, machineId);
+ String machineIds = JSONObject.toJSONString(machineIdList);
+ String projectRoot = System.getProperty("user.dir");
+ String parent = projectRoot + File.separator + "machineIdList.json";
+ try (FileWriter fileWriter = new FileWriter(parent)) {
+ fileWriter.write(machineIds);
+ log.info("保存机械码到machineIdList.json文件成功!");
+ } catch (IOException e) {
+ log.info("保存机械码到machineIdList.json文件失败!");
+ e.printStackTrace();
+ }
+ return machineId;
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/gpt4/copilot/controller/CustomErrorController.java b/src/main/java/com/gpt4/copilot/controller/CustomErrorController.java
index 62b6d68..02a825b 100644
--- a/src/main/java/com/gpt4/copilot/controller/CustomErrorController.java
+++ b/src/main/java/com/gpt4/copilot/controller/CustomErrorController.java
@@ -25,7 +25,7 @@ public class CustomErrorController implements ErrorController {
" Document\n" +
"\n" +
"\n" +
- " Thanks you use gpt4-copilot-java-0.1.2
\n" +
+ " Thanks you use gpt4-copilot-java-0.1.3
\n" +
" 详细使用文档
\n" +
" 项目地址
\n" +
"\n" +
diff --git a/src/main/java/com/gpt4/copilot/copilotApplication.java b/src/main/java/com/gpt4/copilot/copilotApplication.java
index 45dc57a..e3a6fa7 100644
--- a/src/main/java/com/gpt4/copilot/copilotApplication.java
+++ b/src/main/java/com/gpt4/copilot/copilotApplication.java
@@ -17,7 +17,9 @@ import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.file.Files;
+import java.nio.file.Path;
import java.nio.file.Paths;
+import java.util.UUID;
/**
* @author YANGYANG
@@ -45,24 +47,90 @@ public class copilotApplication {
private static SystemSetting loadConfig(String configFilePath) {
File jsonFile = new File(configFilePath);
- if (!jsonFile.exists()) {
- createEmptyConfigFile(configFilePath);
+ Path jsonFilePath = Paths.get(configFilePath);
+ if (!jsonFile.exists() || jsonFile.length() == 0){
+ try {
+ if (!jsonFile.exists()) {
+ // 创建文件machineIdList.json
+ Files.createFile(jsonFilePath);
+ }
+ // 往 config.json 文件中添加一个空数组,防止重启报错
+ createEmptyConfigFile(configFilePath);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
}
JSONObject jsonObject = readJsonFile(configFilePath);
// 将修改后的 JSONObject 转换为格式化的 JSON 字符串
-
return parseConfig(configFilePath, jsonObject);
}
private static void createEmptyConfigFile(String configFilePath) {
try {
- Files.writeString(Paths.get(configFilePath), "{}");
+ // 读取 JSON 文件内容
+ String jsonContent = new String(Files.readAllBytes(Paths.get(configFilePath)));
+ // 将 JSON 字符串解析为 JSONObject
+ JSONObject jsonObject = com.alibaba.fastjson2.JSON.parseObject(jsonContent);
+ if(jsonObject == null){
+ jsonObject = new JSONObject();
+ }
+ String password = getValueOrDefault(jsonObject, "password", UUID.randomUUID().toString(), "config.json没有新增password参数,现已增加!");
+ log.info("config.json password:" + password);
+ if (password.length() == 0) {
+ password = UUID.randomUUID().toString();
+ jsonObject.put("password", password);
+ log.info("config.json password未设置,现已自动帮您设置!");
+ }
+ getValueOrDefault(jsonObject, "gpt4_prompt", true, "config.json没有新增gpt4_prompt参数,现已增加!");
+ getValueOrDefault(jsonObject, "gpt3_sleepTime", 0, "config.json没有新增gpt3_sleepTime参数,现已增加!");
+ getValueOrDefault(jsonObject, "gpt4_sleepTime", 100, "config.json没有新增gpt4_sleepTime参数,现已增加!");
+ getValueOrDefault(jsonObject, "maxPoolSize", 300, "config.json没有新增maxPoolSize参数,现已增加!");
+ getValueOrDefault(jsonObject, "vscode_version", copilotApplication.getLatestVSCodeVersion(), "config.json没有新增vscode_version参数,现已增加!");
+ getValueOrDefault(jsonObject, "copilot_chat_version", copilotApplication.getLatestExtensionVersion("GitHub", "copilot-chat"), "config.json没有新增copilot_chat_version参数,现已增加!");
+ getValueOrDefault(jsonObject, "get_token_url", "https://api.cocopilot.org/copilot_internal/v2/token", "config.json没有新增get_token_url参数,现已增加!");
+ getValueOrDefault(jsonObject, "one_copilot_limit", 30, "config.json没有新增one_copilot_limit参数,现已增加!");
+ getValueOrDefault(jsonObject, "one_coCopilot_limit", 30, "config.json没有新增one_coCopilot_limit参数,现已增加!");
+ getValueOrDefault(jsonObject, "one_selfCopilot_limit", 30, "config.json没有新增one_selfCopilot_limit参数,现已增加!");
+
+ // 将修改后的 JSONObject 转换为格式化的 JSON 字符串
+ String updatedJson = com.alibaba.fastjson.JSON.toJSONString(jsonObject, SerializerFeature.PrettyFormat);
+ Files.write(Paths.get(configFilePath), updatedJson.getBytes());
System.out.println("config.json创建完成: " + configFilePath);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
+ /**
+ * 获取config.json里的值
+ *
+ * @param jsonObject
+ * @param key
+ * @param defaultValue
+ * @param logMessage
+ * @param
+ * @return
+ */
+ private static T getValueOrDefault(JSONObject jsonObject, String key, T defaultValue, String logMessage) {
+ T value;
+ if (jsonObject == null) {
+ value = null;
+ }
+ else {
+ try {
+ value = (T) jsonObject.get(key);
+ } catch (JSONException e) {
+ value = null;
+ }
+ }
+ if (value == null) {
+ jsonObject.put(key, defaultValue);
+ log.info(logMessage);
+ value = defaultValue;
+ }
+ return value;
+ }
+
private static JSONObject readJsonFile(String configFilePath) {
try {
String jsonContent = new String(Files.readAllBytes(Paths.get(configFilePath)));
@@ -192,8 +260,8 @@ public class copilotApplication {
String latestVersion = getLatestVSCodeVersion();
String latestChatVersion = getLatestExtensionVersion("GitHub", "copilot-chat");
if (latestVersion != null && latestChatVersion != null) {
- ChatController.setVscode_version(latestVersion);
- ChatController.setCopilot_chat_version("copilot-chat/" + latestChatVersion);
+ ChatController.getSystemSetting().setVscode_version(latestVersion);
+ ChatController.getSystemSetting().setCopilot_chat_version("copilot-chat/" + latestChatVersion);
}
String parent = ChatController.selectFile();
// 读取 JSON 文件内容
@@ -204,8 +272,8 @@ public class copilotApplication {
String updatedJson = com.alibaba.fastjson.JSON.toJSONString(jsonObject, SerializerFeature.PrettyFormat);
Files.write(Paths.get(parent), updatedJson.getBytes());
System.out.println("===================配置更新说明========================");
- System.out.println("vscode_version:" + ChatController.getVscode_version());
- System.out.println("copilot_chat_version:" + ChatController.getCopilot_chat_version());
+ System.out.println("vscode_version:" + ChatController.getSystemSetting().getVscode_version());
+ System.out.println("copilot_chat_version:" + ChatController.getSystemSetting().getCopilot_chat_version());
System.out.println("======================================================");
} catch (Exception e) {
throw new RuntimeException(e);
@@ -216,26 +284,25 @@ public class copilotApplication {
System.out.println("\n=====================配置说明==========================");
System.out.println("serverPort:" + config.getServerPort());
System.out.println("prefix:" + config.getPrefix());
- System.out.println("password:" + ChatController.getPassword());
- System.out.println("maxPoolSize:" + ChatController.getMaxPoolSize());
- System.out.println("gpt3_sleepTime:" + ChatController.getGpt3_sleepTime());
- System.out.println("gpt4_sleepTime:" + ChatController.getGpt4_sleepTime());
+ System.out.println("password:" + ChatController.getSystemSetting().getPassword());
+ System.out.println("maxPoolSize:" + ChatController.getSystemSetting().getMaxPoolSize());
+ System.out.println("gpt3_sleepTime:" + ChatController.getSystemSetting().getGpt3_sleepTime());
+ System.out.println("gpt4_sleepTime:" + ChatController.getSystemSetting().getGpt4_sleepTime());
+ System.out.println("gpt4_prompt:" + ChatController.getSystemSetting().getGpt4_prompt());
System.out.println("vscode_version:" + getLatestVSCodeVersion());
System.out.println("copilot_chat_version:" + getLatestExtensionVersion("GitHub", "copilot-chat"));
- System.out.println("get_token_url:" + ChatController.getGet_token_url());
- System.out.println("one_copilot_limit:" + ChatController.getOne_copilot_limit());
- System.out.println("one_coCopilot_limit:" + ChatController.getOne_coCopilot_limit());
- System.out.println("one_selfCopilot_limit:" + ChatController.getOne_selfCopilot_limit());
+ System.out.println("get_token_url:" + ChatController.getSystemSetting().getGet_token_url());
+ System.out.println("one_copilot_limit:" + ChatController.getSystemSetting().getOne_copilot_limit());
+ System.out.println("one_coCopilot_limit:" + ChatController.getSystemSetting().getOne_coCopilot_limit());
+ System.out.println("one_selfCopilot_limit:" + ChatController.getSystemSetting().getOne_selfCopilot_limit());
System.out.println("gpt4-copilot-java 初始化接口成功!");
System.out.println("======================================================");
- System.out.println("******原神gpt4-copilot-java-native v0.1.2启动成功******");
- System.out.println("* 采用graalvm打包,运行内存大幅度减小");
- System.out.println("* 适配官方requestBody,减小被查询异常");
- System.out.println("* 新增加入token超时日志,分别查看请求日志");
+ System.out.println("******原神gpt4-copilot-java-native v0.1.3启动成功******");
System.out.println("* 使用ConcurrentHashMap,粗略的对于每个密钥按每分钟进行限速");
+ System.out.println("* 新增环境变量用于对gpt-4*等模型进行系统prompt提示");
System.out.println("* 新增url|apikey形式传入/self/*接口,用于自定义地址和密钥");
- System.out.println("* 新增每个密钥对于特定的机器码,一秘钥一机器码,减小被查询异常");
System.out.println("* 修复部分bug,优化读取config.json代码,提升稳定性");
+ System.out.println("* 新增每个密钥对于特定的机器码,且保存在文件中,一秘钥一机器码,减小被查询异常");
System.out.println("URL地址:http://0.0.0.0:" + config.getServerPort() + config.getPrefix() + "");
System.out.println("======================================================");
}
diff --git a/src/main/java/com/gpt4/copilot/pojo/SystemSetting.java b/src/main/java/com/gpt4/copilot/pojo/SystemSetting.java
index eb655b2..cd7ca7a 100644
--- a/src/main/java/com/gpt4/copilot/pojo/SystemSetting.java
+++ b/src/main/java/com/gpt4/copilot/pojo/SystemSetting.java
@@ -21,6 +21,10 @@ public class SystemSetting {
* server.servlet.context-path
*/
private String prefix;
+ /**
+ * gpt4 system prompt
+ */
+ private Boolean gpt4_prompt;
/**
* gpt4 sleep time
*/
diff --git a/target/classes/com/gpt4/copilot/controller/ChatController$1.class b/target/classes/com/gpt4/copilot/controller/ChatController$1.class
index 33f7e24..5a8aa5d 100644
Binary files a/target/classes/com/gpt4/copilot/controller/ChatController$1.class and b/target/classes/com/gpt4/copilot/controller/ChatController$1.class differ
diff --git a/target/classes/com/gpt4/copilot/controller/ChatController$2.class b/target/classes/com/gpt4/copilot/controller/ChatController$2.class
new file mode 100644
index 0000000..85ca325
Binary files /dev/null and b/target/classes/com/gpt4/copilot/controller/ChatController$2.class differ
diff --git a/target/classes/com/gpt4/copilot/controller/ChatController.class b/target/classes/com/gpt4/copilot/controller/ChatController.class
index a10fd37..1618f56 100644
Binary files a/target/classes/com/gpt4/copilot/controller/ChatController.class and b/target/classes/com/gpt4/copilot/controller/ChatController.class differ
diff --git a/target/classes/com/gpt4/copilot/controller/CustomErrorController.class b/target/classes/com/gpt4/copilot/controller/CustomErrorController.class
index 0602c20..4318caa 100644
Binary files a/target/classes/com/gpt4/copilot/controller/CustomErrorController.class and b/target/classes/com/gpt4/copilot/controller/CustomErrorController.class differ
diff --git a/target/classes/com/gpt4/copilot/copilotApplication.class b/target/classes/com/gpt4/copilot/copilotApplication.class
index d7e39c2..d9f1efc 100644
Binary files a/target/classes/com/gpt4/copilot/copilotApplication.class and b/target/classes/com/gpt4/copilot/copilotApplication.class differ
diff --git a/target/classes/com/gpt4/copilot/pojo/SystemSetting.class b/target/classes/com/gpt4/copilot/pojo/SystemSetting.class
index e1b6f87..41e1315 100644
Binary files a/target/classes/com/gpt4/copilot/pojo/SystemSetting.class and b/target/classes/com/gpt4/copilot/pojo/SystemSetting.class differ
diff --git a/target/gpt-4-copilot-0.1.2.jar.original b/target/gpt-4-copilot-0.1.2.jar.original
deleted file mode 100644
index 8a70026..0000000
Binary files a/target/gpt-4-copilot-0.1.2.jar.original and /dev/null differ
diff --git a/target/gpt-4-copilot-0.1.2.jar b/target/gpt-4-copilot-0.1.3.jar
similarity index 99%
rename from target/gpt-4-copilot-0.1.2.jar
rename to target/gpt-4-copilot-0.1.3.jar
index 74b7ce0..83e511f 100644
Binary files a/target/gpt-4-copilot-0.1.2.jar and b/target/gpt-4-copilot-0.1.3.jar differ
diff --git a/target/gpt-4-copilot-0.1.3.jar.original b/target/gpt-4-copilot-0.1.3.jar.original
new file mode 100644
index 0000000..8e6fdf9
Binary files /dev/null and b/target/gpt-4-copilot-0.1.3.jar.original differ
diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties
index 78d6f8e..e86272c 100644
--- a/target/maven-archiver/pom.properties
+++ b/target/maven-archiver/pom.properties
@@ -1,3 +1,3 @@
artifactId=gpt-4-copilot
groupId=com.gpt4.copilot
-version=0.1.2
+version=0.1.3
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
index b9d8d1d..a205db2 100644
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -7,4 +7,5 @@ com\gpt4\copilot\pojo\Conversation.class
com\gpt4\copilot\pojo\SystemSetting.class
com\gpt4\copilot\config\CorsConfig.class
com\gpt4\copilot\pojo\Result.class
+com\gpt4\copilot\controller\ChatController$2.class
com\gpt4\copilot\copilotApplication.class