Sobre el proyecto
OpenDoubao es una plataforma de código abierto para generar aplicaciones mediante AI Agent, posicionada como alternativa de código abierto a Doubao Work. Su idea central: mediante conversaciones en lenguaje natural, generar sobre la marcha aplicaciones web de frontend y backend de alta disponibilidad, y en interacciones posteriores no depender del modelo de lenguaje grande (LLM), logrando así llamadas API seguras, rápidas y estables.
## Arquitectura principal: experiencia en dos fases
**Primera fase — generación (chat / IA o reglas):** El usuario describe sus necesidades mediante conversación; el AI Agent genera la interfaz de UI correspondiente y propone una solicitud APIJSON. La solicitud se valida y ejecuta; si se completa con éxito, se emite bindRequest y vincula la plantilla y el mapa de parámetros (paramMap) a los controles de la UI.
**Segunda fase — estado estable (sin LLM):** Cuando el usuario modifica filtros, orden o paginación, BoundExecutor combina paramMap directamente en bodyTemplate y llama a la interfaz APIJSON mediante HTTP POST. No consume tokens y la respuesta es rápida y estable.
## Protocolo Agent-to-API (A2API)
El proyecto define el protocolo A2API 0.1. El formato del sobre es `{ "version": "0.1", "tipo": { ... } }` e incluye los siguientes tipos de mensaje:
- **proposeRequest**: candidato de llamada APIJSON.
- **reviseRequest / decision**: modifica la solicitud o aprueba/rechaza.
- **bindRequest**: tras code == 200, genera la plantilla y paramMap para las llamadas impulsadas por la UI.
- **requestResult / status**: retroalimentación de resultado y estado.
## Mecanismo de seguridad
El proyecto incluye un mecanismo de aprobación para operaciones sensibles. Las operaciones de lectura se ejecutan automáticamente; las operaciones de escritura (por defecto incluyen post, put, delete, gets, heads; se pueden sobrescribir mediante la variable de entorno SENSITIVE_METHODS) requieren que un administrador las apruebe en el panel Admin antes de ejecutarse. El panel de administración ofrece tres pestañas: Apply (solicitudes), Call logs (registros de llamadas) y Stats (estadísticas), y admite flujos de aprobación complejos para Access, Request, Document y Chain.
## Pila tecnológica y estructura del repositorio
- **Runtime**: Node.js 18+, Vite (frontend), Hono (servicio de API).
- **Capa de datos**: APIJSONBoot-MultiDataSource (o servicio compatible), ejecutándose en localhost:8080.
- **Módulos del repositorio**:
- `opendoubao`: orquestador + UI de chat (generación) + filtrado vinculado (estado estable).
- `opendoubao-admin`: aprobación de solicitudes de configuración; tras la aprobación, escribe en Access / Request / Document.
- `a2qpi/protocol`: sobre A2API 0.1, JSON Pointer, validadores y pruebas CRUD con fixtures.
- `a2qpi/runtime`: ApiJsonClient, HitlController, BoundExecutor.
## Inicio rápido
`cd ~/a2api`
`cp .env.example .env`
`npm install`
`npm test`
`npm run build`
`npm run dev`
Al arrancar, el cliente se ejecuta en http://localhost:5173, el servicio API en http://localhost:3000 y el panel de administración se inicia con `npm run dev:admin` en http://localhost:5174.
## Configuración y extensión
Los usuarios pueden iniciar sesión o registrarse en Login (esquina superior derecha) y configurar AI Model, Base URL y API Key. También pueden lanzar consultas rápidas mediante accesos directos, por ejemplo "List the latest 3 moments with authors". Opcionalmente se puede definir OPENAI_API_KEY en .env para habilitar la fase bootstrap asistida por LLM; si no está definida, las reglas de intención integradas reconocen entidades como User, Moment y Comment (en chino o inglés).
El proyecto incluye una amplia variedad de tablas de datos de demostración (User, Moment, Comment y también empleados, actividades, chat, noticias, información, blogs, artículos, videos, música, productos, pedidos, direcciones de envío, categorías, etc.). Tras importarlas hay que recargar Access/Request. Las operaciones de escritura suelen requerir una sesión iniciada (@role OWNER/LOGIN); en la fase MVP se genera la solicitud y se muestra la interfaz HITL de aprobación/rechazo.
## Interfaz de automatización del Agent
El proyecto expone la interfaz de automatización a2apiAgent. Admite la invocación de métodos como switchTab y debug mediante JavaScript, permite especificar una URL y un cuerpo de solicitud JSON y enviarlo automáticamente, y también puede cargar un iframe y enviar solicitudes de forma automática. Así se facilita su integración en pruebas automatizadas o flujos de trabajo.
## Planificación de la segunda fase
La sincronización entre dispositivos (importación/exportación de tablas de base de datos o archivos) está planificada en el diseño, pero aún no se ha implementado.
## Información del proyecto
El autor es TommyLemon. El proyecto está alojado en GitHub (open-doubao-ai/OpenDoubao). Las consultas técnicas pueden plantearse mediante Issues y las contribuciones de código mediante Pull Requests.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.