refactor(brain): Auto-Magie raus — ARIA entscheidet selbst, Stefan fragt im Zweifel
Mut zur Luecke: -595 Zeilen Auto-Magie-Code raus, weil sie heute Abend
4 Bugs verursacht und 0 echten Mehrwert geliefert hat. Plus Stefan
hat zu Recht erkannt dass das System mit Pentest/Audit-Workflows
kollidieren wuerde (Whitelist-Pflege noetig).
Weg:
- aria-brain/api_heuristic.py geloescht (282 Zeilen Cross-Session-
Tracking, Hint-Generation, Bypass-Detection)
- aria-brain/agent.py: Auto-Scaffold-Block, Bypass-Detection-Block,
_upsert_bypass_lesson-Methode (-146 Zeilen)
- aria-brain/main.py: /skills/can-bash-host Endpoint
- aria-brain/prompts.py: api_heuristic_section-Parameter
- docker-compose.yml: managed-settings-Copy aus proxy-Command
- proxy-patches/pre-tool-bash-block.js (PreToolUse-Hook)
- proxy-patches/managed-settings.json (claude-CLI Hook-Config)
Bleibt (kostet nichts, hilft):
- Alle 18 seed_rules (sind in DB, machen keine Last)
- skill_scaffold Tool (ARIA kann es manuell nutzen)
- Anti-Friedhof + snake_case + Safe-Name-Mapping (passive Validierung)
- Versionierung + Rollback (P4, hat sich bei PATH-Bug bewaehrt)
- 50k stdout Truncate-Fix
scaffold-reflex seed_rule umgeschrieben: kein 'SOFORT scaffold'-
Reflex mehr, stattdessen 4-Punkte-Heuristik (parametrisierbar?
wiederkehrend? exploratory? im Zweifel: Stefan fragen). Pentest-
Workflows bleiben damit ad-hoc Bash ohne false-positive
Skill-Vorschlaege.
Existierende auto-feedback-Memories in der DB bleiben — sind nuetzliche
Lehren, werden nicht mehr automatisch erweitert. Stefan kann sie via
Diagnostic-Gehirn-Tab loeschen wenn sie nerven.
Dank git ist alles rueckholbar. Wenn doch wieder Auto-Magie gewuenscht:
git revert auf 8d5991f.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -805,52 +805,6 @@ class SkillScaffold(BaseModel):
|
||||
author: str = "stefan"
|
||||
|
||||
|
||||
class SkillCanBashHostIn(BaseModel):
|
||||
command: str
|
||||
|
||||
|
||||
@app.post("/skills/can-bash-host")
|
||||
def skills_can_bash_host(body: SkillCanBashHostIn):
|
||||
"""Prueft ob ein Bash-Command gegen einen Host laufen will fuer den
|
||||
bereits ein matching Skill existiert. Wird vom claude-CLI PreToolUse-
|
||||
Hook im aria-proxy gefragt — wenn block=True, weist der Hook den
|
||||
Bash-Call mit Fehlermeldung zurueck und ARIA muss `run_<skill>` nehmen.
|
||||
|
||||
Antwort: {block: bool, host?: str, skill?: str, safe_tool?: str}
|
||||
"""
|
||||
import re as _re
|
||||
cmd = (body.command or "").strip()
|
||||
if not cmd:
|
||||
return {"block": False}
|
||||
skills = skills_mod.list_skills(active_only=False)
|
||||
if not skills:
|
||||
return {"block": False}
|
||||
|
||||
# Stem-Map: jeder Skill-Name als potentieller Hostname-Match
|
||||
# (yt_dlp_download → 'yt_dlp_download', 'spotify' → 'spotify' etc.)
|
||||
stem_to_skill = {}
|
||||
for s in skills:
|
||||
sname = (s.get("name") or "").lower()
|
||||
if sname:
|
||||
stem_to_skill[sname] = sname
|
||||
# Underscore-Variante auch als Stem akzeptieren
|
||||
stem_to_skill[sname.replace("_", "-")] = sname
|
||||
|
||||
# Alle https-URLs im Command einsammeln + matchen
|
||||
for url_host in _re.findall(r'https?://([a-zA-Z0-9.\-]+)', cmd):
|
||||
host_lower = url_host.lower()
|
||||
for stem, skill_name in stem_to_skill.items():
|
||||
if stem and stem in host_lower:
|
||||
safe_tool = "run_" + _re.sub(r"[^a-zA-Z0-9_]", "_", skill_name)
|
||||
return {
|
||||
"block": True,
|
||||
"host": url_host,
|
||||
"skill": skill_name,
|
||||
"safe_tool": safe_tool,
|
||||
}
|
||||
return {"block": False}
|
||||
|
||||
|
||||
@app.get("/skills/templates")
|
||||
def skills_templates_list():
|
||||
"""Liste der verfuegbaren Templates — fuer UI und Dokumentation."""
|
||||
|
||||
Reference in New Issue
Block a user