BluePeriod Docs
開発

ツールアーキテクチャ概要

ツールアーキテクチャ概要

BluePeriodのAIエージェント(内製・MCP)で使用されるツールの定義場所と構造を説明します。


1. ツールの二層構造

BluePeriodのツールは、役割に応じて2つの場所に定義されています:

next-app/src/
├── ai/agents/tools/          # エージェント汎用ツール(インフラ)
└── lib/features/*/tools.ts   # Feature層ツール(ビジネスロジック)

2. エージェント汎用ツール (ai/agents/tools/)

役割: エージェントのインフラストラクチャに関わる機能。Feature層には属さない汎用的な機能。

ツールファイルツール名説明
currentTimeTool.tscurrent_time現在時刻の取得
finishTaskTool.tsfinish_taskタスクの完了通知
memoryTools.tslist_memory_dates, read_memories_by_date長期メモリへのアクセス
openUrlTool.tsopen_urlURLを開いてコンテンツ取得
recordThoughtTool.tsrecord_thought短い思考・内省の記録(スキーマは thought のみ)
reportProgressTool.tsreport_progress進捗報告
webSearchTool.tsweb_searchWeb検索
responseTool.tsresponseユーザーへのメイン回答送信
planTool.tsplan_task実行計画(ロードマップ)の提示

計9ツール

これらはFeature(プロジェクト・執筆等)とは無関係な、エージェント自体の動作に必要な機能です。


3. Feature層ツール (lib/features/*/tools.ts)

役割: BluePeriodの機能(プロジェクト、執筆、キャラクター等)に関わるツール。

3.1. Projects (lib/features/projects/tools.ts)

ツール名説明
blueperiod_list_projects全プロジェクトの一覧
blueperiod_get_projectプロジェクトデータ取得(軽量版)
blueperiod_get_metadataメタデータのみ取得
blueperiod_get_outlineプロット構造のツリー表示
blueperiod_create_project新規プロジェクト作成
blueperiod_update_project_metadataメタデータ更新
blueperiod_delete_projectプロジェクト削除
blueperiod_get_plot_translationsプロット翻訳データ取得

計8ツール

3.2. Editorial - Plot (lib/features/editorial/tools/plot-tools.ts)

ツール名説明
blueperiod_get_raw_plotプロット構造のJSON取得
blueperiod_get_plot_context特定項目のコンテキスト取得
blueperiod_create_plot階層構造JSONからプロットツリーを一括構築
blueperiod_create_plot_itemプロット項目の追加
blueperiod_update_plot_itemプロット項目の属性更新
blueperiod_delete_plot_itemプロット項目の削除
blueperiod_edit_plot_structuredAdit形式(JSONパッチ)でセクション本文を編集
blueperiod_edit_plot_delimiterSEARCH/REPLACEブロック形式でセクション本文を編集

計8ツール

3.3. Editorial - Manuscript (lib/features/editorial/tools/manuscript-tools.ts)

ツール名説明
blueperiod_get_raw_manuscript原稿テキスト取得
blueperiod_create_manuscriptセクションに原稿を新規作成(upsert)
blueperiod_edit_manuscript_structuredAdit形式(JSONパッチ)で原稿を編集
blueperiod_edit_manuscript_delimiterSEARCH/REPLACEブロック形式で原稿を編集
blueperiod_update_manuscript原稿の完全上書き

計5ツール

3.4. Editorial - Writing Prompts (lib/features/editorial/tools/writing-prompt-tools.ts)

ツール名説明
blueperiod_list_writing_prompts執筆プロンプト一覧
blueperiod_get_writing_prompt執筆プロンプト全文取得
blueperiod_create_writing_prompt執筆プロンプト作成
blueperiod_update_writing_prompt執筆プロンプト属性更新
blueperiod_delete_writing_prompt執筆プロンプト削除
blueperiod_edit_writing_prompt_structuredAdit形式(JSONパッチ)でプロンプト本文を編集
blueperiod_edit_writing_prompt_delimiterSEARCH/REPLACEブロック形式でプロンプト本文を編集

計7ツール

3.5. Characters (lib/features/characters/tools.ts)

ツール名説明
blueperiod_list_characters全キャラクター一覧
blueperiod_get_characterキャラクター取得
blueperiod_create_characterキャラクター作成
blueperiod_update_characterキャラクター更新
blueperiod_delete_characterキャラクター削除
blueperiod_edit_character_structuredAdit形式(JSONパッチ)でキャラクタープロンプトを編集
blueperiod_edit_character_delimiterSEARCH/REPLACEブロック形式でキャラクタープロンプトを編集

計7ツール

3.6. Prompt Assets (lib/features/prompts/asset-tools.ts)

ツール名説明
blueperiod_list_prompt_assetsプロンプト資産一覧
blueperiod_get_prompt_assetプロンプト資産取得
blueperiod_create_prompt_assetプロンプト資産作成
blueperiod_update_prompt_assetプロンプト資産更新
blueperiod_delete_prompt_assetプロンプト資産削除
blueperiod_edit_prompt_asset_structuredAdit形式(JSONパッチ)で資産本文を編集
blueperiod_edit_prompt_asset_delimiterSEARCH/REPLACEブロック形式で資産本文を編集

計7ツール

3.7. Chat - Artifacts (lib/features/chat/artifact-tools.ts)

ツール名説明
blueperiod_list_artifactsアーティファクト一覧
blueperiod_create_artifactアーティファクト作成
blueperiod_get_artifactアーティファクトの全文取得
blueperiod_update_artifactアーティファクトのメタデータ更新
blueperiod_delete_artifactアーティファクト削除
blueperiod_toggle_artifactアーティファクトの有効/無効切替
blueperiod_edit_artifact_structuredAdit形式(JSONパッチ)でアーティファクトを編集
blueperiod_edit_artifact_delimiterSEARCH/REPLACEブロック形式でアーティファクトを編集

計8ツール

3.8. System (lib/features/system/tools.ts)

ツール名説明
blueperiod_get_global_storeグローバルストア取得
blueperiod_set_global_storeグローバルストア設定

計2ツール

3.9. Published Projects (lib/features/projects/publishedTools.ts)

Published作品(Explore/公開済みプロジェクト)の読み取り専用ツール。Supabaseのpublished_projectsテーブルにアクセスし、getDisplayMetadata / getDisplayTags / getLocalizationLanguagesによる多言語対応を内蔵する。HITL(Human-in-the-Loop)確認は不要。

ツール名説明
blueperiod_list_published_projects公開作品一覧(検索・タグフィルタ対応、言語指定でローカライズ済みメタデータ返却)
blueperiod_get_published_project公開作品のメタデータ取得(言語指定でローカライズ済み)
blueperiod_get_published_contentマニュスクリプトコンテンツ取得(言語フィルタ対応)
blueperiod_get_published_toc目次(プロット構造 + story ID + 文字数 + 対応言語)取得

計4ツール


4. 統合方法

4.1. Feature層ツールの統合

lib/features/editorial/tools/index.ts で全てのFeature層ツールが統合されます:

export const createEditorialTools = (get: Getter, set: Setter, t: TFunction, toastFn: typeof toast) => {
  return [
    ...createPlotTools(get, set, t, toastFn),
    ...createManuscriptTools(get, set, t, toastFn),
    ...createWritingPromptTools(get, set),
    ...createCharacterTools(get, set),
    ...createProjectTools(get, set),
    ...createPromptAssetTools(get, set),
    ...createSystemTools()
  ];
};

4.2. 内製エージェントでの使用

ai/agents/assistantGraph.ts でエージェント汎用ツールとFeature層ツールが結合されます。用途別にツールセットが分割されており、generalTools(artifact操作のみ)と writingToolsFull(執筆ツールを含むフルセット)があります。

4.3. MCPブリッジでの使用

hooks/useMcpBridge.ts が外部MCPリクエストを受け付け、Service層のメソッドを呼び出します。MCPブリッジはビジネスロジックを持たず、Service呼び出しのみを行う薄いディスパッチャとして機能します。


5. ツール数の合計

カテゴリツール数
エージェント汎用9
Feature層(Projects)8
Feature層(Published Projects)4
Feature層(Plot)8
Feature層(Manuscript)5
Feature層(Writing Prompts)7
Feature層(Characters)7
Feature層(Prompt Assets)7
Feature層(Artifacts)8
Feature層(System)2
合計65ツール

6. 命名規則

6.1. blueperiod_ プレフィックス

Feature層ツールはMCPとの互換性のため、全て blueperiod_ プレフィックスを持ちます。

6.2. ツール名フォーマット

Feature層ツールの命名は blueperiod_<operation>_<domain>[_<format>] パターンに従います:

  • operation: list, get, create, update, edit, delete, toggle
  • domain: plot, manuscript, writing_prompt, character, prompt_asset, artifact, project, published_project, global_store
  • format: structured(Adit JSONパッチ), delimiter(SEARCH/REPLACEブロック)

6.3. エージェント汎用ツール

プレフィックスなし(web_search, finish_task 等)


7. 新しいツールの追加方法

7.1. Feature層ツールを追加する場合

  1. 対応するFeatureディレクトリの tools.ts にDynamicStructuredTool定義を追加
  2. Service層にビジネスロジックメソッドを追加
  3. lib/features/editorial/tools/index.ts に統合(必要な場合)
  4. MCPブリッジ(useMcpBridge.ts)にcase文を追加

7.2. エージェント汎用ツールを追加する場合

  1. ai/agents/tools/ に新しいツールファイルを作成
  2. ai/agents/assistantGraph.ts でインポートして使用

関連ドキュメント:

On this page