这个项目能做什么

OpenDoubao 是一个开源的 AI Agent 应用生成平台,定位为豆包工作(Doubao Work)的开源替代方案。其核心理念是:通过自然语言聊天,即兴生成高可用的网页前后端应用,并在后续交互中不再依赖大语言模型,从而实现安全、快速、稳定的 API 调用。 ## 核心架构:两阶段体验 项目采用独特的两阶段设计: **第一阶段——生成阶段(聊天 / AI 或规则)**:用户通过对话描述需求,AI Agent 生成对应的 UI 界面并提出 APIJSON 请求。请求经过校验后执行,成功后发出 bindRequest,将模板与参数映射(paramMap)绑定到 UI 控件上。 **第二阶段——稳态阶段(无 LLM)**:用户后续修改筛选条件、排序方式、分页参数等操作时,BoundExecutor 直接将 paramMap 合并进 bodyTemplate,通过 HTTP POST 调用 APIJSON 接口,完全不消耗 Token,响应速度快且稳定。 ## Agent-to-API 协议(A2API) 项目定义了 A2API 0.1 协议,信封格式为 `{ "version": "0.1", "<type>": { ... } }`,包含以下消息类型: - **proposeRequest**:候选 APIJSON 调用 - **reviseRequest / decision**:修改请求或批准/拒绝 - **bindRequest**:code == 200 后产出模板与 paramMap,供 UI 驱动调用 - **requestResult / status**:结果与状态反馈 ## 安全机制 项目内置了敏感操作审批机制。读操作自动执行,而写操作(默认包括 post、put、delete、gets、heads,可通过 SENSITIVE_METHODS 环境变量覆盖)需要管理员在 Admin 后台审批通过后才能调通。管理后台提供 Apply(申请表)、Call logs(调用日志)和 Stats(统计)三个页签,支持对 Access、Request、Document、Chain 的复杂审批流程。 ## 技术栈与仓库结构 - **运行时**:Node.js 18+,Vite(前端)、Hono(API 服务) - **数据层**:APIJSONBoot-MultiDataSource(或兼容服务),运行在 localhost:8080 - **仓库模块**: - `opendoubao`:编排器 + 聊天 UI(生成)+ 绑定筛选(稳态) - `opendoubao-admin`:配置申请审批,批准后写入 Access / Request / Document - `a2qpi/protocol`:A2API 0.1 信封、JSON Pointer、校验器、CRUD 夹具测试 - `a2qpi/runtime`:ApiJsonClient、HitlController、BoundExecutor ## 快速开始 ```bash cd ~/a2api cp .env.example .env npm install npm test npm run build npm run dev ``` 启动后客户端运行在 http://localhost:5173,API 服务在 http://localhost:3000,管理后台通过 `npm run dev:admin` 启动在 http://localhost:5174。 ## 配置与扩展 用户可在右上角 Login 登录/注册,并配置 AI Model、Base URL、API Key。支持通过快捷芯片(如「List the latest 3 moments with authors」)快速发起查询。可选在 .env 中设置 OPENAI_API_KEY 以启用 LLM 辅助 Bootstrap;未配置时,内置意图规则仍可识别 User / Moment / Comment 等实体(中英文均可)。 项目提供丰富的 Demo 数据表(User、Moment、Comment 以及员工、活动、聊天、新闻、资讯、博客、文章、视频、音乐、商品、订单、收件地址、分类等),导入后需重载 Access/Request。写操作通常需要已登录会话(@role OWNER/LOGIN),MVP 阶段会生成请求并展示 HITL 批准/拒绝界面。 ## Agent 自动化接口 项目暴露了 a2apiAgent 自动化接口,支持通过 JavaScript 调用 switchTab、debug 等方法,可指定 URL、JSON 请求体并自动发送,也可加载 iframe 并自动发送请求,便于集成到自动化测试或工作流中。 ## 二期规划 跨设备同步(数据库表或文件导入导出)已在设计方案中规划,尚未实现。 ## 项目信息 作者为 TommyLemon,项目托管在 GitHub(open-doubao-ai/OpenDoubao),欢迎通过 Issue 交流技术问题、通过 Pull Request 贡献代码。