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.