mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 22:01:09 +02:00
feat(mana-ai): v0.7 — cross-tick Deep Research Max pre-planning
Opt-in path for missions that want Gemini Deep Research Max (up to 60 min
per task) instead of the shallow RSS pre-research. Because Max runs well
past a single 60-second tick, the state is carried across ticks:
tick N: submit → INSERT mission_research_jobs row → skip planner
tick N+k: poll → still running → skip planner (metric pending_skips)
tick N+m: poll → completed → inject as ResolvedInput, DELETE row, plan
- ManaResearchClient talks to mana-research's new internal
/v1/internal/research/async endpoints with X-Service-Key +
X-User-Id. Graceful-null on transport errors so a flaky
mana-research never crashes the tick loop.
- New table mana_ai.mission_research_jobs with PK (user_id, mission_id)
— presence is the "pending" flag; delete-on-terminal keeps queries
trivial.
- handleDeepResearch() encapsulates the state machine; planOneMission
now returns a discriminated union (planned | skipped | failed) so
"research pending" isn't miscounted as a parse failure.
- Opt-in at TWO gates to keep cost in check ($3–7/task, 1500 credits
per run):
1. MANA_AI_DEEP_RESEARCH_ENABLED=true server-side (default off)
2. DEEP_RESEARCH_TRIGGER regex matches the mission objective
(strict: "deep research", "tiefe recherche", "umfassende
recherche", "hintergrundrecherche", "deep dive")
Falls back to shallow RSS when either gate fails or the submit
errors upstream.
- Prom metrics: mana_ai_research_jobs_{submitted,completed,failed}_total
labelled by provider, plus _pending_skips_total.
- docker-compose wires MANA_RESEARCH_URL + the opt-in flag and adds
mana-research to depends_on.
- Full write-up with real API response shape (outputs plural, not
OpenAI-style), step-3 MCP-server plan (security-gated, not built),
ops + kill-switch: docs/reports/gemini-deep-research.md.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
f10a95e842
commit
2a18cb5ee4
12 changed files with 947 additions and 8 deletions
|
|
@ -318,6 +318,8 @@ services:
|
|||
condition: service_started
|
||||
mana-api:
|
||||
condition: service_healthy
|
||||
mana-research:
|
||||
condition: service_started
|
||||
environment:
|
||||
TZ: Europe/Berlin
|
||||
NODE_ENV: production
|
||||
|
|
@ -325,6 +327,8 @@ services:
|
|||
SYNC_DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/mana_sync
|
||||
MANA_LLM_URL: http://mana-llm:3020
|
||||
MANA_API_URL: http://mana-api:3060
|
||||
MANA_RESEARCH_URL: http://mana-research:3068
|
||||
MANA_AI_DEEP_RESEARCH_ENABLED: ${MANA_AI_DEEP_RESEARCH_ENABLED:-false}
|
||||
MANA_SERVICE_KEY: ${MANA_SERVICE_KEY}
|
||||
TICK_INTERVAL_MS: ${MANA_AI_TICK_INTERVAL_MS:-60000}
|
||||
TICK_ENABLED: ${MANA_AI_TICK_ENABLED:-true}
|
||||
|
|
@ -1666,6 +1670,11 @@ services:
|
|||
MANA_CRAWLER_URL: http://mana-crawler:3014
|
||||
MANA_LLM_DEFAULT_MODEL: ${MANA_LLM_DEFAULT_MODEL:-gemma3:4b}
|
||||
MANA_SERVICE_KEY: ${MANA_SERVICE_KEY}
|
||||
# OpenAI — picture module gpt-image-2 path. Optional: without it,
|
||||
# /api/v1/picture/generate falls through to Replicate/local Flux.
|
||||
OPENAI_API_KEY: ${OPENAI_API_KEY:-}
|
||||
# Replicate — fallback for Flux-schnell image generation
|
||||
REPLICATE_API_TOKEN: ${REPLICATE_API_TOKEN:-}
|
||||
APP_ID: mana-api
|
||||
# Database (used by modules that have server-side state — research,
|
||||
# presi share-links, traces guides). Same Postgres + schema split
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue