[feat] plugin: AI summary of search results from a self-hosted LLM

Adds an optional plugin that shows a generated summary above the search
results, similar to the answer boxes in Brave and Google.  The text is
produced by an LLM server the administrator runs, reached over the
OpenAI chat completions API, so queries never leave the operator's own
network.

The summary is grounded on the top search results rather than the
model's training data.  It is generated asynchronously: post_search adds
an empty placeholder and returns, and the browser fills it from the
/ai_summary endpoint, which streams the answer as NDJSON.  No summary is
generated beyond page one, outside the general category, for non-HTML
formats, or when an engine already answered with an infobox or an
instant answer.

The client side follows the existing plugin pattern: one file in
client/simple/src/js/plugin/, one conditional load in router.ts, one
LESS import.  No build configuration changes and no new dependencies.

The plugin is not activated by default.  Instance defaults live in an
ai_summary: section; the server, model, API key and grounding are user
preferences, and all four can be locked.

Signed-off-by: Jason Witty <jasonpwitty+github@proton.me>
This commit is contained in:
Jason Witty
2026-08-15 17:47:58 -07:00
committed by jasonwitty
parent 094c33d406
commit f4a003d355
43 changed files with 1951 additions and 54 deletions
+1
View File
@@ -7,6 +7,7 @@ Built-in Plugins
.. toctree::
:maxdepth: 1
ai_summary
calculator
hash_plugin
hostnames