-
Notifications
You must be signed in to change notification settings - Fork 1.5k
ja develop dev config
LangBotはフロントエンドとバックエンドに分かれています。フロントエンドはVite + React Router + shadcnを使用して開発され、バックエンドはQuart(Flaskの非同期版)を使用して開発されています。
コードはpkgディレクトリにあり、ルートディレクトリのmain.pyファイルによって起動されます。
依存関係をインストールします。依存関係の管理にはuvを使用します。
pip install uv
uv sync --devバックエンドを起動します
uv run main.pyこの時点で、設定ファイルはdata/config.yamlファイルに自動的に生成されます。
コードはwebディレクトリにあり、Node.jsとpnpmが必要です。
.env.exampleを.envにコピーして、値を入力します。
- Linuxおよびその他の環境での使用
cp .env.example .env- Windows環境での使用
copy .env.example .env依存関係をインストールしてフロントエンドを起動します
pnpm install
pnpm dev
# pnpmがインストールされていない場合は、npmを使用して依存関係を解決して起動することもできます
npm install
npm run devその後、出力情報に従って、http://127.0.0.1:3000にアクセスして、スタンドアロンフロントエンドページを表示します。
Note
pnpm devを使用してローカルで起動すると、環境変数VITE_API_BASE_URLがフロントエンドによって自動的に使用され、フロントエンドがローカルで実行中のバックエンドの5300ポートにアクセスできるようになります。
本番環境では、フロントエンドは静的ファイルにプリコンパイルされ、バックエンドによって提供され、フロントエンドは同じドメインのバックエンドアドレスに自動的にアクセスします。
リポジトリにはlintとformatのチェックワークフローが含まれており、コードをプッシュすると自動的にチェックされます。pre-commitを設定して、コードをローカルで事前にチェックしてください。
uv run pre-commit install各インターフェースを開発する前に、APIFoxでAPIドキュメントを作成します。APIドキュメント(中国語)を参照してください。
LangBotはAlembicを使用してデータベースマイグレーションを管理しており、SQLiteとPostgreSQLの両方をシームレスにサポートします。データベース固有の分岐コードは不要です。
src/langbot/pkg/persistence/alembic/versions/
autogenerate を使用してマイグレーションスクリプトを自動生成することを推奨します。ORMモデルとデータベーススキーマの差分を比較して生成します:
# プロジェクトルートで実行(data/config.yaml が必要)
uv run python -m langbot.pkg.persistence.alembic_runner autogenerate "変更内容の説明"生成されたファイルは src/langbot/pkg/persistence/alembic/versions/ に作成されます。生成されたスクリプトを確認・編集し、変更が正しいことを確認してからコミットしてください。
Note
autogenerateは列の追加/削除、テーブルの変更、型の変更などを自動検出できます。ただし、データマイグレーション(JSONフィールドの内容変更など)は、生成されたスクリプトに手動でコードを追加する必要があります。
手動でマイグレーションファイルを作成することもできます。命名規則 NNNN_description.py に従ってください:
"""マイグレーションの説明
Revision ID: 0003_add_bot_description
Revises: 0002_sample
Create Date: 2026-04-08
"""
from alembic import op
import sqlalchemy as sa
revision = '0003_add_bot_description'
down_revision = '0002_sample' # 前のマイグレーションのrevisionを指定
branch_labels = None
depends_on = None
def upgrade() -> None:
# スキーマ変更(SQLiteとPostgreSQLの両方で動作)
op.add_column('bots', sa.Column('description', sa.String(512), server_default=''))
def downgrade() -> None:
op.drop_column('bots', 'description')スキーマ変更(列の追加/削除、テーブル作成)
def upgrade() -> None:
# 列を追加
op.add_column('table_name', sa.Column('new_col', sa.String(255), server_default=''))
# 新しいテーブルを作成
op.create_table(
'new_table',
sa.Column('id', sa.Integer, primary_key=True, autoincrement=True),
sa.Column('name', sa.String(255), nullable=False),
)[!NOTE]
env.pyでrender_as_batch=Trueが設定されているため、AlembicはSQLiteのALTER TABLE制限を自動的に処理します(一時テーブルによる再構築)。データベースタイプによる分岐は不要です。
データマイグレーション(データの読み取りと変更)
import json
def upgrade() -> None:
conn = op.get_bind()
rows = conn.execute(sa.text("SELECT uuid, config FROM pipelines")).fetchall()
for row in rows:
config = json.loads(row[1]) if isinstance(row[1], str) else row[1]
config.setdefault('ai', {})['new_key'] = 'default_value'
conn.execute(
sa.text("UPDATE pipelines SET config = :cfg WHERE uuid = :uuid"),
{"cfg": json.dumps(config), "uuid": row[0]}
)マイグレーションはLangBot起動時に自動的に実行されます。手動コマンドは不要です:
- 初回起動時、ベースラインバージョンが自動的にスタンプされます(既存データベースのマーキング)
- 以降の起動時、未適用のすべてのマイグレーションが適用されます(
alembic upgrade head)
リポジトリにはtest-migrations.ymlワークフローが含まれており、persistence/関連ファイルが変更された際に、SQLiteとPostgreSQLの両方でマイグレーションスクリプトが自動テストされます。
# マイグレーションを自動生成(ORMモデルとDBの差分を比較)
uv run python -m langbot.pkg.persistence.alembic_runner autogenerate "説明"
# データベースをアップグレード
uv run python -m langbot.pkg.persistence.alembic_runner upgrade
# 現在のリビジョンを表示
uv run python -m langbot.pkg.persistence.alembic_runner current
# リビジョンをスタンプ(マイグレーションを実行せず)
uv run python -m langbot.pkg.persistence.alembic_runner stamp headAutomatically synchronized from langbot-app/langbot-wiki.
简体中文
指南
开发者
- 插件开发
- 插件 SDK API
- 核心开发
API 参考
- Service API
English
Guides
Developers
-
Plugin Development
- Plugin Development Tutorial
- Completing Plugin Configuration Information
- Plugin Directory Structure
- Component Development
- Code Style Guide
- Migration Guide
- Publish Plugin
- Plugin SDK API
- Core Development
API Reference
- Service API