CodeMender ist ein autonomer KI-Agent für die Codesicherheit, der schwerwiegende Cybersecurity-Schwachstellen in Ihrer Codebasis scannt, verifiziert und behebt. Bevor Sie CodeMender ausführen, laden Sie die CLI herunter und initialisieren Sie die Arbeitsbereichsoptionen.
Architektur- und Sicherheitsmodell
CodeMender verwendet ein lokales Ausführungsmodell:
- Gehostete Reasoning-Engine: Agentic Reasoning, Threat Modeling und Orchestrierungslogik werden sicher in Google Cloud auf der Gemini Enterprise Agent Platform ausgeführt.
- Befehlszeile für die lokale Ausführung: Der Quellcode verlässt Ihre Workstation oder Ihren CI/CD-Container nie in großen Mengen. Das lokale
cm-Befehlszeilentool führt Dateilesevorgänge, lokale Build-Prüfungen und PoC-Exploit-Bestätigungen (Proof-of-Concept) in Ihrer lokalen Sandbox aus. Dabei werden nur präzise Code-Snippets und Tool-Ausführungsergebnisse über die Interactions API auf der Gemini Enterprise Agent Platform an das Cloud-Backend gesendet.
Umgebung einrichten
Bevor Sie CodeMender verwenden können, müssen Sie Ihr Google Cloud -Projekt einrichten, die CLI herunterladen und installieren, Ihre Anmeldedaten konfigurieren und Ihren Arbeitsbereich initialisieren.
Projekteinrichtung und IAM-Berechtigungen
Bevor Sie die CLI herunterladen und Anmeldedaten konfigurieren, müssen Sie sicherstellen, dass das Zielprojekt Google Cloud mit den erforderlichen APIs und Berechtigungen eingerichtet ist.
Erforderliche APIs
Prüfen Sie, ob die folgenden Google Cloud APIs in Ihrem Projekt aktiviert sind:
- Vertex AI API (
aiplatform.googleapis.com): Ermöglicht das Streamen und Verwalten aktiver Sitzungen. - Cloud Resource Manager API (
cloudresourcemanager.googleapis.com): Validiert Nutzerauthentifizierungsstatus und Projektmetadaten.
Empfohlene vordefinierte IAM-Rolle
Damit Nutzer die CLI-Befehle ausführen können, muss ihnen die folgende IAM-Rolle zugewiesen werden:
- Vertex AI User (
roles/aiplatform.user): Ermöglicht Nutzern das Erstellen, Streamen und Verwalten aktiver Sitzungen.
CodeMender CLI herunterladen und installieren
Die CodeMender CLI-Binärdateien werden in Artifact Registry gehostet. Wählen Sie den Tab für Ihr Betriebssystem aus, um die CLI herunterzuladen und zu installieren.
Linux x86_64
So laden Sie die CodeMender CLI für Linux (x86_64) herunter und installieren sie:
- Laden Sie das Paket mit einer der folgenden Methoden herunter:
- gcloud CLI:Führen Sie den folgenden Befehl aus:
gcloud artifacts generic download \ --project=cmoc-prod \ --location=us \ --repository=codemender-cli-production \ --package=cm \ --version=stable \ --name=cm-linux-amd64.zip \ --destination=./
- curl:Führen Sie den folgenden Befehl aus:
curl -L -o cm-linux-amd64.zip "https://artifactregistry.googleapis.com/download/v1/projects/cmoc-prod/locations/us/repositories/codemender-cli-production/files/cm%3Astable%3Acm-linux-amd64.zip:download?alt=media"
- gcloud CLI:Führen Sie den folgenden Befehl aus:
- Installieren Sie die Befehlszeile:
unzip cm-linux-amd64.zip chmod +x cm sudo mv cm /usr/local/bin/cm
Linux ARM64
So laden Sie die CodeMender CLI für Linux (ARM64) herunter und installieren sie:
- Laden Sie das Paket mit einer der folgenden Methoden herunter:
- gcloud CLI:Führen Sie den folgenden Befehl aus:
gcloud artifacts generic download \ --project=cmoc-prod \ --location=us \ --repository=codemender-cli-production \ --package=cm \ --version=stable \ --name=cm-linux-arm64.zip \ --destination=./
- curl:Führen Sie den folgenden Befehl aus:
curl -L -o cm-linux-arm64.zip "https://artifactregistry.googleapis.com/download/v1/projects/cmoc-prod/locations/us/repositories/codemender-cli-production/files/cm%3Astable%3Acm-linux-arm64.zip:download?alt=media"
- gcloud CLI:Führen Sie den folgenden Befehl aus:
- Installieren Sie die Befehlszeile:
unzip cm-linux-arm64.zip chmod +x cm sudo mv cm /usr/local/bin/cm
macOS Intel
So laden Sie die CodeMender CLI für macOS (Intel) herunter und installieren sie:
- Laden Sie das Paket mit einer der folgenden Methoden herunter:
- gcloud CLI:Führen Sie den folgenden Befehl aus:
gcloud artifacts generic download \ --project=cmoc-prod \ --location=us \ --repository=codemender-cli-production \ --package=cm \ --version=stable \ --name=cm-darwin-amd64.zip \ --destination=./
- curl:Führen Sie den folgenden Befehl aus:
curl -L -o cm-darwin-amd64.zip "https://artifactregistry.googleapis.com/download/v1/projects/cmoc-prod/locations/us/repositories/codemender-cli-production/files/cm%3Astable%3Acm-darwin-amd64.zip:download?alt=media"
- gcloud CLI:Führen Sie den folgenden Befehl aus:
- Installieren Sie die Befehlszeile:
unzip cm-darwin-amd64.zip chmod +x cm mv cm /usr/local/bin/cm
macOS mit Apple Silicon
So laden Sie die CodeMender-Befehlszeile für macOS (Apple Silicon) herunter und installieren sie:
- Laden Sie das Paket mit einer der folgenden Methoden herunter:
- gcloud CLI:Führen Sie den folgenden Befehl aus:
gcloud artifacts generic download \ --project=cmoc-prod \ --location=us \ --repository=codemender-cli-production \ --package=cm \ --version=stable \ --name=cm-darwin-arm64.zip \ --destination=./
- curl:Führen Sie den folgenden Befehl aus:
curl -L -o cm-darwin-arm64.zip "https://artifactregistry.googleapis.com/download/v1/projects/cmoc-prod/locations/us/repositories/codemender-cli-production/files/cm%3Astable%3Acm-darwin-arm64.zip:download?alt=media"
- gcloud CLI:Führen Sie den folgenden Befehl aus:
- Installieren Sie die Befehlszeile:
unzip cm-darwin-arm64.zip chmod +x cm mv cm /usr/local/bin/cm
Windows x86_64
So laden Sie die CodeMender-Befehlszeile für Windows (x86_64) herunter und installieren sie:
- Laden Sie das Paket mit einer der folgenden Methoden herunter:
- gcloud CLI:Führen Sie den folgenden Befehl in PowerShell aus:
gcloud artifacts generic download ` --project=cmoc-prod ` --location=us ` --repository=codemender-cli-production ` --package=cm ` --version=stable ` --name=cm-windows-amd64.zip ` --destination=./
- PowerShell:Führen Sie den folgenden Befehl aus:
Invoke-WebRequest -Uri "https://artifactregistry.googleapis.com/download/v1/projects/cmoc-prod/locations/us/repositories/codemender-cli-production/files/cm%3Astable%3Acm-windows-amd64.zip:download?alt=media" -OutFile cm-windows-amd64.zip
- gcloud CLI:Führen Sie den folgenden Befehl in PowerShell aus:
- Installieren Sie die Befehlszeile:
Expand-Archive -Path cm-windows-amd64.zip -DestinationPath ./ # Move cm.exe to a permanent folder and add it to your system PATH (e.g. Environmental Variables)
Windows ARM64
So laden Sie die CodeMender CLI für Windows (ARM64) herunter und installieren sie:
- Laden Sie das Paket mit einer der folgenden Methoden herunter:
- gcloud CLI:Führen Sie den folgenden Befehl in PowerShell aus:
gcloud artifacts generic download ` --project=cmoc-prod ` --location=us ` --repository=codemender-cli-production ` --package=cm ` --version=stable ` --name=cm-windows-arm64.zip ` --destination=./
- PowerShell:Führen Sie den folgenden Befehl aus:
Invoke-WebRequest -Uri "https://artifactregistry.googleapis.com/download/v1/projects/cmoc-prod/locations/us/repositories/codemender-cli-production/files/cm%3Astable%3Acm-windows-arm64.zip:download?alt=media" -OutFile cm-windows-arm64.zip
- gcloud CLI:Führen Sie den folgenden Befehl in PowerShell aus:
- Installieren Sie die Befehlszeile:
Expand-Archive -Path cm-windows-arm64.zip -DestinationPath ./ # Move cm.exe to a permanent folder and add it to your system PATH (e.g. Environmental Variables)
Google Cloud -Anmeldedaten konfigurieren
Da die CodeMender-Befehlszeile über die Interactions API mit der in der Cloud gehosteten Reasoning Engine interagiert, müssen Sie Google Cloud Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC) in Ihrer Umgebung konfigurieren.
Führen Sie zur Authentifizierung den folgenden Befehl aus und folgen Sie den Anmeldeaufforderungen:
gcloud auth application-default login
Arbeitsbereich initialisieren
Nach der Authentifizierung müssen Sie CodeMender in Ihrer lokalen Umgebung initialisieren. Durch die Initialisierung von CodeMender wird Ihr lokaler Arbeitsbereich vorbereitet, indem Dateien zur Statusverfolgung erstellt und Verbindungseinstellungen für die cloudbasierte Reasoning Engine eingerichtet werden.
Führen Sie cm init im Stammverzeichnis Ihrer Codebasis aus, um Dateien für die lokale Statusverfolgung zu erstellen und Basiskonfigurationen festzulegen:
cm init
Verwenden Sie das Flag „--verify“, um die Verbindung zur cloudbasierten Reasoning Engine zu testen und die Arbeitsbereichseinstellungen zu überprüfen:
cm init --verify
Konfigurationsparameter (config.yaml)
Das primäre Ziel von config.yaml ist es, das Verhalten des CodeMender-Agents an die Sicherheits-, Umgebungs- und Leistungsanforderungen Ihres lokalen Systems anzupassen.
Da der gehostete KI-Agent lokale Befehle (z. B. zum Erstellen von Code, Ausführen von Tests oder Bearbeiten von Dateien) über Ihren lokalen Daemon-Client ausführt, dient diese Konfigurationsdatei als Grenze, die definiert, was der Agent tun darf und was nicht.
Nutzung
- Speicherort:Standardmäßig sucht die CLI in Ihrem initialisierten Arbeitsbereich (in der Regel
.codemender/config.yaml) oder in einem globalen Konfigurationsverzeichnis wie~/.config/codemender/config.yamlnach dieser Datei. - Ausführung:Wenn Sie Befehle wie
cm find,cm verifyodercm fixausführen, liest der lokale Client diese Datei, um Sicherheitsparameter festzulegen, Systemumgehungen anzuwenden und anzugeben, welche Dateien oder Verzeichnisse ignoriert werden sollen.
Standardeinstellungen für Core
Das bedeuten die wichtigsten Standardparameter:
human_confirmation: true(oderrequire_confirmation: true)- Was das bedeutet:Standardmäßig kann CodeMender keine Dateien auf Ihrer Festplatte ändern oder Shell-Befehle ausführen, ohne Sie explizit im Terminal um eine
[Y/n]-Bestätigung zu bitten. - Warum ist das die Standardeinstellung? CodeMender kann spekulative Patches generieren oder versuchen, Exploit-Skripts auszuführen, um eine Sicherheitslücke zu bestätigen. Durch die erzwungene Bestätigung durch den Nutzer werden versehentliche Systemänderungen oder die unbefugte Code-Ausführung in Ihrer lokalen Umgebung verhindert.
- Umgehen:Für nicht interaktive CI/CD-Pipelines kann dieser Wert auf
falsefestgelegt werden.
- Was das bedeutet:Standardmäßig kann CodeMender keine Dateien auf Ihrer Festplatte ändern oder Shell-Befehle ausführen, ohne Sie explizit im Terminal um eine
confirm_writes: false- Bedeutung:Deaktiviert interaktive Aufforderungen für Dateimodifikationen. Der CodeMender-Agent kann Sicherheitspatches schreiben und Quelldateien direkt auf Ihrer lokalen Festplatte ändern, ohne auf die Genehmigung durch einen Menschen zu warten.
- Warum ist das die Standardeinstellung? Standardmäßig wird diese Sicherheitsvorkehrung in CodeMender auf
truefestgelegt, um einen Workflow mit menschlicher Überprüfung zu erzwingen. Da CodeMender auf Ihrer lokalen Codebasis agiert, wird durch die erforderliche manuelle Bestätigung (z. B.Write? [Y/n]) verhindert, dass der Agent spekulative, falsche oder destruktive Änderungen an Ihren Quelldateien vornimmt. Sie sollten dies nur auffalseumstellen, wenn Sie in isolierten, temporären Sandboxes oder automatisierten, Headless-CI/CD-Pipelines ausgeführt werden.
include: [".py", ".java", ".go", ".js", ".ts", ".c", ".cc", ".cpp", ".h", ".rb", ".php"]- Bedeutung:Definiert die explizite Liste der Dateiendungen, die Sie CodeMender zum Aufnehmen und Analysieren beim Scannen Ihres Arbeitsbereichs autorisieren. CodeMender überspringt automatisch alle Dateien in Ihrem Repository, deren Erweiterung nicht in dieser Liste angegeben ist.
- Warum ist das die Standardeinstellung? Diese Liste enthält standardmäßig die wichtigsten Programmiersprachen, um die Effizienz des Scans zu maximieren und zu verhindern, dass der Agent Zeit und Tokens für irrelevante Textdateien, Build-Artefakte oder Binärdateien verschwendet. Da moderne Anwendungen jedoch häufig Sicherheitslücken in Bereitstellungskonfigurationen oder Automatisierungstools enthalten, empfehlen wir dringend, diese Standardliste manuell zu erweitern, um Konfigurationsdateien, Scriptformate und IaC-Dateien (z. B. Shell-Scripts, XML-, YAML-, Properties- und JSON-Dateien) aufzunehmen, damit CodeMender sie nicht stillschweigend ignoriert.
exclude_paths: ["node_modules", "vendor", "dist", "bin"]- Bedeutung:CodeMender überspringt diese Verzeichnisse beim Scannen des Arbeitsbereichs und bei der Codeanalyse vollständig.
- Warum ist das die Standardeinstellung? Große Abhängigkeits- oder Build-Ordner führen zu einer massiven Latenz und Token-Strafe. Wenn diese standardmäßig ausgeschlossen werden, wird eine hohe Leistung und schnelle Reaktionszeiten gewährleistet.
project_paths: []- Bedeutung:Eine Liste von Verzeichnispfaden, auf die CodeMender während der Ausführung des Tools zugreifen (lesen/schreiben) kann.
- Warum ist das der Standardwert? Standardmäßig ist das Feld leer. Dadurch wird der Agent auf das Scan-Zielverzeichnis, das Arbeitsbereichverzeichnis
.codemenderund/tmpbeschränkt. Wenn für Ihren Build- oder Testprozess der Zugriff auf Dateien außerhalb dieser Verzeichnisse erforderlich ist, müssen Sie diese Pfade hier hinzufügen.
sandbox:- Bedeutung:Konfigurationsblock für die Sandbox-Umgebung auf Prozessebene.
- Unterparameter:
enabled: true: (boolesch) Aktiviert oder deaktiviert die Sandbox. Wenn Sie diesen Wert auftrue(Standard) festlegen, führt der Agent Tools in der lokalen Sandbox aus. Wenn Sie den Wert auffalsefestlegen, führt der KI‑Agent Tools direkt auf dem Hostsystem ohne Isolation aus.mounts: (Objekt)target_dir: ".": (String) Das Verzeichnis, das als aktiver Arbeitsbereich in der Sandbox bereitgestellt werden soll. Die CLI löst relative Pfade relativ zum Arbeitsbereichs-Root auf.
network: (Objekt)profile: "permissive-closed": (String) Profil für ausgehenden Netzwerkzugriff in der Sandbox. Die detaillierte Zulassungsliste für bestimmte Domains oder URL-Muster wird noch nicht unterstützt. Unterstützte Profile:permissive-closed(Standard): Vollständige Netzwerkisolation. Die Sandbox blockiert alle ausgehenden Verbindungen.permissive-open: Ermöglicht vollständigen ausgehenden Netzwerkzugriff.
security:- Bedeutung:Konfigurationsblock für Sicherheitsrichtlinien.
- Unterparameter:
protected_files: []: (Liste mit Strings) Dateien oder Verzeichnisse auf dem Hostsystem, die Sie schreibgeschützt in der Sandbox einbinden möchten, um sie vor Änderungen zu schützen (z.B.["~/.ssh/*"]). Unterstützt die Pfaderweiterung (~) und Platzhalter (*).
model: "gemini-3.5-flash"- Bedeutung:Die Standard-KI-Engine, die die Reasoning-Schleifen im Backend unterstützt.
- Warum ist das die Standardeinstellung?
gemini-3.5-flashbietet das optimale Gleichgewicht zwischen Geschwindigkeit, Kosten und analytischer Argumentation, das für das Vorschlagen von Patches erforderlich ist. Nutzer können dies bei Bedarf aufgemini-3.1-proüberschreiben, um eine detailliertere, komplexere Argumentation zu erhalten.
vcs: { type: "git" }- Bedeutung:Definiert den Typ des Versionsverwaltungssystems, das in Ihrem Projekt über den Schlüssel
vcsverwendet wird. Wenn Sie diese Option nicht konfigurieren, versucht das Tool, Git- oder Mercurial-Repositories automatisch zu erkennen. Wenn Sievcsaufnonesetzen, gibt die CLI eine Warnung aus, wird aber ohne VCS-Funktionalität fortgesetzt. CodeMender verwendet diese Einstellung, um spekulative Sicherheitskorrekturen zu verwalten, Änderungen an der Codebasis nachzuverfolgen und in Ihr lokales Repository zu integrieren. - Warum ist das die Standardeinstellung? CodeMender unterstützt Git, Mercurial oder benutzerdefinierte VCS-Konfigurationen. Git ist die Standardeinstellung, da es der Branchenstandard für die Versionsverwaltung ist. So wird eine nahtlose Integration von Differenzen und die Sicherheit von Rollbacks gewährleistet.
- Bedeutung:Definiert den Typ des Versionsverwaltungssystems, das in Ihrem Projekt über den Schlüssel
build: { command: "make build && make test" }- Bedeutung:Definiert den genauen Shell-Befehl, den CodeMender ausführt, um Ihr Projekt zu kompilieren und zu erstellen sowie Ihre Unit- und Regressionstests auszuführen.
- Warum ist das die Standardeinstellung? Das Festlegen eines Build- und Testbefehls ist für den Bestätigungsworkflow entscheidend. So kann CodeMender Ihr Projekt kompilieren und Ihre vorhandene Test-Suite in der isolierten Sandbox-Umgebung ausführen, um zu beweisen, dass der generierte Sicherheitspatch die Sicherheitslücke erfolgreich behebt, ohne die vorhandene Anwendungslogik zu beeinträchtigen.
Ausführungs-Sandbox
Um Ihre Workstation vor unbeabsichtigten Dateimodifikationen oder unerwarteten Nebenwirkungen von Tools zu schützen, wird die CodeMender-Befehlszeile standardmäßig in einer Sandbox auf Betriebssystemebene ausgeführt. Sie können das Sandboxing dauerhaft in der Konfiguration deaktivieren oder es mit CLI-Flags pro Befehl umgehen.
Dieses Sandboxing bietet zwar eine erste Schutzschicht auf Ihrer Workstation, aber einen schwächeren Sicherheitsschutz als die Ausführung des Agents auf einer vollständig isolierten virtuellen Maschine (VM):
- Linux: Verwendet Kernel-Namespaces (
CLONE_NEWNS,CLONE_NEWUSERusw.) undseccomp-Filter, um Mount-Punkte zu isolieren und Systemaufrufe einzuschränken. - macOS: Verwendet den integrierten
sandbox-exec-Mechanismus (Seatbelt). - Windows (experimentell): Verwendet die
AppContainer-Isolation und Access Control Lists (ACLs). Das Sandboxing unter Windows ist experimentell und erfordert möglicherweise Administratorberechtigungen oder ist mit einigen Systemkonfigurationen nicht kompatibel.
Sandbox-Verhalten
Wenn die Sandbox aktiv ist:
- Dateisystemisolation: Der Agent kann Dateien nur in zulässigen Verzeichnissen lesen und schreiben. Die Sandbox leitet alle Schreibvorgänge außerhalb dieser Verzeichnisse an ein temporäres In-Memory-Dateisystem (tmpfs) um, ohne dass Ihr Hostsystem beeinträchtigt wird.
- Netzwerkisolation: Die Sandbox blockiert standardmäßig den ausgehenden Netzwerkzugriff. So wird verhindert, dass der KI-Agent (oder die von ihm aufgerufenen Build-Tools) unerwartete externe Verbindungen herstellt oder Daten außerhalb des Arbeitsbereichs überträgt.
Netzwerkzugriff während des Builds und der Validierung
Da in der Sandbox standardmäßig die Netzwerkisolation aktiviert ist (sandbox.network.profile wird standardmäßig auf permissive-closed gesetzt), kann der Agent während der Ausführung des Tools nicht auf das Internet zugreifen.
Dies führt zu Einschränkungen für Projekte, bei denen während der Build- oder Überprüfungsschritte externe Abhängigkeiten abgerufen werden müssen (z. B. wenn npm install, pip install oder go get als Teil von build.command ausgeführt wird). Wenn Ihr Build-Prozess versucht, auf externe Webdienste zuzugreifen, schlägt er fehl.
Netzwerkabhängigkeiten verarbeiten
Wenn für Ihr Projekt Netzwerkzugriff für Builds oder Tests erforderlich ist, haben Sie folgende Möglichkeiten:
- Abhängigkeiten vorab abrufen: Installieren Sie alle erforderlichen Abhängigkeiten auf dem Hostsystem, bevor Sie
cm-Befehle ausführen, damit für den Build-Befehl kein Netzwerkzugriff erforderlich ist. Netzwerkzugriff in der Sandbox aktivieren: Ändern Sie das Netzwerkprofil in Ihrem
config.yaml, um ausgehende Verbindungen zuzulassen:sandbox: network: profile: "permissive-open"Sandbox umgehen: Führen Sie den Befehl mit dem Flag
--unrestrictedaus, um die Sandbox und die Dateisystemgrenzen für diese Ausführung vollständig zu deaktivieren.
Sandbox-Konfiguration
Sie können die Sandbox mit den folgenden Optionen konfigurieren und steuern:
- Persistente Konfiguration (
config.yaml): Sie können das Sandbox-Verhalten, die Einbindung des Dateisystems, den Netzwerkzugriff und die Sicherheitsrichtlinien anpassen, indem Sie Ihrerconfig.yaml-Datei die Blöckesandbox,executionundsecurityhinzufügen. Weitere Informationen finden Sie unter Konfigurationsparameter. - Sandbox über die Befehlszeile (
--sandbox) steuern: Sie können die Sandbox für einen einzelnen Lauf explizit aktivieren oder deaktivieren, indem Sie--sandbox=trueoder--sandbox=falseancm find,cm verifyodercm fixübergeben. - Isolation mit der CLI (
--unrestricted) umgehen: Sie können alle Sandbox-Schutzmaßnahmen für einen einzelnen Lauf vorübergehend umgehen, indem Sie das Flag--unrestrictedübergeben. Dadurch werden die Grenzen des Dateisystempfads deaktiviert (sodass der Agent auf jeden Pfad auf Ihrem Host zugreifen kann) und die Containerisolierung auf Betriebssystemebene vollständig deaktiviert (einschließlich der Netzwerkisolierung).
Isolationsgrad auswählen
Je nach Sicherheitsanforderungen und Entwicklungsumgebung können Sie das geeignete Isolationsniveau für die Ausführung der CodeMender-Befehlszeile auswählen.
| Methode | Beschreibung | Vorteile | Nachteile |
|---|---|---|---|
| Integrierte Sandbox (Betriebssystemebene) | Standardmäßig aktiviert. Sie können die Funktion in der config.yaml-Datei deaktivieren oder mit CLI-Flags umgehen. Verwendet integrierte Betriebssystemfunktionen (Namespaces/Seccomp, sandbox-exec, AppContainer (experimentell)), um die Ausführung zu isolieren. |
Leichtgewichtig: Kein Startaufwand, direkter Zugriff auf lokale Workspace-Tools mit detaillierter Steuerung. Empfohlen für die tägliche lokale Entwicklung. | Die Sicherheit basiert auf Funktionen des Betriebssystemkerns. Die Isolation ist geringer als bei einer vollständigen VM. Die Windows-Unterstützung ist experimentell und erfordert möglicherweise Administratorrechte oder ist mit einigen Konfigurationen nicht kompatibel. |
| Container | Ausführen des Agents in einem Container (z. B. Docker) | Gute Isolation; standardisierte Umgebung. | Erfordert eine Containerlaufzeit, kann ressourcenintensiv sein und lässt keine direkte Interaktion mit Tools auf dem lokalen Computer zu. |
| Vollständige VMs | Der Agent wird auf einer dedizierten VM ausgeführt. | Maximale Sicherheit; vollständige Isolation. | Hoher Ressourcenaufwand, langsamer Start, keine direkte Interaktion mit Tools auf dem lokalen Computer möglich. |
Telemetrie
Um die Produktintegrität zu überwachen und zu verbessern, erheben wir anonyme Telemetriedaten über die CLI. Wir anonymisieren alle erhobenen Daten vollständig. Dazu gehören grundlegende Messwerte zur Nutzung und Leistungsdiagnosen. Bei der Telemetrie werden niemals Quellcode, Dateiinhalte, Ergebnisse, Patches oder Nutzeridentitäten erfasst oder übertragen.
Die Telemetrie ist standardmäßig aktiviert. Wenn Sie die Telemetrie deaktivieren möchten, legen Sie die Umgebungsvariable CM_TELEMETRY_OPT_OUT auf 1 oder true fest.
CLI aktualisieren
CodeMender hat einen integrierten Aktualisierungsmechanismus, der dafür sorgt, dass Sie die neueste Version der CLI verwenden.
Automatische Updateüberprüfungen
Standardmäßig sucht die CodeMender CLI automatisch im Hintergrund nach Updates, wenn Sie Befehle ausführen:
- Drosselung: Um den Aufwand zu minimieren, wird die automatische Prüfung höchstens einmal alle 24 Stunden ausgeführt.
- Interaktives Terminal (TTY) erforderlich: Die CLI sucht nur in einem interaktiven Terminal nach Updates und fordert Sie dann auf. In nicht interaktiven Umgebungen (z. B. CI/CD-Pipelines oder Skripts) wird die Prüfung übersprungen und höchstens einmal täglich eine Warnung in
stderrprotokolliert. - Aufforderung: Wenn eine neue Version verfügbar ist, werden Sie auf
stderraufgefordert:none 🆕 A new CodeMender release is available: 1.1.0 Update now? (y/N):Wenn Sie „Ja“ (yoderyes) auswählen, lädt CodeMender das Update herunter, ersetzt die Binärdatei und beendet den Vorgang. Sie müssen den Befehl noch einmal ausführen, um ihn mit der neuen Version auszuführen. Wenn Sie „Nein“ auswählen, wird das Update übersprungen und Ihr ursprünglicher Befehl wird ausgeführt. - Offlinetoleranz: Wenn Sie offline sind oder das Release-Repository nicht erreichbar ist, schlägt die Prüfung im Hintergrund fehl und CodeMender führt Ihren Befehl weiter aus.
- Umgehen: Sie können die automatische Updateprüfung umgehen, indem Sie das Flag
--yesoder-yan einen beliebigen Befehl übergeben.
Manuelle Updates (cm update)
Sie können CodeMender zwingen, sofort nach Updates zu suchen und diese anzuwenden, indem Sie den Befehl update ausführen:
cm update
Führen Sie den Befehl cm update aus:
- Die 24-Stunden-Drosselung wird ignoriert.
- Das Update wird sofort heruntergeladen und angewendet, ohne dass eine Aufforderung erfolgt (nicht interaktiv).
- Es ist kein interaktives Terminal erforderlich (sicher für Scripts und Konfigurationsverwaltung).
Wenn die CLI in einem Systemverzeichnis installiert ist, für das erhöhte Berechtigungen erforderlich sind, führen Sie das Update mit sudo aus:
sudo cm update