このプロジェクトについて

OpenDoubaoは、オープンソースのAIエージェントアプリケーション生成プラットフォームであり、豆包工作(Doubao Work)のオープンソース代替として位置づけられています。その核心理念は、自然言語でのチャットを通じて高可用性のWebフロントエンド/バックエンドアプリケーションを即興で生成し、その後の対話では大規模言語モデルに依存せず、安全・高速・安定したAPI呼び出しを実現することです。 ## コアアーキテクチャ:2段階エクスペリエンス このプロジェクトは独自の2段階設計を採用しています: **第1段階——生成段階(チャット / AIまたはルール)**:ユーザーが対話を通じて要件を説明すると、AIエージェントが対応するUIインターフェースを生成し、APIJSONリクエストを提案します。リクエストは検証後に実行され、成功するとbindRequestが発行され、テンプレートとパラメータマッピング(paramMap)がUIコントロールにバインドされます。 **第2段階——定常段階(LLMなし)**:ユーザーがその後、フィルタ条件、ソート方法、ページネーションパラメータなどを変更する操作を行う際、BoundExecutorがparamMapをbodyTemplateに直接マージし、HTTP POSTでAPIJSONインターフェースを呼び出します。トークンを一切消費せず、応答速度が速く安定しています。 ## 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(統計)の3つのタブがあり、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などのエンティティ(中英文対応)を認識できます。 プロジェクトには豊富なデモデータテーブル(User、Moment、Comment、および従業員、イベント、チャット、ニュース、情報、ブログ、記事、ビデオ、音楽、商品、注文、配送先住所、カテゴリなど)が用意されており、インポート後はAccess/Requestのリロードが必要です。書き込み操作は通常、ログイン済みセッション(@role OWNER/LOGIN)が必要で、MVP段階ではリクエストを生成し、HITLの承認/拒否画面を表示します。 ## Agent自動化インターフェース プロジェクトはa2apiAgent自動化インターフェースを公開しており、JavaScriptを通じてswitchTab、debugなどのメソッドを呼び出すことができます。URL、JSONリクエストボディを指定して自動送信したり、iframeを読み込んで自動送信したりできるため、自動化テストやワークフローへの統合が容易です。 ## フェーズ2の計画 クロスデバイス同期(データベーステーブルまたはファイルのインポート/エクスポート)は設計案で計画されていますが、まだ実装されていません。 ## プロジェクト情報 作者はTommyLemonで、プロジェクトはGitHub(open-doubao-ai/OpenDoubao)でホストされています。技術的な質問はIssueで、コード貢献はPull Requestで歓迎します。