# Herkunft und Zuweisung

Erfassen Sie den Ursprung einer Erinnerung, ohne Quellmetadaten mit Autorisierung oder Eigentum zu verwechseln.

- Canonical: https://docs.xmemo.dev/de/docs/concepts/provenance-attribution
- Locale: de-DE
- Content-Locale: de-DE
- Canonical-Content-Digest: 019b1c6aab84d15e8b791ec3f9b7ecd3d545865415ceba204e14301dea665c6a
- Edition-Digest: e0e603636ec0bce4938a9872449f9736c4d1304e19e46ae85b757702a8044b82
- Source-Revision: sha256:3922476e09ce20617ab30ead32aa1ccd8f95082d0f395b172b3eadd0d8fd2d45

## Herkunft ist Teil des öffentlichen Speicherdatensatzes

Der Speichervertrag stellt die Herkunft (provenance) neben content, path, source_identity, agent_id, agent_instance_id_hash und agent_instance_source bereit. Die Herkunft liefert strukturierte Nachweise darüber, wie ein Datensatz erzeugt wurde; sie ist kein Bearer-Token und kann den Zugriff des Aufrufers nicht erweitern.

- source_identity ist die kompakte Aufrufer-/Quellbezeichnung für Schreib- und Auditpfade.
- provenance ist ein JSON-Objekt für Quelle, Adapter, Ereignis oder sonstige Nachweisfelder.
- agent_instance_id_hash ist der datenschutzwahrende Wert für die Installationszuweisung.

## Agentenereignisse führen ihren Ursprung mit

AgentEvent.to_memory_candidate erstellt einen MemoryCandidate mit Herkunftsangaben, die source=agent_integration, adapter=<event source> und event_id enthalten. Die Metadaten des Kandidaten behalten zudem Ereignistyp, Zeit, Agenten-ID, Task-ID, Tool-Name, Befehl, Dateipfad und Status bei, nachdem der gemeinsame Bereiniger ausgeführt wurde.

```json
{
  "provenance": {
    "source": "agent_integration",
    "adapter": "codex",
    "event_id": "evt_<stable-event-id>"
  },
  "metadata": {
    "agent_event": {
      "event_type": "decision_made",
      "task_id": "<task-id>"
    }
  }
}
```

## Zuweisung mit der Erinnerung schreiben

Die öffentlichen Anfragemodelle remember und store akzeptieren source und provenance. Geben Sie beim Erfassen stabile, nicht-geheime Bezeichnungen an; belassen Sie den Zugriffsberechtigungsnachweis im Header oder in der Umgebung und überlassen Sie dem Server die Bereinigung von Inhalt, Metadaten und Herkunft vor der Speicherung.

```http
POST /v1/remember
X-API-Key: <your-assigned-api-key>
Content-Type: application/json

{
  "content": "The deployment decision was verified.",
  "path": "projects/memory-os/decisions",
  "source": "codex",
  "provenance": {
    "source": "agent_integration",
    "adapter": "codex",
    "event_id": "evt_<stable-event-id>"
  }
}
```

## Bereinigung löscht die Herkunftslinie nicht

Der Persistenzbereiniger durchläuft Inhalt, Metadaten und Herkunft strukturell. Werte, die wie Anmeldedaten aufgebaut sind, werden entfernt; falls eine Schwärzung erfolgt, erfasst der Server privacy.server_write_sanitizer-Audit-Metadaten und behält sichere Herkunftsfelder bei. Behandeln Sie den resultierenden Datensatz als bereinigten Beleg, nicht als rohes Ereignisarchiv.

## ChatGPT-Benutzer

Geben Sie ChatGPT dauerhaften Zugriff auf Ihre XMemo-Präferenzen, Projektfakten, Entscheidungen und TODOs, ohne Bearer-Token in einen Chat einzufügen.

Verbinden Sie den gehosteten XMemo-MCP-Server über den OAuth-Ablauf der ChatGPT-/OpenAI-App und genehmigen Sie anschließend die Berechtigungen memory:read und memory:write für Ihr XMemo-Konto.

Speichern Sie eine synthetische Präferenz oder Projektnotiz, starten Sie einen neuen Chat und fordern Sie ChatGPT auf, diese vor der Fortsetzung der Arbeit über XMemo abzurufen.

Wenn OAuth fehlschlägt oder Tools nicht angezeigt werden, melden Sie sich in der Host-App vom MCP-Server ab, verbinden Sie die XMemo-Server-URL erneut und versuchen Sie es noch einmal, bevor Sie direkte Token erstellen.

## Copilot- / Codex-Entwickler

Übertragen Sie Repository-Entscheidungen, Programmierkonventionen, Bugfix-Notizen und den Aufgabenverlauf zwischen IDE- und CLI-Agenten.

Verwenden Sie OAuth für VS Code / GitHub Copilot und Gemini CLI, sofern verfügbar. Behalten Sie für Copilot CLI, Codex, Cursor oder andere direkte MCP-Clients XMEMO_KEY in der lokalen Umgebung oder im Secret-Store und setzen Sie eine stabile XMEMO_AGENT_INSTANCE_ID.

Erfassen Sie eine Codebasis-Entscheidung oder einen Bugfix und fordern Sie den nächsten IDE- oder CLI-Agenten auf, den relevanten XMemo-Kontext vor dem Bearbeiten abzurufen.

Wenn Abrufe leer bleiben, überprüfen Sie den ausgewählten MCP-Konfigurationspfad, die Umgebungsvariable XMEMO_KEY für direkte Clients und veraltete OAuth-Anmeldedaten in der Host-App.

## Verantwortlicher für Team- / Enterprise-Pilotprojekte

Evaluieren Sie geteilten Speicher mit Kontokontrollen, Quellenzuordnung, Export-/Lösch-Workflows und prüfersicheren Einrichtungsnachweisen.

Erstellen oder betreten Sie den geschützten XMemo-Arbeitsbereich, laden Sie freigegebene Benutzer ein und verbinden Sie jeden Client über OAuth oder bereichsbezogene direkte Anmeldedaten gemäß den Bereitschafts-Badges.

Lassen Sie ein Mitglied des Pilotprojekts eine synthetische Team-Erinnerung speichern, bestätigen Sie die Quellenzuordnung in XMemo und prüfen Sie anschließend Lösch-/Export- sowie Support-Pfade.

Wenn ein Mitglied keine Verbindung herstellen kann, prüfen Sie Rollenberechtigungen, OAuth-Genehmigung, Client-Bereitschaftsstatus und Support-Hinweise, bevor Sie ein neues Token ausstellen.

## Betreiber autonomer Agenten

Ermöglichen Sie es Headless- oder zeitgesteuerten Agenten, Fortschritte aufzuzeichnen, frühere Entscheidungen abzurufen und eine stabile, nicht-geheime Instanzidentität beizubehalten.

Rufen Sie /api/v1/mcp/config/autonomous-agent ab. Bevorzugen Sie auth_modes.oauth, wenn der Runner OAuth + benutzerdefinierte Header unterstützt; verwenden Sie auth_modes.xmemo_key mit XMEMO_KEY aus einem Secret-Store nur für vollständig autonome Headless-Runner.

Führen Sie eine synthetische Aufgabe aus, die den Fortschritt in XMemo schreibt, starten Sie den Runner neu und bestätigen Sie, dass er diesen Fortschritt unter Verwendung derselben XMEMO_AGENT_INSTANCE_ID abruft.

Wenn sich die Zuordnung ändert oder Abrufe über Instanzen hinweg aufgeteilt werden, speichern Sie XMEMO_AGENT_INSTANCE_ID außerhalb von Git und stellen Sie sicher, dass der Runner diese nicht bei jedem Start neu generiert.
