fix(brain): 17. seed_rule — ARG_<NAME> ENV-Konvention NIEMALS aendern
Beobachtung 30.05.2026: ARIA hat beim skill_update des spotify-Skills
die ARG_-Konvention verloren. Statt os.environ.get('ARG_PATH', '')
hat sie os.environ.get('PATH', '') geschrieben. PATH ist aber die
reservierte Linux-Environment-Variable fuer den Executable-Suchpfad
(/usr/local/sbin:/usr/local/bin:...).
Folge: Skill las den System-PATH als URL-Pfad, rief
https://api.spotify.com/usr/local/sbin:/usr/local/bin:... → 404
zurueck. Stefan dachte Spotify sei kaputt. Rollback noetig
(Auto-Archive hat geholfen — alte Version war gluecklicherweise
noch da).
Neue Regel macht das explizit:
- ARG_<UPPER_NAME> ENV ist Pflicht-Konvention vom Skill-Runner
- Liste reservierter ENV-Namen die NICHT genommen werden duerfen:
PATH, HOME, USER, SHELL, LANG, TERM, PWD, OLDPWD,
BRAIN_INTERNAL_URL, SKILL_DIR, SHARED_UPLOADS, CFG_*
- Mit Praefix ARG_ keine Kollision moeglich
Plus skill_create Tool-Description um den gleichen Hinweis
ergaenzt: 'Args lesen via os.environ['ARG_<UPPER_NAME>'] — der
Praefix ARG_ ist Pflicht. NIEMALS direkt PATH/METHOD/BODY etc.
abrufen — das sind reservierte System-ENV (PATH = Executable-
Suchpfad, nicht Dein arg!).'
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -388,7 +388,7 @@ Chat-Turn an die richtigen Patterns.
|
|||||||
|
|
||||||
### Skill-Regeln (seed_rules)
|
### Skill-Regeln (seed_rules)
|
||||||
|
|
||||||
`aria-brain/seed_rules.py` enthaelt 16 `type=rule, pinned=true,
|
`aria-brain/seed_rules.py` enthaelt 17 `type=rule, pinned=true,
|
||||||
source=seed`-Memories, die bei jedem Brain-Start idempotent in die
|
source=seed`-Memories, die bei jedem Brain-Start idempotent in die
|
||||||
Vector-DB geschrieben werden (`migration_key`-basiert). Sie tauchen in
|
Vector-DB geschrieben werden (`migration_key`-basiert). Sie tauchen in
|
||||||
jedem Chat-Turn im Hot-Memory-Block auf:
|
jedem Chat-Turn im Hot-Memory-Block auf:
|
||||||
|
|||||||
+7
-3
@@ -107,9 +107,13 @@ META_TOOLS = [
|
|||||||
"entry_code": {
|
"entry_code": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"description": (
|
"description": (
|
||||||
"Python-Code. Args lesen via os.environ['ARG_NAME']. "
|
"Python-Code. Args lesen via os.environ['ARG_<UPPER_NAME>']. "
|
||||||
"Resultat per print() (stdout) zurueck. Bei Fehler: "
|
"WICHTIG: der Präfix `ARG_` ist Pflicht (Konvention vom "
|
||||||
"non-zero exit (sys.exit(1) o.ae.)."
|
"Skill-Runner). NIEMALS direkt PATH/METHOD/BODY etc. "
|
||||||
|
"abrufen — das sind reservierte System-ENV (PATH = "
|
||||||
|
"Executable-Suchpfad, nicht Dein arg!). Resultat per "
|
||||||
|
"print() (stdout) zurueck. Bei Fehler: non-zero exit "
|
||||||
|
"(sys.exit(1) o.ae.)."
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
"readme": {"type": "string", "description": "Markdown — was macht der Skill, Beispiel-Aufrufe"},
|
"readme": {"type": "string", "description": "Markdown — was macht der Skill, Beispiel-Aufrufe"},
|
||||||
|
|||||||
@@ -330,6 +330,40 @@ SEED_RULES: List[dict] = [
|
|||||||
"Beim ersten Versuch direkt XML-Tag ergibt 3-5s statt 30s+."
|
"Beim ersten Versuch direkt XML-Tag ergibt 3-5s statt 30s+."
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"migration_key": "seed/skill-rule/arg-env-convention",
|
||||||
|
"type": "rule",
|
||||||
|
"title": "Skill-Regel: Args kommen als ARG_<NAME> ENV — die Konvention NIEMALS aendern",
|
||||||
|
"category": "skills",
|
||||||
|
"content": (
|
||||||
|
"Skill-Args werden vom Brain-Runner als Environment-Variablen "
|
||||||
|
"mit PRÄFIX `ARG_` ueber `os.environ` an den Skill durchgereicht. "
|
||||||
|
"Beispiel: arg `path=\"/v1/me/player\"` → "
|
||||||
|
"`ARG_PATH=/v1/me/player` im Skill-ENV.\n"
|
||||||
|
"\n"
|
||||||
|
"Beim skill_update MUSST Du diese Konvention beibehalten:\n"
|
||||||
|
" RICHTIG: os.environ.get('ARG_PATH', '')\n"
|
||||||
|
" RICHTIG: os.environ.get('ARG_METHOD', 'GET')\n"
|
||||||
|
" RICHTIG: os.environ.get('ARG_BODY', '')\n"
|
||||||
|
"\n"
|
||||||
|
" FALSCH: os.environ.get('PATH', '') ← System-PATH "
|
||||||
|
"(Executable-Suchpfad)!\n"
|
||||||
|
" FALSCH: os.environ.get('METHOD', '')\n"
|
||||||
|
" FALSCH: os.environ.get('BODY', '')\n"
|
||||||
|
"\n"
|
||||||
|
"Antipattern (30.05.2026): ARIA hat beim skill_update des "
|
||||||
|
"spotify-Skills die Args von `ARG_PATH` auf `PATH` umbenannt. "
|
||||||
|
"Folge: Skill las `/usr/local/sbin:/usr/local/bin:...` als "
|
||||||
|
"URL-Pfad → Spotify gab 404 zurück. Stefan dachte Spotify sei "
|
||||||
|
"kaputt. Rollback noetig.\n"
|
||||||
|
"\n"
|
||||||
|
"Andere reservierte ENV-Namen die Du NICHT nehmen darfst: "
|
||||||
|
"PATH, HOME, USER, SHELL, LANG, TERM, PWD, OLDPWD, "
|
||||||
|
"BRAIN_INTERNAL_URL, SKILL_DIR, SHARED_UPLOADS, CFG_* "
|
||||||
|
"(letztere sind Config-Schema-Werte). Bei Skill-Args IMMER "
|
||||||
|
"den Praefix ARG_ verwenden, dann hast Du keine Kollision."
|
||||||
|
),
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"migration_key": "seed/skill-rule/skills-are-editable-python",
|
"migration_key": "seed/skill-rule/skills-are-editable-python",
|
||||||
"type": "rule",
|
"type": "rule",
|
||||||
|
|||||||
Reference in New Issue
Block a user