CONTRIBUTING_JA.md
OpenVikingへのコントリビューションありがとうございます。このガイドは、明確で 焦点が絞られ、レビューしやすい変更を提出するためのものです。
バグ報告、機能リクエスト、ドキュメント改善、コードのコントリビューションを歓迎します。
OpenVikingでは、焦点が絞られ、十分に理解された変更を重視します。AIツールの使用有無に かかわらず、コントリビューターは自分の変更を理解し、説明し、検証する責任を負います。
必要十分な最小の変更を優先してください。簡潔なコードとは、必要な行数を削ることではなく、 概念、分岐、重複ルール、推測に基づく抽象化を減らすことです。良い変更は直接的で読みやすく、 エントリーポイントから観測可能な動作まで説明できます。
具体的には:
メンテナーの時間には限りがあるため、焦点を絞ったPRからレビューします:
これはレビューの優先度であり、厳格な上限や応答時間の保証ではありません。変更行数は、 手書きのソース、テスト、ドキュメントにおける追加行と削除行の合計です。生成ファイル、 ベンダーコード、ロックファイルは規模の判断から除外します。
行数を抑えるために必要なテストやドキュメントを省略しないでください。分割後の各PRが 単独で理解でき、正しさを保てる場合にのみ大きな変更を分割してください。PRが小さくても、 正確性、設計品質、互換性の要件が下がることはありません。
次の変更は、実装前にIssueまたはDiscussionで相談してください:
現在の動作、提案する動作、具体的なリクエストまたは設定例、互換性への影響を記載して ください。これにより、実装前にメンテナーが設計境界を確認できます。
リポジトリのGitHubテンプレートを使用して、バグ報告、 機能リクエスト、 質問を提出してください。
影響する領域が分かる場合は、IssueまたはPRに記載してください。不明な場合は、まず観測可能な 動作とユースケースを説明してください。メンテナーが担当領域への振り分けを支援します。
この表は、2026年6月24日から8月24日までにマージされたPRで継続的に確認できる 作成・レビュー活動に基づいています。排他的なコード所有権ではなく、振り分けのための 目安です。変更に直接関係する担当者だけにメンションしてください。
| ドメイン | 領域 | 代表的なパスまたはトピック | 最近活動しているメンテナー/レビュアー |
|---|---|---|---|
| Platform | Server、API、Auth、Identity、Admin、Task | openviking/server、openviking/service | @qin-ctx |
| Resource | 取り込み、Watch、タスクパイプライン | openviking/resource | @qin-ctx、@KCHENPENGFEI |
| Resource | リソース解析 | openviking/parse | @zihengli-bytedance、@KCHENPENGFEI |
| Memory | Session、メモリ抽出、コンパイル | openviking/session、メモリ抽出、ov compile | @chenjw、@heaoxiang-ai、@fujiajie666 |
| Retrieval | SearchとVectorDB | openviking/retrieve、openviking/storage/vectordb | @zhoujh01、@t0saki |
| Storage | RAGFS、PathLock、QueueFS、暗号化 | openviking/storage、openviking/pyagfs、openviking/crypto、crates/ragfs* | @baojun-zhang |
| Integration | Agent PluginとMCP | agent-plugins、メモリPluginの例、Server MCP | @t0saki、@ZaynJarvis |
| Integration | VikingBotとAgentコンパイル | bot、ov compile | @yeshion23333、@fujiajie666 |
| Client | SDK、CLI、LangChain | sdk、crates/ov_cli、integrations/langchain | @zhoujh01、@t0saki、@ehz0ah |
| Product | Web Studio | web-studio | @yufeng201、@ZaynJarvis |
| Project | ドキュメント、CI、Pluginリリース | docs、.github/workflows | @yufeng201、@ZaynJarvis |
複数領域にまたがる変更や担当が不明な場合は、主な影響領域を特定したうえで、
@qin-ctx、@ZaynJarvis、@zhoujh01のいずれかにメンションしてください。
ov CLIの開発にはRust 1.91.1以上sdk/goの開発時のみGo 1.22以上Linuxではbuild-essentialをインストールし、必要に応じてpkg-configも追加してください。
macOSではXcode Command Line Toolsをインストールしてください。Windowsでのローカル
ネイティブビルドにはCMakeとMinGWをインストールしてください。
リポジトリをフォークし、自分のフォークをクローンします:
git clone https://github.com/YOUR_USERNAME/OpenViking.git
cd OpenViking
uvの使用を推奨します:
curl -LsSf https://astral.sh/uv/install.sh | sh
uv sync --all-extras
環境を確認します:
uv run python -c "import openviking; print(openviking.__version__)"
ローカルサーバーを設定します:
uv run openviking-server init
uv run openviking-server doctor
設定とProviderの例は設定ガイドを 参照してください。
RAGFS Rust Binding、同梱Rust CLI、C++拡張を変更した場合は、ネイティブコンポーネントを 再ビルドしてください:
uv pip install -e . --force-reinstall
SDK、Integration、Plugin、Benchmarkには追加のセットアップ手順がある場合があります。 各ディレクトリのREADMEまたはパッケージマニフェストを確認してください。
局所的なエッジケースがタスク境界、公開セマンティクス、全体アーキテクチャを変え始めた場合は、 メインフローに特殊分岐を追加し続けず、実装を止めて設計議論に戻ってください。
PythonではRuffをフォーマットとLintに、mypyを型チェックに使用します。設定行幅は100文字です。
変更したパスに対してチェックを実行してください:
uv run ruff format <changed-paths>
uv run ruff check <changed-paths>
uv run mypy <changed-paths>
公開APIには短く有用なDocstringを付けてください。コードを言い換えるコメントより、明確な名前と 直接的な制御フローを優先してください。
Rust、Go、TypeScript、ドキュメント、Pluginの変更では、各コンポーネントで定義された フォーマット、Lint、型チェック、テストコマンドを使用してください。
変更の影響を受ける、意味のある最小の公開契約と主要な失敗境界を検証してください。
test_scripts/に置き、ソース、Benchmark、
メンテナンススクリプトのディレクトリには置かないでください。関連するテストを絞って実行します。例:
uv run pytest tests/client/test_http_client_config.py
uv run pytest tests/server/ -k "search"
変更範囲とリスクに応じて必要な場合のみ、Pythonテスト全体を実行してください:
uv run pytest
最新のmainからブランチを作成し、焦点を絞った変更を行ってmain向けにPRを提出します。
コミットメッセージとPRタイトルには Conventional Commitsを使用してください:
feat(parser): support xlsx resources
fix(retrieval): preserve rerank score order
docs: clarify server configuration
refactor(storage): remove duplicate path normalization
リポジトリのPRテンプレートをすべて記入してください。良いPR説明には次を含めます:
Human Involvementの項目は正確に選択してください。AI支援によるコントリビューションも 歓迎しますが、作者は変更に責任を持ち、システムの他の部分との相互作用を説明できる必要が あります。
提出前に:
CIは影響するパスに応じてチェックを実行します。CIの成功は必要条件ですが、作者による検証や メンテナーレビューの代わりにはなりません。
プロジェクトドキュメントはdocs/en/とdocs/zh/にあります。コード例は実行可能にし、
明確で簡潔な表現を使用してください。対応する翻訳がある場合は両言語を更新してください。
敬意を持ち、包括的かつ建設的に、技術的な議論へ集中してください。自由形式の設計や使用方法の 議論にはGitHub Discussionsを、 対応可能なバグや機能リクエストには GitHub Issuesを使用してください。