概要
Shannonはフィーチャーフラグを使用して、コードを変更することなくオプション機能、実験的機能、エンタープライズ拡張を制御します。これにより、以下のクリーンな分離が可能になります:- オープンソースのコア機能(すべての人が利用可能)
- エンタープライズ/プライベート機能(フラグの背後に制限)
- 実験的機能(テスト用に切り替え可能)
ゼロ再コンパイル
サービスを再構築せずに機能を有効/無効にする
環境ベース
開発/ステージング/本番用の異なるフラグ
クリーンな分離
OSSコアから隔離されたエンタープライズ機能
段階的ロールアウト
完全な展開前に新機能をテストする
設定
設定ファイル
フィーチャーフラグは、config/shannon.yamlのfeaturesセクションで定義されています:
環境変数
フィーチャーフラグは環境変数で上書きできます:SHANNON_FEATURE_<FLAG_NAME_UPPERCASE>
優先順位
- 環境変数(最優先)
- 設定オーバーレイ(
config/overlays/shannon.{env}.yaml) - ベース設定(
config/shannon.yaml) - コードデフォルト(最低優先)
使用パターン
Goコード内(オーケストレーター)
Pythonコード内(LLMサービス)
条件付きインポートパターン
フィーチャーフラグを使用して条件付きインポートを行い、クリーンな分離を実現します:一般的なフィーチャーフラグ
| フラグ名 | タイプ | 説明 | デフォルト |
|---|---|---|---|
ads_research | エンタープライズ | 市場分析を伴う広告リサーチワークフロー | false |
parallel_streaming | 実験的 | マルチエージェントの並列SSEストリーミング | true |
advanced_synthesis | エンタープライズ | カスタム合成テンプレート | false |
vendor_tools_enabled | 統合 | ベンダー固有のツールアダプターを有効にする | false |
enhanced_memory | 実験的 | ハイブリッド検索を伴う高度なベクトルメモリ | false |
ベストプラクティス
1. デフォルトは無効にする
新機能はベース設定でfalseにデフォルト設定するべきです:
2. 環境オーバーレイを使用する
異なるデプロイメント用に環境固有のオーバーレイを作成します:3. Try/Exceptでガードする
エンタープライズ/オプション機能には常に優雅なフォールバックを使用します:4. フィーチャー要件を文書化する
エンタープライズフィーチャーパターン
ShannonはOSSコアとエンタープライズ拡張をフィーチャーフラグを使用して分離します:ファイル構造
条件付きワークフロールーティング
機能フラグを用いたテスト
ユニットテスト
統合テスト
デプロイメント戦略
カナリアデプロイメント
ユーザーのサブセットに対して機能を有効化:A/B テスト
機能フラグに基づいてトラフィックをルーティング:モニタリングと可観測性
デバッグ用に機能フラグの使用をログに記録:マイグレーションガイド
新しい機能フラグの追加
1
設定でフラグを定義
config/shannon.yamlに追加:2
Go構造体を更新
go/orchestrator/internal/config/shannon.goにフィールドを追加:3
コードで使用
機能を制御:
4
テストを追加
有効/無効の状態をテスト:
5
文書化
このページと環境変数の文書を更新。