.... wuhuuuu

This commit is contained in:
sysop
2026-01-08 21:51:02 +01:00
parent ec2f85ca35
commit 0b680bdeec
4 changed files with 54 additions and 6 deletions

View File

@@ -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"

View File

@@ -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 <name> [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")

View File

@@ -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}"

View File

@@ -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)