Skip to main content

概述

Shannon 使用特性开关来控制可选功能、实验性功能和企业扩展,无需修改代码。这实现了以下功能的清晰分离:
  • 开源核心功能(所有用户可用)
  • 企业/私有功能(通过开关控制)
  • 实验性功能(可切换以进行测试)

无需重新编译

启用/禁用功能无需重新构建服务

基于环境

开发/预发布/生产环境使用不同的开关配置

清晰分离

企业功能与开源核心隔离

渐进式发布

在全面部署前测试新功能

配置

配置文件

特性开关在 config/shannon.yamlfeatures 部分定义:

环境变量

可通过环境变量覆盖特性开关:
命名约定SHANNON_FEATURE_<开关名称大写>

优先级顺序

  1. 环境变量(最高优先级)
  2. 配置覆盖层config/overlays/shannon.{env}.yaml
  3. 基础配置config/shannon.yaml
  4. 代码默认值(最低优先级)

使用模式

在 Go 代码中(Orchestrator)

在 Python 代码中(LLM Service)

条件导入模式

使用特性开关与条件导入实现清晰分离:

常用特性开关

最佳实践

1. 默认禁用

新功能应在基础配置中默认为 false

2. 使用环境覆盖层

为不同部署创建特定于环境的覆盖层:
加载方式:

3. 使用 Try/Except 保护

始终为企业/可选功能使用优雅降级:

4. 记录功能要求

企业功能模式

Shannon 使用特性开关将开源核心企业扩展分离:

文件结构

条件工作流路由

使用特性开关进行测试

单元测试

集成测试

部署策略

金丝雀部署

为部分用户启用功能:

A/B 测试

基于特性开关路由流量:

监控与可观测性

记录特性开关使用情况以便调试:
添加指标:

迁移指南

添加新特性开关

1

在配置中定义开关

添加到 config/shannon.yaml
2

更新 Go 结构

go/orchestrator/internal/config/shannon.go 中添加字段:
3

在代码中使用

控制功能:
4

添加测试

测试启用/禁用两种状态:
5

更新文档

更新本页和环境变量文档。

相关文档

环境变量

完整的配置选项列表

供应商适配器

构建供应商特定集成

配置指南

Shannon 配置概述

扩展 Shannon

添加自定义功能和工作流