From 0b680bdeec5fa32086919e2258e041f8f5c92574 Mon Sep 17 00:00:00 2001 From: sysop Date: Thu, 8 Jan 2026 21:51:02 +0100 Subject: [PATCH] .... wuhuuuu --- lib/waldwaechter.sh | 4 +-- .../tools/terminal_dojo/04_agents_setup.sh | 36 ++++++++++++++++++- .../tools/terminal_dojo/07_knowledge_setup.sh | 6 ++-- .../terminal_dojo/scripts/ingest_knowledge.py | 14 ++++++++ 4 files changed, 54 insertions(+), 6 deletions(-) diff --git a/lib/waldwaechter.sh b/lib/waldwaechter.sh index c9237fb..6266203 100644 --- a/lib/waldwaechter.sh +++ b/lib/waldwaechter.sh @@ -15,8 +15,8 @@ else __WALD_SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" fi -WALDWAECHTER_DIR="$(dirname "$__WALD_SCRIPT_DIR")" -ROLES_DIR="${WALDWAECHTER_DIR}/crumbforest_roles" +export WALDWAECHTER_DIR="$(dirname "$__WALD_SCRIPT_DIR")" +export ROLES_DIR="${WALDWAECHTER_DIR}/crumbforest_roles" # Set logs directory in repo export CRUMB_LOGS_DIR="${WALDWAECHTER_DIR}/logs" diff --git a/missions/tools/terminal_dojo/04_agents_setup.sh b/missions/tools/terminal_dojo/04_agents_setup.sh index 55006b0..a2ef982 100755 --- a/missions/tools/terminal_dojo/04_agents_setup.sh +++ b/missions/tools/terminal_dojo/04_agents_setup.sh @@ -223,6 +223,39 @@ Beginne deine Antworten nie mit "Als DumboSQL..." - du BIST DumboSQL. PROMPT echo -e " ${GREEN}βœ“${NC} dumbosql.md" +# Vektor - Der Navigator +cat > "$AGENTS_DIR/vektor.md" << 'PROMPT' +# 🧭 Vektor - Der Navigator + +Du bist Vektor, der zielgerichtete Roboter-Navigator aus dem Crumbforest. + +## Deine PersΓΆnlichkeit +- Du bist prΓ€zise, effizient und lΓΆsungsorientiert +- Du denkst in Pfaden, Koordinaten und Schritten +- Du liebst PlΓ€ne und Strukturen +- Du bist hΓΆflich, aber direkt (Roboter-Stil) + +## Deine Aufgaben +- Navigiere durch Dateisysteme (cd, ls, pwd) +- ErklΓ€re Pfade (absolut vs. relativ) +- Hilf bei der Planung von Projekten (Schritt A -> B) +- Optimiere Workflows + +## Dein Stil +- Nutze Navigations-Metaphern ("Berechne Route...", "Ziel erreicht") +- Strukturiere Antworten in klare Schritte (1., 2., 3.) +- BestΓ€tige Eingaben ("Befehl empfangen") +- Sei hilfreich wie ein gutes GPS + +## Beispiel-Antworten +- "Route berechnet. Um zum Ziel zu kommen, folge diesen 3 Schritten:" +- "Achtung: Du befindest dich in einer Sackgasse (root directory)." +- "Scanne Umgebung... 3 Dateien gefunden." + +Beginne deine Antworten nie mit "Als Vektor..." - du BIST Vektor. +PROMPT +echo -e " ${GREEN}βœ“${NC} vektor.md" + echo "" # ───────────────────────────────────────────────────────────────────────────── @@ -317,6 +350,7 @@ show_crew() { echo -e " ${GREEN}eule${NC} πŸ¦‰ Die Weise" echo -e " ${GREEN}funkfox${NC} 🦊 Der Bash-Rapper" echo -e " ${GREEN}dumbosql${NC} 🐘 Der Datenbank-Elefant" + echo -e " ${GREEN}vektor${NC} 🧭 Der Navigator" echo "" echo "Nutzung: crew [frage]" echo "Beispiel: crew bugsy 'Warum funktioniert mein Script nicht?'" @@ -333,7 +367,7 @@ shift QUESTION="$*" case $AGENT in - bugsy|deepbit|eule|funkfox|dumbosql) + bugsy|deepbit|eule|funkfox|dumbosql|vektor) PROMPT_FILE="$HOME/.terminal_dojo/agents/${AGENT}.md" if [[ -f "$PROMPT_FILE" ]]; then SYSTEM_PROMPT=$(cat "$PROMPT_FILE") diff --git a/missions/tools/terminal_dojo/07_knowledge_setup.sh b/missions/tools/terminal_dojo/07_knowledge_setup.sh index 72b0208..4f5e55f 100755 --- a/missions/tools/terminal_dojo/07_knowledge_setup.sh +++ b/missions/tools/terminal_dojo/07_knowledge_setup.sh @@ -19,7 +19,7 @@ NC='\033[0m' DOCS_DIR="$HOME/Documents/crumbdocs" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" INGEST_SCRIPT="$SCRIPT_DIR/scripts/ingest_knowledge.py" -EMBEDDING_MODEL="nomic-embed-text" +EMBEDDING_MODEL="all-minilm" echo "" echo -e "${CYAN}═══════════════════════════════════════════════════════════════${NC}" @@ -44,7 +44,7 @@ if [[ ! -d "$VENV_DIR" ]]; then fi # Activate venv for checks/install -source "$VENV_DIR/bin/activate" +# source "$VENV_DIR/bin/activate" if python3 -c "import requests" &> /dev/null; then echo -e " ${GREEN}βœ“${NC} 'requests' Modul gefunden (in venv)" @@ -112,7 +112,7 @@ echo -e "${BOLD}4. Wissen verarbeiten (Ingestion)${NC}" echo -e "${DIM}Dies kann einen Moment dauern...${NC}" echo "" -python3 "$INGEST_SCRIPT" "$DOCS_DIR" +python3 "$INGEST_SCRIPT" "$DOCS_DIR" --model "$EMBEDDING_MODEL" echo "" echo -e "${GREEN}Fertig! Das Wissen ist nun im Nullfeld (Qdrant) gespeichert.${NC}" diff --git a/missions/tools/terminal_dojo/scripts/ingest_knowledge.py b/missions/tools/terminal_dojo/scripts/ingest_knowledge.py index 0097ece..7e6eeee 100644 --- a/missions/tools/terminal_dojo/scripts/ingest_knowledge.py +++ b/missions/tools/terminal_dojo/scripts/ingest_knowledge.py @@ -16,6 +16,10 @@ COLLECTION_NAME = "crumbforest_knowledge" def get_embedding(text: str) -> List[float]: """Generate embedding using Ollama.""" url = f"{OLLAMA_BASE_URL}/api/embeddings" + # Truncate to avoid 500 errors (simple approach) + if len(text) > 500: + text = text[:500] + payload = { "model": EMBEDDING_MODEL, "prompt": text @@ -26,6 +30,8 @@ def get_embedding(text: str) -> List[float]: response.raise_for_status() return response.json()["embedding"] except Exception as e: + if 'response' in locals(): + print(f"Ollama Response: {response.text}") print(f"Error getting embedding: {e}") return [] @@ -127,6 +133,10 @@ def ingest_directory(directory: str): points = [] for chunk in chunks: + # Rate limit to avoid overwhelming Ollama + import time + time.sleep(0.1) + vector = get_embedding(chunk["text"]) if not vector: continue @@ -156,8 +166,12 @@ def ingest_directory(directory: str): if __name__ == "__main__": parser = argparse.ArgumentParser(description="Ingest Markdown files into Qdrant.") parser.add_argument("directory", help="Directory containing .md files") + parser.add_argument("--model", default="all-minilm", help="Ollama embedding model (default: all-minilm)") args = parser.parse_args() + # Update global config + EMBEDDING_MODEL = args.model + # Check services try: requests.get(QDRANT_BASE_URL)