.... wuhuuuu
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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}"
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user