这个项目能做什么
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 贡献代码。
评论
0 评分人数达到10人后显示
登录后参与讨论。