fix(ai): stop advertising semantic_search when no vector search plugin is enabled (#1597) Fixes #1532. ### Problem The `semantic_search` MCP tool was always advertised to the model, even when no VectorSearch plugin was enabled. The model could select it, the call reached `EmbeddingService.SearchSimilar`, and every such conversation logged `semantic search failed: semantic search is not available: no vector search plugin is enabled` — polluting logs and wasting a tool-call round trip on a capability that does not exist in the deployment. ### Fix - `EmbeddingService.Available()` reports whether a VectorSearch plugin is currently enabled. - `MCPController.SemanticSearchAvailable()` exposes that to the AI chat. - `getMCPTools()` omits the `semantic_search` tool when unavailable; all other MCP tools keep working exactly as before. - The default AI prompts (zh/en, and admin-custom prompts) drop the `semantic_search` instruction lines in the same situation, so the model is no longer nudged toward a missing capability. ### Testing - New unit tests: tool advertisement with/without the capability, prompt-line stripping, and prompt adaptation (`internal/controller/ai_tools_test.go`). - `go test ./internal/controller/` — all pass. Co-authored-by: LinkinStars <linkinstar@foxmail.com>
A Q&A platform software for teams at any scales. Whether it’s a community forum, help center, or knowledge management platform, you can always count on Answer.
To learn more about the project, visit answer.apache.org.
docker run -d -p 9080:80 -v answer-data:/data --name answer apache/answer:2.0.2
For more information, see Installation.
Answer provides a plugin system for developers to create custom plugins and expand Answer’s features. You can find the plugin documentation here.
We value your feedback and suggestions to improve our documentation. If you have any comments or questions, please feel free to contact us. We’re excited to see what you can create using our plugin system!
You can also check out the plugins here.
# Install wire and mockgen for building. You can run `make check` to check if they are installed. $ make generate # Install frontend dependencies and build $ make ui # Install backend dependencies and build $ make build
Contributions are always welcome!
See CONTRIBUTING for ways to get started.