跳转到主要内容

概述

Shannon 通过环境变量YAML 配置文件进行配置。本指南记录了所有可用的配置选项。

配置文件

Shannon 使用多种配置方式:
  1. .env 文件:环境变量(本文档)
  2. config/features.yaml:功能标志和开关
  3. config/models.yaml:LLM 模型定义和定价
  4. Docker Compose:服务编排和网络配置

设置

# 从模板创建 .env 文件
cp .env.example .env

# 编辑您的配置值
nano .env

# 应用更改
docker compose down
docker compose up -d

核心运行时

所有部署的基本变量。
变量类型默认值描述
ENVIRONMENTstringdev运行时环境:devstagingprod
DEBUGbooleanfalse启用调试日志
SERVICE_NAMEstringshannon-llm-service日志和指标的服务标识符
示例
ENVIRONMENT=prod
DEBUG=false
SERVICE_NAME=shannon-production

LLM 提供商 API 密钥

至少必须配置一个提供商。
变量提供商必需格式
OPENAI_API_KEYOpenAI条件性sk-...
ANTHROPIC_API_KEYAnthropic (Claude)条件性sk-ant-...
GOOGLE_API_KEYGoogle (Gemini)条件性AIza...
GROQ_API_KEYGroqgsk_...
XAI_API_KEYxAI (Grok)Custom
DEEPSEEK_API_KEYDeepSeekCustom
QWEN_API_KEYQwenCustom
MISTRAL_API_KEYMistralCustom
ZAI_API_KEYZAICustom
AWS Bedrock 配置
变量默认值描述
AWS_ACCESS_KEY_ID-Bedrock 的 AWS 访问密钥
AWS_SECRET_ACCESS_KEY-AWS 密钥
AWS_REGIONus-east-1AWS 区域
示例
OPENAI_API_KEY=sk-proj-abc123...
ANTHROPIC_API_KEY=sk-ant-xyz789...
AWS_REGION=us-west-2
测试 API 密钥
# 测试 OpenAI
curl https://api.openai.com/v1/models \
  -H "Authorization: Bearer $OPENAI_API_KEY"

# 测试 Anthropic
curl https://api.anthropic.com/v1/messages \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{"model":"claude-3-sonnet-20240229","max_tokens":10,"messages":[{"role":"user","content":"Hi"}]}'

网络搜索提供商

可选但强烈推荐用于研究和数据收集任务。
变量类型默认值选项
WEB_SEARCH_PROVIDERstringgooglegoogleserperbingexafirecrawl
提供商特定密钥
变量提供商获取密钥地址
GOOGLE_SEARCH_API_KEYGoogleGoogle Cloud Console
GOOGLE_SEARCH_ENGINE_IDGoogleProgrammable Search Engine
SERPER_API_KEYSerperserper.dev
BING_API_KEYBingAzure Portal
EXA_API_KEYExaexa.ai
FIRECRAWL_API_KEYFirecrawlfirecrawl.dev
示例
WEB_SEARCH_PROVIDER=google
GOOGLE_SEARCH_API_KEY=AIzaSyAbc123...
GOOGLE_SEARCH_ENGINE_ID=0123456789abcdef

数据存储

PostgreSQL、Redis 和 Qdrant 的配置。

PostgreSQL

变量类型默认值描述
POSTGRES_HOSTstringpostgres数据库主机名
POSTGRES_PORTinteger5432数据库端口
POSTGRES_DBstringshannon数据库名称
POSTGRES_USERstringshannon数据库用户名
POSTGRES_PASSWORDstringshannon数据库密码
POSTGRES_SSLMODEstringdisableSSL 模式:disablerequireverify-full
DB_MAX_OPEN_CONNSinteger25最大打开连接数
DB_MAX_IDLE_CONNSinteger5最大空闲连接数

Redis

变量类型默认值描述
REDIS_HOSTstringredisRedis 主机名
REDIS_PORTinteger6379Redis 端口
REDIS_PASSWORDstring Redis 密码(空 = 无认证)
REDIS_TTL_SECONDSinteger3600缓存项的默认 TTL(1 小时)
REDIS_ADDRstringredis:6379Redis 地址(host:port)
REDIS_URLstringredis://redis:6379Redis 连接 URL
LLM_REDIS_URLstring-LLM 缓存专用 Redis(可选)

Qdrant(向量数据库)

变量类型默认值描述
QDRANT_URLstringhttp://qdrant:6333Qdrant HTTP 端点
QDRANT_HOSTstringqdrantQdrant 主机名
QDRANT_PORTinteger6333Qdrant 端口
示例
# PostgreSQL
POSTGRES_HOST=db.example.com
POSTGRES_PORT=5432
POSTGRES_PASSWORD=secure_password_here

# Redis(带认证)
REDIS_HOST=redis.example.com
REDIS_PASSWORD=redis_password_here
REDIS_TTL_SECONDS=7200  # 2 小时

# Qdrant
QDRANT_URL=http://vector-db.example.com:6333

服务端点

内部服务通信的 URL。
变量默认值描述
TEMPORAL_HOSTtemporal:7233Temporal 工作流引擎
LLM_SERVICE_URLhttp://llm-service:8000Python LLM 服务 HTTP 端点
AGENT_CORE_ADDRagent-core:50051Rust 代理核心 gRPC 端点
ADMIN_SERVERhttp://orchestrator:8081编排器管理 API
ORCHESTRATOR_GRPCorchestrator:50052编排器 gRPC 端点
EVENTS_INGEST_URLhttp://orchestrator:8081/events事件摄取端点
EVENTS_AUTH_TOKEN-事件摄取认证令牌
APPROVALS_AUTH_TOKEN-审批 webhook 认证令牌
配置文件路径
变量默认值描述
CONFIG_PATH./config/features.yaml功能标志配置
MODELS_CONFIG_PATH./config/models.yaml模型定义和定价

模型路由和预算

控制 LLM 选择、令牌限制和成本管理。
变量类型默认值描述
DEFAULT_MODEL_TIERstringsmall默认模型大小:smallmediumlarge
COMPLEXITY_MODEL_IDstringgpt-5复杂度分析模型
DECOMPOSITION_MODEL_IDstringclaude-sonnet-4-20250514任务分解模型
MAX_TOKENSinteger2000默认最大输出令牌数
TEMPERATUREfloat0.7默认采样温度(0.0-1.0)
MAX_TOKENS_PER_REQUESTinteger10000每个 API 请求的最大令牌数
MAX_COST_PER_REQUESTfloat0.50每个请求的最大成本(美元)
LLM_DISABLE_BUDGETSinteger11 = 编排器管理预算,0 = 在 LLM 服务中强制执行
HISTORY_WINDOW_MESSAGESinteger50包含的历史消息数量
HISTORY_WINDOW_DEBUG_MESSAGESinteger75调试模式下的历史消息数
WORKFLOW_SYNTH_BYPASS_SINGLEbooleantrue跳过单结果任务的合成
TOKEN_BUDGET_PER_AGENTinteger-每个代理的令牌限制
TOKEN_BUDGET_PER_TASKinteger-每个任务的令牌限制
示例 - 成本优化
DEFAULT_MODEL_TIER=small
MAX_COST_PER_REQUEST=0.10
MAX_TOKENS_PER_REQUEST=5000
TEMPERATURE=0.5
示例 - 高质量
DEFAULT_MODEL_TIER=large
MAX_COST_PER_REQUEST=2.00
MAX_TOKENS_PER_REQUEST=50000
TEMPERATURE=0.7

缓存和速率限制

通过缓存和速率限制进行性能和成本优化。
变量类型默认值描述
ENABLE_CACHEbooleantrue启用 LLM 响应缓存
CACHE_SIMILARITY_THRESHOLDfloat0.95语义相似度阈值(0.0-1.0)
RATE_LIMIT_REQUESTSinteger100每个时间窗口的请求数
RATE_LIMIT_WINDOWinteger60速率限制窗口(秒)
WEB_SEARCH_RATE_LIMITinteger120每分钟网络搜索请求数
CALCULATOR_RATE_LIMITinteger2000每分钟计算器工具请求数
PYTHON_EXECUTOR_RATE_LIMITinteger60每分钟 Python 执行请求数
PARTIAL_CHUNK_CHARSinteger512流式传输块大小(字符)
缓存行为
  • 响应按语义相似度缓存
  • 缓存键:SHA256 哈希(提示 + 模型 + 温度)
  • TTL:由 REDIS_TTL_SECONDS 控制
示例
ENABLE_CACHE=true
CACHE_SIMILARITY_THRESHOLD=0.98  # 更高 = 更精确的匹配
RATE_LIMIT_REQUESTS=200
RATE_LIMIT_WINDOW=60

工具执行和工作流控制

微调并行性、超时和执行行为。
变量类型默认值范围描述
TOOL_PARALLELISMinteger51-10并发工具执行数(1=顺序)
ENABLE_TOOL_SELECTIONinteger10,11=自动工具选择,0=仅手动
PRIORITY_QUEUESstringoffon/off启用基于优先级的任务队列
STREAMING_RING_CAPACITYinteger1000-事件流缓冲区大小
COMPRESSION_TRIGGER_RATIOfloat0.750.0-1.0上下文压缩触发阈值
COMPRESSION_TARGET_RATIOfloat0.3750.0-1.0目标压缩比率
ENFORCE_TIMEOUT_SECONDSinteger90-操作的硬超时
ENFORCE_MAX_TOKENSinteger32768-绝对最大令牌数
ENFORCE_RATE_RPSinteger20-每秒请求数限制
断路器设置
变量类型默认值描述
ENFORCE_CB_ERROR_THRESHOLDfloat0.5打开断路器的错误率(50%)
ENFORCE_CB_WINDOW_SECONDSinteger30错误率的滑动窗口
ENFORCE_CB_MIN_REQUESTSinteger20打开断路器前的最小请求数
性能调优
# 高吞吐量
TOOL_PARALLELISM=10
ENFORCE_RATE_RPS=50

# 保守/低资源
TOOL_PARALLELISM=2
ENFORCE_RATE_RPS=10

审批和安全

人工参与和认证设置。
变量类型默认值描述
APPROVAL_ENABLEDbooleanfalse启用人工审批工作流
APPROVAL_COMPLEXITY_THRESHOLDfloat0.5需要审批的复杂度分数(0.0-1.0)
APPROVAL_DANGEROUS_TOOLSstringfile_system,code_execution需要审批的工具(逗号分隔)
APPROVAL_TIMEOUT_SECONDSinteger7200审批等待超时(2 小时)
JWT_SECRETstringdevelopment-only-secret-change-in-productionJWT 签名密钥(⚠️ 在生产环境中更改
GATEWAY_SKIP_AUTHinteger11=禁用认证,0=启用认证
安全最佳实践
# 生产设置
APPROVAL_ENABLED=true
APPROVAL_DANGEROUS_TOOLS=file_system,code_execution,shell,network_access
JWT_SECRET=$(openssl rand -base64 64)
GATEWAY_SKIP_AUTH=0
开发设置
# 快速迭代(⚠️ 不适用于生产环境)
APPROVAL_ENABLED=false
GATEWAY_SKIP_AUTH=1

Python WASI 沙箱

安全的 Python 代码执行环境。
变量类型默认值描述
PYTHON_WASI_WASM_PATHstring./wasm-interpreters/python-3.11.4.wasmPython WASI 解释器路径
PYTHON_WASI_SESSION_TIMEOUTinteger3600会话超时(秒)
WASI_MEMORY_LIMIT_MBinteger512每次执行的内存限制(MB)
WASI_TIMEOUT_SECONDSinteger60每次运行的执行超时
设置
# 下载 Python WASI 解释器(20MB)
./scripts/setup_python_wasi.sh

# 验证
ls -lh wasm-interpreters/python-3.11.4.wasm
调优
# 严格限制(基本脚本)
WASI_MEMORY_LIMIT_MB=256
WASI_TIMEOUT_SECONDS=30

# 宽松限制(数据处理)
WASI_MEMORY_LIMIT_MB=1024
WASI_TIMEOUT_SECONDS=300

OpenAPI 和 MCP 集成

外部工具和 API 集成设置。

OpenAPI 工具

变量类型默认值描述
OPENAPI_ALLOWED_DOMAINSstring*允许的域名(* 或逗号分隔)
OPENAPI_MAX_SPEC_SIZEinteger5242880最大 OpenAPI 规范大小(5MB)
OPENAPI_FETCH_TIMEOUTinteger30规范获取超时(秒)
OPENAPI_RETRIESinteger3重试次数

MCP(模型上下文协议)

变量类型默认值描述
MCP_ALLOWED_DOMAINSstring*允许的 MCP 域名
MCP_MAX_RESPONSE_BYTESinteger10485760最大响应大小(10MB)
MCP_RETRIESinteger3重试次数
MCP_TIMEOUT_SECONDSinteger10请求超时
MCP_REGISTER_TOKENstring-注册认证令牌
MCP_RATE_LIMIT_DEFAULTinteger60默认速率限制(请求/分钟)
MCP_CB_FAILURESinteger5断路器失败阈值
MCP_CB_RECOVERY_SECONDSinteger60断路器恢复时间
MCP_COST_TO_TOKENSinteger0成本到令牌的转换
示例 - 受限
OPENAPI_ALLOWED_DOMAINS=api.example.com,api.partner.com
MCP_ALLOWED_DOMAINS=mcp.trusted.com
MCP_REGISTER_TOKEN=secret_token_here

可观测性和遥测

指标、跟踪和日志配置。
变量类型默认值描述
OTEL_SERVICE_NAMEstringshannon-llm-serviceOpenTelemetry 服务名称
OTEL_EXPORTER_OTLP_ENDPOINTstringlocalhost:4317OTLP 端点
OTEL_ENABLEDbooleanfalse启用 OpenTelemetry 追踪
LOG_FORMATstringplain日志格式:plainjson
METRICS_PORTinteger2112Prometheus 指标端口
Prometheus 端点
  • 编排器:http://localhost:2112/metrics
  • 代理核心:http://localhost:2113/metrics
  • LLM 服务:http://localhost:8000/metrics
示例 - 生产可观测性
OTEL_ENABLED=true
OTEL_EXPORTER_OTLP_ENDPOINT=otel-collector:4317
LOG_FORMAT=json
METRICS_PORT=2112

高级编排器控制

Temporal worker 和编排器行为的底层调优。

Worker 并发

变量类型默认值描述
WORKER_ACTinteger-Activity worker 并发数(所有优先级)
WORKER_WFinteger-Workflow worker 并发数(所有优先级)
WORKER_ACT_CRITICALinteger10关键优先级 activity worker 数
WORKER_WF_CRITICALinteger5关键优先级 workflow worker 数
WORKER_ACT_HIGHinteger-高优先级 activity worker 数
WORKER_WF_HIGHinteger-高优先级 workflow worker 数
WORKER_ACT_NORMALinteger-正常优先级 activity worker 数
WORKER_WF_NORMALinteger-正常优先级 workflow worker 数
WORKER_ACT_LOWinteger-低优先级 activity worker 数
WORKER_WF_LOWinteger-低优先级 workflow worker 数

事件和断路器设置

变量类型默认值描述
EVENTLOG_BATCH_SIZEinteger100事件批处理大小
EVENTLOG_BATCH_INTERVAL_MSinteger100事件批处理间隔(毫秒)
RATE_LIMIT_INTERVAL_MSinteger60000速率限制窗口(毫秒)
BACKPRESSURE_THRESHOLDinteger-背压触发阈值
MAX_BACKPRESSURE_DELAY_MSinteger-最大背压延迟
CIRCUIT_FAILURE_THRESHOLDinteger-断路器失败计数
CIRCUIT_HALF_OPEN_REQUESTSinteger-半开状态测试请求数
CIRCUIT_RESET_TIMEOUT_MSinteger-断路器重置超时
LLM_TIMEOUT_SECONDSinteger120LLM 请求超时
性能调优
# 高负载
WORKER_ACT_CRITICAL=20
WORKER_WF_CRITICAL=10
EVENTLOG_BATCH_SIZE=500

# 低资源
WORKER_ACT_CRITICAL=5
WORKER_WF_CRITICAL=3
EVENTLOG_BATCH_SIZE=50

杂项

其他配置选项。
变量类型默认值描述
SHANNON_WORKSPACEstring./workspace文件操作的工作空间目录
SEED_DATAbooleanfalse启动时在 Qdrant 中填充示例数据
AGENT_TIMEOUT_SECONDSinteger600每个代理执行的最大运行时间(10 分钟)
TEMPLATE_FALLBACK_ENABLEDbooleanfalse如果模板执行失败则回退到 AI

配置配置文件

开发配置文件

# .env.dev
ENVIRONMENT=dev
DEBUG=true
GATEWAY_SKIP_AUTH=1
APPROVAL_ENABLED=false
LOG_FORMAT=plain
MAX_COST_PER_REQUEST=0.10
LLM_DISABLE_BUDGETS=1
OTEL_ENABLED=false

预发布配置文件

# .env.staging
ENVIRONMENT=staging
DEBUG=false
GATEWAY_SKIP_AUTH=0
APPROVAL_ENABLED=true
LOG_FORMAT=json
MAX_COST_PER_REQUEST=1.00
LLM_DISABLE_BUDGETS=0
OTEL_ENABLED=true
JWT_SECRET=$(openssl rand -base64 64)

生产配置文件

# .env.prod
ENVIRONMENT=prod
DEBUG=false
GATEWAY_SKIP_AUTH=0
APPROVAL_ENABLED=true
APPROVAL_DANGEROUS_TOOLS=file_system,code_execution,shell,network_access
LOG_FORMAT=json
MAX_COST_PER_REQUEST=2.00
LLM_DISABLE_BUDGETS=0
OTEL_ENABLED=true
JWT_SECRET=$(openssl rand -base64 64)
POSTGRES_SSLMODE=require
REDIS_PASSWORD=secure_password
# 添加强密码并限制域名
OPENAPI_ALLOWED_DOMAINS=api.trusted.com
MCP_ALLOWED_DOMAINS=mcp.trusted.com

热重载支持

大多数配置更改需要重启服务:
# 编辑 .env 后
docker compose restart orchestrator
docker compose restart agent-core
docker compose restart llm-service
docker compose restart gateway
自动重载的服务
  • ✅ 功能标志(config/features.yaml
  • ✅ 模型配置(config/models.yaml
需要重启的服务
  • ❌ 环境变量(.env
  • ❌ 数据库凭证
  • ❌ 服务端点

验证和测试

验证配置

# 检查加载的环境变量
docker compose exec orchestrator env | sort

# 测试数据库连接
docker compose exec postgres psql -U shannon -d shannon -c "SELECT 1;"

# 测试 Redis 连接
docker compose exec redis redis-cli ping

# 测试 API 端点
curl http://localhost:8080/health
curl http://localhost:8000/health

配置调试

# 查看服务日志
docker compose logs orchestrator | grep -i "config\|environment"

# 检查错误
docker compose logs orchestrator | grep -i "error\|warning"

# 验证 YAML 语法
docker compose config

安全检查清单

  • JWT_SECRET 更改为强随机值
  • 启用认证(GATEWAY_SKIP_AUTH=0
  • 设置强数据库密码
  • 启用 Redis 认证
  • 为 PostgreSQL 使用 SSL(POSTGRES_SSLMODE=require
  • 启用审批(APPROVAL_ENABLED=true
  • 限制 OPENAPI_ALLOWED_DOMAINS
  • 限制 MCP_ALLOWED_DOMAINS
  • 启用结构化日志(LOG_FORMAT=json
  • 设置监控(OTEL_ENABLED=true
  • 适当配置预算限制
  • 根据负载审查 worker 并发性
  • 安全备份 .env 文件

相关主题