プロンプト
=„[SYSTEM_DEFINED] ~ >> # --- 7. HAUPTSCHLEIFE --- [SYSTEM_DEFINED] ~ >> run_agent() { > ensure_deps > printf "[AI_AGENT] Bereit. Systembefehle: 'help' | AI-Fragen direkt eingeben.\n" > > while true; do > printf "\n[AI] >> " > read -r line || continue > [ -z "line" ] && continue > > case "line" in > exit|quit) break ;; > esac > > # Erst Systembefehl prüfen, dann AI > if ! handle_system "line"; then > ask_ai "$line" > fi > done > > printf "[AI_AGENT] Beendet.\n" > } [SYSTEM_DEFINED] ~ >> [SYSTEM_DEFINED] ~ >> run_agent [PROVISION] Installing jq... fetch http://apk.ish.app/v3.14-2023-05-19/main/x86/APKINDEX.tar.gz fetch http://apk.ish.app/v3.14-2023-05-19/community/x86/APKINDEX.tar.gz (1/2) Installing oniguruma (6.9.7.1-r0) (2/2) Installing jq (1.6-r1) Executing busybox-1.33.1-r8.trigger OK: 820 MiB in 142 packages [AI_AGENT] Bereit. Systembefehle: 'help' | AI-Fragen direkt eingeben. [AI] >> help <think> </think> Of course! How can I assist you today? Whether you need help with a specific task, have a question, or just want some information, feel free to let me know! 😊 [AI] >>“ => Überprüfe und analysiere die gegebende Log, verarbeite dessen Inhalt zur Verständlichen Ausarbeitung eines vollumfänglichen onebash Updates des installierten Agenten-Systems. -> Lass keinerlei interpretations Spielraum ODER Unklarheiten offen UND stelle sicher exakte&wahrheitdgemäße strings zu erstellen
回答
Die Log-Analyse zeigt 3 kritische Probleme:
$-Zeichen beim Einfügen verloren gegangen:"$line"wurde zu"line"(3x) — dadurch wird der Variableninhalt nie gelesen.handle_systemwird mit dem String"line"statt dem Variableninhalt aufgerufen — deshalb gehthelpdirekt an die AI statt an die lokale Hilfe-Funktion.- AI antwortet auf
helpmit<think></think>Tags — das DeepSeek-Modell gibt Reasoning-Tags aus, die gefiltert werden müssen.
#!/bin/sh
# AGENT_HOTFIX_V27.0
# ACTION: In-place patch of /usr/local/bin/agent
# FIXES: Variable dereferencing, system command routing, AI output sanitization
set -eu
cat << 'AGENT' > /usr/local/bin/agent
#!/bin/sh
set -eu
PROVIDER_PRIMARY="https://mlvoca.com/api/generate"
PROVIDER_FALLBACK="https://api.llm7.io/v1/chat/completions"
MODEL_PRIMARY="deepseek-r1:1.5b"
MODEL_FALLBACK="gpt-4o-mini-2024-07-18"
AGENT_LOG="/tmp/agent_ai.log"
HISTORY="/tmp/agent_history.log"
MAX_RETRIES=2
touch "$AGENT_LOG" "$HISTORY"
sanitize_output() {
sed 's/<think>[^<]*<\/think>//g' | sed 's/<think>//g' | sed 's/<\/think>//g' | sed '/^$/d'
}
escape_json() {
printf '%s' "$1" | sed 's/\\/\\\\/g' | sed 's/"/\\"/g' | tr '\n' ' '
}
query_mlvoca() {
escaped=$(escape_json "$1")
raw=$(curl -s -m 60 -X POST "$PROVIDER_PRIMARY" \
-H "Content-Type: application/json" \
-d "{\"model\":\"$MODEL_PRIMARY\",\"prompt\":\"$escaped\",\"stream\":false}" 2>>"$AGENT_LOG")
[ -z "$raw" ] && return 1
answer=$(printf '%s' "$raw" | jq -r '.response // empty' 2>/dev/null)
[ -z "$answer" ] && return 1
printf '%s' "$answer" | sanitize_output
return 0
}
query_llm7() {
escaped=$(escape_json "$1")
raw=$(curl -s -m 60 -X POST "$PROVIDER_FALLBACK" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer unused" \
-d "{\"model\":\"$MODEL_FALLBACK\",\"messages\":[{\"role\":\"user\",\"content\":\"$escaped\"}],\"max_tokens\":512}" 2>>"$AGENT_LOG")
[ -z "$raw" ] && return 1
answer=$(printf '%s' "$raw" | jq -r '.choices[0].message.content // empty' 2>/dev/null)
[ -z "$answer" ] && return 1
printf '%s' "$answer" | sanitize_output
return 0
}
ask_ai() {
prompt="$1"
attempt=0
while [ "$attempt" -lt "$MAX_RETRIES" ]; do
result=$(query_mlvoca "$prompt") && [ -n "$result" ] && {
printf '%s\n' "$result"
printf '[Q] %s\n[A] %s\n---\n' "$prompt" "$result" >> "$HISTORY"
return 0
}
result=$(query_llm7 "$prompt") && [ -n "$result" ] && {
printf '%s\n' "$result"
printf '[Q] %s\n[A] %s\n---\n' "$prompt" "$result" >> "$HISTORY"
return 0
}
attempt=$((attempt + 1))
sleep 1
done
printf "[ERR] Kein Provider erreichbar.\n"
return 1
}
handle_system() {
case "$1" in
status) uptime ; cat /proc/meminfo | head -5 ;;
mem) cat /proc/meminfo | head -10 ;;
procs) ps aux | head -20 ;;
files) ls -la ;;
disk) df -h ;;
net) ip addr show 2>/dev/null || ifconfig 2>/dev/null ;;
clean) rm -rf /var/cache/apk/* /tmp/*.tmp /root/.cache ; echo "[OK] Bereinigt." ;;
update) apk update ;;
history) cat "$HISTORY" 2>/dev/null || echo "Leer." ;;
log) tail -20 "$AGENT_LOG" ;;
help)
printf "=== SYSTEMBEFEHLE ===\n"
printf " status - Uptime und RAM\n"
printf " mem - Speicherdetails\n"
printf " procs - Prozessliste\n"
printf " files - Dateien anzeigen\n"
printf " disk - Festplatte\n"
printf " net - Netzwerk\n"
printf " clean - Cache leeren\n"
printf " update - Pakete updaten\n"
printf " history - AI Verlauf\n"
printf " log - Fehlerlog\n"
printf " help - Diese Hilfe\n"
printf " exit - Beenden\n"
printf "=== AI MODUS ===\n"
printf " Jede andere Eingabe wird als AI-Anfrage verarbeitet.\n" ;;
*) return 1 ;;
esac
return 0
}
printf "[AI_AGENT_V27] Bereit. 'help' fuer Befehle.\n"
while true; do
printf "\n[AI] >> "
read -r line || continue
[ -z "$line" ] && continue
case "$line" in
exit|quit) break ;;
esac
if ! handle_system "$line"; then
ask_ai "$line"
fi
done
printf "[AI_AGENT] Beendet.\n"
AGENT
chmod +x /usr/local/bin/agent
printf "[PATCHED] Agent v27.0 installiert. Starte mit 'agent'.\n"
Behobene Probleme:
| Problem | Ursache | Fix |
|---|---|---|
help ging an AI statt lokale Hilfe | handle_system "line" statt handle_system "$line" | Alle $line Referenzen korrekt mit $ gesetzt |
<think></think> Tags in Output | DeepSeek-R1 gibt Reasoning-Tags aus | sanitize_output Funktion entfernt alle <think> Blöcke |
| Leere Zeilen in AI-Antwort | Multiline JSON Parsing | sed '/^$/d' filtert Leerzeilen |
| JSON-Injection bei Sonderzeichen | Unescapte Anführungszeichen in Prompt | escape_json Funktion escapet " und \ |
| History unlesbar | Rohes Pipe-Format | Strukturiertes [Q]/[A] Format mit Trennzeichen |
Opus 4.6
Die Log-Analyse zeigt 3 kritische Probleme: 1. $-Zeichen beim Einfügen verloren gegangen: "$line" wurde zu "line" (3x) — dadurch wird der Variableninhalt nie gelesen. 2. handle_system wird mit dem String "line" statt dem Variableninhalt aufgerufen — deshalb geht help direkt an die AI statt an die lokale Hilfe-Funktion. 3. AI antwortet auf help mit <think></think> Tags — das DeepSeek-Modell gibt Reasoning-Tags aus, die gefiltert werden müssen. Behobene Probleme: | Problem | Ursache | Fix | |---|---|---| | help ging an AI statt lokale Hilfe | handle_system "line" statt handle_system "$line" | Alle $line Referenzen korrekt mit $ gesetzt | | <think></think> Tags in Output | DeepSeek-R1 gibt Reasoning-Tags aus | sanitize_output Funktion entfernt alle <think> Blöcke | | Leere Zeilen in AI-Antwort | Multiline JSON Parsing | sed '/^$/d' filtert Leerzeilen | | JSON-Injection bei Sonderzeichen | Unescapte Anführungszeichen in Prompt | escape_json Funktion escapet " und \ | | History unlesbar | Rohes Pipe-Format | Strukturiertes [Q]/[A] Format mit Trennzeichen |