diff --git a/assistant-agent-autoconfigure/pom.xml b/assistant-agent-autoconfigure/pom.xml index 2a41645c..827fe437 100644 --- a/assistant-agent-autoconfigure/pom.xml +++ b/assistant-agent-autoconfigure/pom.xml @@ -6,7 +6,7 @@ com.alibaba.agent.assistant assistant-agent - 0.2.3 + 0.2.4 assistant-agent-autoconfigure diff --git a/assistant-agent-common/pom.xml b/assistant-agent-common/pom.xml index f2d39e8a..37db5057 100644 --- a/assistant-agent-common/pom.xml +++ b/assistant-agent-common/pom.xml @@ -6,7 +6,7 @@ com.alibaba.agent.assistant assistant-agent - 0.2.3 + 0.2.4 assistant-agent-common diff --git a/assistant-agent-core/pom.xml b/assistant-agent-core/pom.xml index f2dc8e55..602e8f4b 100644 --- a/assistant-agent-core/pom.xml +++ b/assistant-agent-core/pom.xml @@ -6,7 +6,7 @@ com.alibaba.agent.assistant assistant-agent - 0.2.3 + 0.2.4 assistant-agent-core diff --git a/assistant-agent-evaluation/pom.xml b/assistant-agent-evaluation/pom.xml index 831fb8fb..76a65179 100644 --- a/assistant-agent-evaluation/pom.xml +++ b/assistant-agent-evaluation/pom.xml @@ -6,7 +6,7 @@ com.alibaba.agent.assistant assistant-agent - 0.2.3 + 0.2.4 assistant-agent-evaluation diff --git a/assistant-agent-extensions/pom.xml b/assistant-agent-extensions/pom.xml index 642bed72..145f3a05 100644 --- a/assistant-agent-extensions/pom.xml +++ b/assistant-agent-extensions/pom.xml @@ -6,7 +6,7 @@ com.alibaba.agent.assistant assistant-agent - 0.2.3 + 0.2.4 assistant-agent-extensions diff --git a/assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/experience/fastintent/FastIntentService.java b/assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/experience/fastintent/FastIntentService.java index 73d60cd2..bcb1428d 100644 --- a/assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/experience/fastintent/FastIntentService.java +++ b/assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/experience/fastintent/FastIntentService.java @@ -154,7 +154,7 @@ public boolean matches(FastIntentConfig.Condition condition, FastIntentContext c if (!StringUtils.hasText(input) || !StringUtils.hasText(condition.getValue())) { return false; } - boolean trim = Boolean.TRUE.equals(condition.getTrim()); + boolean trim = condition.getTrim() == null || Boolean.TRUE.equals(condition.getTrim()); boolean ignoreCase = Boolean.TRUE.equals(condition.getIgnoreCase()); String s = trim ? input.trim() : input; String prefix = condition.getValue(); @@ -275,4 +275,3 @@ public boolean matches(FastIntentConfig.Condition condition, FastIntentContext c } } - diff --git a/assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/experience/hook/FastIntentReactHook.java b/assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/experience/hook/FastIntentReactHook.java index e5ad4c97..2229f87f 100644 --- a/assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/experience/hook/FastIntentReactHook.java +++ b/assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/experience/hook/FastIntentReactHook.java @@ -126,6 +126,7 @@ public CompletableFuture> beforeAgent(OverAllState state, Ru ExperienceQuery query = new ExperienceQuery(ExperienceType.REACT); query.setLimit(Math.max(20, properties.getMaxItemsPerQuery())); // fastpath needs enough candidates + query.setRetrievalMode(ExperienceQuery.RetrievalMode.FULL_SCAN); // 关键修复:设置查询文本,用于向量搜索 if (StringUtils.hasText(userInput)) { query.setText(userInput); @@ -253,4 +254,3 @@ private ExperienceQueryContext buildQueryContext(OverAllState state, RunnableCon return context; } } - diff --git a/assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/experience/model/ExperienceQuery.java b/assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/experience/model/ExperienceQuery.java index 6cc76f28..dec42e95 100644 --- a/assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/experience/model/ExperienceQuery.java +++ b/assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/experience/model/ExperienceQuery.java @@ -40,6 +40,11 @@ public class ExperienceQuery { */ private int limit = 5; + /** + * 经验候选召回策略。 + */ + private RetrievalMode retrievalMode = RetrievalMode.DEFAULT; + /** * 排序方式 */ @@ -64,6 +69,20 @@ public enum OrderBy { SCORE } + /** + * 候选召回策略。 + */ + public enum RetrievalMode { + /** + * 默认策略,由 Provider 自行决定是否走向量召回或普通查询。 + */ + DEFAULT, + /** + * 全量扫描候选集,适用于 FastIntent 等需要穷举匹配的场景。 + */ + FULL_SCAN + } + public ExperienceQuery() { } @@ -119,6 +138,14 @@ public void setLimit(int limit) { this.limit = limit; } + public RetrievalMode getRetrievalMode() { + return retrievalMode; + } + + public void setRetrievalMode(RetrievalMode retrievalMode) { + this.retrievalMode = retrievalMode; + } + public OrderBy getOrderBy() { return orderBy; } diff --git a/assistant-agent-extensions/src/test/java/com/alibaba/assistant/agent/extension/experience/fastintent/FastIntentServiceTest.java b/assistant-agent-extensions/src/test/java/com/alibaba/assistant/agent/extension/experience/fastintent/FastIntentServiceTest.java new file mode 100644 index 00000000..ac73411b --- /dev/null +++ b/assistant-agent-extensions/src/test/java/com/alibaba/assistant/agent/extension/experience/fastintent/FastIntentServiceTest.java @@ -0,0 +1,56 @@ +package com.alibaba.assistant.agent.extension.experience.fastintent; + +import com.alibaba.assistant.agent.extension.experience.model.FastIntentConfig; +import org.junit.jupiter.api.Test; + +import java.util.List; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class FastIntentServiceTest { + + private final FastIntentService service = new FastIntentService(List.of()); + + @Test + void messagePrefixShouldTrimByDefault() { + FastIntentConfig.Condition condition = new FastIntentConfig.Condition(); + condition.setType("message_prefix"); + condition.setValue("帮我诊断这个缺陷"); + + FastIntentConfig.MatchExpression expression = new FastIntentConfig.MatchExpression(); + expression.setCondition(condition); + + FastIntentContext context = new FastIntentContext( + "\n帮我诊断这个缺陷,缺陷ID:71410746", + List.of(), + Map.of(), + null, + null + ); + + assertTrue(service.matches(expression, context)); + } + + @Test + void messagePrefixShouldRespectExplicitNoTrim() { + FastIntentConfig.Condition condition = new FastIntentConfig.Condition(); + condition.setType("message_prefix"); + condition.setValue("帮我诊断这个缺陷"); + condition.setTrim(false); + + FastIntentConfig.MatchExpression expression = new FastIntentConfig.MatchExpression(); + expression.setCondition(condition); + + FastIntentContext context = new FastIntentContext( + "\n帮我诊断这个缺陷,缺陷ID:71410746", + List.of(), + Map.of(), + null, + null + ); + + assertFalse(service.matches(expression, context)); + } +} diff --git a/assistant-agent-prompt-builder/pom.xml b/assistant-agent-prompt-builder/pom.xml index 41e62ad4..0876224e 100644 --- a/assistant-agent-prompt-builder/pom.xml +++ b/assistant-agent-prompt-builder/pom.xml @@ -6,7 +6,7 @@ com.alibaba.agent.assistant assistant-agent - 0.2.3 + 0.2.4 assistant-agent-prompt-builder diff --git a/assistant-agent-start/pom.xml b/assistant-agent-start/pom.xml index 6e0a18e3..c5006a12 100644 --- a/assistant-agent-start/pom.xml +++ b/assistant-agent-start/pom.xml @@ -6,7 +6,7 @@ com.alibaba.agent.assistant assistant-agent - 0.2.3 + 0.2.4 assistant-agent-start diff --git a/pom.xml b/pom.xml index 757aa759..394203b0 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.alibaba.agent.assistant assistant-agent - 0.2.3 + 0.2.4 pom