diff --git a/main/manager-api/src/main/java/xiaozhi/modules/agent/controller/AgentController.java b/main/manager-api/src/main/java/xiaozhi/modules/agent/controller/AgentController.java index 07dba466..54f3fa8c 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/agent/controller/AgentController.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/agent/controller/AgentController.java @@ -39,6 +39,7 @@ import xiaozhi.modules.agent.dto.AgentChatHistoryDTO; import xiaozhi.modules.agent.dto.AgentChatSessionDTO; import xiaozhi.modules.agent.dto.AgentCreateDTO; import xiaozhi.modules.agent.dto.AgentDTO; +import xiaozhi.modules.agent.dto.AgentMemoryDTO; import xiaozhi.modules.agent.dto.AgentUpdateDTO; import xiaozhi.modules.agent.entity.AgentEntity; import xiaozhi.modules.agent.entity.AgentTemplateEntity; @@ -128,14 +129,16 @@ public class AgentController { return new Result().ok(entity.getId()); } - @PutMapping("/device/{macAddress}") + @PutMapping("/saveMemory/{macAddress}") @Operation(summary = "根据设备id更新智能体") - public Result updateByDeviceId(@PathVariable String macAddress, @RequestBody @Valid AgentUpdateDTO dto) { + public Result updateByDeviceId(@PathVariable String macAddress, @RequestBody @Valid AgentMemoryDTO dto) { DeviceEntity device = deviceService.getDeviceByMacAddress(macAddress); if (device == null) { return new Result<>(); } - return updateAgentById(device.getAgentId(), dto); + AgentUpdateDTO agentUpdateDTO = new AgentUpdateDTO(); + agentUpdateDTO.setSummaryMemory(dto.getSummaryMemory()); + return updateAgentById(device.getAgentId(), agentUpdateDTO); } @PutMapping("/{id}") @@ -204,17 +207,16 @@ public class AgentController { existingEntity.setUpdater(user.getId()); existingEntity.setUpdatedAt(new Date()); - agentService.updateById(existingEntity); - // 更新记忆策略 if (existingEntity.getMemModelId() == null || existingEntity.getMemModelId().equals(Constant.MEMORY_NO_MEM)) { // 删除所有记录 agentChatHistoryService.deleteByAgentId(existingEntity.getId(), true, true); + existingEntity.setSummaryMemory(""); } else if (existingEntity.getChatHistoryConf() != null && existingEntity.getChatHistoryConf() == 1) { // 删除音频数据 agentChatHistoryService.deleteByAgentId(existingEntity.getId(), true, false); } - + agentService.updateById(existingEntity); return new Result<>(); } diff --git a/main/manager-api/src/main/java/xiaozhi/modules/agent/dto/AgentMemoryDTO.java b/main/manager-api/src/main/java/xiaozhi/modules/agent/dto/AgentMemoryDTO.java new file mode 100644 index 00000000..ed210c60 --- /dev/null +++ b/main/manager-api/src/main/java/xiaozhi/modules/agent/dto/AgentMemoryDTO.java @@ -0,0 +1,19 @@ +package xiaozhi.modules.agent.dto; + +import java.io.Serializable; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 智能体记忆更新DTO + */ +@Data +@Schema(description = "智能体记忆更新对象") +public class AgentMemoryDTO implements Serializable { + private static final long serialVersionUID = 1L; + + @Schema(description = "总结记忆", example = "构建可生长的动态记忆网络,在有限空间内保留关键信息的同时,智能维护信息演变轨迹\n" + + "根据对话记录,总结user的重要信息,以便在未来的对话中提供更个性化的服务", required = false) + private String summaryMemory; +} \ No newline at end of file diff --git a/main/manager-api/src/main/java/xiaozhi/modules/security/config/ShiroConfig.java b/main/manager-api/src/main/java/xiaozhi/modules/security/config/ShiroConfig.java index 9780744e..7875fa86 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/security/config/ShiroConfig.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/security/config/ShiroConfig.java @@ -86,7 +86,7 @@ public class ShiroConfig { // 将config路径使用server服务过滤器 filterMap.put("/config/**", "server"); filterMap.put("/agent/chat-history/report", "server"); - filterMap.put("/agent/device/**", "server"); + filterMap.put("/agent/saveMemory/**", "server"); filterMap.put("/agent/play/**", "anon"); filterMap.put("/**", "oauth2"); shiroFilter.setFilterChainDefinitionMap(filterMap); diff --git a/main/manager-web/src/views/roleConfig.vue b/main/manager-web/src/views/roleConfig.vue index 51f4955b..56001a8e 100644 --- a/main/manager-web/src/views/roleConfig.vue +++ b/main/manager-web/src/views/roleConfig.vue @@ -15,9 +15,17 @@ {{ form.agentName }} - +
+
+ + 保存配置后,需要重启设备,新的配置才会生效。 +
+ 保存配置 + 重置 + +
@@ -26,7 +34,7 @@
- +
@@ -40,10 +48,11 @@ - - - + + + -
- 保存配置 - 重置 -
- - 保存配置后,需要重启设备,新的配置才会生效。 -
-
\ No newline at end of file diff --git a/main/xiaozhi-server/config/manage_api_client.py b/main/xiaozhi-server/config/manage_api_client.py index a42cf5e2..11e0ecbe 100644 --- a/main/xiaozhi-server/config/manage_api_client.py +++ b/main/xiaozhi-server/config/manage_api_client.py @@ -144,13 +144,12 @@ def get_agent_models( }, ) -def save_mem_local_short( - mac_address: str, short_momery: str -) -> Optional[Dict]: + +def save_mem_local_short(mac_address: str, short_momery: str) -> Optional[Dict]: try: return ManageApiClient._instance._execute_request( "PUT", - f"/agent/device/" + mac_address, + f"/agent/saveMemory/" + mac_address, json={ "summaryMemory": short_momery, },