Add Notion Agent and FlowDeck integration docs
Document Notion Agent (2026) concepts and a FlowDeck Agent design that orchestrates tool calls through existing FastAPI routers, plus a chat UI screenshot.
This commit is contained in:
@@ -0,0 +1,702 @@
|
||||
# FlowDeck Agent — Intégration & Fonctionnement
|
||||
|
||||
> **Version:** 1.0 · **Date:** 2026-07-20 · **Auteur:** Hermes-Deepin
|
||||
> **Cible:** Agent IA natif pour FlowDeck, inspiré de Notion Agent (2026)
|
||||
> **Prérequis:** FlowDeck v4.0.x · FastAPI · SQLite · Gitea/GitHub
|
||||
|
||||
---
|
||||
|
||||
## Table des matières
|
||||
|
||||
1. [Vision & Objectifs](#1-vision--objectifs)
|
||||
2. [Concept : de l'IA qui répond à l'IA qui réalise](#2-concept)
|
||||
3. [Positionnement dans l'architecture FlowDeck](#3-positionnement)
|
||||
4. [Placement dans l'interface (sidebar 🤖 Agents)](#4-placement-interface)
|
||||
5. [Boucle d'exécution de l'agent](#5-boucle-dexécution)
|
||||
6. [Sources de contexte FlowDeck](#6-sources-de-contexte)
|
||||
7. [Modèle de données (nouvelles tables)](#7-modèle-de-données)
|
||||
8. [Routes & API Agent](#8-routes--api)
|
||||
9. [Le service AgentEngine](#9-service-agentengine)
|
||||
10. [Système d'outils (Tools)](#10-système-doutils)
|
||||
11. [Permissions & sécurité](#11-permissions--sécurité)
|
||||
12. [Custom Agents & déclencheurs](#12-custom-agents)
|
||||
13. [Skills réutilisables](#13-skills)
|
||||
14. [Cas d'usage FlowDeck](#14-cas-dusage)
|
||||
15. [Plan de migration](#15-plan-de-migration)
|
||||
16. [Limitations](#16-limitations)
|
||||
|
||||
---
|
||||
|
||||
## 1. Vision & Objectifs
|
||||
|
||||
FlowDeck Agent transforme FlowDeck d'un clone Notion **passif** (où l'utilisateur crée manuellement collections, pages, propriétés) en un espace de travail **agentique** où une IA peut :
|
||||
|
||||
- Comprendre un objectif exprimé en langage naturel
|
||||
- Lire le contexte du workspace (collections, pages, propriétés, issues Gitea)
|
||||
- Planifier une suite d'actions
|
||||
- **Exécuter** ces actions via l'API interne (créer collections, pages, propriétés, vues, sync Gitea)
|
||||
- Retourner un résultat consolidé
|
||||
|
||||
L'agent réutilise l'infrastructure existante : **il n'appelle pas directement la DB**, il passe par les mêmes routers FastAPI (`/db/*`, `/board/api/*`) que l'utilisateur, garantissant cohérence, validation et respect du `PermissionManager`.
|
||||
|
||||
Cette fonctionnalité concrétise la ligne `v5.0.0 — AI Assistants` de la roadmap, en s'inspirant directement du modèle Notion Agent.
|
||||
|
||||
---
|
||||
|
||||
## 2. Concept : de l'IA qui répond à l'IA qui réalise {#2-concept}
|
||||
|
||||
|
||||
|
||||
Assistant classique :
|
||||
Utilisateur → Prompt → Réponse texte
|
||||
FlowDeck Agent :
|
||||
Utilisateur → Objectif → Planification → Collecte contexte → Actions API → Résultat
|
||||
|
||||
|
||||
| Notion AI | FlowDeck Agent |
|
||||
|-----------|----------------|
|
||||
| Répond, résume, réécrit | Planifie, recherche, **agit** |
|
||||
| Bloc de texte | Crée collections, pages, propriétés, vues |
|
||||
| Sans état | Historique de conversation + snapshots |
|
||||
| Aucune action DB | Modifie le workspace via routers FastAPI |
|
||||
|
||||
---
|
||||
|
||||
## 3. Positionnement dans l'architecture FlowDeck {#3-positionnement}
|
||||
|
||||
L'agent s'insère comme un **nouveau service** et un **nouveau router**, sans modifier le cœur existant.
|
||||
|
||||
|
||||
```
|
||||
┌──────────────────────────────────────────────────────────────────┐
|
||||
│ CLIENT (Browser) │
|
||||
│ ┌─────────────────────────────────────────────────────────┐ │
|
||||
│ │ agent_panel.html — Panneau conversation (Alpine.js) │ │
|
||||
│ │ agent_message.html — Fragment message (HTMX streaming) │ │
|
||||
│ └─────────────────────────────────────────────────────────┘ │
|
||||
└──────────────────────────┬───────────────────────────────────────┘
|
||||
│ HTTP (SSE stream / JSON)
|
||||
┌──────────────────────────▼───────────────────────────────────────┐
|
||||
│ FASTAPI (Python 3.11+) │
|
||||
│ ┌─────────────────────────────────────────────────────────┐ │
|
||||
│ │ ROUTERS │ │
|
||||
│ │ ├─ agent.py ← NOUVEAU /api/agent/* │ │
|
||||
│ │ └─ (existants: board.py, api.py, collections.py, ...) │ │
|
||||
│ └─────────────────────────────────────────────────────────┘ │
|
||||
│ ┌─────────────────────────────────────────────────────────┐ │
|
||||
│ │ SERVICES │ │
|
||||
│ │ ├─ AgentEngine ← NOUVEAU (orchestrateur) │ │
|
||||
│ │ ├─ ToolRegistry ← NOUVEAU (outils actionnables) │ │
|
||||
│ │ ├─ LLMClient ← NOUVEAU (GPT/Claude/Gemini/local) │ │
|
||||
│ │ ├─ ContextBuilder ← NOUVEAU (collecte workspace) │ │
|
||||
│ │ ├─ SearchEngine (réutilisé — FTS5) │ │
|
||||
│ │ ├─ PermissionManager (réutilisé — ACL) │ │
|
||||
│ │ └─ GiteaClient (réutilisé — API Gitea) │ │
|
||||
│ └─────────────────────────────────────────────────────────┘ │
|
||||
│ ┌─────────────────────────────────────────────────────────┐ │
|
||||
│ │ DATA LAYER — SQLite │ │
|
||||
│ │ ├─ agents ← NOUVEAU │ │
|
||||
│ │ ├─ agent_conversations ← NOUVEAU │ │
|
||||
│ │ ├─ agent_messages ← NOUVEAU │ │
|
||||
│ │ ├─ agent_actions ← NOUVEAU (journal audit) │ │
|
||||
│ │ ├─ agent_skills ← NOUVEAU │ │
|
||||
│ │ └─ (tables existantes: collections, pages, ...) │ │
|
||||
│ └─────────────────────────────────────────────────────────┘ │
|
||||
└──────────────────────────┬───────────────────────────────────────┘
|
||||
│ HTTPS
|
||||
┌──────────────────┴──────────────────┐
|
||||
▼ ▼
|
||||
┌──────────────────┐ ┌──────────────────────────┐
|
||||
│ GITEA API REST │ │ PROVIDER LLM │
|
||||
│ (contexte issues)│ │ OpenAI / Anthropic / │
|
||||
│ │ │ Gemini / Ollama local │
|
||||
└──────────────────┘ └──────────────────────────┘
|
||||
```
|
||||
|
||||
**Principe clé — Tool-calling en boucle fermée :**
|
||||
Le `LLMClient` ne touche jamais la base. Il émet des *intentions d'outil* (function calls). L'`AgentEngine` les traduit en appels HTTP internes vers les routers existants, exécutés avec la session et les permissions de l'utilisateur.
|
||||
|
||||
---
|
||||
|
||||
## 4. Placement dans l'interface (sidebar 🤖 Agents) {#4-placement-interface}
|
||||
|
||||
Le sidebar FlowDeck contient déjà une entrée **🤖 Agents** (voir ARCHITECTURE §5.2). Elle devient le point d'entrée de l'agent.
|
||||
|
||||
|
||||
```
|
||||
┌────────────┬─────────────────────────────────────────────────┐
|
||||
│ SIDEBAR │ CONTENU PRINCIPAL │
|
||||
│ │ │
|
||||
│ 🕒 Recents │ ┌─ Page / Collection courante ──────────────┐ │
|
||||
│ ⭐ Favoris │ │ │ │
|
||||
│ 🤖 Agents ◄┼── clic ouvre le panneau agent (droite) │ │
|
||||
│ 👥 Shared │ └────────────────────────────────────────────┘ │
|
||||
│ │ ┌────────────┐ │
|
||||
│ │ │ 🤖 Agent │ │
|
||||
│ │ ├────────────┤ │
|
||||
│ │ │ Historique │ │
|
||||
│ │ │ Réponses │ │
|
||||
│ │ │ ───────── │ │
|
||||
│ │ │ @Sources │ │
|
||||
│ │ │ 📎 Fichier │ │
|
||||
│ │ │ [Modèle ▾] │ │
|
||||
│ │ │ [Saisie... ]│ │
|
||||
│ │ └────────────┘ │
|
||||
└────────────┴─────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
Deux modes d'accès, comme Notion Agent :
|
||||
|
||||
- **Icône flottante** (coin inférieur droit) — accès global rapide
|
||||
- **Section 🤖 Agents** du sidebar — liste des agents (personnel + custom)
|
||||
|
||||
L'affichage de la section 🤖 Agents est déjà prévu dans les 3 scénarios de compte (A/B/C) — voir ARCHITECTURE §6.5.4 : **toujours visible**.
|
||||
|
||||
---
|
||||
|
||||
## 5. Boucle d'exécution de l'agent {#5-boucle-dexécution}
|
||||
|
||||
Adaptation du modèle Notion (Compréhension → Contexte → Raisonnement → Action) à l'architecture FlowDeck :
|
||||
|
||||
```
|
||||
Utilisateur formule un objectif
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────┐
|
||||
│ 1. COMPRÉHENSION (AgentEngine) │
|
||||
│ Parse objectif + instructions custom │
|
||||
└──────────────────┬──────────────────────────┘
|
||||
▼
|
||||
┌─────────────────────────────────────────────┐
|
||||
│ 2. COLLECTE CONTEXTE (ContextBuilder) │
|
||||
│ - Page/collection courante (cookie ws) │
|
||||
│ - @mentions explicites │
|
||||
│ - SearchEngine FTS5 (pages pertinentes) │
|
||||
│ - Issues Gitea liées (GiteaClient) │
|
||||
│ - Fichiers joints │
|
||||
│ ⚠ filtré par PermissionManager │
|
||||
└──────────────────┬──────────────────────────┘
|
||||
▼
|
||||
┌─────────────────────────────────────────────┐
|
||||
│ 3. RAISONNEMENT (LLMClient + ToolRegistry) │
|
||||
│ LLM reçoit: objectif + contexte + schéma │
|
||||
│ des outils disponibles (function calling) │
|
||||
│ → émet un plan / une intention d'outil │
|
||||
└──────────────────┬──────────────────────────┘
|
||||
▼
|
||||
┌─────────────────────────────────────────────┐
|
||||
│ 4. ACTION (AgentEngine → routers FastAPI) │
|
||||
│ Exécute l'appel outil → route interne │
|
||||
│ POST /db → create_collection │
|
||||
│ POST /db/{id}/properties → add_property │
|
||||
│ POST /db/{id}/pages → create_page │
|
||||
│ Journalise dans agent_actions │
|
||||
└──────────────────┬──────────────────────────┘
|
||||
▼
|
||||
Résultat outil réinjecté dans le LLM
|
||||
│
|
||||
┌────────┴────────┐
|
||||
│ Objectif atteint?│
|
||||
└────┬────────┬────┘
|
||||
non │ │ oui
|
||||
│ ▼
|
||||
(retour étape 3) ┌─────────────────────────────┐
|
||||
│ 5. RÉSULTAT consolidé + lien │
|
||||
│ vers les objets créés │
|
||||
└─────────────────────────────┘
|
||||
```
|
||||
|
||||
Cette boucle **ReAct** (Reason + Act) se répète jusqu'à `max_iterations` (défaut : 12) ou atteinte de l'objectif.
|
||||
|
||||
---
|
||||
|
||||
## 6. Sources de contexte FlowDeck {#6-sources-de-contexte}
|
||||
|
||||
Correspondance avec les sources Notion Agent, adaptées aux entités FlowDeck :
|
||||
|
||||
| Source Notion | Équivalent FlowDeck | Mécanisme |
|
||||
|---------------|---------------------|-----------|
|
||||
| Pages, sous-pages | `pages`, `collection_pages` (parent_id) | `SearchEngine` FTS5 + lecture directe |
|
||||
| Bases de données | `collections` + `collection_properties` | Lecture schéma `schema_json` |
|
||||
| Wikis / docs internes | Blocs éditeur (`content_json`) | Parsing blocs |
|
||||
| Jira | **Issues Gitea/GitHub** | `GiteaClient` (issues, labels, milestones) |
|
||||
| Slack / Drive | Fichiers uploadés (`/api/files/`) | Lecture `files` property |
|
||||
| Fichiers joints | Upload local-workspace | PDF/MD parsing |
|
||||
| `@Projet Alpha` | `@collection` / `@page` / `@repo` | Résolution de mention |
|
||||
|
||||
**Résolution des mentions** — L'utilisateur peut cibler :
|
||||
|
||||
|
||||
@collection:Roadmap → force le contexte sur une collection
|
||||
@page:123 → une page précise
|
||||
@repo:bruno/flowdeck → issues d'un repo Gitea
|
||||
@ws → workspace courant complet
|
||||
|
||||
|
||||
Le `ContextBuilder` respecte strictement le `PermissionManager` : l'agent ne voit **que** ce que l'utilisateur peut voir (même token, mêmes ACL — voir ARCHITECTURE §6.2).
|
||||
|
||||
---
|
||||
|
||||
## 7. Modèle de données (nouvelles tables) {#7-modèle-de-données}
|
||||
|
||||
```sql
|
||||
-- Définition d'un agent (personnel ou custom)
|
||||
CREATE TABLE agents (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
workspace_id INTEGER REFERENCES workspaces(id),
|
||||
name TEXT NOT NULL DEFAULT 'FlowDeck Agent',
|
||||
icon TEXT DEFAULT '🤖',
|
||||
agent_type TEXT NOT NULL DEFAULT 'personal',
|
||||
-- 'personal' | 'custom'
|
||||
description TEXT DEFAULT '',
|
||||
|
||||
-- Instructions personnalisées (ton, format, règles métier)
|
||||
system_instructions TEXT DEFAULT '',
|
||||
|
||||
-- Modèle IA par défaut
|
||||
model TEXT DEFAULT 'claude-opus-4-8',
|
||||
-- gpt-* | claude-* | gemini-* | ollama:*
|
||||
|
||||
-- Périmètre custom agent : collections/repos autorisés
|
||||
scope_json TEXT NOT NULL DEFAULT '{}',
|
||||
-- {collections:[3,7], repos:["bruno/flowdeck"], tools:["create_page"]}
|
||||
|
||||
-- Déclencheurs (custom agents)
|
||||
trigger_json TEXT NOT NULL DEFAULT '{}',
|
||||
-- {type:"schedule", cron:"0 9 * * 1"} | {type:"webhook", event:"issue.opened"}
|
||||
|
||||
is_active BOOLEAN NOT NULL DEFAULT 1,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
created_by INTEGER REFERENCES users(id),
|
||||
UNIQUE(workspace_id, name)
|
||||
);
|
||||
|
||||
-- Conversations (fils de discussion, comme Notion history)
|
||||
CREATE TABLE agent_conversations (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
agent_id INTEGER NOT NULL REFERENCES agents(id) ON DELETE CASCADE,
|
||||
user_id INTEGER NOT NULL REFERENCES users(id),
|
||||
title TEXT DEFAULT 'New conversation',
|
||||
-- Contexte de départ (page/collection ouverte à l'invocation)
|
||||
context_json TEXT NOT NULL DEFAULT '{}',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Messages d'une conversation
|
||||
CREATE TABLE agent_messages (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
conversation_id INTEGER NOT NULL REFERENCES agent_conversations(id) ON DELETE CASCADE,
|
||||
role TEXT NOT NULL,
|
||||
-- 'user' | 'assistant' | 'tool' | 'system'
|
||||
content TEXT NOT NULL DEFAULT '',
|
||||
-- Pour role='tool' : nom de l'outil + payload + résultat
|
||||
tool_calls_json TEXT DEFAULT '[]',
|
||||
model TEXT,
|
||||
tokens_used INTEGER DEFAULT 0,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Journal d'audit : CHAQUE action modifiant le workspace
|
||||
CREATE TABLE agent_actions (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
conversation_id INTEGER NOT NULL REFERENCES agent_conversations(id) ON DELETE CASCADE,
|
||||
tool_name TEXT NOT NULL,
|
||||
-- create_collection | create_page | add_property | ...
|
||||
target_type TEXT,
|
||||
-- collection | page | property | view | issue
|
||||
target_id TEXT,
|
||||
payload_json TEXT NOT NULL DEFAULT '{}',
|
||||
result_json TEXT NOT NULL DEFAULT '{}',
|
||||
status TEXT NOT NULL DEFAULT 'success',
|
||||
-- success | error | reverted
|
||||
-- Snapshot avant modification → permet le rollback
|
||||
undo_snapshot_json TEXT DEFAULT '{}',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
executed_by INTEGER REFERENCES users(id)
|
||||
);
|
||||
|
||||
-- Skills réutilisables (mini-prompts)
|
||||
CREATE TABLE agent_skills (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
workspace_id INTEGER REFERENCES workspaces(id),
|
||||
name TEXT NOT NULL,
|
||||
-- "Génération de PRD", "Analyse SWOT", "Préparation sprint"
|
||||
description TEXT DEFAULT '',
|
||||
prompt_template TEXT NOT NULL,
|
||||
-- Outils que la skill peut invoquer
|
||||
allowed_tools_json TEXT NOT NULL DEFAULT '[]',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
created_by INTEGER REFERENCES users(id),
|
||||
UNIQUE(workspace_id, name)
|
||||
);
|
||||
|
||||
CREATE INDEX idx_agent_conv_user ON agent_conversations(user_id, updated_at);
|
||||
CREATE INDEX idx_agent_msg_conv ON agent_messages(conversation_id, created_at);
|
||||
CREATE INDEX idx_agent_action_conv ON agent_actions(conversation_id);
|
||||
|
||||
|
||||
Intégration au diagramme de relations existant
|
||||
|
||||
|
||||
users ──1:N──► agent_conversations ──1:N──► agent_messages
|
||||
│ │
|
||||
│ └──1:N──► agent_actions ──► (collections/pages/...)
|
||||
│
|
||||
workspaces ──1:N──► agents ──1:N──► agent_conversations
|
||||
│
|
||||
└──1:N──► agent_skills
|
||||
|
||||
```
|
||||
|
||||
|
||||
## 8. Routes & API Agent {#8-routes--api}
|
||||
|
||||
Nouveau router agent.py, préfixe /api/agent.
|
||||
|
||||
# Agents (définitions)
|
||||
```
|
||||
GET /api/agent → Liste agents du workspace
|
||||
POST /api/agent → Créer custom agent
|
||||
GET /api/agent/{agent_id} → Détail agent
|
||||
PUT /api/agent/{agent_id} → Update (instructions, scope, model)
|
||||
DELETE /api/agent/{agent_id} → Supprimer custom agent
|
||||
```
|
||||
|
||||
# Conversations
|
||||
```
|
||||
GET /api/agent/conversations → Historique des conversations
|
||||
POST /api/agent/conversations → Nouvelle conversation
|
||||
GET /api/agent/conversations/{id} → Messages d'une conversation
|
||||
DELETE /api/agent/conversations/{id} → Supprimer conversation
|
||||
```
|
||||
|
||||
# Exécution (cœur)
|
||||
```
|
||||
POST /api/agent/conversations/{id}/run → Envoyer un objectif (SSE stream)
|
||||
body: {message, model?, mentions?, files?, skill_id?}
|
||||
→ stream: reasoning → tool_call → tool_result → ... → final
|
||||
```
|
||||
|
||||
# Actions & audit
|
||||
```
|
||||
GET /api/agent/conversations/{id}/actions → Journal des actions
|
||||
POST /api/agent/actions/{action_id}/undo → Annuler une action (rollback)
|
||||
```
|
||||
|
||||
# Skills
|
||||
```
|
||||
GET /api/agent/skills → Liste skills
|
||||
POST /api/agent/skills → Créer skill
|
||||
POST /api/agent/skills/{id}/apply → Appliquer une skill
|
||||
```
|
||||
|
||||
# Custom agents — déclencheurs
|
||||
```
|
||||
POST /api/agent/{agent_id}/trigger → Déclenchement manuel
|
||||
```
|
||||
|
||||
# (déclenchement auto via scheduler interne + webhooks.py)
|
||||
|
||||
|
||||
Streaming — La route /run renvoie un flux Server-Sent Events (SSE) pour afficher en temps réel le raisonnement et chaque action, à la manière de l'interface conversationnelle Notion. Le frontend (Alpine.js) consomme le flux et met à jour agent_panel.html.
|
||||
|
||||
-------------------------
|
||||
|
||||
## 9. Le service AgentEngine {#9-service-agentengine}
|
||||
|
||||
Orchestrateur central. Pseudo-implémentation :
|
||||
|
||||
```
|
||||
class AgentEngine:
|
||||
"""Orchestrateur ReAct pour FlowDeck Agent."""
|
||||
|
||||
def __init__(self, db, user, request):
|
||||
self.db = db
|
||||
self.user = user
|
||||
self.request = request # pour réutiliser session/cookies
|
||||
self.llm = LLMClient()
|
||||
self.tools = ToolRegistry(db, user, request)
|
||||
self.ctx = ContextBuilder(db, user)
|
||||
self.perms = PermissionManager(db, user)
|
||||
|
||||
async def run(self, conversation_id, objective, *, model=None,
|
||||
mentions=None, files=None, skill_id=None):
|
||||
agent = self._load_agent(conversation_id)
|
||||
model = model or agent.model
|
||||
|
||||
# 1. COMPRÉHENSION + instructions custom + skill
|
||||
system = self._build_system_prompt(agent, skill_id)
|
||||
|
||||
# 2. COLLECTE CONTEXTE (respecte permissions)
|
||||
context = await self.ctx.build(
|
||||
workspace=self._active_workspace(),
|
||||
mentions=mentions,
|
||||
files=files,
|
||||
)
|
||||
|
||||
messages = [
|
||||
{"role": "system", "content": system},
|
||||
{"role": "user", "content": f"{objective}\n\n# Contexte\n{context}"},
|
||||
]
|
||||
|
||||
# 3-4. BOUCLE RAISONNEMENT ↔ ACTION
|
||||
for _ in range(MAX_ITERATIONS): # défaut 12
|
||||
response = await self.llm.complete(
|
||||
model=model,
|
||||
messages=messages,
|
||||
tools=self.tools.schema(scope=agent.scope), # function calling
|
||||
stream=True,
|
||||
)
|
||||
yield {"type": "reasoning", "content": response.text}
|
||||
|
||||
if not response.tool_calls:
|
||||
yield {"type": "final", "content": response.text}
|
||||
break
|
||||
|
||||
for call in response.tool_calls:
|
||||
# Vérif permission AVANT exécution
|
||||
self.perms.assert_can(call.tool, call.args)
|
||||
|
||||
result = await self.tools.execute(call.tool, call.args)
|
||||
|
||||
# Journal d'audit + snapshot rollback
|
||||
self._log_action(conversation_id, call, result)
|
||||
|
||||
yield {"type": "action",
|
||||
"tool": call.tool,
|
||||
"target": result.get("target"),
|
||||
"status": result["status"]}
|
||||
|
||||
messages.append({"role": "tool",
|
||||
"name": call.tool,
|
||||
"content": result})
|
||||
|
||||
```
|
||||
|
||||
Points clés :
|
||||
- stream=True → SSE vers le frontend
|
||||
- Chaque tool_call passe par PermissionManager.assert_can() avant exécution
|
||||
- Chaque action modifiant la DB écrit un agent_actions avec undo_snapshot_json → rollback possible
|
||||
- La boucle réutilise le même token Gitea que l'utilisateur (via user_tokens)
|
||||
-------------------------
|
||||
|
||||
10. Système d'outils (Tools) {#10-système-doutils}
|
||||
|
||||
Les outils sont des wrappers autour des routers FastAPI existants — l'agent ne réinvente rien.
|
||||
|
||||
| Outil | Route interne appelée | Ce que ça fait |
|
||||
|-------|----------------------|----------------|
|
||||
| `search_workspace` | `SearchEngine` (FTS5) | Recherche full-text pages/collections |
|
||||
| `read_collection` | `GET /db/{id}` | Lit schéma + pages d'une collection |
|
||||
| `read_page` | `GET /db/{c}/pages/{p}` | Lit une page + propriétés + blocs |
|
||||
| `create_collection` | `POST /db` | Crée une database |
|
||||
| `add_property` | `POST /db/{id}/properties` | Ajoute une propriété typée |
|
||||
| `create_view` | `POST /db/{id}/views` | Crée une vue (table/board/calendar…) |
|
||||
| `create_page` | `POST /db/{id}/pages` | Crée une page + valeurs propriétés |
|
||||
| `update_page` | `PUT /db/{c}/pages/{p}` | Modifie propriétés/contenu |
|
||||
| `write_blocks` | `POST /board/api/pages/{id}/blocks` | Écrit du contenu (éditeur de blocs) |
|
||||
| `add_relation` | `POST /db/{id}/properties` (type relation) | Lie deux collections |
|
||||
| `create_sub_item` | `POST /db/{c}/pages/{p}/sub-items` | Crée un sub-item |
|
||||
| `add_dependency` | `POST /db/{c}/pages/{p}/dependencies` | Ajoute blocks/blocked_by |
|
||||
| `sync_gitea` | `POST /board/api/sync/{o}/{r}` | Synchronise issues ↔ collection |
|
||||
| `read_gitea_issues` | `GiteaClient` | Lit issues/labels/milestones |
|
||||
| `create_gitea_issue` | `POST /api/issues/{o}/{r}` | Crée une issue Gitea |
|
||||
| `apply_template` | `POST /db/{id}/templates/{t}/apply` | Applique un template |
|
||||
|
||||
|
||||
|
||||
Schéma d'un outil (function calling) exposé au LLM :
|
||||
```
|
||||
{
|
||||
"name": "create_page",
|
||||
"description": "Crée une page dans une collection FlowDeck avec ses valeurs de propriétés.",
|
||||
"parameters": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"collection_id": {"type": "integer"},
|
||||
"title": {"type": "string"},
|
||||
"property_values": {
|
||||
"type": "object",
|
||||
"description": "Map property_id → valeur (respecte le type)"
|
||||
}
|
||||
},
|
||||
"required": ["collection_id", "title"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Filtrage par scope — Pour un custom agent, ToolRegistry.schema(scope=...) ne renvoie que les outils autorisés dans agents.scope_json.tools, et limite les cibles aux collections/repos de scope_json.
|
||||
|
||||
-------------------------
|
||||
|
||||
## 11. Permissions & sécurité {#11-permissions--sécurité}
|
||||
|
||||
L'agent agit avec les permissions de l'utilisateur, jamais au-delà (principe Notion Agent : « mêmes permissions que l'utilisateur »).
|
||||
|
||||
```
|
||||
┌───────────────────────────────────────────────────────────┐
|
||||
│ GARDE-FOUS AGENT │
|
||||
│ │
|
||||
│ 1. Identité → session utilisateur + user_tokens │
|
||||
│ 2. ACL → PermissionManager.assert_can() par outil│
|
||||
│ 3. Scope custom → scope_json limite collections/repos │
|
||||
│ 4. Database lock → collection is_locked ⇒ outils write KO │
|
||||
│ 5. Audit → agent_actions journalise TOUT │
|
||||
│ 6. Rollback → undo_snapshot_json par action │
|
||||
│ 7. Rate limiting → RateLimiter (middleware existant) │
|
||||
│ 8. Confirmation → actions destructives ⇒ approbation UI │
|
||||
└───────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
Mode approbation — Configurable par agent :
|
||||
- auto : l'agent exécute directement (création de contenu)
|
||||
- confirm : actions destructives (delete_page, sync massif) demandent une confirmation dans le panneau avant exécution
|
||||
Cohérent avec le modèle de rôles workspace (owner/admin/editor/commenter/viewer, ARCHITECTURE §6.2) : un agent lancé par un viewer ne peut que lire.
|
||||
|
||||
-------------------------
|
||||
|
||||
## 12. Custom Agents & déclencheurs {#12-custom-agents}
|
||||
|
||||
Comme Notion (Custom Agents 2026), FlowDeck distingue :
|
||||
| Type | Portée | Exemple |
|
||||
|------|--------|---------|
|
||||
| **Personal Agent** | Généraliste, tout le workspace visible | Assistant quotidien |
|
||||
| **Custom Agent** | Spécialisé, scope restreint, déclencheurs | Agent Reporting, Agent Support |
|
||||
|
||||
|
||||
|
||||
Déclencheurs (agents.trigger_json) :
|
||||
```
|
||||
type: "manual" → bouton dans l'UI
|
||||
type: "schedule" → cron interne (ex: "0 9 * * 1" = lundi 9h)
|
||||
type: "webhook" → branché sur webhooks.py (issue.opened, issue.closed…)
|
||||
```
|
||||
|
||||
Exemples de custom agents FlowDeck :
|
||||
- Agent Reporting — chaque lundi, scanne toutes les collections, produit une page « Rapport hebdo » avec KPI
|
||||
- Agent Gitea Triage — à issue.opened, classe l'issue dans la bonne collection et remplit ses propriétés
|
||||
- Agent Sprint — prépare une collection sprint depuis les issues du milestone courant
|
||||
Le scheduler s'appuie sur le lifespan FastAPI (main.py) et les webhooks réutilisent le router webhooks.py existant.
|
||||
|
||||
-------------------------
|
||||
|
||||
## 13. Skills réutilisables {#13-skills}
|
||||
|
||||
Une skill est un mini-prompt paramétrable + liste d'outils autorisés (table agent_skills).
|
||||
```
|
||||
Skill "Préparation de sprint"
|
||||
├─ prompt_template:
|
||||
│ "Analyse les issues ouvertes du repo {repo}, crée une collection
|
||||
│ sprint '{sprint_name}', ajoute les propriétés Status/Priority/Assignee,
|
||||
│ importe chaque issue comme page, groupe en vue Board."
|
||||
├─ allowed_tools: [read_gitea_issues, create_collection,
|
||||
│ add_property, create_page, create_view]
|
||||
└─ Invocation: POST /api/agent/skills/{id}/apply
|
||||
```
|
||||
|
||||
Autres skills livrées par défaut : Analyse SWOT, Génération de compte-rendu, Génération de PRD, Synthèse GitHub/Gitea.
|
||||
|
||||
-------------------------
|
||||
|
||||
## 14. Cas d'usage FlowDeck {#14-cas-dusage}
|
||||
|
||||
Gestion de produit
|
||||
|
||||
> « Crée une roadmap Q3 à partir des issues du repo bruno/flowdeck »
|
||||
|
||||
```
|
||||
L'agent : read_gitea_issues → create_collection("Roadmap Q3") → add_property(Status, Priority, DueDate) → create_page × N → create_view(timeline).
|
||||
Développement logiciel
|
||||
```
|
||||
|
||||
> « Analyse les bugs des 6 derniers mois et crée un plan d'amélioration »
|
||||
|
||||
```
|
||||
sync_gitea → search_workspace → analyse LLM → create_collection("Plan qualité") → create_page (causes, actions) → add_dependency.
|
||||
Direction
|
||||
```
|
||||
|
||||
> « Génère les OKR du prochain trimestre depuis nos objectifs actuels »
|
||||
|
||||
```
|
||||
read_collection(Objectifs) → raisonnement → create_collection("OKR Q4") → create_page × N.
|
||||
Multi-étapes (comme Notion)
|
||||
```
|
||||
|
||||
> « Résume les notes de réunion du trimestre et crée les tâches de suivi »
|
||||
|
||||
```
|
||||
search_workspace(meetings) → synthèse → write_blocks (page résumé) → create_page × N (tâches) dans la collection Tasks.
|
||||
```
|
||||
|
||||
-------------------------
|
||||
|
||||
## 15. Plan de migration {#15-plan-de-migration}
|
||||
|
||||
Phase 1 — Fondations DB & Service
|
||||
1. Créer tables agents, agent_conversations, agent_messages,
|
||||
agent_actions, agent_skills
|
||||
2. Implémenter LLMClient (abstraction multi-provider)
|
||||
3. Implémenter ContextBuilder (réutilise SearchEngine)
|
||||
|
||||
Phase 2 — Tool-calling
|
||||
1. ToolRegistry : wrappers read-only d'abord (search, read_*)
|
||||
2. Ajouter outils write (create_collection, create_page, ...)
|
||||
3. Brancher PermissionManager.assert_can() sur chaque outil
|
||||
4. Journal agent_actions + snapshots rollback
|
||||
|
||||
Phase 3 — Interface
|
||||
1. agent_panel.html (Alpine.js) branché sur section 🤖 Agents
|
||||
2. Streaming SSE (/run)
|
||||
3. Icône flottante coin inférieur droit
|
||||
4. Affichage temps réel reasoning + actions
|
||||
|
||||
Phase 4 — Personnalisation
|
||||
1. Instructions custom par agent
|
||||
2. Skills (table + /apply)
|
||||
3. Sélecteur de modèle (GPT/Claude/Gemini/Ollama)
|
||||
|
||||
Phase 5 — Custom Agents
|
||||
1. Scope + trigger_json
|
||||
2. Scheduler (lifespan FastAPI)
|
||||
3. Déclencheurs webhook (via webhooks.py)
|
||||
4. Mode approbation (auto/confirm)
|
||||
|
||||
|
||||
-------------------------
|
||||
|
||||
## 16. Limitations {#16-limitations}
|
||||
|
||||
Alignées sur les limites connues de Notion Agent, adaptées à FlowDeck. L'agent ne peut pas :
|
||||
- Modifier les paramètres du workspace (/workspace/{id}/settings)
|
||||
- Gérer les membres / rôles (workspace_members)
|
||||
- Gérer l'authentification ou les intégrations OAuth (connexion/déconnexion Gitea/GitHub)
|
||||
- Publier ou partager publiquement une page sans confirmation utilisateur (/api/pages/{id}/publish, /share)
|
||||
- Modifier une collection verrouillée (is_locked = 1)
|
||||
- Agir au-delà des permissions de l'utilisateur qui l'invoque
|
||||
- Supprimer définitivement (hard delete) sans mode confirm
|
||||
-------------------------
|
||||
|
||||
Résumé
|
||||
|
||||
FlowDeck Agent porte le modèle Notion Agent dans FlowDeck en réutilisant l'infrastructure existante :
|
||||
- Un service AgentEngine orchestrant une boucle ReAct (raisonnement ↔ action)
|
||||
- Des outils qui sont de simples wrappers des routers FastAPI existants (/db/*, /board/api/*, Gitea)
|
||||
- Un contexte collecté via SearchEngine + GiteaClient, filtré par PermissionManager
|
||||
- Un audit complet (agent_actions) avec rollback
|
||||
- Custom Agents, skills et déclencheurs pour l'automatisation
|
||||
Le passage de « l'IA qui répond » à « l'IA qui réalise le travail » se fait sans réécrire FlowDeck : l'agent agit comme un utilisateur privilégié mais contraint, à travers les mêmes portes que l'interface humaine.
|
||||
|
||||
|
||||
J'ai créé le document `Flowdeck_Agent_integration.md`. Points saillants de l'intégration proposée :
|
||||
|
||||
- **Réutilisation maximale** : l'agent n'accède jamais directement à SQLite — il appelle les routers FastAPI existants (`/db/*`, `/board/api/*`, `GiteaClient`), ce qui garantit validation, cohérence et respect du `PermissionManager`.
|
||||
|
||||
- **Boucle ReAct** : Compréhension → Contexte → Raisonnement → Action, calquée sur le fonctionnement de Notion Agent mais mappée sur vos entités (`collections`, `collection_pages`, issues Gitea).
|
||||
|
||||
- **5 nouvelles tables** seulement (`agents`, `agent_conversations`, `agent_messages`, `agent_actions`, `agent_skills`), plus un router `agent.py` et 4 services.
|
||||
|
||||
- **Sécurité** : audit complet avec `undo_snapshot_json` pour rollback, respect des rôles workspace, mode `confirm` pour les actions destructives.
|
||||
|
||||
- **Custom Agents + Skills + déclencheurs** (cron via `lifespan`, webhooks via votre `webhooks.py` existant).
|
||||
@@ -0,0 +1,464 @@
|
||||
# Guide complet — Notion Agent (2026)
|
||||
|
||||
## Introduction
|
||||
|
||||
Notion Agent est l'évolution la plus avancée de Notion AI. Contrairement à un assistant conversationnel classique qui répond uniquement à des questions, Notion Agent est conçu pour **agir directement dans votre espace de travail**.
|
||||
|
||||
L'objectif est de transformer l'IA d'un simple outil de rédaction en un véritable collaborateur numérique capable d'exécuter des tâches complètes à travers les pages, bases de données et outils connectés.
|
||||
|
||||
---
|
||||
|
||||
# 1. Qu'est-ce que Notion Agent ?
|
||||
|
||||
Notion Agent est un agent IA intégré nativement dans Notion.
|
||||
|
||||
Il possède :
|
||||
|
||||
- Un accès au contexte de votre espace de travail
|
||||
- La capacité de lire des pages et bases de données
|
||||
- La capacité de créer et modifier du contenu
|
||||
- La possibilité d'effectuer des tâches multi‑étapes
|
||||
- L'accès à certaines sources externes et outils connectés
|
||||
|
||||
Conceptuellement :
|
||||
|
||||
Assistant IA traditionnel :
|
||||
Utilisateur → Prompt → Réponse
|
||||
|
||||
Notion Agent :
|
||||
Utilisateur → Objectif → Planification → Recherche → Actions → Résultat
|
||||
|
||||
L'agent agit davantage comme un employé numérique que comme un chatbot.
|
||||
|
||||
---
|
||||
|
||||
# 2. Où apparaît-il dans l'interface ?
|
||||
|
||||
## Emplacement principal
|
||||
|
||||
Notion affiche l'agent sous la forme d'une icône circulaire représentant un visage.
|
||||
|
||||
Position habituelle :
|
||||
|
||||
- Coin inférieur droit de l'écran
|
||||
|
||||
Ou :
|
||||
|
||||
- Section AI dans la barre latérale gauche
|
||||
|
||||
---
|
||||
|
||||
## Interface de conversation
|
||||
|
||||
Lorsque l'utilisateur ouvre l'agent :
|
||||
|
||||
┌──────────────────────────┐
|
||||
│ Conversation Agent │
|
||||
├──────────────────────────┤
|
||||
│ Historique │
|
||||
│ │
|
||||
│ Réponses │
|
||||
│ │
|
||||
├──────────────────────────┤
|
||||
│ @Sources │
|
||||
│ 📎 Fichier │
|
||||
│ Modèle IA │
|
||||
│ Zone de saisie │
|
||||
└──────────────────────────┘
|
||||
|
||||
L'interface ressemble à ChatGPT mais avec davantage de contrôles contextuels.
|
||||
|
||||
---
|
||||
|
||||
# 3. Comment fonctionne l'agent ?
|
||||
|
||||
## Étape 1 : Compréhension
|
||||
|
||||
L'utilisateur formule un objectif.
|
||||
|
||||
Exemples :
|
||||
|
||||
- Construis un CRM.
|
||||
- Résume les notes de réunion du trimestre.
|
||||
- Crée les OKR du prochain trimestre.
|
||||
|
||||
L'agent interprète l'intention.
|
||||
|
||||
---
|
||||
|
||||
## Étape 2 : Collecte du contexte
|
||||
|
||||
Il récupère automatiquement :
|
||||
|
||||
- La page actuelle
|
||||
- Les blocs sélectionnés
|
||||
- Les bases de données liées
|
||||
- Les documents référencés
|
||||
- Les permissions utilisateur
|
||||
|
||||
Il fonctionne avec les mêmes permissions que l'utilisateur.
|
||||
|
||||
---
|
||||
|
||||
## Étape 3 : Raisonnement
|
||||
|
||||
L'agent décompose la demande.
|
||||
|
||||
Exemple :
|
||||
|
||||
Créer un CRM
|
||||
|
||||
→ déterminer les propriétés
|
||||
→ créer la base
|
||||
→ créer les vues
|
||||
→ créer les relations
|
||||
→ générer des exemples
|
||||
|
||||
---
|
||||
|
||||
## Étape 4 : Action
|
||||
|
||||
L'agent modifie directement Notion.
|
||||
|
||||
Contrairement à un chatbot traditionnel, il peut :
|
||||
|
||||
- créer
|
||||
- modifier
|
||||
- organiser
|
||||
- restructurer
|
||||
|
||||
le contenu.
|
||||
|
||||
---
|
||||
|
||||
# 4. Sources de connaissances
|
||||
|
||||
## Sources Notion
|
||||
|
||||
L'agent peut consulter :
|
||||
|
||||
- Pages
|
||||
- Sous-pages
|
||||
- Bases de données
|
||||
- Wikis
|
||||
- Documents internes
|
||||
|
||||
---
|
||||
|
||||
## Sources connectées
|
||||
|
||||
Selon la configuration du workspace :
|
||||
|
||||
- Jira
|
||||
- Slack
|
||||
- Google Drive
|
||||
- GitHub
|
||||
- Figma
|
||||
- Outils connectés compatibles
|
||||
|
||||
---
|
||||
|
||||
## Fichiers
|
||||
|
||||
L'utilisateur peut joindre :
|
||||
|
||||
- PDF
|
||||
- Documents
|
||||
- Présentations
|
||||
- Fichiers importés
|
||||
|
||||
---
|
||||
|
||||
## Mention manuelle
|
||||
|
||||
L'utilisateur peut préciser :
|
||||
|
||||
@Projet Alpha
|
||||
|
||||
ou
|
||||
|
||||
@Équipe Marketing
|
||||
|
||||
pour forcer l'utilisation d'un contexte particulier.
|
||||
|
||||
---
|
||||
|
||||
# 5. Ce que Notion Agent peut faire
|
||||
|
||||
## Création de contenu
|
||||
|
||||
- Pages
|
||||
- Sous-pages
|
||||
- Documentation
|
||||
- SOP
|
||||
- Guides
|
||||
- Rapports
|
||||
- Comptes-rendus
|
||||
|
||||
---
|
||||
|
||||
## Modification de contenu
|
||||
|
||||
- Réécriture
|
||||
- Résumé
|
||||
- Traduction
|
||||
- Simplification
|
||||
- Restructuration
|
||||
|
||||
---
|
||||
|
||||
## Bases de données
|
||||
|
||||
L'agent peut :
|
||||
|
||||
- créer une base
|
||||
- ajouter des propriétés
|
||||
- ajouter des relations
|
||||
- créer des vues
|
||||
- remplir les données
|
||||
|
||||
---
|
||||
|
||||
## Recherche documentaire
|
||||
|
||||
Il peut analyser :
|
||||
|
||||
- des centaines de pages
|
||||
- plusieurs bases de données
|
||||
- des documents attachés
|
||||
|
||||
pour produire un résultat consolidé.
|
||||
|
||||
---
|
||||
|
||||
## Analyse
|
||||
|
||||
Exemples :
|
||||
|
||||
- Identifier les tendances
|
||||
- Comparer des projets
|
||||
- Détecter les risques
|
||||
- Produire des synthèses exécutives
|
||||
|
||||
---
|
||||
|
||||
## Travail multi‑étapes
|
||||
|
||||
Exemple :
|
||||
|
||||
« Analyse les incidents des 6 derniers mois et crée un plan d'amélioration. »
|
||||
|
||||
L'agent :
|
||||
|
||||
1. collecte les incidents
|
||||
2. les analyse
|
||||
3. identifie les causes
|
||||
4. produit un rapport
|
||||
5. crée les tâches
|
||||
|
||||
---
|
||||
|
||||
# 6. Fonctionnalités avancées
|
||||
|
||||
## Changement de modèle IA
|
||||
|
||||
Le sélecteur de modèle permet selon la disponibilité :
|
||||
|
||||
- GPT
|
||||
- Claude
|
||||
- Gemini
|
||||
- autres modèles partenaires
|
||||
|
||||
Certains modèles peuvent n'utiliser que le Web alors que d'autres exploitent le contexte Notion.
|
||||
|
||||
---
|
||||
|
||||
## Historique
|
||||
|
||||
L'agent conserve l'historique des conversations.
|
||||
|
||||
Permet :
|
||||
|
||||
- reprendre un travail
|
||||
- relancer une tâche
|
||||
- réutiliser un contexte
|
||||
|
||||
---
|
||||
|
||||
## Instructions personnalisées
|
||||
|
||||
L'utilisateur peut définir :
|
||||
|
||||
- ton
|
||||
- style
|
||||
- format
|
||||
- règles métier
|
||||
|
||||
Exemple :
|
||||
|
||||
« Toujours écrire les procédures en format SOP. »
|
||||
|
||||
---
|
||||
|
||||
## Skills
|
||||
|
||||
Notion introduit des compétences réutilisables.
|
||||
|
||||
Une skill agit comme un mini‑prompt réutilisable.
|
||||
|
||||
Exemples :
|
||||
|
||||
- Génération de compte-rendu
|
||||
- Analyse SWOT
|
||||
- Préparation de sprint
|
||||
|
||||
---
|
||||
|
||||
# 7. Ce que l'agent ne peut pas faire
|
||||
|
||||
À ce jour, certaines limitations existent.
|
||||
|
||||
Il ne peut généralement pas :
|
||||
|
||||
- modifier les permissions des pages
|
||||
- partager des pages
|
||||
- gérer la facturation
|
||||
- modifier les paramètres du workspace
|
||||
- créer certaines propriétés avancées complexes
|
||||
- créer des rappels système
|
||||
|
||||
---
|
||||
|
||||
# 8. Différence entre Notion AI et Notion Agent
|
||||
|
||||
## Notion AI (ancienne approche)
|
||||
|
||||
- Répond
|
||||
- Résume
|
||||
- Réécrit
|
||||
|
||||
## Notion Agent
|
||||
|
||||
- Planifie
|
||||
- Recherche
|
||||
- Agit
|
||||
- Modifie le workspace
|
||||
- Réalise des tâches complètes
|
||||
|
||||
---
|
||||
|
||||
# 9. Custom Agents (2026)
|
||||
|
||||
Notion a également lancé les Custom Agents.
|
||||
|
||||
Différence :
|
||||
|
||||
Notion Agent :
|
||||
- Agent personnel généraliste
|
||||
|
||||
Custom Agent :
|
||||
- Agent spécialisé
|
||||
|
||||
Exemples :
|
||||
|
||||
- Agent RH
|
||||
- Agent Support
|
||||
- Agent Produit
|
||||
- Agent Marketing
|
||||
- Agent GitHub
|
||||
- Agent Reporting
|
||||
|
||||
Ces agents peuvent fonctionner automatiquement selon des déclencheurs et horaires.
|
||||
|
||||
---
|
||||
|
||||
# 10. Cas d'usage réels
|
||||
|
||||
## Gestion de produit
|
||||
|
||||
- Générer des PRD
|
||||
- Créer des roadmaps
|
||||
- Analyser Jira
|
||||
|
||||
## Développement logiciel
|
||||
|
||||
- Synthèse GitHub
|
||||
- Documentation technique
|
||||
- Suivi des bugs
|
||||
|
||||
## Marketing
|
||||
|
||||
- Rapports de campagne
|
||||
- Veille concurrentielle
|
||||
- Création de contenu
|
||||
|
||||
## Direction
|
||||
|
||||
- OKR
|
||||
- KPI
|
||||
- Rapports exécutifs
|
||||
|
||||
---
|
||||
|
||||
# 11. Architecture conceptuelle
|
||||
|
||||
Utilisateur
|
||||
↓
|
||||
Notion Agent
|
||||
↓
|
||||
Contexte Workspace
|
||||
↓
|
||||
Sources Connectées
|
||||
↓
|
||||
Moteur IA
|
||||
↓
|
||||
Planification
|
||||
↓
|
||||
Actions Notion
|
||||
↓
|
||||
Résultat
|
||||
|
||||
---
|
||||
|
||||
# 12. Vision produit
|
||||
|
||||
Notion cherche à transformer son produit en système d'exploitation du travail.
|
||||
|
||||
L'évolution observée :
|
||||
|
||||
2018 → Notes
|
||||
|
||||
2020 → Bases de données
|
||||
|
||||
2023 → Notion AI
|
||||
|
||||
2025 → Notion Agent
|
||||
|
||||
2026 → Custom Agents
|
||||
|
||||
Direction probable :
|
||||
|
||||
- équipes d'agents spécialisés
|
||||
- automatisation continue
|
||||
- orchestration inter‑outils
|
||||
- assistants autonomes de projet
|
||||
|
||||
---
|
||||
|
||||
# Résumé
|
||||
|
||||
Notion Agent est un agent IA intégré profondément dans Notion.
|
||||
|
||||
Ses caractéristiques majeures :
|
||||
|
||||
- Compréhension du contexte
|
||||
- Accès aux connaissances du workspace
|
||||
- Raisonnement multi‑étapes
|
||||
- Création et modification de contenu
|
||||
- Gestion des bases de données
|
||||
- Analyse documentaire
|
||||
- Personnalisation via instructions et skills
|
||||
- Intégration avec outils externes
|
||||
- Possibilité d'évoluer vers des agents spécialisés
|
||||
|
||||
Il représente le passage de « l'IA qui répond » à « l'IA qui réalise le travail » directement dans l'environnement Notion.
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 44 KiB |
Reference in New Issue
Block a user