Files
ALwrity/docs/SIF/TODAYS_TASKS_WORKFLOW.md

143 lines
6.6 KiB
Markdown

# Multi-Agent Today's Tasks System - Implementation Plan
**Date**: 2025-03-01
**Status**: Architecture Plan
**Target System**: Today's Tasks Workflow (Multi-Agent Committee)
---
## 📋 Executive Summary
This document outlines the implementation plan for transforming the "Today's Tasks" system from a single-prompt generator into a **Multi-Agent "Committee" Architecture**.
Instead of a generic LLM generating tasks, we will leverage our existing specialized agents (`StrategyArchitect`, `ContentStrategist`, `SEOOptimization`, etc.) to **propose high-value, context-aware tasks** based on their specific domain knowledge. A central "Manager" (Orchestrator) will then consolidate, prioritize, and deduplicate these proposals into a cohesive daily plan.
We will also introduce a **Self-Learning Task Memory** using `txtai` to ensure the system learns from user behavior (acceptances/rejections) and avoids redundant suggestions.
---
## 🏗️ Architecture: The "Committee" Model
### 1. Agent Roles & Responsibilities
Each agent will act as a "Department Head," submitting daily proposals for their specific pillar.
| Workflow Pillar | Owner Agent | Data Sources | Proposal Type Example |
| :--- | :--- | :--- | :--- |
| **PLAN** | `StrategyArchitectAgent` | Content Pillars, Strategy Doc | "Review 'AI Trends' pillar strategy - engagement dropped 10%." |
| **GENERATE** | `ContentStrategyAgent` | Content Gaps, Trends | "Draft a blog post on 'Vector Search' (High Opportunity Gap)." |
| **PUBLISH** | `SocialAmplificationAgent` | Audience Activity, Calendar | "Schedule your 'Weekly Recap' thread for 10 AM (Peak Audience)." |
| **ANALYZE** | `SEOOptimizationAgent` | GSC, Site Health, Rankings | "Fix 3 broken links on your pricing page to recover link equity." |
| **ENGAGE** | `SocialAmplificationAgent` | Social Mentions, Comments | "Reply to 3 unanswered comments on your latest LinkedIn post." |
| **REMARKET** | `CompetitorResponseAgent` | Competitor Activity | "Competitor X posted about [Topic]. Create a counter-narrative Reel." |
### 2. The Workflow (Daily Cycle)
1. **Morning Briefing (Parallel)**: `TodayWorkflowManager` polls all agents via `propose_daily_tasks(context)`.
2. **Aggregation**: Manager collects raw proposals (~10-15 tasks).
3. **Intelligence Filter (Self-Learning)**:
* Check `TaskMemoryIndex` (txtai).
* Filter out tasks similar to previously **Rejected** tasks.
* Deprioritize tasks similar to recently **Completed** tasks.
4. **Consolidation**: Deduplicate overlapping ideas (e.g., SEO & Content agents both suggesting the same topic).
5. **Final Selection**: Select top 1-3 tasks per pillar based on user goals (e.g., "Growth" mode = more Publish/Remarket tasks).
---
## 🚀 Implementation Phases
### Phase 1: Agent Interface Standardization (The "Voice")
**Objective**: Give every agent the ability to speak the "Task Proposal" language.
**Status**: ✅ Completed
* **Task 1.1**: Define `TaskProposal` schema (Pydantic model). ✅
* Fields: `title`, `description`, `pillar`, `priority`, `reasoning`, `estimated_time`, `action_type`.
* **Task 1.2**: Update `BaseALwrityAgent` with abstract `propose_daily_tasks(context: Dict) -> List[TaskProposal]`. ✅
* **Task 1.3**: Implement `propose_daily_tasks` in all specialized agents. ✅
* *StrategyArchitect*: Logic to check pillar health.
* *ContentStrategist*: Logic to check content gaps.
* *SEOAgent*: Logic to check GSC alerts/errors.
* *SocialAmplification*: Logic for publish/engage.
* *CompetitorResponse*: Logic for monitoring.
### Phase 2: The Manager (The "Orchestrator")
**Objective**: Build the backend service that coordinates the committee.
**Status**: ✅ Completed
* **Task 2.1**: Refactor `TodayWorkflowGenerator` in `today_workflow_service.py`. ✅
* Replace single-prompt generation with `gather_agent_proposals()`.
* Implement `asyncio.gather` for parallel agent execution (performance critical).
* **Task 2.2**: Implement `consolidate_proposals()` logic. ✅
* Use a lightweight LLM call to merge/rank the raw list if needed, or deterministic logic for speed.
* **Task 2.3**: Connect to Frontend. ✅
* Ensure the API response matches the existing `TodayTask` frontend interface.
### Phase 3: Self-Learning Memory (The "Brain")
**Objective**: Stop the system from nagging users about things they hate or just did.
**Status**: ✅ Completed
* **Task 3.1**: Create `TaskHistory` model in DB. ✅
* Store: `task_vector_id`, `original_text`, `status` (completed/rejected/skipped), `user_feedback`.
* **Task 3.2**: Implement `TaskMemoryService` using `txtai`. ✅
* Index tasks with metadata.
* Implement `is_redundant_or_rejected(proposal_text)` check.
* **Task 3.3**: Wire feedback loop. ✅
* When user clicks "Dismiss" or "Complete" in frontend, update the `txtai` index.
### Phase 4: UI Feedback & Transparency
**Objective**: Show the user *why* a task was suggested.
* **Task 4.1**: Update Frontend `TodayTask` card.
* Add "Suggested by [Agent Name]" badge.
* Add "Why?" tooltip (e.g., "Because Competitor X did Y").
* **Task 4.2**: Add "Train my Agents" feedback.
* "Don't show this again" vs "Not today".
---
## 📊 Data Models
### 1. TaskProposal (Backend)
```python
class TaskProposal(BaseModel):
title: str
description: str
pillar_id: str # plan, generate, publish, analyze, engage, remarket
priority: str # high, medium, low
estimated_time: int # minutes
source_agent: str # e.g., "SEOOptimizationAgent"
reasoning: str # "Detected 404 error spike"
context_data: Optional[Dict] # e.g., {"url": "..."}
```
### 2. TaskMemoryDocument (txtai)
```json
{
"id": "uuid",
"text": "Write a blog post about AI Trends",
"embedding": [vector],
"tags": ["generate", "content_strategy"],
"user_id": "123",
"status": "rejected",
"last_updated": "2024-03-01T10:00:00Z"
}
```
---
## 🛠️ Technical Considerations
* **Performance**: Calling 6 agents + LLMs in parallel can be slow.
* *Mitigation*: Set strict timeouts (e.g., 5s) per agent. Use "Lite" logic for proposals (e.g., check DB/Cache instead of live crawling) where possible.
* **Fallback**: If agents time out or fail, fall back to the `_fallback_tasks` template currently in place.
* **Token Usage**: Summarize context before sending to agents to minimize input tokens.
---
## 📅 Execution Timeline
1. **Day 1**: Phase 1 (Interfaces & 2 core agents).
2. **Day 2**: Phase 2 (Orchestrator wiring).
3. **Day 3**: Phase 3 (txtai Memory integration).
4. **Day 4**: Phase 1 completion (remaining agents) & Phase 4 (UI polish).