965d7b2002
Hängt Hermes ans geteilte Mem0-Gedächtnis ohne Tool-Loop-Risiko: - sync_turn (nach jedem Turn) → /api/memory/learn (infer=True, Hintergrund-Worker, nicht-blockierend) → Mem0 extrahiert dauerhafte Fakten automatisch. - prefetch (vor dem Turn) → semantische Suche → relevante Fakten als Kontext. - get_tool_schemas()=[] → context-only, keine Agent-Tools (memory bleibt in disabled_toolsets). Single Source of Truth bleibt der MC2-Sidecar. Installation nach ~/.hermes/plugins/mc2-memory/ via deploy.sh; Aktivierung box-lokal in ~/.hermes/config.yaml (memory.memory_enabled: true + memory.provider: mc2-memory). Provider-Ebene verifiziert (Auto-Lernen + semantischer Recall gegen Box). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
65 lines
3.3 KiB
Bash
65 lines
3.3 KiB
Bash
#!/usr/bin/env bash
|
|
# Deploy AUF DER BOX als systemd-USER-Dienst — KEIN sudo, KEIN /opt, KEIN Passwort.
|
|
# Erstinstallation + Updates in einem. Läuft als User hitonabi.
|
|
#
|
|
# Erstinstallation (einmalig):
|
|
# git clone https://git.tobisniceshomelab.ddnsfree.com/Hitonabi/mission-control-v2 ~/mission-control-v2
|
|
# bash ~/mission-control-v2/deploy/deploy.sh
|
|
set -euo pipefail
|
|
|
|
SRC="${MC2_SRC:-$HOME/mission-control-v2}"
|
|
|
|
cd "$SRC"
|
|
git fetch -q origin && git reset -q --hard origin/main
|
|
|
|
# venv + Abhängigkeiten
|
|
if [ ! -d "$SRC/backend/.venv" ]; then
|
|
python3 -m venv "$SRC/backend/.venv"
|
|
fi
|
|
"$SRC/backend/.venv/bin/python" -m pip install -q --upgrade pip
|
|
"$SRC/backend/.venv/bin/python" -m pip install -q -r "$SRC/backend/requirements.txt"
|
|
|
|
# Mem0-Sidecar (auto-lernendes Gedächtnis) — eigenes Python-3.12-venv (~/.mem0/venv),
|
|
# weil mem0+chromadb unter dem 3.14-Backend-venv nicht laufen. mem0ai/chromadb sind dort
|
|
# bereits installiert; hier nur den HTTP-Server nachziehen + Alt-DB einmalig migrieren.
|
|
if [ -x "$HOME/.mem0/venv/bin/python" ]; then
|
|
# ~/.mem0/venv ist uv-managed (kein pip) → uv pip nutzen.
|
|
UV="$(command -v uv || echo "$HOME/.local/bin/uv")"
|
|
"$UV" pip install -q --python "$HOME/.mem0/venv/bin/python" -r "$SRC/mem0_service/requirements.txt"
|
|
( cd "$SRC/mem0_service" && "$HOME/.mem0/venv/bin/python" migrate.py ) || true
|
|
else
|
|
echo "WARN: ~/.mem0/venv fehlt — Mem0-Sidecar wird nicht gestartet (siehe Plan A1)."
|
|
fi
|
|
|
|
# Hermes-Memory-Provider-Plugin (auto-lernen/Recall via Mem0-Sidecar) nach ~/.hermes/plugins/
|
|
# spiegeln. Context-only (kein Tool-Loop). Aktivierung in ~/.hermes/config.yaml:
|
|
# memory.memory_enabled: true + memory.provider: mc2-memory (einmalig, box-lokal).
|
|
if [ -d "$HOME/.hermes" ]; then
|
|
mkdir -p "$HOME/.hermes/plugins/mc2-memory"
|
|
cp "$SRC/hermes/plugins/mc2-memory/__init__.py" "$SRC/hermes/plugins/mc2-memory/plugin.yaml" \
|
|
"$HOME/.hermes/plugins/mc2-memory/"
|
|
fi
|
|
|
|
# systemd-USER-Units installieren/aktualisieren
|
|
mkdir -p "$HOME/.config/systemd/user"
|
|
cp "$SRC/deploy/mission-control-2.service" "$HOME/.config/systemd/user/mission-control-2.service"
|
|
# Hermes-Terminal (ttyd -> `hermes chat`), in MC2 als Terminal-Seite eingebettet.
|
|
# Einmalig manuell noetig: `sudo apt install -y ttyd` + `sudo systemctl disable --now ttyd` (apt-Default-Dienst).
|
|
cp "$SRC/deploy/hermes-terminal.service" "$HOME/.config/systemd/user/hermes-terminal.service"
|
|
# Mem0-Sidecar-Unit (nur wenn das venv existiert).
|
|
[ -x "$HOME/.mem0/venv/bin/python" ] && cp "$SRC/deploy/mem0-service.service" "$HOME/.config/systemd/user/mem0-service.service"
|
|
systemctl --user daemon-reload
|
|
systemctl --user enable mission-control-2 >/dev/null 2>&1 || true
|
|
systemctl --user enable hermes-terminal >/dev/null 2>&1 || true
|
|
systemctl --user enable mem0-service >/dev/null 2>&1 || true
|
|
loginctl enable-linger "$USER" >/dev/null 2>&1 || true
|
|
# Mem0-Sidecar VOR dem Backend (re)starten, damit /api/memory sofort bedient wird.
|
|
[ -x "$HOME/.mem0/venv/bin/python" ] && systemctl --user restart mem0-service 2>/dev/null || true
|
|
systemctl --user restart mission-control-2
|
|
command -v ttyd >/dev/null 2>&1 && systemctl --user restart hermes-terminal 2>/dev/null || true
|
|
|
|
sleep 2
|
|
echo "--- Health ---"
|
|
curl -sf http://127.0.0.1:9001/api/health && echo
|
|
echo "OK — Mission Control 2.0 läuft auf :9001 (User-Dienst, sudo-frei)."
|