config

package
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 24, 2026 License: MIT Imports: 13 Imported by: 0

Documentation

Overview

config 包的 HTTP 配置管理 API。

提供配置查询、更新、热重载触发与变更历史查询能力。

默认配置定义与默认值构造函数。

Package config 提供 AgentFlow 的配置管理功能。

概述

config 包负责应用配置的完整生命周期管理,包括多源加载、 运行时热重载、变更审计与 HTTP 管理 API。配置按 "默认值 -> YAML 文件 -> 环境变量" 的优先级合并。

核心结构

  • Config: 顶层配置聚合,涵盖 Server、Agent、Redis、 Database、Qdrant、Weaviate、Milvus、LLM、Log、Telemetry
  • Loader: 配置加载器,支持 Builder 模式链式设置 文件路径、环境变量前缀与自定义验证器
  • HotReloadManager: 热重载管理器,支持文件监听、 局部字段更新、变更回调、自动回滚与版本化历史
  • FileWatcher: 文件变更监听器,基于轮询 + 去抖机制 触发配置重载
  • ConfigAPIHandler: HTTP API 处理器,提供配置查询、 更新、热重载触发与变更历史查询端点

主要能力

  • 多源加载: YAML 文件、环境变量(AGENTFLOW_ 前缀)、默认值
  • 热重载: 文件监听自动重载 + API 手动触发,支持字段级更新
  • 安全治理: 敏感字段脱敏(MaskSensitive / MaskAPIKey)、 API Key 仅 Header 传递、CORS 控制
  • 变更审计: 环形缓冲历史记录、版本号追踪、回滚到任意版本
  • 配置验证: 内置基础校验 + 自定义 ValidateFunc 钩子

使用示例

cfg, err := config.NewLoader().
	WithConfigPath("config.yaml").
	WithEnvPrefix("AGENTFLOW").
	Load()

配置热重载管理器实现。

支持局部更新、变更通知、应用前校验与审计记录。

配置加载器实现。

支持默认值、YAML 文件与环境变量覆盖,并按优先级合并配置。

配置文件变更监听器实现。

基于文件系统事件与轮询兜底机制触发配置重载回调。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetHotReloadableFields

func GetHotReloadableFields() map[string]HotReloadableField

GetHotReloadableFields 返回可热重载字段的列表

func IsHotReloadable

func IsHotReloadable(path string) bool

IsHotReloadable 检查字段是否可以热重载

func MaskAPIKey

func MaskAPIKey(key string) string

MaskAPIKey 掩码 API Key,用于日志记录 例如: "sk-1234567890abcdef" -> "sk-123...def"

func MaskSensitive

func MaskSensitive(s string) string

MaskSensitive 掩码敏感信息,用于日志记录 例如: "mysecretpassword" -> "mys***ord"

Types

type AgentConfig

type AgentConfig struct {
	// 名称
	Name string `yaml:"name" env:"NAME"`
	// 描述
	Description string `yaml:"description" env:"DESCRIPTION"`
	// 模型名称
	Model string `yaml:"model" env:"MODEL"`
	// 系统提示词
	SystemPrompt string `yaml:"system_prompt" env:"SYSTEM_PROMPT"`
	// 最大迭代次数
	MaxIterations int `yaml:"max_iterations" env:"MAX_ITERATIONS"`
	// 温度参数
	Temperature float64 `yaml:"temperature" env:"TEMPERATURE"`
	// 最大 Token 数
	MaxTokens int `yaml:"max_tokens" env:"MAX_TOKENS"`
	// 超时时间
	Timeout time.Duration `yaml:"timeout" env:"TIMEOUT"`
	// 是否启用流式输出
	StreamEnabled bool `yaml:"stream_enabled" env:"STREAM_ENABLED"`
	// 记忆配置
	Memory MemoryConfig `yaml:"memory" env:"MEMORY"`
}

AgentConfig Agent 配置(与 types.AgentConfig 兼容)

func DefaultAgentConfig

func DefaultAgentConfig() AgentConfig

DefaultAgentConfig 返回默认 Agent 配置

type ChangeCallback

type ChangeCallback func(change ConfigChange)

ChangeCallback 配置更改时调用

type Config

type Config struct {
	// Server 服务器配置
	Server ServerConfig `yaml:"server" env:"SERVER"`

	// Agent 默认 Agent 配置
	Agent AgentConfig `yaml:"agent" env:"AGENT"`

	// Redis 缓存配置 — Reserved for future Redis-backed caching, not currently used.
	Redis RedisConfig `yaml:"redis" env:"REDIS"`

	// Database 数据库配置
	Database DatabaseConfig `yaml:"database" env:"DATABASE"`

	// Qdrant 向量存储配置
	Qdrant QdrantConfig `yaml:"qdrant" env:"QDRANT"`

	// Weaviate 向量存储配置
	Weaviate WeaviateConfig `yaml:"weaviate" env:"WEAVIATE"`

	// Milvus 向量存储配置
	Milvus MilvusConfig `yaml:"milvus" env:"MILVUS"`

	// MongoDB 文档型数据存储配置
	MongoDB MongoDBConfig `yaml:"mongodb" env:"MONGODB"`

	// LLM 大语言模型配置
	LLM LLMConfig `yaml:"llm" env:"LLM"`

	// Log 日志配置
	Log LogConfig `yaml:"log" env:"LOG"`

	// Telemetry 遥测配置
	Telemetry TelemetryConfig `yaml:"telemetry" env:"TELEMETRY"`

	// Tools 工具提供者配置
	Tools ToolsConfig `yaml:"tools" env:"TOOLS"`
}

Config 是 AgentFlow 的完整配置结构

func DefaultConfig

func DefaultConfig() *Config

DefaultConfig 返回默认配置

func LoadFromEnv

func LoadFromEnv() (*Config, error)

LoadFromEnv 仅从环境变量加载配置

func MustLoad

func MustLoad(path string) *Config

MustLoad 加载配置,失败时 panic

func (*Config) Validate

func (c *Config) Validate() error

Validate 验证配置

type ConfigAPIHandler

type ConfigAPIHandler struct {
	// contains filtered or unexported fields
}

ConfigAPIHandler 处理配置 API 请求

func NewConfigAPIHandler

func NewConfigAPIHandler(manager *HotReloadManager, allowedOrigin ...string) *ConfigAPIHandler

NewConfigAPIHandler 创建一个新的配置 API 处理程序。 allowedOrigin 指定 CORS 允许的来源,为空时默认不设置 Access-Control-Allow-Origin。

func (*ConfigAPIHandler) HandleChanges added in v1.0.0

func (h *ConfigAPIHandler) HandleChanges(w http.ResponseWriter, r *http.Request)

HandleChanges 返回配置变更历史(导出方法)

func (*ConfigAPIHandler) HandleConfig added in v1.0.0

func (h *ConfigAPIHandler) HandleConfig(w http.ResponseWriter, r *http.Request)

HandleConfig 处理配置的 GET 和 PUT 请求(导出方法,供外部认证中间件包装使用)

func (*ConfigAPIHandler) HandleFields added in v1.0.0

func (h *ConfigAPIHandler) HandleFields(w http.ResponseWriter, r *http.Request)

HandleFields 返回可热重载字段列表(导出方法)

func (*ConfigAPIHandler) HandleReload added in v1.0.0

func (h *ConfigAPIHandler) HandleReload(w http.ResponseWriter, r *http.Request)

HandleReload 处理配置热重载请求(导出方法)

func (*ConfigAPIHandler) RegisterRoutes

func (h *ConfigAPIHandler) RegisterRoutes(mux *http.ServeMux)

RegisterRoutes 注册配置 API 路由

type ConfigAPIMiddleware

type ConfigAPIMiddleware struct {
	// contains filtered or unexported fields
}

ConfigAPIMiddleware 为配置API提供中间件

func NewConfigAPIMiddleware

func NewConfigAPIMiddleware(handler *ConfigAPIHandler, apiKey string) *ConfigAPIMiddleware

NewConfigAPIMiddleware 创建一个新的配置API中间件

func (*ConfigAPIMiddleware) LogRequests

func (m *ConfigAPIMiddleware) LogRequests(next http.HandlerFunc, logger func(method, path string, status int, duration time.Duration)) http.HandlerFunc

LogRequests 使用请求日志记录来包装处理程序

func (*ConfigAPIMiddleware) RequireAuth

func (m *ConfigAPIMiddleware) RequireAuth(next http.HandlerFunc) http.HandlerFunc

RequireAuth 使用 API 密钥身份验证包装处理程序

type ConfigChange

type ConfigChange struct {
	// 变更的时间戳
	Timestamp time.Time `json:"timestamp"`

	// 更改的来源(文件、api、env)
	Source string `json:"source"`

	// 已更改字段的路径(例如“Server.HTTPPort”)
	Path string `json:"path"`

	// 更改前的 OldValue(可能会对敏感字段进行编辑)
	OldValue any `json:"old_value,omitempty"`

	// 更改后的 NewValue(可能会对敏感字段进行编辑)
	NewValue any `json:"new_value,omitempty"`

	// RequiresRestart 指示此更改是否需要重新启动
	RequiresRestart bool `json:"requires_restart"`

	// 已应用指示是否应用了更改
	Applied bool `json:"applied"`

	// 如果更改失败则出错
	Error string `json:"error,omitempty"`
}

ConfigChange 代表配置更改

type ConfigSnapshot

type ConfigSnapshot struct {
	Config    *Config   `json:"config"`
	Timestamp time.Time `json:"timestamp"`
	Source    string    `json:"source"`   // 变更来源:file, api, env
	Version   int       `json:"version"`  // 递增版本号
	Checksum  string    `json:"checksum"` // 配置内容校验和
}

ConfigSnapshot 配置快照(用于历史记录和回滚)

type ConfigUpdateRequest

type ConfigUpdateRequest struct {
	// 更新是到新值的字段路径的映射
	Updates map[string]any `json:"updates"`
}

ConfigUpdateRequest 代表配置更新请求

type DatabaseConfig

type DatabaseConfig struct {
	// 驱动类型: postgres, mysql, sqlite
	Driver string `yaml:"driver" env:"DRIVER"`
	// 主机
	Host string `yaml:"host" env:"HOST"`
	// 端口
	Port int `yaml:"port" env:"PORT"`
	// 用户名
	User string `yaml:"user" env:"USER"`
	// 密码
	Password string `yaml:"password" env:"PASSWORD"`
	// 数据库名
	Name string `yaml:"name" env:"NAME"`
	// SSL 模式
	SSLMode string `yaml:"ssl_mode" env:"SSL_MODE"`
	// 最大连接数
	MaxOpenConns int `yaml:"max_open_conns" env:"MAX_OPEN_CONNS"`
	// 最大空闲连接
	MaxIdleConns int `yaml:"max_idle_conns" env:"MAX_IDLE_CONNS"`
	// 连接最大生命周期
	ConnMaxLifetime time.Duration `yaml:"conn_max_lifetime" env:"CONN_MAX_LIFETIME"`
}

DatabaseConfig 数据库配置

func DefaultDatabaseConfig

func DefaultDatabaseConfig() DatabaseConfig

DefaultDatabaseConfig 返回默认数据库配置

func (*DatabaseConfig) DSN

func (d *DatabaseConfig) DSN() string

DSN 返回数据库连接字符串

func (*DatabaseConfig) SafeDSN

func (d *DatabaseConfig) SafeDSN() string

SafeDSN 返回用于日志记录的安全连接字符串(密码已掩码) 使用此方法而非 DSN() 来记录日志,防止敏感信息泄露

type DuckDuckGoToolConfig added in v1.0.0

type DuckDuckGoToolConfig struct {
	// 请求超时
	Timeout time.Duration `yaml:"timeout" env:"TIMEOUT"`
}

DuckDuckGoToolConfig DuckDuckGo 搜索工具配置(完全免费)

type FieldInfo

type FieldInfo struct {
	// Path是字段路径
	Path string `json:"path"`

	// 字段描述
	Description string `json:"description"`

	// RequiresRestart 指示更改是否需要重新启动
	RequiresRestart bool `json:"requires_restart"`

	// Sensitive 表示该字段是否敏感
	Sensitive bool `json:"sensitive"`

	// CurrentValue 是当前值(如果敏感则进行编辑)
	CurrentValue any `json:"current_value,omitempty"`
}

FieldInfo 提供有关配置字段的信息

type FileEvent

type FileEvent struct {
	// Path是改变的文件路径
	Path string `json:"path"`

	// op 是操作类型
	Op FileOp `json:"op"`

	// 时间戳是事件发生的时间
	Timestamp time.Time `json:"timestamp"`

	// 检测过程中如有错误
	Error error `json:"error,omitempty"`
}

FileEvent 代表文件更改事件

type FileOp

type FileOp int

FileOp 代表文件操作类型

const (
	// FileOpCreate 表示文件已创建
	FileOpCreate FileOp = iota
	// FileOpWrite 指示文件已被修改
	FileOpWrite
	// FileOpRemove 表示文件已被删除
	FileOpRemove
	// FileOpRename 表示文件已重命名
	FileOpRename
	// FileOpChmod 表示文件权限已更改
	FileOpChmod
)

func (FileOp) String

func (op FileOp) String() string

String 返回 FileOp 的字符串表示形式

type FileWatcher

type FileWatcher struct {
	// contains filtered or unexported fields
}

FileWatcher 监视配置文件的更改

func NewFileWatcher

func NewFileWatcher(paths []string, opts ...WatcherOption) (*FileWatcher, error)

NewFileWatcher 创建一个新的文件观察器

func (*FileWatcher) AddPath

func (w *FileWatcher) AddPath(path string) error

AddPath 添加新的观看路径

func (*FileWatcher) IsRunning

func (w *FileWatcher) IsRunning() bool

IsRunning 返回观察者是否正在运行

func (*FileWatcher) OnChange

func (w *FileWatcher) OnChange(callback func(FileEvent))

OnChange 注册文件更改事件的回调

func (*FileWatcher) Paths

func (w *FileWatcher) Paths() []string

Paths 返回监视路径的列表

func (*FileWatcher) RemovePath

func (w *FileWatcher) RemovePath(path string) error

RemovePath 从观看中删除一条路径

func (*FileWatcher) Start

func (w *FileWatcher) Start(ctx context.Context) error

Start 开始监视文件更改

func (*FileWatcher) Stop

func (w *FileWatcher) Stop() error

Stop 停止文件观察器

type FirecrawlToolConfig added in v1.0.0

type FirecrawlToolConfig struct {
	// API Key(建议使用环境变量 AGENTFLOW_TOOLS_FIRECRAWL_API_KEY)
	APIKey string `yaml:"api_key" env:"API_KEY" json:"-"`
	// 基础 URL(可选,默认 https://api.firecrawl.dev
	BaseURL string `yaml:"base_url" env:"BASE_URL"`
	// 请求超时
	Timeout time.Duration `yaml:"timeout" env:"TIMEOUT"`
}

FirecrawlToolConfig Firecrawl 工具配置

type HTTPScrapeToolConfig added in v1.0.0

type HTTPScrapeToolConfig struct {
	// 自定义 User-Agent
	UserAgent string `yaml:"user_agent" env:"USER_AGENT"`
	// 请求超时
	Timeout time.Duration `yaml:"timeout" env:"TIMEOUT"`
}

HTTPScrapeToolConfig 纯 HTTP 抓取工具配置(零依赖,无需 API Key)

type HotReloadManager

type HotReloadManager struct {
	// contains filtered or unexported fields
}

HotReloadManager 管理配置热重载

func NewHotReloadManager

func NewHotReloadManager(config *Config, opts ...HotReloadOption) *HotReloadManager

NewHotReloadManager 创建一个新的热重载管理器

func (*HotReloadManager) ApplyConfig

func (m *HotReloadManager) ApplyConfig(newConfig *Config, source string) error

ApplyConfig 应用新配置 修复 TOCTOU 竞态:validate、apply、pushHistory 和 changeLog 更新 全部在同一把锁内完成,确保原子性。回调通知在锁外执行以避免死锁。

func (*HotReloadManager) GetChangeLog

func (m *HotReloadManager) GetChangeLog(limit int) []ConfigChange

GetChangeLog 返回配置变更日志

func (*HotReloadManager) GetConfig

func (m *HotReloadManager) GetConfig() *Config

GetConfig 返回当前配置

func (*HotReloadManager) GetConfigHistory

func (m *HotReloadManager) GetConfigHistory() []ConfigSnapshot

GetConfigHistory 获取配置变更历史

func (*HotReloadManager) GetCurrentVersion

func (m *HotReloadManager) GetCurrentVersion() int

GetCurrentVersion 获取当前配置版本号

func (*HotReloadManager) OnChange

func (m *HotReloadManager) OnChange(callback ChangeCallback)

OnChange 注册配置更改的回调

func (*HotReloadManager) OnReload

func (m *HotReloadManager) OnReload(callback ReloadCallback)

OnReload 注册配置重新加载的回调

func (*HotReloadManager) OnRollback

func (m *HotReloadManager) OnRollback(callback RollbackCallback)

OnRollback 注册回滚事件回调

func (*HotReloadManager) ReloadFromFile

func (m *HotReloadManager) ReloadFromFile() error

ReloadFromFile 从文件重新加载配置

func (*HotReloadManager) Rollback

func (m *HotReloadManager) Rollback() error

Rollback 回滚到上一个有效配置

func (*HotReloadManager) RollbackToVersion

func (m *HotReloadManager) RollbackToVersion(version int) error

RollbackToVersion 回滚到指定版本

func (*HotReloadManager) SanitizedConfig

func (m *HotReloadManager) SanitizedConfig() map[string]any

SanitizedConfig 返回包含敏感字段的配置副本

func (*HotReloadManager) Start

func (m *HotReloadManager) Start(ctx context.Context) error

Start 启动热重载管理器

func (*HotReloadManager) Stop

func (m *HotReloadManager) Stop() error

Stop 停止热重载管理器

func (*HotReloadManager) UpdateField

func (m *HotReloadManager) UpdateField(path string, value any) error

UpdateField 更新单个配置字段

type HotReloadOption

type HotReloadOption func(*HotReloadManager)

HotReloadOption 配置 HotReloadManager

func WithConfigPath

func WithConfigPath(path string) HotReloadOption

WithConfigPath 设置配置文件路径

func WithHotReloadLogger

func WithHotReloadLogger(logger *zap.Logger) HotReloadOption

WithHotReloadLogger 设置记录器

func WithMaxHistorySize

func WithMaxHistorySize(size int) HotReloadOption

WithMaxHistorySize 设置配置历史最大记录数

func WithValidateFunc

func WithValidateFunc(fn ValidateFunc) HotReloadOption

WithValidateFunc 设置配置验证钩子

type HotReloadableField

type HotReloadableField struct {
	// Path 是字段路径(例如“Log.Level”)
	Path string

	// 字段描述
	Description string

	// RequiresRestart 指示更改此字段是否需要重新启动
	RequiresRestart bool

	// Sensitive 表示该字段是否包含敏感数据
	Sensitive bool

	// Validator 是可选的校验函数
	Validator func(value any) error
}

HotReloadableField 定义哪些字段可以热重载

type JWTConfig added in v1.0.0

type JWTConfig struct {
	// HMAC 签名密钥
	Secret string `yaml:"secret" env:"SECRET" json:"-"`
	// RSA 公钥(PEM 格式)
	PublicKey string `yaml:"public_key" env:"PUBLIC_KEY" json:"-"`
	// 期望的签发者
	Issuer string `yaml:"issuer" env:"ISSUER" json:"issuer,omitempty"`
	// 期望的受众
	Audience string `yaml:"audience" env:"AUDIENCE" json:"audience,omitempty"`
}

JWTConfig JWT 认证配置

type JinaToolConfig added in v1.0.0

type JinaToolConfig struct {
	// API Key(建议使用环境变量 AGENTFLOW_TOOLS_JINA_API_KEY)
	APIKey string `yaml:"api_key" env:"API_KEY" json:"-"`
	// 基础 URL(可选,默认 https://r.jina.ai
	BaseURL string `yaml:"base_url" env:"BASE_URL"`
	// 请求超时
	Timeout time.Duration `yaml:"timeout" env:"TIMEOUT"`
}

JinaToolConfig Jina Reader 工具配置

type LLMConfig

type LLMConfig struct {
	// 默认 Provider
	DefaultProvider string `yaml:"default_provider" env:"DEFAULT_PROVIDER"`
	// API Key(通用)
	APIKey string `yaml:"api_key" env:"API_KEY"`
	// 基础 URL(可选)
	BaseURL string `yaml:"base_url" env:"BASE_URL"`
	// 请求超时
	Timeout time.Duration `yaml:"timeout" env:"TIMEOUT"`
	// 最大重试次数
	MaxRetries int `yaml:"max_retries" env:"MAX_RETRIES"`
}

LLMConfig LLM 配置

func DefaultLLMConfig

func DefaultLLMConfig() LLMConfig

DefaultLLMConfig 返回默认 LLM 配置

type Loader

type Loader struct {
	// contains filtered or unexported fields
}

Loader 配置加载器(Builder 模式)

func NewLoader

func NewLoader() *Loader

NewLoader 创建新的配置加载器

func (*Loader) Load

func (l *Loader) Load() (*Config, error)

Load 加载配置 优先级: 默认值 → YAML 文件 → 环境变量

func (*Loader) WithConfigPath

func (l *Loader) WithConfigPath(path string) *Loader

WithConfigPath 设置配置文件路径

func (*Loader) WithEnvPrefix

func (l *Loader) WithEnvPrefix(prefix string) *Loader

WithEnvPrefix 设置环境变量前缀

func (*Loader) WithValidator

func (l *Loader) WithValidator(v func(*Config) error) *Loader

WithValidator 添加配置验证器

type LogConfig

type LogConfig struct {
	// 日志级别: debug, info, warn, error
	Level string `yaml:"level" env:"LEVEL"`
	// 输出格式: json, console
	Format string `yaml:"format" env:"FORMAT"`
	// 输出路径
	OutputPaths []string `yaml:"output_paths" env:"OUTPUT_PATHS"`
	// 是否启用调用者信息
	EnableCaller bool `yaml:"enable_caller" env:"ENABLE_CALLER"`
	// 是否启用堆栈跟踪
	EnableStacktrace bool `yaml:"enable_stacktrace" env:"ENABLE_STACKTRACE"`
}

LogConfig 日志配置

func DefaultLogConfig

func DefaultLogConfig() LogConfig

DefaultLogConfig 返回默认日志配置

type MemoryConfig

type MemoryConfig struct {
	// 是否启用
	Enabled bool `yaml:"enabled" env:"ENABLED"`
	// 类型: buffer, summary, vector
	Type string `yaml:"type" env:"TYPE"`
	// 最大消息数
	MaxMessages int `yaml:"max_messages" env:"MAX_MESSAGES"`
	// Token 限制
	TokenLimit int `yaml:"token_limit" env:"TOKEN_LIMIT"`
}

MemoryConfig 记忆配置

type MilvusConfig

type MilvusConfig struct {
	// 主机
	Host string `yaml:"host" env:"HOST"`
	// gRPC 端口
	Port int `yaml:"port" env:"PORT"`
	// 用户名(可选)
	Username string `yaml:"username" env:"USERNAME"`
	// 密码(可选)
	Password string `yaml:"password" env:"PASSWORD"`
	// Token(用于 Zilliz Cloud)
	Token string `yaml:"token" env:"TOKEN"`
	// 数据库名
	Database string `yaml:"database" env:"DATABASE"`
	// 默认集合名
	Collection string `yaml:"collection" env:"COLLECTION"`
	// 向量维度
	VectorDimension int `yaml:"vector_dimension" env:"VECTOR_DIMENSION"`
	// 索引类型: IVF_FLAT, HNSW, FLAT, IVF_SQ8, IVF_PQ
	IndexType string `yaml:"index_type" env:"INDEX_TYPE"`
	// 距离度量: L2, IP, COSINE
	MetricType string `yaml:"metric_type" env:"METRIC_TYPE"`
	// 是否自动创建集合
	AutoCreateCollection bool `yaml:"auto_create_collection" env:"AUTO_CREATE_COLLECTION"`
	// 请求超时
	Timeout time.Duration `yaml:"timeout" env:"TIMEOUT"`
	// 批量操作大小
	BatchSize int `yaml:"batch_size" env:"BATCH_SIZE"`
	// 一致性级别: Strong, Session, Bounded, Eventually
	ConsistencyLevel string `yaml:"consistency_level" env:"CONSISTENCY_LEVEL"`
}

MilvusConfig Milvus 向量存储配置

func DefaultMilvusConfig

func DefaultMilvusConfig() MilvusConfig

DefaultMilvusConfig 返回默认 Milvus 配置

type MongoDBConfig added in v1.1.0

type MongoDBConfig struct {
	// 连接 URI(优先级最高,设置后忽略 Host/Port/User/Password)
	URI string `yaml:"uri" env:"URI"`
	// 主机
	Host string `yaml:"host" env:"HOST"`
	// 端口
	Port int `yaml:"port" env:"PORT"`
	// 用户名
	User string `yaml:"user" env:"USER"`
	// 密码
	Password string `yaml:"password" env:"PASSWORD"`
	// 数据库名
	Database string `yaml:"database" env:"DATABASE"`
	// 认证数据库
	AuthSource string `yaml:"auth_source" env:"AUTH_SOURCE"`
	// 副本集名称(可选)
	ReplicaSet string `yaml:"replica_set" env:"REPLICA_SET"`
	// 最大连接池大小
	MaxPoolSize int `yaml:"max_pool_size" env:"MAX_POOL_SIZE"`
	// 最小连接池大小
	MinPoolSize int `yaml:"min_pool_size" env:"MIN_POOL_SIZE"`
	// 连接超时
	ConnectTimeout time.Duration `yaml:"connect_timeout" env:"CONNECT_TIMEOUT"`
	// 请求超时
	Timeout time.Duration `yaml:"timeout" env:"TIMEOUT"`
	// 健康检查间隔
	HealthCheckInterval time.Duration `yaml:"health_check_interval" env:"HEALTH_CHECK_INTERVAL"`
	// 是否启用 TLS
	TLSEnabled bool `yaml:"tls_enabled" env:"TLS_ENABLED"`
	// TLS CA 证书路径
	TLSCAFile string `yaml:"tls_ca_file" env:"TLS_CA_FILE"`
	// TLS 客户端证书路径
	TLSCertFile string `yaml:"tls_cert_file" env:"TLS_CERT_FILE"`
	// TLS 客户端密钥路径
	TLSKeyFile string `yaml:"tls_key_file" env:"TLS_KEY_FILE"`
}

MongoDBConfig MongoDB 文档型数据存储配置

func DefaultMongoDBConfig added in v1.1.0

func DefaultMongoDBConfig() MongoDBConfig

DefaultMongoDBConfig 返回默认 MongoDB 配置

type QdrantConfig

type QdrantConfig struct {
	// 主机
	Host string `yaml:"host" env:"HOST"`
	// gRPC 端口
	Port int `yaml:"port" env:"PORT"`
	// API Key(可选)
	APIKey string `yaml:"api_key" env:"API_KEY"`
	// 默认集合名
	Collection string `yaml:"collection" env:"COLLECTION"`
}

QdrantConfig Qdrant 向量存储配置

func DefaultQdrantConfig

func DefaultQdrantConfig() QdrantConfig

DefaultQdrantConfig 返回默认 Qdrant 配置

type RedisConfig

type RedisConfig struct {
	// 地址
	Addr string `yaml:"addr" env:"ADDR"`
	// 密码
	Password string `yaml:"password" env:"PASSWORD"`
	// 数据库编号
	DB int `yaml:"db" env:"DB"`
	// 连接池大小
	PoolSize int `yaml:"pool_size" env:"POOL_SIZE"`
	// 最小空闲连接
	MinIdleConns int `yaml:"min_idle_conns" env:"MIN_IDLE_CONNS"`
}

RedisConfig Redis 配置

func DefaultRedisConfig

func DefaultRedisConfig() RedisConfig

DefaultRedisConfig 返回默认 Redis 配置

type ReloadCallback

type ReloadCallback func(oldConfig, newConfig *Config)

ReloadCallback 重新加载配置后调用

type RollbackCallback

type RollbackCallback func(event RollbackEvent)

RollbackCallback 回滚事件回调

type RollbackEvent

type RollbackEvent struct {
	Timestamp      time.Time `json:"timestamp"`
	Reason         string    `json:"reason"`
	FailedConfig   *Config   `json:"failed_config"`
	RestoredConfig *Config   `json:"restored_config"`
	Version        int       `json:"version"`
	Error          error     `json:"error,omitempty"`
}

RollbackEvent 回滚事件

type SearXNGToolConfig added in v1.0.0

type SearXNGToolConfig struct {
	// SearXNG 实例地址(必填,如 https://searx.example.com
	BaseURL string `yaml:"base_url" env:"BASE_URL"`
	// 请求超时
	Timeout time.Duration `yaml:"timeout" env:"TIMEOUT"`
}

SearXNGToolConfig SearXNG 搜索工具配置(自托管,无需 API Key)

type ServerConfig

type ServerConfig struct {
	// HTTP 端口
	HTTPPort int `yaml:"http_port" env:"HTTP_PORT"`
	// gRPC 端口 — Reserved for future gRPC support, not currently used.
	GRPCPort int `yaml:"grpc_port" env:"GRPC_PORT"`
	// Metrics 端口
	MetricsPort int `yaml:"metrics_port" env:"METRICS_PORT"`
	// 读取超时
	ReadTimeout time.Duration `yaml:"read_timeout" env:"READ_TIMEOUT"`
	// 写入超时
	WriteTimeout time.Duration `yaml:"write_timeout" env:"WRITE_TIMEOUT"`
	// 优雅关闭超时
	ShutdownTimeout time.Duration `yaml:"shutdown_timeout" env:"SHUTDOWN_TIMEOUT"`
	// CORS 允许的源
	CORSAllowedOrigins []string `yaml:"cors_allowed_origins" json:"cors_allowed_origins,omitempty"`
	// API 密钥
	APIKeys []string `yaml:"api_keys" json:"api_keys,omitempty"`
	// 是否允许从 URL Query 读取 API Key(默认 false,出于安全考虑)
	AllowQueryAPIKey bool `yaml:"allow_query_api_key" env:"ALLOW_QUERY_API_KEY" json:"allow_query_api_key,omitempty"`
	// 限流 RPS,默认 100
	RateLimitRPS int `yaml:"rate_limit_rps" json:"rate_limit_rps,omitempty"`
	// 限流 Burst,默认 200
	RateLimitBurst int `yaml:"rate_limit_burst" json:"rate_limit_burst,omitempty"`
	// JWT 认证配置
	JWT JWTConfig `yaml:"jwt" json:"jwt,omitempty"`
	// 租户级限流 RPS,默认 50
	TenantRateLimitRPS int `yaml:"tenant_rate_limit_rps" json:"tenant_rate_limit_rps,omitempty"`
	// 租户级限流 Burst,默认 100
	TenantRateLimitBurst int `yaml:"tenant_rate_limit_burst" json:"tenant_rate_limit_burst,omitempty"`
	// AllowNoAuth 允许在无认证配置时启动(默认 false)。
	// 生产环境必须显式设置为 true 才能在无 JWT/API Key 配置时启动。
	AllowNoAuth bool `yaml:"allow_no_auth" env:"ALLOW_NO_AUTH" json:"allow_no_auth,omitempty"`
}

ServerConfig 服务器配置

func DefaultServerConfig

func DefaultServerConfig() ServerConfig

DefaultServerConfig 返回默认服务器配置

type TavilyToolConfig added in v1.0.0

type TavilyToolConfig struct {
	// API Key(建议使用环境变量 AGENTFLOW_TOOLS_TAVILY_API_KEY)
	APIKey string `yaml:"api_key" env:"API_KEY" json:"-"`
	// 基础 URL(可选,默认 https://api.tavily.com
	BaseURL string `yaml:"base_url" env:"BASE_URL"`
	// 请求超时
	Timeout time.Duration `yaml:"timeout" env:"TIMEOUT"`
}

TavilyToolConfig Tavily 搜索工具配置

type TelemetryConfig

type TelemetryConfig struct {
	// 是否启用
	Enabled bool `yaml:"enabled" env:"ENABLED"`
	// OTLP 端点
	OTLPEndpoint string `yaml:"otlp_endpoint" env:"OTLP_ENDPOINT"`
	// 是否使用非加密连接(仅用于开发/测试环境)
	OTLPInsecure bool `yaml:"otlp_insecure" env:"OTLP_INSECURE"`
	// 服务名称
	ServiceName string `yaml:"service_name" env:"SERVICE_NAME"`
	// 采样率
	SampleRate float64 `yaml:"sample_rate" env:"SAMPLE_RATE"`
}

TelemetryConfig 遥测配置

func DefaultTelemetryConfig

func DefaultTelemetryConfig() TelemetryConfig

DefaultTelemetryConfig 返回默认遥测配置

type ToolsConfig added in v1.0.0

type ToolsConfig struct {
	// Tavily 搜索配置(需要 API Key)
	Tavily TavilyToolConfig `yaml:"tavily" env:"TAVILY"`
	// Jina Reader 抓取配置(可选 API Key,免费可用)
	Jina JinaToolConfig `yaml:"jina" env:"JINA"`
	// Firecrawl 搜索+抓取配置(需要 API Key)
	Firecrawl FirecrawlToolConfig `yaml:"firecrawl" env:"FIRECRAWL"`
	// DuckDuckGo 搜索配置(完全免费,无需 API Key)
	DuckDuckGo DuckDuckGoToolConfig `yaml:"duckduckgo" env:"DUCKDUCKGO"`
	// SearXNG 搜索配置(自托管,无需 API Key)
	SearXNG SearXNGToolConfig `yaml:"searxng" env:"SEARXNG"`
	// HTTP 抓取配置(纯 HTTP,无需 API Key)
	HTTPScrape HTTPScrapeToolConfig `yaml:"http_scrape" env:"HTTP_SCRAPE"`
}

ToolsConfig 工具提供者配置

func DefaultToolsConfig added in v1.0.0

func DefaultToolsConfig() ToolsConfig

DefaultToolsConfig 返回默认工具提供者配置

type ValidateFunc

type ValidateFunc func(newConfig *Config) error

ValidateFunc 配置验证钩子函数 接收新配置,返回 error 表示验证失败

type WatcherOption

type WatcherOption func(*FileWatcher)

WatcherOption 配置文件观察器

func WithDebounceDelay

func WithDebounceDelay(d time.Duration) WatcherOption

WithDebounceDelay 设置文件事件的去抖延迟

func WithWatcherLogger

func WithWatcherLogger(logger *zap.Logger) WatcherOption

WithWatcherLogger 设置观察者的记录器

type WeaviateConfig

type WeaviateConfig struct {
	// 主机
	Host string `yaml:"host" env:"HOST"`
	// HTTP 端口
	Port int `yaml:"port" env:"PORT"`
	// 协议: http 或 https
	Scheme string `yaml:"scheme" env:"SCHEME"`
	// API Key(可选)
	APIKey string `yaml:"api_key" env:"API_KEY"`
	// 默认类名(集合名)
	ClassName string `yaml:"class_name" env:"CLASS_NAME"`
	// 是否自动创建 Schema
	AutoCreateSchema bool `yaml:"auto_create_schema" env:"AUTO_CREATE_SCHEMA"`
	// 距离度量: cosine, dot, l2
	Distance string `yaml:"distance" env:"DISTANCE"`
	// 混合搜索 Alpha 值 (0=BM25, 1=向量)
	HybridAlpha float64 `yaml:"hybrid_alpha" env:"HYBRID_ALPHA"`
	// 请求超时
	Timeout time.Duration `yaml:"timeout" env:"TIMEOUT"`
}

WeaviateConfig Weaviate 向量存储配置

func DefaultWeaviateConfig

func DefaultWeaviateConfig() WeaviateConfig

DefaultWeaviateConfig 返回默认 Weaviate 配置

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL