110 lines
4.0 KiB
Markdown
110 lines
4.0 KiB
Markdown
# Multi-Agent Today's Tasks Workflow
|
|
|
|
**Last Updated**: 2025-03-01
|
|
**Component**: Today's Workflow Service
|
|
|
|
---
|
|
|
|
## 📅 Overview
|
|
|
|
The **Today's Tasks Workflow** is an automated, intelligent system that generates a personalized daily to-do list for the user. Unlike static templates or generic AI prompts, this system uses a **Multi-Agent Committee** to analyze real-time data and propose high-value actions.
|
|
|
|
## 🏗️ Architecture: The "Committee" Model
|
|
|
|
The workflow follows a **Manager-Worker** pattern where the `TodayWorkflowGenerator` acts as the Orchestrator.
|
|
|
|
```mermaid
|
|
sequenceDiagram
|
|
participant User
|
|
participant Orchestrator
|
|
participant Agents (Committee)
|
|
participant Memory (SIF)
|
|
|
|
User->>Orchestrator: Loads Dashboard
|
|
Orchestrator->>Orchestrator: Checks for existing plan
|
|
alt No Plan for Today
|
|
Orchestrator->>Agents: "Propose tasks for [User Context]"
|
|
par Parallel Execution
|
|
Agents->>Agents: Analyze GSC, Trends, Gaps
|
|
end
|
|
Agents-->>Orchestrator: [Task Proposals]
|
|
Orchestrator->>Memory: Filter Redundant/Rejected?
|
|
Memory-->>Orchestrator: Filtered List
|
|
Orchestrator->>Orchestrator: Consolidate & Prioritize
|
|
Orchestrator->>User: Daily Plan
|
|
else Plan Exists
|
|
Orchestrator->>User: Existing Plan
|
|
end
|
|
```
|
|
|
|
---
|
|
|
|
## 🧠 The Intelligence Layer
|
|
|
|
### 1. Proposal Phase (The "Workers")
|
|
Each agent submits proposals based on its domain:
|
|
|
|
| Agent | Data Source | Sample Proposal |
|
|
| :--- | :--- | :--- |
|
|
| **Strategy Architect** | Content Pillars | "Review 'AI Trends' pillar - performance dropped 10%." |
|
|
| **Content Strategist** | Competitor Content | "Draft post on 'Vector Search' (Competitor Gap)." |
|
|
| **SEO Specialist** | Search Console | "Fix 404 error on /pricing page." |
|
|
| **Social Manager** | Engagement Metrics | "Reply to 3 comments on LinkedIn post." |
|
|
| **Competitor Analyst** | Market Signals | "Competitor X launched feature Y. Monitor impact." |
|
|
|
|
### 2. Orchestration Phase (The "Manager")
|
|
The `TodayWorkflowGenerator`:
|
|
1. **Gathers**: Collects all proposals via `asyncio.gather`.
|
|
2. **Deduplicates**: Merges similar tasks (e.g., if SEO and Content agents both suggest the same blog update).
|
|
3. **Formats**: Converts raw proposals into the frontend-ready `TodayTask` schema.
|
|
|
|
### 3. Self-Learning Phase (The "Brain")
|
|
The system uses `TaskMemoryService` and `txtai` to improve over time.
|
|
- **Rejected Tasks**: If a user dismisses a task, it is indexed as "negative feedback." The system semantically checks future proposals against this index to avoid nagging.
|
|
- **Completed Tasks**: Completed tasks are recorded to prevent suggesting the same non-recurring task too soon.
|
|
|
|
---
|
|
|
|
## 🛠️ Data Models
|
|
|
|
### TaskProposal (Internal)
|
|
```python
|
|
@dataclass
|
|
class TaskProposal:
|
|
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: Dict # Payload for the action button
|
|
```
|
|
|
|
### TaskHistory (Database)
|
|
Tracks the lifecycle for learning:
|
|
- `task_hash`: SHA-256 of title+desc for fast deduplication.
|
|
- `status`: completed / dismissed.
|
|
- `feedback`: User provided notes.
|
|
- `vector_id`: Link to the semantic index entry.
|
|
|
|
---
|
|
|
|
## 🎨 UI Experience
|
|
|
|
1. **The Card**: Each task appears as a card in the "Today's Workflow" modal.
|
|
2. **Transparency**:
|
|
- **Badge**: "Suggested by [Agent Name]"
|
|
- **Tooltip**: "Why? [Reasoning]" (e.g., "Because traffic dropped 15%").
|
|
3. **Feedback**:
|
|
- **Complete**: Triggers positive reinforcement learning.
|
|
- **Dismiss**: Triggers negative reinforcement learning.
|
|
|
|
---
|
|
|
|
## 🔄 Lifecycle & Triggers
|
|
|
|
- **Daily Reset**: The plan is generated once per day (UTC).
|
|
- **Persistence**: Tasks remain "in progress" until marked done or the day ends.
|
|
- **On-Demand**: Users can manually trigger a regeneration if the day's plan is empty or irrelevant.
|