Sobre o projeto
OpenDoubao é uma plataforma de código aberto de geração de aplicações com AI Agent, posicionada como uma alternativa de código aberto ao Doubao Work. Seu conceito central é: por meio de chat em linguagem natural, gerar improvisadamente aplicações web de alta disponibilidade (front-end e back-end) e, nas interações subsequentes, não depender mais de grandes modelos de linguagem, garantindo chamadas de API seguras, rápidas e estáveis.
## Arquitetura Central: Experiência em Duas Fases
O projeto adota um design exclusivo de duas fases:
Primeira fase — Fase de geração (chat / IA ou regras): O usuário descreve a necessidade por meio de conversa, o AI Agent gera a interface de UI correspondente e propõe uma solicitação APIJSON. A solicitação é validada e executada; após o sucesso, um bindRequest é emitido, vinculando o template e o mapeamento de parâmetros (paramMap) aos controles de UI.
Segunda fase — Fase estável (sem LLM): Quando o usuário modifica posteriormente condições de filtro, forma de ordenação, parâmetros de paginação etc., o BoundExecutor combina diretamente o paramMap no bodyTemplate, chamando a interface APIJSON via HTTP POST, sem consumir Tokens, com resposta rápida e estável.
## Protocolo Agent-to-API (A2API)
O projeto define o protocolo A2API 0.1, com formato de envelope { "version": "0.1", "type": { ... } } (onde type é o tipo da mensagem), contendo os seguintes tipos de mensagem:
- proposeRequest: candidata chamada APIJSON
- reviseRequest / decision: modifica solicitação ou aprova/rejeita
- bindRequest: após code == 200, gera template e paramMap para chamadas orientadas por UI
- requestResult / status: resultado e feedback de status
## Mecanismo de Segurança
O projeto inclui um mecanismo integrado de aprovação para operações sensíveis. Operações de leitura são executadas automaticamente, enquanto operações de escrita (por padrão: post, put, delete, gets, heads; configuráveis pela variável de ambiente SENSITIVE_METHODS) só são concluídas após aprovação do administrador no painel Admin. O painel administrativo possui três abas: Apply (formulário de solicitação), Call logs (logs de chamadas) e Stats (estatísticas), e suporta fluxos de aprovação complexos para Access, Request, Document e Chain.
## Stack de Tecnologia e Estrutura do Repositório
- Runtime: Node.js 18+, Vite (frontend), Hono (API service)
- Camada de dados: APIJSONBoot-MultiDataSource (ou serviço compatível), executando em localhost:8080
- Módulos do repositório:
- opendoubao: orquestrador + chat UI (geração) + filtros vinculados (fase estável)
- opendoubao-admin: configuração, solicitação e aprovação; após aprovação, grava Access / Request / Document
- a2qpi/protocol: envelope A2API 0.1, JSON Pointer, validadores, testes com fixtures CRUD
- a2qpi/runtime: ApiJsonClient, HitlController, BoundExecutor
## Início Rápido
cd ~/a2api
cp .env.example .env
npm install
npm test
npm run build
npm run dev
Após a inicialização, o cliente roda em http://localhost:5173, o serviço de API em http://localhost:3000, e o painel administrativo é iniciado via npm run dev:admin em http://localhost:5174.
## Configuração e Extensão
Os usuários podem fazer login/registro no botão Login no canto superior direito e configurar AI Model, Base URL e API Key. Há suporte a consultas rápidas por meio de chips de atalho (por exemplo, "List the latest 3 moments with authors"). Opcionalmente, é possível definir OPENAI_API_KEY no .env para habilitar o Bootstrap assistido por LLM; quando não configurado, as regras internas de intenção ainda reconhecem entidades como User, Moment, Comment (em chinês ou inglês).
O projeto oferece diversas tabelas de dados demo (User, Moment, Comment, além de funcionários, eventos, chat, notícias, informações, blog, artigos, vídeos, músicas, produtos, pedidos, endereços de entrega, categorias etc.). Após a importação, é necessário recarregar Access/Request. Operações de escrita geralmente exigem uma sessão autenticada (@role OWNER/LOGIN); na fase MVP, a solicitação é gerada e uma interface HITL de aprovação/rejeição é exibida.
## Interface de Automação do Agent
O projeto expõe a interface de automação a2apiAgent, que suporta métodos como switchTab e debug via JavaScript. É possível especificar URL, corpo da solicitação JSON e enviar automaticamente, ou carregar um iframe e enviar solicitações automaticamente, facilitando a integração em testes automatizados ou fluxos de trabalho.
## Planejamento da Segunda Fase
A sincronização entre dispositivos (importação/exportação de tabelas de banco de dados ou arquivos) já está planejada no design, mas ainda não foi implementada.
## Informações do Projeto
O autor é TommyLemon, e o projeto está hospedado no GitHub (open-doubao-ai/OpenDoubao). Contribuições são bem-vindas via Pull Requests, e dúvidas técnicas podem ser discutidas pelas Issues.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.