データベース
永続化されるデータは、すべて backend/.env の DB_URL で選んだ 1 つのリレーショナルデータベースに入ります。
| 種類 | DB_URL | 備考 |
|---|---|---|
| SQLite(既定) | sqlite:///a2flow.db | 設定不要のローカルファイル |
| PostgreSQL | postgresql://user:password@host:5432/a2flow | Docker Compose 構成で使用 |
非同期ドライバの接尾辞(aiosqlite と asyncpg)は自動で付きます。スキーマの変更はバージョン管理された Alembic のマイグレーションとして追跡し、起動時に自動適用します。アプリを再デプロイする(コンテナを再起動する)ことが未適用のマイグレーションを走らせる操作なので、別途マイグレーション手順を踏む必要はありません。
複数レプリカのバックエンドを協調させているのもこのデータベースです。エージェントの実行は、SSE ストリームが続くあいだ PostgreSQL のアドバイザリロックを保持します。そのため 1 つの会話が同時に 2 つのレプリカから動かされることはありません。これが何を守っているのか、そしてコネクションプールにどんな制約を課すのかは水平スケーリングを参照してください。
何が入っているか
| テーブル | 内容 |
|---|---|
users | アプリケーションのユーザーと、付与されたロール。ユーザーとグループを参照 |
auth_sessions | サーバー側のログインセッション |
login_failures | 直近のサインインの失敗。繰り返しの推測からアカウントをロックするために数えます。1 日より古い行は削除されます |
impersonation_events | 代理ログインの監査証跡 |
agent_skills | Agent Skill の定義と、クローン元のリポジトリ |
mcp_servers | 登録済みの MCP サーバーと、その接続方法 |
knowledge_bases、knowledge_sources、knowledge_pages | ナレッジベース。アップロードした文書と登録した URL、そこから書かれたページ |
secrets | 名前付きの認証情報のまとまり。ローカルで暗号化するか、Vault を参照します |
workflows | ワークフローの定義とライフサイクルの状態 |
workflow_task_templates | ワークフローの、あらかじめ設計されたタスクの一覧 |
workflow_published_versions | 公開時点で固めた設計。modified のワークフローはこれに対して実行されます |
workflow_executions | 実行ごとに 1 行。実行時点のワークフローとスキルのメタデータのスナップショットつき |
workflow_tasks | 実行が持つ個々のタスク。テンプレートからコピーされます |
workflow_task_tool_bindings | タスクに紐づけられた MCP ツール |
message_meta | 2 種類の共有チャットの、メッセージごとの情報。誰が送ったか、そのときどのタスクが進行中だったか |
ワークフローを削除するとテンプレートも一緒に消えますが、過去の実行は残ります。実行は設計の一部ではなく、何が起きたかの記録だからです。