À propos du projet
OpenDoubao est une plateforme open source de génération d'applications par Agent IA, positionnée comme alternative open source à Doubao Work. Son principe central : via une conversation en langage naturel, générer à la volée des applications web front-end/back-end hautement disponibles, puis ne plus dépendre du grand modèle de langage dans les interactions suivantes, pour des appels API sûrs, rapides et stables.
## Architecture centrale : expérience en deux phases
Le projet adopte un design original en deux temps :
**Première phase — génération (chat / IA ou règles)** : l'utilisateur décrit son besoin par dialogue, l'Agent IA génère l'interface UI correspondante et propose des requêtes APIJSON. La requête est exécutée après validation ; en cas de succès, une demande bindRequest est émise, liant le modèle (template) et le paramMap (mapping des paramètres) aux composants UI.
**Deuxième phase — état stable (sans LLM)** : lorsque l'utilisateur modifie ensuite les filtres, le tri, la pagination, etc., BoundExecutor fusionne directement le paramMap dans bodyTemplate, puis appelle l'interface APIJSON via HTTP POST. Aucun token n'est consommé, la réponse est rapide et stable.
## Protocole Agent-to-API (A2API)
Le projet définit le protocole A2API 0.1, dont le format d'enveloppe est `{ "version": "0.1", "<type>": { ... } }`, avec les types de messages suivants :
- **proposeRequest** : appel APIJSON candidat
- **reviseRequest / decision** : modification ou approbation/refus de la requête
- **bindRequest** : après code == 200, produit le template et le paramMap pour piloter l'UI
- **requestResult / status** : retour de résultat et d'état
## Mécanisme de sécurité
Le projet intègre un mécanisme d'approbation pour les opérations sensibles. Les opérations de lecture s'exécutent automatiquement, tandis que les opérations d'écriture (par défaut post, put, delete, gets, heads, surchargeables via la variable d'environnement SENSITIVE_METHODS) nécessitent l'approbation d'un administrateur dans le back-office Admin avant d'être exécutées. Le back-office offre trois onglets : Apply (demandes), Call logs (journaux d'appels) et Stats (statistiques), avec un flux d'approbation complexe pour Access, Request, Document et Chain.
## Pile technique et structure du dépôt
- **Exécution** : Node.js 18+, Vite (front-end), Hono (service API)
- **Couche données** : APIJSONBoot-MultiDataSource (ou service compatible), exécuté sur localhost:8080
- **Modules du dépôt** :
- `opendoubao` : orchestrateur + UI de chat (génération) + filtres liés (état stable)
- `opendoubao-admin` : configuration des demandes d'approbation, écriture dans Access / Request / Document après validation
- `a2qpi/protocol` : enveloppe A2API 0.1, JSON Pointer, validateurs, tests CRUD
- `a2qpi/runtime` : ApiJsonClient, HitlController, BoundExecutor
## Démarrage rapide
```bash
cd ~/a2api
cp .env.example .env
npm install
npm test
npm run build
npm run dev
```
Après lancement, le client est disponible sur http://localhost:5173, le service API sur http://localhost:3000, et le back-office sur http://localhost:5174 via `npm run dev:admin`.
## Configuration et extensions
L'utilisateur peut se connecter/s'inscrire via Login en haut à droite, et configurer AI Model, Base URL, API Key. Des raccourcis (ex. « List the latest 3 moments with authors ») permettent de lancer rapidement une requête. On peut aussi définir OPENAI_API_KEY dans .env pour activer le bootstrap assisté par LLM ; sans cette configuration, les règles d'intention intégrées reconnaissent quand même les entités User / Moment / Comment (en chinois comme en anglais).
Le projet fournit de nombreuses tables de démonstration (User, Moment, Comment ainsi que employés, événements, chat, actualités, informations, blogs, articles, vidéos, musique, produits, commandes, adresses de livraison, catégories, etc.). Après import, il faut recharger Access/Request. Les opérations d'écriture nécessitent généralement une session connectée (@role OWNER/LOGIN) ; dans la phase MVP, une requête est générée et l'interface d'approbation/refus HITL est affichée.
## Interface d'automatisation Agent
Le projet expose l'interface automatisée a2apiAgent, permettant d'appeler via JavaScript les méthodes switchTab, debug, etc., de spécifier une URL, un corps de requête JSON et de l'envoyer automatiquement, ou encore de charger une iframe et d'envoyer des requêtes automatiquement, facilitant l'intégration dans des tests automatisés ou des workflows.
## Planification de phase 2
La synchronisation inter-appareils (import/export via tables de base de données ou fichiers) est prévue dans la conception, mais pas encore implémentée.
## Informations sur le projet
L'auteur est TommyLemon. Le projet est hébergé sur GitHub (open-doubao-ai/OpenDoubao). Les retours techniques sont bienvenus via Issues, et les contributions via Pull Requests.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.