You've already forked agentic-coding-workflow
feat(config): add MCPConfig (enabled / public_url / system_token_ttl / rate_limit)
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user