- π Code-as-Action: Agent generates and executes code to complete tasks, rather than just calling predefined tools
- π Secure Sandbox: AI-generated code runs safely in GraalVM polyglot sandbox with resource isolation
- π Multi-dimensional Evaluation: Multi-layer intent recognition through Evaluation Graph, precisely guiding Agent behavior
- π Dynamic Prompt Builder: Dynamically inject context (experiences, knowledge, etc.) into prompts based on scenarios and evaluation results
- π§ Experience Learning: Automatically accumulates successful experiences to continuously improve performance on subsequent tasks
- β‘ Fast Response: For familiar scenarios, skip LLM reasoning process and respond quickly based on experience
Assistant Agent is an enterprise-grade intelligent assistant framework built on Spring AI Alibaba, adopting the Code-as-Action paradigm to orchestrate tools and complete tasks by generating and executing code. It's an intelligent assistant solution that understands, acts, and learns.
Assistant Agent is a fully-featured intelligent assistant with the following core capabilities:
- π Intelligent Q&A: Supports unified retrieval architecture across multiple data sources (extensible via SPI for knowledge base, Web, etc.), providing accurate, traceable answers
- π οΈ Tool Invocation: Supports MCP, HTTP API (OpenAPI) and other protocols, flexibly access massive tools, combine multiple tools to implement complex business workflows
- β° Proactive Service: Supports scheduled tasks, delayed execution, event callbacks, letting the assistant proactively serve you
- π¬ Multi-channel Delivery: Built-in IDE reply, extensible to DingTalk, Feishu, WeCom, Webhook and other channels via SPI
| Value | Description |
|---|---|
| Cost Reduction | 24/7 intelligent customer service, significantly reducing manual support costs |
| Quick Integration | Business platforms can integrate with simple configuration, no extensive development required |
| Flexible Customization | Configure knowledge base, integrate enterprise tools, build your exclusive business assistant |
| Continuous Optimization | Automatically learns and accumulates experience, the assistant gets smarter with use |
- Intelligent Customer Service: Connect to enterprise knowledge base, intelligently answer user inquiries
- Operations Assistant: Connect to monitoring and ticketing systems, automatically handle alerts, query status, execute operations
- Business Assistant: Connect to CRM, ERP and other business systems, assist employees in daily work
π‘ The above are just typical scenario examples. By configuring knowledge base and integrating tools, Assistant Agent can adapt to more business scenarios. Feel free to explore.
Below is an end-to-end flow example of how Assistant Agent processes a complete request:
assistant-agent/
βββ assistant-agent-common # Common tools, enums, constants
βββ assistant-agent-core # Core engine: GraalVM executor, tool registry
βββ assistant-agent-extensions # Extension modules:
β βββ dynamic/ # - Dynamic tools (MCP, HTTP API)
β βββ experience/ # - Experience management and FastIntent configuration
β βββ learning/ # - Learning extraction and storage
β βββ search/ # - Unified search capability
β βββ reply/ # - Multi-channel reply
β βββ trigger/ # - Trigger mechanism
β βββ evaluation/ # - Evaluation integration
βββ assistant-agent-prompt-builder # Prompt dynamic assembly
βββ assistant-agent-evaluation # Evaluation engine
βββ assistant-agent-autoconfigure # Spring Boot auto-configuration
βββ assistant-agent-start # Startup module
- Java 17+
- Maven 3.8+
- DashScope API Key
git clone https://github.com/alibaba/assistant-agent.git
cd assistant-agent
mvn clean install -DskipTestsexport DASHSCOPE_API_KEY=your-api-key-hereThe project has built-in default configuration, just ensure the API Key is correct. For customization, edit assistant-agent-start/src/main/resources/application.yml:
spring:
ai:
dashscope:
api-key: ${DASHSCOPE_API_KEY}
chat:
options:
model: qwen-maxcd assistant-agent-start
mvn spring-boot:runAll extension modules are enabled by default with sensible configurations; no additional configuration is required for a quick start.
π‘ The framework provides a Mock knowledge base implementation by default for demonstration and testing. Production environments need to connect to real knowledge sources (such as vector databases, Elasticsearch, enterprise knowledge base APIs, etc.) so that the Agent can retrieve and answer business-related questions.
The default configuration has knowledge base search enabled, you can experience it directly:
spring:
ai:
alibaba:
codeact:
extension:
search:
enabled: true
knowledge-search-enabled: true # Enabled by defaultImplement the SearchProvider SPI interface to connect to your business knowledge sources:
package com.example.knowledge;
import com.alibaba.assistant.agent.extension.search.spi.SearchProvider;
import com.alibaba.assistant.agent.extension.search.model.*;
import org.springframework.stereotype.Component;
import java.util.*;
@Component // Add this annotation, Provider will be auto-registered
public class MyKnowledgeSearchProvider implements SearchProvider {
@Override
public boolean supports(SearchSourceType type) {
return SearchSourceType.KNOWLEDGE == type;
}
@Override
public List<SearchResultItem> search(SearchRequest request) {
List<SearchResultItem> results = new ArrayList<>();
// 1. Query from your knowledge source (vector database, ES, API, etc.)
// Example: List<Doc> docs = vectorStore.similaritySearch(request.getQuery());
// 2. Convert to SearchResultItem
// for (Doc doc : docs) {
// SearchResultItem item = new SearchResultItem();
// item.setId(doc.getId());
// item.setSourceType(SearchSourceType.KNOWLEDGE);
// item.setTitle(doc.getTitle());
// item.setSnippet(doc.getSummary());
// item.setContent(doc.getContent());
// item.setScore(doc.getScore());
// results.add(item);
// }
return results;
}
@Override
public String getName() {
return "MyKnowledgeSearchProvider";
}
}| Knowledge Source Type | Integration Method |
|---|---|
| Vector Database (Alibaba Cloud AnalyticDB, Milvus, Pinecone) | Call vector similarity search API in search() method |
| Elasticsearch | Use ES client for full-text or vector search |
| Enterprise Knowledge Base API | Call internal knowledge base REST API |
| Local Documents | Read and index local Markdown/PDF files |
π For more details, refer to: Knowledge Search Module Documentation
Role: Multi-dimensional intent recognition framework that performs multi-layer trait recognition through Evaluation Graph.
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Evaluation Graph Example β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β User Input: "Query today's orders" β
β β β
β βΌ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Layer 1 (parallel execution) β β
β β ββββββββββββββ ββββββββββββββ β β
β β β Is Vague? β β Rewrite β β β
β β β clear/vagueβ β (enhance) β β β
β β βββββββ¬βββββββ βββββββ¬βββββββ β β
β βββββββββββΌβββββββββββββββββββββββΌβββββββββββββββββββββββββ β
β β β β
β ββββββββββββ¬ββββββββββββ β
β βΌ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Layer 2 (based on rewritten content, parallel) β β
β β ββββββββββββ βββββββββββββ βββββββββββββ β β
β β βExperienceβ β Tool β β Knowledge β β β
β β βavailable β β Available β β Available β β β
β β β yes/no β β yes/no β β yes/no β β β
β β ββββββββββββ βββββββββββββ βββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β βΌ β
β ββββββββββββββββββββββ β
β β Integrate evaluationβ β
β β results from β β
β β different dimensionsβ β
β β β Pass to modules β β
β ββββββββββββββββββββββ β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Core Capabilities:
- Dual Evaluation Engines:
- LLM Evaluation: Complex semantic judgment through large models. Users can fully customize evaluation prompts (
customPrompt), or use default prompt assembly (supportsdescription,workingMechanism,fewShotsconfigurations) - Rule-based Evaluation: Implement rule logic through Java functions. Users can customize
Function<CriterionExecutionContext, CriterionResult>to execute any rule judgment, suitable for threshold detection, format validation, exact matching, etc.
- LLM Evaluation: Complex semantic judgment through large models. Users can fully customize evaluation prompts (
- Custom Dependencies: Evaluation items can declare dependencies via
dependsOn. The system automatically builds an evaluation graph for topological execution - items without dependencies run in parallel, items with dependencies run sequentially. Subsequent evaluation items can access results from preceding items. - Evaluation Results: Support
BOOLEAN,ENUM,SCORE,JSON,TEXTand other types, passed to Prompt Builder to drive dynamic assembly
Role: Dynamically assemble prompts sent to the model based on evaluation results and runtime context. Example:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Prompt Builder - Conditional Dynamic Generation β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Evaluation Results Input: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Vague: yes β Experience: yes β Tools: yes β Knowledge: noβ β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β βΌ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Custom PromptBuilder Condition Matching β β
β β β β
β β vague=yes βββββΆ inject [Clarification Prompt] β β
β β vague=no βββββΆ inject [Direct Execution Prompt] β β
β β β β
β β experience=yes βββΆ inject [Historical Experience Reference] β β
β β tools=yes βββΆ inject [Tool Usage Instructions] β β
β β knowledge=yes βββΆ inject [Relevant Knowledge Snippets] β β
β β β β
β β Combo 1: vague + no tools + no knowledge βββΆ [Ask User Prompt]β β
β β Combo 2: clear + tools + experience βββΆ [Fast Execute Prompt] β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β βΌ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Final Dynamic Prompt: β β
β β [System Prompt] + [Clarification Guide] + [Experience] + β β
β β [Tool Instructions] + [User Query] β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β βΌ β
β ββββββββββββ β
β β LLM β β
β ββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Core Capabilities:
- Multiple PromptBuilders execute in priority order
- Each Builder decides whether to contribute and what content based on evaluation results
- Support custom Builders for business-specific prompt logic
- Non-intrusive, intercepts at model invocation level
Comparison with Traditional Approaches:
| Comparison | Traditional Approach | Evaluation + PromptBuilder |
|---|---|---|
| Prompt Length | Need to enumerate handling instructions for various situations ("when encountering situation A..., when encountering situation B..."), prompts become bloated | Through pre-evaluation to identify scenarios, only inject context needed for current scenario, prompts are shorter and more precise |
| Agent Behavior Controllability | Relies on model's "understanding" of lengthy instructions, prone to misjudgment | Behavior driven by evaluation results, reducing model misjudgment, more controllable |
| Extension Flexibility | Adding new scenarios requires modifying prompts, difficult to maintain | Modify relevant evaluation items and PromptBuilder based on business needs |
| Code Architecture | Evaluation logic coupled with prompts | Evaluation logic decoupled from prompt templates, separation of concerns, independent maintenance and iteration |
Role: Automatically extract and save valuable experiences from Agent execution history.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Learning Module Workflow β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Agent Execution Process β β
β β β β
β β Input βββΆ Reasoning βββΆ Code Gen βββΆ Execute βββΆ Output β β
β β β β β β β β β
β β βββββββββββββ΄βββββββββββββ΄ββββββββββββ΄βββββββββββ β β
β β β β β
β ββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββ β
β βΌ β
β ββββββββββββββββββββββββββββββββ β
β β Learning Context Capture β β
β β - User Input β β
β β - Reasoning Steps β β
β β - Generated Code β β
β β - Execution Result β β
β βββββββββββββ¬βββββββββββββββββββ β
β β β
β βΌ β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Learning Extractors Analysis β β
β β β β
β β ββββββββββββββ ββββββββββββββ ββββββββββββββ β β
β β β Experience β β Pattern β β Error β β β
β β β Extractor β β Extractor β β Extractor β β β
β β βSuccess Modeβ βCommon Mode β βFailure Modeβ β β
β β βββββββ¬βββββββ βββββββ¬βββββββ βββββββ¬βββββββ β β
β ββββββββββΌββββββββββββββββΌββββββββββββββββΌββββββββββββββββββββββ β
β β β β β
β βββββββββββββββββΌββββββββββββββββ β
β βΌ β
β ββββββββββββββββββ β
β β Persist & β βββΆ Available for future tasks β
β β Store β β
β ββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Core Capabilities:
- After-Agent Learning: Extract experiences after each Agent execution
- After-Model Learning: Extract experiences after each model call
- Tool Interceptor: Extract experiences from tool invocations
- Offline Learning: Batch analyze historical data to extract patterns
- Learning Process: Capture execution context β Extractor analysis and recognition β Generate experience records β Persist for subsequent reuse
Role: Accumulate and reuse historical successful execution experiences.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Experience Module Workflow β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β [Scenario 1: Experience Accumulation] β
β β
β User: "Query order status" βββΆ Agent Success βββΆ βββββββββββββββ β
β β Save: β β
β β - ReAct Exp β β
β β - Code Exp β β
β β - Common Expβ β
β βββββββββββββββ β
β β β
β βΌ β
β ββββββββββββββββββ β
β β Experience DB β β
β ββββββββββββββββββ β
β β
β [Scenario 2: Experience Reuse] β β
β β β
β User: "Query my order status" βββ Match Similar ββββββββββββ β
β β β
β βΌ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Agent references history, faster decision + β β
β β generates correct code β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β [Scenario 3: FastIntent Quick Response] β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Experience DB β β
β β βββββββββββββββββββββββ ββββββββββββββββββββββββββββββ β β
β β β Experience A β β Experience B β β β
β β β (Normal) β β (β FastIntent configured) β β β
β β β No FastIntent configβ β Condition: prefix "View β β β
β β β β Inject to prompt β β *sales" β β β
β β β for LLM reference β β Action: Call sales API β β β
β β βββββββββββββββββββββββ βββββββββββββ¬βββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββββ β
β β Condition matched β
β βΌ β
β User: "View today's sales" βββΆ Match Exp B βββΆ Skip LLM, execute β
β FastIntent directly β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Core Capabilities:
- Multiple Experience Types: Code generation experience, ReAct decision experience, common sense experience, providing historical reference for similar tasks
- Flexible Reuse: Experiences can be injected into prompts or used for FastIntent matching
- Lifecycle Management: Support experience creation, update, and deletion
- FastIntent Quick Response:
- Experience must explicitly configure
fastIntentConfigto enable - When matching configured conditions, skip full LLM reasoning and directly execute pre-recorded tool calls or code
- Experience must explicitly configure
- Support multi-condition matching: message prefix, regex, metadata, state, etc.
Role: Create and manage scheduled tasks or event-triggered Agent executions.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Trigger Module Capabilities β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β [Scheduled Trigger] β
β β
β User: "Send me daily sales report at 9am" β
β β β
β βΌ β
β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β
β β Agent creates β β Scheduler β β Auto Execute β β
β β Cron trigger ββββββΆβ 0 9 * * * ββββββΆβ Generate reportβ β
β β (self-schedule)β β β β Send notify β β
β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β
β β
β [Delayed Trigge] β
β β
β User: "Remind me about the meeting in 30 minutes" β
β β β
β βΌ β
β ββββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β
β β Agent creates β β After 30min β β Send reminder β β
β β one-time triggerββββββΆβ fire ββββββΆβ "Time to meet" β β
β ββββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β
β β
β [Callback Trigger] β
β β
β User: "Help me with xx when xx condition is met" β
β β
β External System: Send event to Webhook β
β β β
β βΌ β
β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β
β β Receive β β Trigger Agent β β Process event β β
β β Webhook event ββββββΆβ execute task ββββββΆβ Return responseβ β
β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Core Capabilities:
TIME_CRONTrigger: Support Cron expression for scheduled task triggersTIME_ONCETrigger: Support one-time delayed triggerCALLBACKTrigger: Support callback event trigger- Agent can autonomously create triggers through tools, achieving "self-scheduling"
Role: Provide flexible message reply capability, supporting multiple output channels.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Reply Channel Module Capabilities β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Agent needs to reply to user β
β β β
β βΌ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Channel Router β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β ββββββββββββββββ¬βββββββββββββββ¬βββββββββββββββ β
β βΌ βΌ βΌ βΌ β
β ββββββββββββββ βββββββββββββββ βββββββββββββββ ββββββββββββββ β
β β DEFAULT β β IDE_CARD β β IM_NOTIFY β β WEBHOOK β β
β β Text Reply β β Card Displayβ β Push Notify β β JSON Push β β
β βββββββ¬βββββββ βββββββ¬ββββββββ βββββββ¬ββββββββ βββββββ¬βββββββ β
β β β β β β
β βΌ βΌ βΌ βΌ β
β ββββββββββββ βββββββββββββ ββββββββββββββ ββββββββββββ β
β β Console β β IDE β β IM β β External β β
β β Terminal β β Rich Card β β(Extendable)β β System β β
β ββββββββββββ βββββββββββββ ββββββββββββββ ββββββββββββ β
β β
β [Usage Example] β
β β
β User: "Send results after analysis" β
β β β
β βΌ β
β Agent: send_message(text="Analysis results...") β
β β β
β βΌ β
β User receives: "π Analysis Results: ..." β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Core Capabilities:
- Multi-channel Routing: Agent can choose different channels to reply based on scenario
- Configuration-driven: Dynamically generate reply tools, no coding required
- Sync/Async Support: Support both synchronous and asynchronous reply modes
- Unified Interface: Shield underlying implementation differences
- Built-in Demo Channel:
IDE_TEXT(for demonstration) - Extendable Channels (by implementing
ReplyChannelDefinitionSPI): e.g.IDE_CARD,IM_NOTIFICATION(DingTalk/Feishu/WeCom),WEBHOOK_JSON, etc. - requires custom implementation
Role: Provide highly extensible tool system, enabling Agent to call various external tools to complete tasks.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Tool Extension Architecture β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Agent needs to execute operation β
β β β
β βΌ β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β CodeactTool System β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β βββββββββββββββ¬ββββββββββββββ¬ββββββββββββββ¬βββββββββββββββ β
β βΌ βΌ βΌ βΌ βΌ β
β ββββββββββββββ ββββββββββββββ ββββββββββββββ ββββββββββββββ ββββββββ β
β β MCP β β HTTP β β Search β β Trigger β βCustomβ β
β β Tools β β API β β Tools β β Tools β βTools β β
β β β β Tools β β β β β β β β
β βββββββ¬βββββββ βββββββ¬βββββββ βββββββ¬βββββββ βββββββ¬βββββββ ββββ¬ββββ β
β β β β β β β
β βΌ βΌ βΌ βΌ βΌ β
β ββββββββββββ ββββββββββββ βββββββββββββ ββββββββββββ βββββββ β
β β Any MCP β β REST API β β Knowledge β β Scheduledβ β ... β β
β β Server β β OpenAPI β β Search β β Tasks β β β β
β ββββββββββββ ββββββββββββ β Project β β Callbacksβ βββββββ β
β β Search β ββββββββββββ β
β βββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Core Capabilities:
- MCP Tool Support: One-click integration with any MCP Server, reuse MCP tool ecosystem
- HTTP API Support: Integrate REST APIs through OpenAPI specification, call existing enterprise interfaces
- Built-in Tool Types: Search, Reply, Trigger, Learning, etc.
- Custom Tool SPI: Implement
CodeactToolinterface to easily extend new tools
Role: Multi-source unified search engine, providing knowledge support for Agent Q&A and decision-making.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Multi-Source Search Architecture β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β User Question: "How to configure database connection pool?" β
β β β
β βΌ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Unified Search Interface β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β ββββββββββββββββββ¬βββββββββββββββββ¬βββββββββββββββββ β
β βΌ βΌ βΌ βΌ β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ ββββββββββ β
β β Knowledge β β Project β β Web β β Custom β β
β β Provider β β Provider β β Provider β βProviderβ β
β β (Primary) β β (Optional) β β (Optional) β β (SPI) β β
β ββββββββ¬ββββββββ ββββββββ¬ββββββββ ββββββββ¬ββββββββ βββββ¬βββββ β
β β β β β β
β βΌ βΌ βΌ βΌ β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ ββββββββββ β
β β FAQ / Docs β β Source Code β β Web Articles β β ... β β
β β Q&A History β β Config Files β β Tech Forums β β β β
β β Team Notes β β Logs β β β β β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ ββββββββββ β
β β β β β β
β βββββββββββββββββββ΄ββββββββββββββββββ΄βββββββββββββββ β
β β β
β βΌ β
β ββββββββββββββββββββββββββ β
β β Aggregate & Rank β β
β β β Inject into Prompt β β
β ββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Core Capabilities:
- Unified Search Interface:
SearchProviderSPI, supports pluggable data sources - Demo Providers: Built-in Mock implementations for Knowledge, Project, Web (for demonstration and testing only)
- Custom Extension: Implement
SearchProviderinterface to connect any data source (databases, vector stores, APIs) - Result Aggregation: Support configurable ranking strategies
- Business Value: Connect enterprise knowledge base to provide accurate answers, support answer traceability, reduce manual customer service pressure
Configuration Example:
spring:
ai:
alibaba:
codeact:
extension:
search:
enabled: true
knowledge-search-enabled: true # Knowledge base (Mock implementation by default)
project-search-enabled: false # Project code (Mock implementation by default)
web-search-enabled: false # Web search (Mock implementation by default)
default-top-k: 5
search-timeout-ms: 5000π‘ The above search features provide Mock implementations by default for demonstration and testing. For production use, implement
SearchProviderSPI to connect actual data sources.
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.


