概述
Shannon 使用特性开关来控制可选功能、实验性功能和企业扩展,无需修改代码。这实现了以下功能的清晰分离:- 开源核心功能(所有用户可用)
- 企业/私有功能(通过开关控制)
- 实验性功能(可切换以进行测试)
无需重新编译
启用/禁用功能无需重新构建服务
基于环境
开发/预发布/生产环境使用不同的开关配置
清晰分离
企业功能与开源核心隔离
渐进式发布
在全面部署前测试新功能
配置
配置文件
特性开关在config/shannon.yaml 的 features 部分定义:
环境变量
可通过环境变量覆盖特性开关:SHANNON_FEATURE_<开关名称大写>
优先级顺序
- 环境变量(最高优先级)
- 配置覆盖层(
config/overlays/shannon.{env}.yaml) - 基础配置(
config/shannon.yaml) - 代码默认值(最低优先级)
使用模式
在 Go 代码中(Orchestrator)
在 Python 代码中(LLM Service)
条件导入模式
使用特性开关与条件导入实现清晰分离:常用特性开关
| 开关名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
ads_research | 企业版 | 带市场分析的广告研究工作流 | false |
parallel_streaming | 实验性 | 多代理并行 SSE 流式传输 | true |
advanced_synthesis | 企业版 | 自定义综合模板 | false |
vendor_tools_enabled | 集成 | 启用供应商特定工具适配器 | false |
enhanced_memory | 实验性 | 具有混合搜索的高级向量内存 | false |
最佳实践
1. 默认禁用
新功能应在基础配置中默认为false: