UNPKG

claude-flow-novice

Version:

Claude Flow Novice - Advanced orchestration platform for multi-agent AI workflows with CFN Loop architecture Includes CodeSearch (hybrid SQLite + pgvector), mem0/memgraph specialists, and all CFN skills.

533 lines (413 loc) 13.9 kB
--- name: agent-lifecycle-documentation description: Documentation for agent lifecycle management and waiting mode protocols model: claude-sonnet-4 tools: [Read] type: documentation --- **Skills**: CodeSearch (semantic search) | Post-edit hook (file validation) # Agent Lifecycle Documentation **Version:** 2.0 (Post-Waiting Mode Removal) **Last Updated:** 2025-10-21 **Status:** Current Standard --- ## Overview This document clarifies the complete lifecycle of agents in the CFN Loop system, removing ambiguity about exit vs. waiting patterns. **Core Principle:** Agents are **stateless, single-execution workers** that exit cleanly after completing their work and reporting results. --- ## Lifecycle States ### State 1: Spawned **Duration:** Instantaneous **Who:** Orchestrator via CLI (`npx cfn-spawn agent <type>`) **Agent State:** Process starting, loading context **Actions:** - Agent process created - Context injected via CLI parameters - Tools initialized - Task description received ### State 2: Executing **Duration:** Variable (15 seconds - 60 minutes depending on agent type) **Who:** Agent (autonomous) **Agent State:** Working on assigned task **Actions:** - Read task specifications - Execute work (code, review, validation, decision) - Use tools (Read, Write, Edit, Bash, etc.) - Build results ### State 3: Reporting **Duration:** 1-5 seconds **Who:** Agent (mandatory protocol) **Agent State:** Completing execution **Actions (in order):** 1. **Signal completion:** ```bash redis-cli lpush "swarm:${TASK_ID}:${AGENT_ID}:done" "complete" ``` 2. **Report confidence:** ```bash ./.claude/skills/redis-coordination/invoke-waiting-mode.sh report \ **After reporting, exit cleanly. Do NOT enter waiting mode.** **Why This Matters:** - Orchestrator collects confidence/consensus scores from Redis - Enables adaptive agent specialization for next iteration - Prevents orchestrator blocking on wait $PID - Coordinator spawns appropriate specialist based on feedback type --task-id "$TASK_ID" \ --agent-id "$AGENT_ID" \ --confidence [0.0-1.0] \ --iteration $ITERATION ``` 3. **Store results (if applicable):** ```bash redis-cli setex "swarm:${TASK_ID}:${AGENT_ID}:result" 86400 "$RESULT_JSON" ``` ### State 4: Exiting **Duration:** Instantaneous **Who:** Agent (natural process termination) **Agent State:** Process terminating **Actions:** - Clean exit (exit code 0) - Process terminates - Resources released - ~~NO waiting mode~~ (removed) - ~~NO wake signal needed~~ (removed) --- ## CFN Loop Protocol (Complete) ### For Loop 3 Implementers (coder, backend-developer, etc.) ```markdown ## CFN Loop Redis Completion Protocol When participating in CFN Loop workflows, agents MUST follow this protocol: ### Step 1: Complete Work Execute assigned task (code implementation, feature development, bug fixing) ### Step 2: Signal Completion ```bash redis-cli lpush "swarm:${TASK_ID}:${AGENT_ID}:done" "complete" ``` ### Step 3: Report Confidence Score ```bash ./.claude/skills/redis-coordination/invoke-waiting-mode.sh report \ **After reporting, exit cleanly. Do NOT enter waiting mode.** **Why This Matters:** - Orchestrator collects confidence/consensus scores from Redis - Enables adaptive agent specialization for next iteration - Prevents orchestrator blocking on wait $PID - Coordinator spawns appropriate specialist based on feedback type --task-id "$TASK_ID" \ --agent-id "$AGENT_ID" \ --confidence [0.0-1.0] \ --iteration 1 ``` Confidence score guidelines: - 1.0: Perfect implementation, all requirements met, no issues - 0.9-0.99: Excellent, minor refinements possible - 0.75-0.89: Good, gate threshold met, ready for validation - 0.5-0.74: Below gate, needs iteration - 0.0-0.49: Significant issues, requires major rework ### Step 4: Exit Cleanly Agent work is complete. Exit cleanly to allow orchestrator to proceed. **Note:** If another iteration is needed, orchestrator will spawn a fresh agent (possibly a different specialist based on feedback). This enables adaptive agent specialization per PATTERN-022. ``` ### For Loop 2 Validators (reviewer, tester, security-specialist, etc.) ```markdown ## CFN Loop Redis Completion Protocol ### Step 1: Wait for Gate Pass Signal ```bash # Wait for Loop 3 to pass gate threshold redis-cli blpop "swarm:${TASK_ID}:gate-passed" 0 ``` ### Step 2: Retrieve Loop 3 Results ```bash # Get agent outputs and confidence scores from Redis redis-cli get "swarm:${TASK_ID}:coder-1:result" redis-cli get "swarm:${TASK_ID}:coder-1:confidence" ``` ### Step 3: Perform Validation Execute validation task (code review, security audit, testing) ### Step 4: Signal Completion ```bash redis-cli lpush "swarm:${TASK_ID}:${AGENT_ID}:done" "complete" ``` ### Step 5: Report Consensus Score ```bash ./.claude/skills/redis-coordination/invoke-waiting-mode.sh report \ **After reporting, exit cleanly. Do NOT enter waiting mode.** **Why This Matters:** - Orchestrator collects confidence/consensus scores from Redis - Enables adaptive agent specialization for next iteration - Prevents orchestrator blocking on wait $PID - Coordinator spawns appropriate specialist based on feedback type --task-id "$TASK_ID" \ --agent-id "$AGENT_ID" \ --confidence [0.0-1.0] \ --iteration 1 ``` Consensus score guidelines: - 1.0: Perfect quality, no issues found - 0.9-0.99: Excellent, consensus threshold typically met - 0.75-0.89: Good, minor issues found - 0.5-0.74: Below consensus, needs iteration - 0.0-0.49: Significant issues, requires rework ### Step 6: Exit Cleanly Validation complete. Exit cleanly to allow orchestrator to calculate consensus. ``` ### For Product Owner ```markdown ## CFN Loop Product Owner Protocol ### Step 1: Wait for Consensus Completion ```bash # Wait for Loop 2 to complete consensus validation redis-cli blpop "swarm:${TASK_ID}:consensus-complete" 0 ``` ### Step 2: Retrieve All Context ```bash # Get Loop 2 consensus, feedback, acceptance criteria redis-cli get "swarm:${TASK_ID}:loop2:consensus" redis-cli lrange "swarm:${TASK_ID}:loop2:feedback" 0 -1 redis-cli get "swarm:${TASK_ID}:success-criteria" ``` ### Step 3: Make Strategic Decision Analyze consensus, feedback, and business requirements. Output one of: - **PROCEED:** Task complete, meets acceptance criteria - **ITERATE:** Needs another iteration (provide specific feedback) - **ABORT:** Out of scope or max iterations reached ### Step 4: Report Decision ```bash redis-cli lpush "swarm:${TASK_ID}:product-owner:decision" "$DECISION_JSON" ``` ### Step 5: Exit Cleanly Decision made. Exit to allow orchestrator to proceed with final actions. ``` --- ## Orchestrator Responsibilities ### Agent Spawning ```bash # Spawn agent via CLI npx cfn-spawn agent <agent-type> \ --task-id "$TASK_ID" \ --iteration "$ITERATION" \ --context "$CONTEXT_JSON" & AGENT_PID=$! ``` ### Agent Monitoring ```bash # Wait for agent to complete and exit naturally wait $AGENT_PID EXIT_CODE=$? # Check completion signal DONE_SIGNAL=$(redis-cli lpop "swarm:${TASK_ID}:${AGENT_ID}:done") # Retrieve confidence CONFIDENCE=$(redis-cli get "swarm:${TASK_ID}:${AGENT_ID}:confidence") ``` ### No Wake Calls Needed **Removed:** `invoke-waiting-mode.sh wake` calls **Current:** Agents exit, orchestrator spawns fresh agents for next iteration --- ## Iteration Pattern ### Single Iteration (Typical) ``` 1. Orchestrator spawns Loop 3 agents 2. Loop 3 agents work report confidence EXIT 3. Orchestrator checks gate threshold 4. If PASS: Orchestrator spawns Loop 2 agents 5. Loop 2 agents validate report consensus EXIT 6. Orchestrator checks consensus threshold 7. If PASS: Orchestrator spawns Product Owner 8. Product Owner decides EXIT 9. Task complete ``` ### Multi-Iteration (If Gate/Consensus Fails) ``` 1. Orchestrator spawns Loop 3 agents (iteration 1) 2. Loop 3 agents work report confidence EXIT 3. Gate check FAILS (confidence < 0.75) 4. Orchestrator spawns NEW Loop 3 agents (iteration 2) Fresh agents! 5. New agents work report confidence EXIT 6. Gate check PASSES 7. Continue to Loop 2... ``` **Key Point:** Each iteration spawns **fresh agents**, enabling adaptive specialization: - Iteration 1: coder - Iteration 2: rust-developer (if feedback mentions Rust) - Iteration 3: backend-developer (if feedback mentions API) --- ## Anti-Patterns (Forbidden) ### ❌ Anti-Pattern 1: Waiting Mode ```bash # WRONG - DO NOT USE: --task-id "$TASK_ID" \ --agent-id "$AGENT_ID" ``` **Why forbidden:** - Blocks orchestrator indefinitely - Creates process zombies - Prevents adaptive specialization - Requires manual wake calls (complexity) ### ❌ Anti-Pattern 2: Fork/Resume Pattern ```bash # WRONG - DO NOT USE: redis-cli get "swarm:${TASK_ID}:${AGENT}:fork-id" npx cfn-fork resume --fork-id "$FORK_ID" ``` **Why forbidden:** - Adds complexity (conversation state management) - Not needed (fresh agents work better) - Harder to debug (stateful resume) ### ❌ Anti-Pattern 3: Manual Agent Spawning ```bash # WRONG - DO NOT USE in CFN Loop: Task("coder", "implement feature") ``` **Why forbidden:** - Bypasses CFN Loop protocol - No confidence reporting - No Redis coordination - Breaks orchestrator flow --- ## Correct Patterns (Recommended) ### ✅ Pattern 1: Clean Exit After Reporting ```bash # Agent code (end of execution): # Step 1: Signal done redis-cli lpush "swarm:${TASK_ID}:${AGENT_ID}:done" "complete" # Step 2: Report confidence ./.claude/skills/redis-coordination/invoke-waiting-mode.sh report \ **After reporting, exit cleanly. Do NOT enter waiting mode.** **Why This Matters:** - Orchestrator collects confidence/consensus scores from Redis - Enables adaptive agent specialization for next iteration - Prevents orchestrator blocking on wait $PID - Coordinator spawns appropriate specialist based on feedback type --task-id "$TASK_ID" \ --agent-id "$AGENT_ID" \ --confidence 0.95 \ --iteration 1 # Step 3: Exit cleanly exit 0 ``` ### ✅ Pattern 2: Orchestrator Wait Pattern ```bash # Orchestrator code: # Spawn agent in background npx cfn-spawn agent coder \ --task-id "$TASK_ID" \ --context "$CONTEXT" & AGENT_PID=$! # Wait for agent to complete wait $AGENT_PID EXIT_CODE=$? # Retrieve results from Redis (agent already exited) CONFIDENCE=$(redis-cli get "swarm:${TASK_ID}:coder-1:confidence") ``` ### ✅ Pattern 3: Adaptive Specialization ```bash # Orchestrator iteration logic: if [ "$GATE_PASSED" = "false" ]; then # Analyze feedback to select specialist if [[ "$FEEDBACK" =~ "security" ]]; then SPECIALIST="security-specialist" elif [[ "$FEEDBACK" =~ "performance" ]]; then SPECIALIST="perf-analyzer" else SPECIALIST="$ORIGINAL_AGENT" # Retry with same type fi # Spawn fresh specialist (not resume old agent) npx cfn-spawn agent "$SPECIALIST" \ --task-id "$TASK_ID" \ --iteration $((ITERATION + 1)) \ --feedback "$FEEDBACK" & fi ``` --- ## Timeout Handling ### Agent-Level Timeouts Agents have role-based timeouts: - **Implementers:** 60 minutes (coder, backend-developer) - **Validators:** 30 minutes (reviewer, tester) - **Product Owner:** 15 minutes (strategic decision) - **Researchers:** 120 minutes (deep analysis) ### Timeout Behavior ```bash # If agent times out: # 1. Process killed by orchestrator # 2. Agent marked as failed # 3. No confidence reported (defaults to 0.0) # 4. Orchestrator spawns replacement agent ``` --- ## Error Handling ### Agent Failure Scenarios **1. Exit Code Non-Zero:** ```bash wait $AGENT_PID EXIT_CODE=$? if [ "$EXIT_CODE" -ne 0 ]; then # Agent failed - log error, spawn replacement CONFIDENCE=0.0 fi ``` **2. No Completion Signal:** ```bash DONE_SIGNAL=$(redis-cli lpop "swarm:${TASK_ID}:${AGENT_ID}:done") if [ -z "$DONE_SIGNAL" ]; then # Agent didn't signal completion - treat as failure CONFIDENCE=0.0 fi ``` **3. Missing Confidence:** ```bash CONFIDENCE=$(redis-cli get "swarm:${TASK_ID}:${AGENT_ID}:confidence") if [ -z "$CONFIDENCE" ] || [ "$CONFIDENCE" = "(nil)" ]; then # No confidence reported - default to 0.0 CONFIDENCE=0.0 fi ``` --- ## Redis Key Conventions ### Agent Completion Keys ``` swarm:{TASK_ID}:{AGENT_ID}:done "complete" (signal) swarm:{TASK_ID}:{AGENT_ID}:confidence "0.95" (score) swarm:{TASK_ID}:{AGENT_ID}:result JSON (output) ``` ### Coordination Keys ``` swarm:{TASK_ID}:gate-passed "1" (Loop 3 Loop 2 signal) swarm:{TASK_ID}:consensus-complete "1" (Loop 2 PO signal) swarm:{TASK_ID}:product-owner:decision JSON (PO decision) ``` ### Metrics Keys ``` swarm:{TASK_ID}:metrics:loop3_consensus List of JSON metrics swarm:{TASK_ID}:metrics:loop2_consensus List of JSON metrics swarm:{TASK_ID}:metrics:iteration_start List of timestamps ``` --- ## Summary **Agent Lifecycle (4 States):** 1. **Spawned** - Process starts, context loaded 2. **Executing** - Agent works autonomously 3. **Reporting** - Signal completion, report confidence 4. **Exiting** - Clean exit (exit code 0) **Key Changes from v1.0:** - Removed: Waiting mode (Step 4) - Removed: Wake calls from orchestrator - Removed: Fork/resume pattern - Added: Clean exit after reporting - Added: Adaptive agent specialization - Added: Fresh agents per iteration **Benefits:** - Simpler orchestrator (no wake logic) - Stateless agents (easier debugging) - Adaptive specialization (better results) - No process zombies (clean resource management) **Next Steps:** - See P4: Product Owner structured JSON output - See P5: Coordinator simplification (780 200 lines) - See P6: Unified agent spawning patterns --- **Version History:** - v1.0: Original with waiting mode - v2.0 (2025-10-21): Waiting mode removed, PATTERN-022 compliant