mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-09-11 14:38:38 +00:00
* feat(subagents): add capacity controls and durable batches * fix(helm): sync subagent config schema version * fix(subagents): preserve batch history without worker * fix(subagents): support explicit factory runtimes * fix: address durable batch review findings
32 lines
1.7 KiB
Python
32 lines
1.7 KiB
Python
"""Startup-only configuration for durable native-subagent batches."""
|
|
|
|
from pydantic import BaseModel, Field, model_validator
|
|
|
|
|
|
class SubagentBatchesConfig(BaseModel):
|
|
"""Durable batch scheduler limits and recovery settings."""
|
|
|
|
enabled: bool = Field(default=False)
|
|
poll_interval_seconds: float = Field(default=1.0, ge=0.1, le=60.0)
|
|
lease_seconds: int = Field(default=120, ge=10, le=3600)
|
|
max_items_per_batch: int = Field(default=5_000, ge=1, le=100_000)
|
|
default_max_live_items: int = Field(default=100, ge=1, le=10_000)
|
|
max_live_items_per_batch: int = Field(default=1_000, ge=1, le=100_000)
|
|
default_max_running_items: int = Field(default=3, ge=1, le=64)
|
|
max_running_items_per_batch: int = Field(default=64, ge=1, le=1_000)
|
|
max_attempts: int = Field(default=3, ge=1, le=10)
|
|
max_result_chars: int = Field(default=100_000, ge=1_000, le=1_000_000)
|
|
result_preview_max_chars: int = Field(default=2_000, ge=64, le=100_000)
|
|
|
|
@model_validator(mode="after")
|
|
def validate_default_limits(self) -> "SubagentBatchesConfig":
|
|
if self.default_max_live_items > self.max_live_items_per_batch:
|
|
raise ValueError("default_max_live_items must not exceed max_live_items_per_batch")
|
|
if self.default_max_running_items > self.max_running_items_per_batch:
|
|
raise ValueError("default_max_running_items must not exceed max_running_items_per_batch")
|
|
if self.default_max_running_items > self.default_max_live_items:
|
|
raise ValueError("default_max_running_items must not exceed default_max_live_items")
|
|
if self.result_preview_max_chars > self.max_result_chars:
|
|
raise ValueError("result_preview_max_chars must not exceed max_result_chars")
|
|
return self
|