59 lines
2.3 KiB
Markdown
59 lines
2.3 KiB
Markdown
# MeMind News Engine MVP
|
|
|
|
## Boundary
|
|
|
|
- `memind-news-engine` owns collection, event clustering, ranking, and briefing candidates.
|
|
- `Memind` consumes ranked candidates and owns page generation and delivery.
|
|
- `memind_adm` owns source configuration, ranking policy editing, review, run monitoring, and publish controls.
|
|
- The legacy `ops/` UI is not extended.
|
|
|
|
## Current pipeline
|
|
|
|
```text
|
|
Memind SearXNG query groups
|
|
-> memind-news-engine HTTP API
|
|
-> event clustering by canonical URL and title similarity
|
|
-> deterministic rule score
|
|
-> optional structured LLM assessment
|
|
-> global score plus optional user-interest score
|
|
-> breaking-news override
|
|
-> category quotas and source diversity
|
|
-> ranked candidates in the existing briefing prompt
|
|
-> existing page generation, dedupe, image, and WeChat delivery guards
|
|
```
|
|
|
|
The first slice is deliberately deterministic. The model may provide the six semantic dimensions, but application code calculates the weighted score and owns final selection.
|
|
|
|
## Score contract
|
|
|
|
LLM assessment values are 0-10:
|
|
|
|
```json
|
|
{
|
|
"importance": 8,
|
|
"novelty": 9,
|
|
"impact": 8,
|
|
"credibility": 9,
|
|
"relevance": 8,
|
|
"actionability": 7,
|
|
"category": "ai_tech",
|
|
"reason": "A flagship model release changes capability and API economics."
|
|
}
|
|
```
|
|
|
|
Semantic score weights are 25% importance, 20% impact, 15% novelty, 15% credibility, 15% relevance, and 10% actionability. When the LLM assessment is present, global score is 35% rule score plus 65% semantic score. When a user-interest score is present, final score is 70% global plus 30% personal.
|
|
|
|
Breaking override is active when importance is at least 9, there are at least two distinct sources, and credibility is at least 8.
|
|
|
|
## Runtime controls
|
|
|
|
- `MEMIND_NEWS_ENGINE_DAILY_LIMIT`: selected event count, default `15`.
|
|
- `MEMIND_NEWS_ENGINE_MINIMUM_SCORE`: minimum final score, default `0` during the observation phase.
|
|
- `MEMIND_NEWS_ENGINE_URL`: independent service base URL; ranking is skipped when unset.
|
|
- `MEMIND_NEWS_ENGINE_API_TOKEN`: service-to-service bearer token.
|
|
- `MEMIND_NEWS_ENGINE_TIMEOUT_MS`: request timeout, default `5000`.
|
|
|
|
## Next slice
|
|
|
|
The engine repository now owns persistence migrations and the ranking API. Next work is the bounded LLM scoring worker, collection scheduler, and `memind_adm` management UI.
|