Skip to content
Apothem
Konzepte

Agenten-Architektur

Wie Apothem eine einzige agentische Fähigkeitskohorte über siebzehn Harnesses mit divergierenden Hook-Oberflächen und Regelformaten projiziert.

Dies ist eine an Entwickler gerichtete Tech-Spec-Seite. Sie verwendet Apothems internes Vokabular — Adapterklassen, Materializer, Propagation-Manifest, Geschwister-Konventions-Konvergenz — ohne es für ein allgemeines Publikum abzuschwächen.

Apothem liest ein gemeinsames Profil (~/.config/apothem/profile.yaml) und materialisiert die tool-native Konfiguration für siebzehn registrierte Adapter. Die Harnesses teilen sich kein agentisches Fähigkeitsmodell: Manche stellen Pre-Tool-Call-Hooks bereit, manche führen Regeln aus flachen .md-Dateien aus, manche betten jede Regel in eine einzige Anweisungsdatei ein, und manche rendern eine profilgesteuerte Konfiguration zur Installationszeit. Diese Seite kartiert diese Divergenz und die Disziplin, die Apothem darüber hinweg anwendet.

Agentische Fähigkeitsmatrix je Harness

Die Matrix unten deckt alle siebzehn Harnesses ab. Spalten: die PreToolUse-Hook- Oberfläche, die der Adapter anbindet (wo ein Harness Hooks dokumentiert, die der Adapter nicht registriert, sagt die Zelle das), das Format, das Apothem zur Aktivierung von Regeln verwendet, die Adapterklasse (siehe Adapterklassen), und ob der Adapter über einen Materializer eine native Konfiguration rendert.

HarnessPreToolUse-Hook-OberflächeRegel-AktivierungsformatAdapterklasseMaterializer
antigravityNative Hook-Oberfläche vorhanden; nur Apothem-UnterstützungsmaterialGEMINI.md plus Antigravity-CLI-Plugin-RegelnKlasse Ikeiner
claude-codeNative PreToolUse / PostToolUse / Stop / SessionStartflache .md-Regeln unter rules/Klasse II-Akeiner (Vendor-Settings-Templates)
codebuddyNative SessionStart und PostToolUse in .codebuddy/settings.local.json; kein PreToolUse-Guard (der Vendor dokumentiert dort kein additionalContext).codebuddy/rules/apothem-rules.md ProjektregeldateiKlasse Ikeiner
codexNative hooks.json Lebenszyklus-HooksAGENTS.md plus Unterstützungsregeln, auf die installierte Skills verweisenKlasse Ikeiner
cursorNative sessionStart in der .cursor/hooks.json des Projekts; noch kein Tool-Event-HookEine .mdc-Workspace-Regeldatei (MDC-Frontmatter: description / globs / alwaysApply)Klasse Ikeiner
gemini-cliNative Hook-Oberfläche vorhanden; nur Apothem-UnterstützungsmaterialRegeln eingebettet in einzelne GEMINI.mdKlasse Ikeiner
github-copilotNative sessionStart und postToolUse in .github/hooks/apothem.json; kein preToolUse-Guard (der Vendor liest dort nur Berechtigungsfelder)Regeln in .github/copilot-instructions.mdKlasse Ikeiner
glmKeine (Modell-Backend; keine Agent-Tool-Oberfläche).apothem/providers/glm.toml Backend-Provider-Konfiguration (keine Regelkohorte)Klasse Ikeiner
hermesNur Unterstützungsmaterialconfig.yaml plus externes Skill-VerzeichnisKlasse II-Bconfig.yaml
kimi-codeNur UnterstützungsmaterialAGENTS.md plus Unterstützungsregeln unter .kimi-code/.apothem/support/Klasse Ikeiner
kiroNative SessionStart in .kiro/hooks/apothem.json; kein Tool-Event-Hook (der Vendor ignoriert deren Ausgabe).kiro/steering/apothem-rules.md Steering-DateiKlasse Ikeiner
open-clawNur Unterstützungsmaterialopenclaw.json plus zusätzliches Skill-VerzeichnisKlasse II-Bopenclaw.json
opencodeNur Unterstützungsmaterialprofil-gerendertes JSON plus native Commands, Skills und AgentenKlasse II-Bopencode.json
qwen-codeNative PreToolUse / Stop / SessionStartQWEN.md plus native Commands, Skills und AgentenKlasse II-Bsettings.json / QWEN.md
traeKeine.trae/rules/apothem-rules.md ProjektregeldateiKlasse Ikeiner
windsurfNative SessionStart und PostToolUse für Devin Local in .devin/config.local.json; kein PreToolUse-Guard (der Vendor dokumentiert dort keinen Kontextkanal)Eine Regeldatei in .devin/rules/Klasse Ikeiner
zedKeineflache .rules-Datei im ProjektstammKlasse Ikeiner

Anmerkungen zur Matrix:

  • claude-code ist der Adapter mit der breitesten nativen Oberfläche. Er trägt native PreToolUse-, PostToolUse-, Stop- und SessionStart-Hooks und liefert Vendor-Settings-Templates. Er schreibt einen durch Sentinel-Marker abgegrenzten verwalteten Block in CLAUDE.md und lässt die Prosa des Operators außerhalb der Sentinel-Marker unverändert.
  • codex installiert native Lebenszyklus-Hooks über hooks.json, konvertiert Agenten nach TOML, verpackt Command-Prompts als Codex-Skills und belässt config.toml in der Hoheit des Operators.
  • antigravity behält ~/.gemini/GEMINI.md als globalen Kontextanker und installiert ein Apothem-Plugin unter ~/.gemini/antigravity-cli/plugins/apothem/. Hook-Dateien bleiben als Unterstützungsmaterial erhalten, bis der Adapter die Übersetzung des Antigravity-Hook-Schemas übernimmt.
  • cursor aktiviert Regeln über eine .mdc-Datei, die das Vendor-MDC-Frontmatter (description, globs, alwaysApply) tragen; der Adapter schreibt keine Einzeldatei .cursorrules.
  • windsurf verwendet .devin/rules/; der Adapter schreibt keine Einzeldatei .windsurfrules.
  • hermes und open-claw rendern native Konfigurationsdateien und binden Apothem-Unterstützungs-Skill-Verzeichnisse über die dokumentierte Skill-Verzeichnis-Einstellung jedes Harness an. Nicht unterstützte gemeinsame Kohorten bleiben unter Apothem-eigenen Unterstützungs-Teilbäumen.
  • qwen-code rendert dokumentierte settings.json-Schlüssel für Kontext und Hook-Dispatch und verwendet anschließend die Qwen-nativen Verzeichnisse für Commands, Skills und Agenten.

Disziplin der tool-übergreifenden Orchestrierung

Apothem wendet Geschwister-Konventions-Konvergenz an: derselbe vom Betreiber aufrufbare Workflow wird in das native Idiom jedes Harness projiziert, statt in ein einziges gemeinsames Format gezwängt zu werden. Eine Regel, die unter claude-code als flache .md-Datei aktiviert wird, wird unter cursor zu einer .mdc-Workspace-Regel, unter gemini-cli zu einem eingebetteten Abschnitt von GEMINI.md und unter qwen-code zu einer verketteten Referenz in QWEN.md plus nativen Discovery-Verzeichnissen — dieselbe Absicht, der Dialekt jedes Harness.

Die kanonische Master-Kohorte liegt unter:

src/apothem/{rules,commands,skills,agents,output-styles,hooks,conformity,statuslines}/

Jeder Adapter propagiert eine Teilmenge dieser Kohorte. Die Teilmenge je Harness ist in src/apothem/lib/propagation-manifest.yaml deklariert; das Manifest ist die einzige Quelle der Wahrheit dafür, welche Artefakte welchen Harness in welcher Form erreichen. Ein Adapter erfindet niemals Artefakte außerhalb des Manifests, und das Manifest weist niemals ein Artefakt einem Harness zu, dem die Oberfläche zum Beherbergen fehlt.

Adapterklassen erklärt

Apothem sortiert Adapter in drei Klassen danach, wie sie das gemeinsame Profil in tool-native Ausgabe übersetzen.

  • Klasse I — Roh-Propagation. Der Adapter kopiert die kanonischen Master-Artefakte (eine im Manifest deklarierte Teilmenge) ohne Rendering-Schritt direkt an den Konfigurationsort des Harness. Es gibt keinen Materializer. antigravity, codebuddy, codex, cursor, gemini-cli, github-copilot, glm, kimi-code, kiro, trae, windsurf und zed sind Klasse I.
  • Klasse II-A — Roh + vendor-gebundene Settings-Templates. Der Adapter propagiert Artefakte roh und verwaltet zusätzlich vendor-spezifische Settings-Templates, die an das Schema des Vendors gebunden sind. claude-code ist Klasse II-A.
  • Klasse II-B — profil-gerenderter Einzeloberflächen-Materializer. Der Adapter rendert das gemeinsame Profil über einen Materializer in eine einzige native Konfigurationsoberfläche. hermes, open-claw, opencode und qwen-code sind Klasse II-B.

Verhalten zur Materializer-Zeit

Die Klassenunterscheidung tritt zur Materializer-Zeit zutage — wenn ein Betreiber die CLI gegen einen Harness ausführt:

  • apothem install --harness <H> propagiert die Manifest-Teilmenge für <H> und rendert für Adapter der Klasse II-A / II-B die tool-native Konfiguration.
  • apothem verify --harness <H> prüft, ob die verwalteten Dateien existieren und sich parsen lassen. Mit --profile PATH prüft es sie zusätzlich gegen das, was dieses Profil erzeugen würde, und schlägt bei Drift fehl.
  • apothem status meldet, ob jeder Harness installiert ist und ob er vom aktuellen gemeinsamen Profil abgedriftet ist.
  • apothem doctor meldet den Zustand je Harness über jeden registrierten Adapter hinweg: ok, not_installed, needs_project, verify_failed, hook_failed oder error.

Siehe die CLI-Referenz für die vollständigen Command-Oberflächen.

Divergenz-Taxonomie

Die siebzehn Harnesses divergieren entlang dreier Achsen. Jeder Unterschied je Harness in der Matrix lässt sich auf eine davon zurückführen.

AchseÜber die siebzehn Harnesses beobachtete Spannweite
Hook-OberflächeNative Multi-Event (claude-code, codex, qwen-code) → nativ bei den Events, die der Vendor an das Modell liefert (codebuddy: SessionStart und PostToolUse; cursor: sessionStart; github-copilot: sessionStart und postToolUse; kiro: SessionStart; windsurf: SessionStart und PostToolUse) → nur Unterstützungs-Hook-Material (antigravity, gemini-cli, hermes, kimi-code, open-claw, opencode) → kein vom Adapter registrierter Hook (glm, trae, zed)
Regel-AktivierungsformatFlach .md (claude-code) → Plugin-Regeln (antigravity) → .mdc-Workspace (cursor) → Verzeichnisregeln (codebuddy, trae, windsurf) → Steering-Datei (kiro) → flache Datei im Projektstamm (zed) → einzelne eingebettete Datei (codex, gemini-cli, github-copilot, kimi-code) → konfigurations-referenziertes Unterstützungsmaterial (hermes, open-claw, opencode, qwen-code) → Backend-Provider-Konfiguration (glm)
AdapterklasseKlasse I Roh-Propagation → Klasse II-A Roh + Vendor-Settings → Klasse II-B profil-gerenderte Einzeloberfläche

Apothems Aufgabe ist es, eine kohärente Betreiberabsicht konstant zu halten, während diese drei Achsen je Harness variieren. Das Propagation-Manifest und der Adapterklassen-Vertrag sind die beiden Mechanismen, die diese Absicht über die Divergenz hinweg stabil halten.

On this page