feat(config): add MCPConfig (enabled / public_url / system_token_ttl / rate_limit)

This commit is contained in:
2026-05-08 07:14:24 +08:00
parent 29b4c50888
commit 30a85d1b2d
+20
View File
@@ -42,6 +42,7 @@ type Config struct {
Jobs JobsConfig `mapstructure:"jobs"`
Notify NotifyConfig `mapstructure:"notify"`
Acp AcpConfig `mapstructure:"acp"`
MCP MCPConfig `mapstructure:"mcp"`
}
// HTTPConfig 描述 HTTP 服务监听参数。
@@ -191,6 +192,20 @@ type AcpConfig struct {
ShutdownGrace time.Duration `mapstructure:"shutdown_grace"`
}
// MCPConfig 控制 MCP 模块的开关、对外 URL(注入 ACP 子进程 env)、system token TTL 与速率限制。
type MCPConfig struct {
Enabled bool `mapstructure:"enabled"`
PublicURL string `mapstructure:"public_url"`
SystemTokenTTL time.Duration `mapstructure:"system_token_ttl"`
RateLimit MCPRateLimitCfg `mapstructure:"rate_limit"`
}
// MCPRateLimitCfg 控制 token bucket 容量。两层独立桶:per-token + 全局。
type MCPRateLimitCfg struct {
PerTokenPerMinute int `mapstructure:"per_token_per_minute"`
GlobalPerMinute int `mapstructure:"global_per_minute"`
}
// Load 从(按优先级递增)默认值 → 配置文件(如有)→ 环境变量 加载配置。
// configFile 可为空字符串,仅用环境变量。
func Load(configFile string) (*Config, error) {
@@ -253,6 +268,11 @@ func Load(configFile string) (*Config, error) {
v.SetDefault("acp.event_truncate_field_bytes", 4096)
v.SetDefault("acp.event_retention_days", 7)
v.SetDefault("acp.shutdown_grace", "30s")
v.SetDefault("mcp.enabled", true)
v.SetDefault("mcp.public_url", "http://localhost:8080/mcp")
v.SetDefault("mcp.system_token_ttl", "24h")
v.SetDefault("mcp.rate_limit.per_token_per_minute", 100)
v.SetDefault("mcp.rate_limit.global_per_minute", 1000)
if configFile != "" {
v.SetConfigFile(configFile)