feat(2.0): Phase 6c — eingebauter OpenAI-Gateway (model:auto) statt LiteLLM

LiteLLM baut auf Python 3.14 nicht (orjson-Pin ohne cp314-Wheel). Stattdessen
eingebauter Gateway in MC2: routers/gateway_proxy.py (/v1/chat/completions,
/completions, /models) + services/router_logic.py (Komplexitaets-Routing
fast<->heavy, Streaming-Passthrough). gateway.py/routing.py/connect.py auf
builtin umgestellt (Endpunkt = MC :PORT/v1). Gleicher OpenAI-Vertrag,
spaeter gegen LiteLLM austauschbar.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-06-25 12:54:19 +02:00
parent db1f62227b
commit ceca2ae8e3
10 changed files with 143 additions and 99 deletions
+10 -10
View File
@@ -9,23 +9,24 @@ die häufigste Fehlerquelle. Der Aufrufer übergibt den Host explizit.
import json
from config import PORT
DEFAULT_HOST = "192.168.178.151"
GATEWAY_PORT = 4000
MC_PORT = 9000
# Modelle, die der Gateway anbietet (model:auto = Standard).
GATEWAY_MODELS = ["auto", "fast", "heavy", "coder", "vision"]
def _gw(host: str) -> str:
return f"http://{host}:{GATEWAY_PORT}/v1"
# Eingebauter Gateway: MC2 serviert /v1 selbst (gleicher Port wie das Cockpit).
return f"http://{host}:{PORT}/v1"
def build_snippets(host: str = DEFAULT_HOST,
mcp_script_path: str = r"C:\\Users\\TobisPC\\mission-control-v2\\mcp\\mcp_memory.py",
mcp_python: str = "python") -> dict:
gw = _gw(host)
mc_url = f"http://{host}:{MC_PORT}"
mc_url = f"http://{host}:{PORT}"
cline = json.dumps({
"apiProvider": "openai",
@@ -66,13 +67,12 @@ def build_snippets(host: str = DEFAULT_HOST,
]
}, indent=2)
# Claude Code: Anthropic-Format → LiteLLM kann /v1/messages anbieten.
# Claude Code spricht Anthropic-Format; der eingebaute Gateway ist OpenAI-kompatibel.
claude_code = (
f'# Claude Code gegen den lokalen Gateway (Anthropic-kompatibel via LiteLLM):\n'
f'export ANTHROPIC_BASE_URL="http://{host}:{GATEWAY_PORT}"\n'
f'export ANTHROPIC_API_KEY="local"\n'
f'export ANTHROPIC_MODEL="auto"\n'
f'# (LiteLLM muss den Anthropic-/v1/messages-Endpunkt aktiviert haben — auf der Box prüfen.)'
f"# Der eingebaute Gateway ist OpenAI-kompatibel ({gw}, model: auto).\n"
f"# Claude Code nutzt das Anthropic-Format — dafür braucht es einen Anthropic-Shim\n"
f"# (z.B. LiteLLM /v1/messages) als Aufsatz. Für lokale Modelle direkt: Cline / OpenCode /\n"
f"# Continue / Zed nutzen (oben), die sprechen OpenAI-kompatibel mit diesem Gateway."
)
memory_mcp = json.dumps({