mirror of
https://github.com/leonvanzyl/autocoder.git
synced 2026-03-19 03:43:08 +00:00
feat: add multi-feature batching for coding agents
Enable the orchestrator to assign 1-3 features per coding agent subprocess, selected via dependency chain extension + same-category fill. This reduces cold-start overhead and leverages shared context across related features. Orchestrator (parallel_orchestrator.py): - Add batch tracking: _batch_features and _feature_to_primary data structures - Add build_feature_batches() with dependency chain + category fill algorithm - Add start_feature_batch() and _spawn_coding_agent_batch() methods - Update _on_agent_complete() for batch cleanup across all features - Update stop_feature() with _feature_to_primary lookup - Update get_ready_features() to exclude all batch feature IDs - Update main loop to build batches then spawn per available slot CLI and agent layer: - Add --feature-ids (comma-separated) and --batch-size CLI args - Add feature_ids parameter to run_autonomous_agent() with batch prompt selection - Add get_batch_feature_prompt() with sequential workflow instructions WebSocket layer (server/websocket.py): - Add BATCH_CODING_AGENT_START_PATTERN and BATCH_FEATURES_COMPLETE_PATTERN - Add _handle_batch_agent_start() and _handle_batch_agent_complete() methods - Add featureIds field to all agent_update messages - Track current_feature_id updates as agent moves through batch Frontend (React UI): - Add featureIds to ActiveAgent and WSAgentUpdateMessage types - Update KanbanColumn and DependencyGraph agent-feature maps for batch - Update AgentCard to show "Batch: #X, #Y, #Z" with active feature highlight - Add "Features per Agent" segmented control (1-3) in SettingsModal Settings integration (full stack): - Add batch_size to schemas, settings router, agent router, process manager - Default batch_size=3, user-configurable 1-3 via settings UI - batch_size=1 is functionally identical to pre-batching behavior Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -199,7 +199,8 @@ export interface ActiveAgent {
|
||||
agentIndex: number // -1 for synthetic completions
|
||||
agentName: AgentMascot | 'Unknown'
|
||||
agentType: AgentType // "coding" or "testing"
|
||||
featureId: number
|
||||
featureId: number // Current/primary feature (backward compat)
|
||||
featureIds: number[] // All features in batch
|
||||
featureName: string
|
||||
state: AgentState
|
||||
thought?: string
|
||||
@@ -270,6 +271,7 @@ export interface WSAgentUpdateMessage {
|
||||
agentName: AgentMascot | 'Unknown'
|
||||
agentType: AgentType // "coding" or "testing"
|
||||
featureId: number
|
||||
featureIds?: number[] // All features in batch (may be absent for backward compat)
|
||||
featureName: string
|
||||
state: AgentState
|
||||
thought?: string
|
||||
@@ -530,6 +532,7 @@ export interface Settings {
|
||||
ollama_mode: boolean
|
||||
testing_agent_ratio: number // Regression testing agents (0-3)
|
||||
playwright_headless: boolean
|
||||
batch_size: number // Features per coding agent batch (1-3)
|
||||
}
|
||||
|
||||
export interface SettingsUpdate {
|
||||
@@ -537,6 +540,7 @@ export interface SettingsUpdate {
|
||||
model?: string
|
||||
testing_agent_ratio?: number
|
||||
playwright_headless?: boolean
|
||||
batch_size?: number
|
||||
}
|
||||
|
||||
export interface ProjectSettingsUpdate {
|
||||
|
||||
Reference in New Issue
Block a user