UNPKG

aiwg

Version:

Cognitive architecture for AI-augmented software development with structured memory, ensemble validation, and closed-loop correction. FAIR-aligned artifacts, 84% cost reduction via human-in-the-loop, standards adopted by 100+ organizations.

381 lines (305 loc) 9 kB
# Auto-Reply Chain Rules **Enforcement Level**: MEDIUM **Scope**: Multi-agent conversations and autonomous dialogue **Research Basis**: REF-022 AutoGen **Issue**: #183 ## Overview These rules standardize decentralized auto-reply patterns where agents autonomously continue conversations until termination conditions are met, removing need for central orchestration. ## Research Foundation From REF-022 AutoGen (Wu et al., 2023): - Auto-reply chains reduce orchestration overhead by enabling autonomous agent conversations - Flexible conversation patterns emerge without rigid control flow - Agents self-terminate based on context, not external signals - Enables natural dialogue progression while maintaining safety limits ## Core Mechanism ### Conversation Initiation Any ConversableAgent can initiate a conversation: ```yaml conversation_flow: initiation: initiator: any_conversable_agent recipient: target_agent initial_message: string options: clear_history: false max_turns: 10 request_reply: true ``` ### Auto-Reply Loop ```yaml auto_reply_loop: while: turn_count < max_consecutive_auto_reply steps: - recipient_receives_message - recipient_generates_reply - check_termination_conditions: - reply_is_null: TERMINATE - is_termination_message: TERMINATE - max_turns_reached: TERMINATE - safety_limit_exceeded: TERMINATE - if_not_terminated: - swap_sender_recipient - increment_turn_count - continue_loop ``` ## Mandatory Rules ### Rule 1: Define Termination Conditions **REQUIRED**: Every auto-reply conversation MUST have explicit termination conditions. ```yaml termination_config: required: true conditions: # At least one of: - termination_keywords: [string] # Keywords that signal completion - termination_function: callable # Custom termination check - max_turns: integer # Hard turn limit defaults: max_turns: 10 timeout_seconds: 300 ``` **FORBIDDEN**: Conversations without termination conditions - infinite loops must be prevented. ### Rule 2: Respect Max Turn Limits **REQUIRED**: All auto-reply chains MUST enforce turn limits as safety mechanisms. ```yaml turn_limits: default_max_consecutive: 10 absolute_max: 20 override_requirements: - explicit_configuration - documented_justification - human_approval_for_high_limits ``` ### Rule 3: Human Input Modes **REQUIRED**: Support configurable human input modes for different conversation types. ```yaml human_input_modes: NEVER: description: "Fully autonomous - no human interaction" use_case: "Background processing, low-criticality tasks" TERMINATE: description: "Human approval required before termination" use_case: "Important decisions, artifact finalization" ALWAYS: description: "Human approval for every turn" use_case: "Critical paths, learning mode" default: TERMINATE ``` ### Rule 4: Preserve Conversation History **REQUIRED**: Full conversation trace MUST be maintained for debugging and audit. ```yaml conversation_trace: required_fields: - conversation_id: uuid - participants: [agent_names] - turns: - turn_number: integer - sender: string - recipient: string - message: Message - timestamp: datetime - response_time_ms: number - termination_reason: string - total_turns: integer - total_tokens: integer storage: path: ".aiwg/conversations/" format: jsonl retention_days: 30 ``` ### Rule 5: Graceful Degradation **REQUIRED**: Handle edge cases without crashing the conversation. ```yaml error_handling: on_null_reply: action: terminate_gracefully record_reason: "Recipient returned null reply" on_timeout: action: terminate_with_warning record_reason: "Response timeout exceeded" on_exception: action: terminate_and_log_error record_reason: "Exception during reply generation" preserve_history: true ``` ## Termination Keywords ### Standard Keywords by Role ```yaml termination_keywords: requirements_analyst: completion: - "REQUIREMENTS_COMPLETE" - "REQUIREMENTS_APPROVED" clarification_done: - "NO_MORE_QUESTIONS" - "CLARIFICATION_COMPLETE" architect: completion: - "DESIGN_COMPLETE" - "ARCHITECTURE_APPROVED" review_done: - "REVIEW_COMPLETE" - "CHANGES_ACCEPTED" test_engineer: completion: - "TESTS_COMPLETE" - "COVERAGE_SUFFICIENT" review_done: - "TEST_REVIEW_COMPLETE" security_auditor: completion: - "SECURITY_REVIEW_COMPLETE" - "THREAT_MODEL_APPROVED" issue_found: - "SECURITY_ISSUE_FOUND" - "REQUIRES_REMEDIATION" ``` ## Conversation Patterns ### Pattern 1: Linear Chain ```yaml linear_chain: description: "A → B → C sequential conversations" flow: - conversation_1: participants: [pm, requirements_analyst] termination: REQUIREMENTS_COMPLETE output: requirements - conversation_2: participants: [requirements_analyst, architect] input: requirements termination: DESIGN_COMPLETE output: design - conversation_3: participants: [architect, implementer] input: design termination: IMPLEMENTATION_COMPLETE ``` ### Pattern 2: Review Loop ```yaml review_loop: description: "Back-and-forth until approval" participants: [proposer, reviewer] flow: - proposer_submits - reviewer_reviews - if_changes_requested: - proposer_revises - continue_loop - if_approved: - terminate max_iterations: 5 ``` ### Pattern 3: Multi-Party Discussion ```yaml multi_party: description: "Round-robin among multiple agents" participants: [architect, security_auditor, test_engineer] flow: - architect_proposes - each_reviewer_comments - architect_addresses - continue_until_consensus consensus_required: true ``` ## Safety Configuration ### Required Safety Limits ```yaml safety_config: required: max_turns: integer # Maximum conversation turns timeout_seconds: number # Wall-clock timeout optional: token_budget: integer # Max tokens per conversation require_progress: boolean # Detect stuck conversations progress_check_interval: 3 # Turns between progress checks ``` ### Progress Detection ```yaml progress_detection: enabled: true check_interval_turns: 3 indicators: positive: - new_artifact_generated - validation_passed - decision_made negative: - repeated_message_pattern - same_questions_asked - no_new_information stuck_threshold: 2 # Consecutive negative checks action_on_stuck: inject_clarification_request ``` ## Integration with SDLC ### Phase-Appropriate Chains | Phase | Chain Type | Max Turns | Human Mode | |-------|------------|-----------|------------| | Requirements | Review Loop | 10 | TERMINATE | | Architecture | Multi-Party | 15 | TERMINATE | | Implementation | Linear | 5 | NEVER | | Testing | Review Loop | 10 | NEVER | | Security | Review Loop | 10 | TERMINATE | ### Example: Requirements Elicitation ```yaml requirements_elicitation: initiator: product_manager recipient: requirements_analyst initial_message: "We need user authentication" expected_flow: - analyst_asks_clarifying_questions - pm_answers - analyst_asks_more_or_summarizes - pm_confirms_or_corrects - continue_until: REQUIREMENTS_COMPLETE termination: keywords: ["REQUIREMENTS_COMPLETE", "REQUIREMENTS_APPROVED"] max_turns: 10 human_mode: TERMINATE ``` ## Debugging Support ### Conversation Replay ```yaml replay_support: enable_snapshots: true snapshot_interval: 1 # Every turn replay_commands: view_conversation: "aiwg conversation view <id>" replay_from_turn: "aiwg conversation replay <id> --from-turn <n>" inspect_turn: "aiwg conversation inspect <id> <turn>" ``` ### Logging Configuration ```yaml logging: level: info include: - conversation_start - each_turn_summary - termination_reason verbose_include: - full_message_content - response_timing - token_counts ``` ## Validation Checklist Before enabling auto-reply chains: - [ ] Termination conditions defined - [ ] Max turn limit configured - [ ] Human input mode set appropriately - [ ] Safety limits configured - [ ] Conversation tracing enabled - [ ] Progress detection configured - [ ] Error handling defined - [ ] Role-specific termination keywords set ## References - @.aiwg/research/findings/REF-022-autogen.md - Research foundation - @.claude/rules/conversable-agent-interface.md - Agent interface - @agentic/code/frameworks/sdlc-complete/schemas/flows/agent-pubsub.yaml - Event-driven activation - #183 - Implementation issue --- **Rule Status**: ACTIVE **Last Updated**: 2026-01-25