コントリビューション方法
このプロジェクトへのパッチやコントリビューションを歓迎します。
コントリビューションプロセス
コードレビュー
プロジェクトメンバーによる提出を含むすべての投稿はレビューが必要です。そのために GitHub pull requests を使用しています。
プルリクエストのガイドライン
迅速なレビューとマージのために、以下のガイドラインに従ってください。これらの基準を満たさない PR はクローズされる場合があります。
1. 既存の Issue にリンクする
すべての PR は、トラッカーの既存の Issue にリンクされている必要があります。これにより、コードを書く前にすべての変更が議論され、プロジェクトの目標に沿っていることが保証されます。
- バグ修正の場合: PR はバグレポートの Issue にリンクする必要があります。
- 機能追加の場合: PR は、メンテナーに承認された機能リクエストまたは提案の Issue にリンクする必要があります。
変更に対する Issue が存在しない場合は、まず Issue を作成し、コーディングを始める前にフィードバックを待ってください。
2. 小さく焦点を絞る
単一の Issue に対処する、または単一の自己完結型の機能を追加する、小さくアトミックな PR を推奨します。
- 良い例: 1 つの特定のバグを修正する、または 1 つの特定の機能を追加する PR を作成する。
- 悪い例: 複数の無関係な変更(例:バグ修正、新機能、リファクタリング)を 1 つの PR にまとめる。
目安として、変更行数が約 1,200 行を超えたら PR の分割を検討してください。約 2,000 行を超える PR は、独立してレビューおよびマージできる一連の小さな論理的な PR に分割するか、PR の説明でなぜその変更をまとめて取り込む必要があるのかを説明してください。
3. 作業途中の PR には Draft PR を使用する
作業中の早期フィードバックを得たい場合は、GitHub の Draft Pull Request 機能を使用してください。これにより、メンテナーに対して PR が正式なレビューの準備ができていないが、議論や初期フィードバックのために公開されていることを示します。
4. すべてのチェックが合格していることを確認する
PR を提出する前に、npm run preflight を実行してすべての自動チェックが合格していることを確認してください。このコマンドは、すべてのテスト、リンター、その他のスタイルチェックを実行します。
5. ドキュメントを更新する
PR がユーザーフェーシングな変更(新しいコマンド、変更されたフラグ、動作の変更など)を導入する場合は、/docs ディレクトリ内の関連ドキュメントも更新する必要があります。
6. 明確なコミットメッセージと適切な PR 説明を書く
PR には、明確で説明的なタイトルと、変更内容の詳細な説明が必要です。コミットメッセージは Conventional Commits 標準に従ってください。
- 良い PR タイトル:
feat(cli): Add --json flag to 'config get' command - 悪い PR タイトル:
Made some changes
PR の説明では、変更の「理由」を説明し、関連する Issue にリンクしてください(例:Fixes #123)。
開発環境のセットアップとワークフロー
このセクションでは、このプロジェクトの開発環境をビルド、変更、理解する方法を説明します。
開発環境のセットアップ
前提条件:
- Node.js:
- 開発: Node.js
>=22を使用してください。TUI が使用する Ink 7 は Node 22 を必要とし、react@^19.2.0が対応するピアです。nvm などのツールを使用して Node.js のバージョンを管理できます。 - 本番環境: CLI を本番環境で実行する場合、Node.js
>=22の任意のバージョンで問題ありません。
- 開発: Node.js
- Git
ビルドプロセス
リポジトリをクローンするには:
git clone https://github.com/QwenLM/qwen-code.git # または自分のフォークのURL
cd qwen-codepackage.json に定義された依存関係とルートの依存関係をインストールするには:
npm installプロジェクト全体(すべてのパッケージ)をビルドするには:
npm run buildこのコマンドは通常、TypeScript を JavaScript にコンパイルし、アセットをバンドルし、パッケージを実行用に準備します。ビルド中に何が行われるかの詳細については、scripts/build.js および package.json のスクリプトを参照してください。
サンドボックスの有効化
サンドボックス化 は強く推奨されており、少なくとも ~/.env に QWEN_SANDBOX=true を設定し、サンドボックスプロバイダー(例:macOS Seatbelt、docker、podman)が利用可能である必要があります。詳細は サンドボックス化 を参照してください。
qwen CLI ユーティリティとサンドボックスコンテナの両方をビルドするには、ルートディレクトリから build:all を実行します:
npm run build:allサンドボックスコンテナのビルドをスキップするには、代わりに npm run build を使用できます。
実行
ビルド後、ソースコードから Qwen Code アプリケーションを起動するには、ルートディレクトリから次のコマンドを実行します:
npm startqwen-code フォルダ外でソースビルドを実行したい場合は、npm link path/to/qwen-code/packages/cli を使用して(ドキュメント 参照)、qwen で実行できます。
テストの実行
このプロジェクトには、単体テストと統合テストの 2 種類のテストがあります。
単体テスト
プロジェクトの単体テストスイートを実行するには:
npm run testこれにより、packages/core および packages/cli ディレクトリにあるテストが実行されます。変更を提出する前にテストが合格していることを確認してください。より包括的なチェックには、npm run preflight を実行することをお勧めします。
統合テスト
統合テストは、Qwen Code のエンドツーエンドの機能を検証するように設計されています。これらはデフォルトの npm run test コマンドの一部としては実行されません。
統合テストを実行するには、次のコマンドを使用します:
npm run test:e2e統合テストフレームワークの詳細については、統合テストのドキュメント を参照してください。
リンターと事前チェック
コード品質とフォーマットの一貫性を確保するために、事前チェックを実行します:
npm run preflightこのコマンドは、ESLint、Prettier、すべてのテスト、およびプロジェクトの package.json で定義されたその他のチェックを実行します。
ProTip
クローン後、コミットを常にクリーンに保つために git precommit hook ファイルを作成してください。
echo "
# npm build を実行し、エラーをチェック
if ! npm run preflight; then
echo "npm build に失敗しました。コミットを中断します。"
exit 1
fi
" > .git/hooks/pre-commit && chmod +x .git/hooks/pre-commitフォーマット
コードを個別にフォーマットするには、ルートディレクトリから次のコマンドを実行します:
npm run formatこのコマンドは Prettier を使用して、プロジェクトのスタイルガイドに従ってコードをフォーマットします。
リンター
コードを個別にリンターにかけるには、ルートディレクトリから次のコマンドを実行します:
npm run lintコーディング規約
- 既存のコードベース全体で使用されているコーディングスタイル、パターン、規約に従ってください。
- インポート: インポートパスに特に注意してください。このプロジェクトでは ESLint を使用して、パッケージ間の相対インポートに関する制限を適用しています。
プロジェクト構造
packages/: プロジェクトの個々のサブパッケージが含まれます。cli/: コマンドラインインターフェース。core/: Qwen Code のコアバックエンドロジック。
docs/: すべてのプロジェクトドキュメントが含まれます。scripts/: ビルド、テスト、開発タスクのためのユーティリティスクリプト。
より詳細なアーキテクチャについては、docs/architecture.md を参照してください。
ドキュメント開発
このセクションでは、ドキュメントをローカルで開発およびプレビューする方法について説明します。
前提条件
- Node.js(バージョン 22+)がインストールされていることを確認してください。
- npm または yarn が利用可能であること。
ドキュメントサイトのローカルセットアップ
ドキュメントを作成し、変更をローカルでプレビューするには:
-
docs-siteディレクトリに移動します:cd docs-site -
依存関係をインストールします:
npm install -
メインの
docsディレクトリからドキュメントコンテンツをリンクします:npm run linkこれにより、
../docsからdocs-siteプロジェクトのcontentへのシンボリックリンクが作成され、Next.js サイトでドキュメントコンテンツを提供できるようになります。 -
開発サーバーを起動します:
npm run dev -
ブラウザで http://localhost:3000 を開き、変更を加えるとライブ更新されるドキュメントサイトを確認します。
メインの docs ディレクトリ内のドキュメントファイルに加えられた変更は、ドキュメントサイトに即座に反映されます。
デバッグ
VS Code:
F5で VS Code で対話的にデバッグするために CLI を実行します。- ルートディレクトリからデバッグモードで CLI を起動します:
このコマンドは
npm run debugpackages/cliディレクトリ内でnode --inspect-brk dist/index.jsを実行し、デバッガーがアタッチされるまで実行を一時停止します。その後、Chrome ブラウザでchrome://inspectを開いてデバッガーに接続できます。 - VS Code では、“Attach” 起動構成(
.vscode/launch.jsonにあります)を使用します。
または、VS Code の “Launch Program” 構成を使用して、現在開いているファイルを直接起動することもできますが、一般的には ‘F5’ が推奨されます。
サンドボックスコンテナ内でブレークポイントにヒットするには、次を実行します:
DEBUG=1 qwen注: プロジェクトの .env ファイルに DEBUG=true を設定しても、自動的に除外されるため qwen には影響しません。qwen 固有のデバッグ設定には .qwen/.env ファイルを使用してください。
React DevTools
CLI の React ベースの UI をデバッグするには、React DevTools を使用できます。CLI のインターフェースに使用されるライブラリ Ink は、React DevTools バージョン 4.x と互換性があります。
-
開発モードで Qwen Code アプリケーションを起動します:
DEV=true npm start -
React DevTools バージョン 4.28.5(または互換性のある最新の 4.x バージョン)をインストールして実行します:
グローバルにインストールする場合:
npm install -g react-devtools@4.28.5 react-devtoolsまたは、npx を使用して直接実行する場合:
npx react-devtools@4.28.5実行中の CLI アプリケーションが React DevTools に接続されます。
サンドボックス化
TBD
手動パブリッシュ
コミットごとに内部レジストリにアーティファクトをパブリッシュしています。ただし、ローカルビルドを手動でカットする必要がある場合は、次のコマンドを実行します:
npm run clean
npm install
npm run auth
npm run prerelease:dev
npm publish --workspaces