|
21 | 21 | import org.noear.solon.ai.agent.react.ReActTrace; |
22 | 22 | import org.noear.solon.ai.chat.message.AssistantMessage; |
23 | 23 | import org.noear.solon.ai.chat.message.ChatMessage; |
| 24 | +import org.noear.solon.ai.harness.HarnessEngine; |
| 25 | +import org.noear.solon.ai.harness.agent.AgentDefinition; |
24 | 26 | import org.noear.solon.ai.harness.command.Command; |
25 | 27 | import org.noear.solon.ai.harness.command.CommandContext; |
26 | 28 | import org.noear.solon.codecli.config.AgentSettings; |
@@ -50,17 +52,21 @@ public boolean execute(CommandContext ctx) throws Exception { |
50 | 52 | AgentSession session = ctx.getSession(); |
51 | 53 |
|
52 | 54 | //优化 "/resume" |
53 | | - ReActTrace trace = ReActTrace.getCurrent(session.getContext()); |
| 55 | + ReActTrace trace = session.getContext().getAs("__main"); |
54 | 56 | if (trace != null) { |
55 | | - if (trace.getFinalAnswer() != null && Agent.ID_END.equals(trace.getRoute())) { |
| 57 | + if (Agent.ID_END.equals(trace.getRoute())) { |
56 | 58 | //说明有结束节点,重新回到思考点点 |
57 | 59 | trace.setRoute(ReActAgent.ID_REASON); |
58 | 60 | trace.setFinalAnswer(null, false); |
59 | | - trace.getWorkingMemory().removeLastMessage(); |
| 61 | + |
| 62 | + ChatMessage workMessage = trace.getWorkingMemory().getLastMessage(); |
| 63 | + if (workMessage instanceof AssistantMessage) { |
| 64 | + trace.getWorkingMemory().removeLastMessage(); |
| 65 | + } |
60 | 66 |
|
61 | 67 | //回退一条 ai 消息(要生新生成) |
62 | | - List<ChatMessage> messageList = session.getLatestMessages(1); |
63 | | - if (Assert.isNotEmpty(messageList) && messageList.get(0) instanceof AssistantMessage) { |
| 68 | + List<ChatMessage> messageList = session.getMessages(); |
| 69 | + if (Assert.isNotEmpty(messageList) && messageList.get(messageList.size() - 1) instanceof AssistantMessage) { |
64 | 70 | session.removeLatestMessage(1); |
65 | 71 | } |
66 | 72 | } |
|
0 commit comments