So kannst du beitragen
Wir freuen uns über Ihre Patches und Beiträge zu diesem Projekt.
Beitragsprozess
Code-Reviews
Alle Einreichungen, einschließlich der von Projektmitgliedern, erfordern eine Überprüfung. Wir verwenden dafür GitHub Pull Requests .
Richtlinien für Pull Requests
Um uns zu helfen, Ihre PRs schnell zu überprüfen und zusammenzuführen, befolgen Sie bitte diese Richtlinien. PRs, die diese Standards nicht erfüllen, können geschlossen werden.
1. Verknüpfung mit einem bestehenden Issue
Alle PRs sollten mit einem bestehenden Issue in unserem Tracker verknüpft sein. Dies stellt sicher, dass jede Änderung besprochen wurde und mit den Zielen des Projekts übereinstimmt, bevor Code geschrieben wird.
- Für Fehlerbehebungen: Der PR sollte mit dem Issue des Fehlerberichts verknüpft sein.
- Für Funktionen: Der PR sollte mit dem Feature-Request oder Proposal-Issue verknüpft sein, das von einem Maintainer genehmigt wurde.
Falls für Ihre Änderung noch kein Issue existiert, eröffnen Sie bitte zuerst eines und warten Sie auf Rückmeldung, bevor Sie mit dem Codieren beginnen.
2. Halten Sie es klein und fokussiert
Wir bevorzugen kleine, atomare PRs, die ein einzelnes Problem behandeln oder eine einzelne, in sich geschlossene Funktion hinzufügen.
- Tun: Erstellen Sie einen PR, der einen bestimmten Fehler behebt oder eine bestimmte Funktion hinzufügt.
- Nicht: Bündeln Sie mehrere unabhängige Änderungen (z.B. eine Fehlerbehebung, eine neue Funktion und eine Refaktorisierung) in einem einzigen PR.
Als Faustregel gilt: Teilen Sie einen PR auf, sobald er etwa 1.200 geänderte Zeilen überschreitet. PRs mit mehr als etwa 2.000 geänderten Zeilen sollten entweder in eine Reihe von kleineren, logischen PRs aufgeteilt werden, die unabhängig voneinander überprüft und zusammengeführt werden können, oder in der PR-Beschreibung erklären, warum die Änderung zusammen eingebracht werden muss.
3. Verwenden Sie Draft-PRs für laufende Arbeiten
Wenn Sie frühzeitiges Feedback zu Ihrer Arbeit erhalten möchten, nutzen Sie bitte die Draft Pull Request-Funktion von GitHub. Dies signalisiert den Maintainern, dass der PR noch nicht für eine formelle Überprüfung bereit ist, aber für Diskussionen und erstes Feedback offen steht.
4. Stellen Sie sicher, dass alle Prüfungen bestanden werden
Bevor Sie Ihren PR einreichen, stellen Sie sicher, dass alle automatisierten Prüfungen bestanden werden, indem Sie npm run preflight ausführen. Dieser Befehl führt alle Tests, Linting und andere Stilprüfungen aus.
5. Aktualisieren Sie die Dokumentation
Wenn Ihr PR eine benutzersichtbare Änderung einführt (z.B. einen neuen Befehl, ein geändertes Flag oder eine Verhaltensänderung), müssen Sie auch die entsprechende Dokumentation im /docs-Verzeichnis aktualisieren.
6. Schreiben Sie klare Commit-Nachrichten und eine gute PR-Beschreibung
Ihr PR sollte einen klaren, beschreibenden Titel und eine detaillierte Beschreibung der Änderungen haben. Folgen Sie dem Conventional Commits -Standard für Ihre Commit-Nachrichten.
- Guter PR-Titel:
feat(cli): Add --json flag to 'config get' command - Schlechter PR-Titel:
Made some changes
Erklären Sie in der PR-Beschreibung das „Warum“ hinter Ihren Änderungen und verlinken Sie auf das entsprechende Issue (z.B. Fixes #123).
Entwicklungseinrichtung und Arbeitsablauf
Dieser Abschnitt führt Mitwirkende durch den Aufbau, die Änderung und das Verständnis der Entwicklungsumgebung dieses Projekts.
Einrichten der Entwicklungsumgebung
Voraussetzungen:
- Node.js:
- Entwicklung: Bitte verwenden Sie Node.js
>=22. Ink 7 (vom TUI verwendet) erfordert Node 22, undreact@^19.2.0ist der passende Peer. Sie können ein Tool wie nvm zur Verwaltung von Node.js-Versionen nutzen. - Produktion: Für den Betrieb der CLI in einer Produktionsumgebung ist jede Node.js-Version
>=22akzeptabel.
- Entwicklung: Bitte verwenden Sie Node.js
- Git
Bauprozess
Um das Repository zu klonen:
git clone https://github.com/QwenLM/qwen-code.git # Or your fork's URL
cd qwen-codeUm die in package.json definierten Abhängigkeiten sowie die Root-Abhängigkeiten zu installieren:
npm installUm das gesamte Projekt (alle Pakete) zu bauen:
npm run buildDieser Befehl kompiliert in der Regel TypeScript zu JavaScript, bündelt Assets und bereitet die Pakete zur Ausführung vor. Weitere Details zum Build-Vorgang finden Sie in scripts/build.js und den Skripten in package.json.
Aktivieren der Sandbox
Sandboxing wird dringend empfohlen und erfordert mindestens das Setzen von QWEN_SANDBOX=true in Ihrer ~/.env und die Sicherstellung, dass ein Sandboxing-Anbieter (z.B. macOS Seatbelt, docker oder podman) verfügbar ist. Details finden Sie unter Sandboxing.
Um sowohl das qwen CLI-Dienstprogramm als auch den Sandbox-Container zu bauen, führen Sie build:all aus dem Wurzelverzeichnis aus:
npm run build:allUm den Bau des Sandbox-Containers zu überspringen, können Sie stattdessen npm run build verwenden.
Ausführung
Um die Qwen Code-Anwendung aus dem Quellcode zu starten (nach dem Bau), führen Sie den folgenden Befehl aus dem Wurzelverzeichnis aus:
npm startWenn Sie den Quellbau außerhalb des qwen-code-Ordners ausführen möchten, können Sie npm link path/to/qwen-code/packages/cli (siehe: Dokumentation ) verwenden, um es mit qwen auszuführen.
Ausführen von Tests
Dieses Projekt enthält zwei Arten von Tests: Unit-Tests und Integrationstests.
Unit-Tests
Um die Unit-Test-Suite für das Projekt auszuführen:
npm run testDies führt Tests in den Verzeichnissen packages/core und packages/cli aus. Stellen Sie sicher, dass die Tests bestanden werden, bevor Sie Änderungen einreichen. Für eine umfassendere Überprüfung wird empfohlen, npm run preflight auszuführen.
Integrationstests
Die Integrationstests sind darauf ausgelegt, die End-to-End-Funktionalität von Qwen Code zu validieren. Sie werden nicht als Teil des standardmäßigen npm run test-Befehls ausgeführt.
Um die Integrationstests auszuführen, verwenden Sie den folgenden Befehl:
npm run test:e2eWeitere detaillierte Informationen zum Framework für Integrationstests finden Sie in der Dokumentation zu Integrationstests.
Linting und Preflight-Prüfungen
Um Codequalität und Formatierungskonsistenz sicherzustellen, führen Sie die Preflight-Prüfung aus:
npm run preflightDieser Befehl führt ESLint, Prettier, alle Tests und andere in der package.json des Projekts definierte Prüfungen aus.
ProTip
Erstellen Sie nach dem Klonen eine Git-Precommit-Hook-Datei, um sicherzustellen, dass Ihre Commits immer sauber sind.
echo "
# Run npm build and check for errors
if ! npm run preflight; then
echo "npm build failed. Commit aborted."
exit 1
fi
" > .git/hooks/pre-commit && chmod +x .git/hooks/pre-commitFormatierung
Um den Code in diesem Projekt separat zu formatieren, führen Sie den folgenden Befehl aus dem Wurzelverzeichnis aus:
npm run formatDieser Befehl verwendet Prettier, um den Code gemäß den Stilrichtlinien des Projekts zu formatieren.
Linting
Um den Code in diesem Projekt separat zu linten, führen Sie den folgenden Befehl aus dem Wurzelverzeichnis aus:
npm run lintKodierkonventionen
- Bitte halten Sie sich an den Codestil, die Muster und Konventionen, die in der gesamten bestehenden Codebasis verwendet werden.
- Imports: Achten Sie besonders auf Importpfade. Das Projekt verwendet ESLint, um Einschränkungen für relative Imports zwischen Paketen durchzusetzen.
Projektstruktur
packages/: Enthält die einzelnen Unterpakete des Projekts.cli/: Die Kommandozeilenschnittstelle.core/: Die Kern-Backend-Logik für Qwen Code.
docs/: Enthält die gesamte Projektdokumentation.scripts/: Dienstprogramme für Bau-, Test- und Entwicklungsaufgaben.
Weitere Details zur Architektur finden Sie in docs/architecture.md.
Dokumentationsentwicklung
Dieser Abschnitt beschreibt, wie Sie die Dokumentation lokal entwickeln und in der Vorschau anzeigen können.
Voraussetzungen
- Stellen Sie sicher, dass Node.js (Version 22+) installiert ist.
- Halten Sie npm oder yarn bereit.
Dokumentationsseite lokal einrichten
Um an der Dokumentation zu arbeiten und Änderungen lokal in der Vorschau anzuzeigen:
-
Navigieren Sie in das Verzeichnis
docs-site:cd docs-site -
Installieren Sie die Abhängigkeiten:
npm install -
Verknüpfen Sie den Dokumentationsinhalt aus dem Hauptverzeichnis
docs:npm run linkDies erstellt einen symbolischen Link von
../docsnachcontentim docs-site-Projekt, sodass der Dokumentationsinhalt von der Next.js-Seite bereitgestellt werden kann. -
Starten Sie den Entwicklungsserver:
npm run dev -
Öffnen Sie http://localhost:3000 in Ihrem Browser, um die Dokumentationsseite mit Live-Updates zu sehen, während Sie Änderungen vornehmen.
Alle Änderungen an den Dokumentationsdateien im Hauptverzeichnis docs werden sofort auf der Dokumentationsseite angezeigt.
Debugging
VS Code:
- Führen Sie die CLI aus, um interaktiv in VS Code mit
F5zu debuggen. - Starten Sie die CLI im Debug-Modus aus dem Wurzelverzeichnis:
Dieser Befehl führt
npm run debugnode --inspect-brk dist/index.jsim Verzeichnispackages/cliaus und pausiert die Ausführung, bis ein Debugger angehängt wird. Sie können dannchrome://inspectin Ihrem Chrome-Browser öffnen, um eine Verbindung zum Debugger herzustellen. - Verwenden Sie in VS Code die Startkonfiguration “Attach” (zu finden in
.vscode/launch.json).
Alternativ können Sie die Konfiguration “Launch Program” in VS Code verwenden, wenn Sie die aktuell geöffnete Datei direkt starten möchten, aber ‘F5’ wird generell empfohlen.
Um einen Haltepunkt im Sandbox-Container zu setzen, führen Sie aus:
DEBUG=1 qwenHinweis: Wenn Sie DEBUG=true in einer .env-Datei des Projekts haben, wirkt sich dies aufgrund des automatischen Ausschlusses nicht auf qwen aus. Verwenden Sie .qwen/.env-Dateien für qwen-spezifische Debug-Einstellungen.
React DevTools
Um die React-basierte Benutzeroberfläche der CLI zu debuggen, können Sie React DevTools verwenden. Ink, die für die CLI-Oberfläche verwendete Bibliothek, ist mit React DevTools Version 4.x kompatibel.
-
Starten Sie die Qwen Code-Anwendung im Entwicklungsmodus:
DEV=true npm start -
Installieren und führen Sie React DevTools Version 4.28.5 (oder die neueste kompatible 4.x-Version) aus:
Sie können es entweder global installieren:
npm install -g react-devtools@4.28.5 react-devtoolsOder führen Sie es direkt mit npx aus:
npx react-devtools@4.28.5Ihre laufende CLI-Anwendung sollte sich dann mit React DevTools verbinden.
Sandboxing
TBD
Manuelle Veröffentlichung
Wir veröffentlichen für jeden Commit ein Artefakt in unserem internen Registry. Wenn Sie jedoch manuell einen lokalen Build erstellen müssen, führen Sie die folgenden Befehle aus:
npm run clean
npm install
npm run auth
npm run prerelease:dev
npm publish --workspaces