概要
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にデフォルト設定するべきです: