ツールアーキテクチャ概要
ツールアーキテクチャ概要
BluePeriodのAIエージェント(内製・MCP)で使用されるツールの定義場所と構造を説明します。
1. ツールの二層構造
BluePeriodのツールは、役割に応じて2つの場所に定義されています:
next-app/src/
├── ai/agents/tools/ # エージェント汎用ツール(インフラ)
└── lib/features/*/tools.ts # Feature層ツール(ビジネスロジック)2. エージェント汎用ツール (ai/agents/tools/)
役割: エージェントのインフラストラクチャに関わる機能。Feature層には属さない汎用的な機能。
| ツールファイル | ツール名 | 説明 |
|---|---|---|
currentTimeTool.ts | current_time | 現在時刻の取得 |
finishTaskTool.ts | finish_task | タスクの完了通知 |
memoryTools.ts | list_memory_dates, read_memories_by_date | 長期メモリへのアクセス |
openUrlTool.ts | open_url | URLを開いてコンテンツ取得 |
recordThoughtTool.ts | record_thought | 短い思考・内省の記録(スキーマは thought のみ) |
reportProgressTool.ts | report_progress | 進捗報告 |
webSearchTool.ts | web_search | Web検索 |
responseTool.ts | response | ユーザーへのメイン回答送信 |
planTool.ts | plan_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_structured | Adit形式(JSONパッチ)でセクション本文を編集 |
blueperiod_edit_plot_delimiter | SEARCH/REPLACEブロック形式でセクション本文を編集 |
計8ツール
3.3. Editorial - Manuscript (lib/features/editorial/tools/manuscript-tools.ts)
| ツール名 | 説明 |
|---|---|
blueperiod_get_raw_manuscript | 原稿テキスト取得 |
blueperiod_create_manuscript | セクションに原稿を新規作成(upsert) |
blueperiod_edit_manuscript_structured | Adit形式(JSONパッチ)で原稿を編集 |
blueperiod_edit_manuscript_delimiter | SEARCH/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_structured | Adit形式(JSONパッチ)でプロンプト本文を編集 |
blueperiod_edit_writing_prompt_delimiter | SEARCH/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_structured | Adit形式(JSONパッチ)でキャラクタープロンプトを編集 |
blueperiod_edit_character_delimiter | SEARCH/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_structured | Adit形式(JSONパッチ)で資産本文を編集 |
blueperiod_edit_prompt_asset_delimiter | SEARCH/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_structured | Adit形式(JSONパッチ)でアーティファクトを編集 |
blueperiod_edit_artifact_delimiter | SEARCH/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層ツールを追加する場合
- 対応するFeatureディレクトリの
tools.tsにDynamicStructuredTool定義を追加 - Service層にビジネスロジックメソッドを追加
lib/features/editorial/tools/index.tsに統合(必要な場合)- MCPブリッジ(
useMcpBridge.ts)にcase文を追加
7.2. エージェント汎用ツールを追加する場合
ai/agents/tools/に新しいツールファイルを作成ai/agents/assistantGraph.tsでインポートして使用
関連ドキュメント:
- 12_ai_agent_architecture - 内製エージェントのアーキテクチャ
- 18_agent_tool_integration_guide - ツール統合ガイド
- 19_mcp_architecture - MCPアーキテクチャ