AiSpect コア設計理念とアーキテクチャ概要
Java 17+ およびマルチアーキテクチャのサポートを目指し、AiSpect はマルチモジュール (Multi-Module) エンジニアリング構造を採用し、コアロジックと外部コンテナ (Spring など) との厳密な分離を確保しています。その中核となる目標は、クロスアーキテクチャでアノテーション駆動の AI Agent 注入システムを実装することです。AOP (アスペクト指向プログラミング) のプロキシパターンを通じて、実行前後の固定化されたビジネスロジックと柔軟な AI 大規模モデルの推論をシームレスに接続し、最終的に Agent オーケストレーションプロセスのシステムアシスタントとして機能します。
1. コアドメインとアーキテクチャの階層
アーキテクチャ全体は、主に 4 つの階層に分かれています。
- 統合レイヤー (Integration Layer): さまざまな
Engineアダプター (Spring や純粋な SE エンジンなど) を介して、コンテナ起動時に@AiAgentを持つターゲットクラスをスキャンし、プロキシオブジェクトの生成と置換をトリガーします。 - ウィービング&プロキシレイヤー (Weaving & Proxy Layer): 特定のコンテナに依存しないコアプロキシロジック。
ProxyFactoryを通じてプロキシオブジェクトを生成し、Interceptorを通じてビジネスメソッドの実行をインターセプトし、実行コンテキスト (AiInvocationContext) を構築します。 - Agent オーケストレーションレイヤー (Agent Orchestration Layer): すべての AI 処理ロジックの基盤 (
Agentコントラクト)。実行前後にパラメータをどのように修正し、結果を分析し、コンテキストを維持するかを決定します。 - 基盤レイヤー (Foundation Layer): 特定の基盤モデルの
AiClient、および統一されたルーティングとスケジューリング機能を提供するCore Engineと接続します。
コア実行フロー
- インターセプトトリガー: ユーザーがプロキシオブジェクトのメソッドを呼び出します。
- 前処理 (Before): アノテーション設定を抽出し、
Agent.preProcess(Context)を呼び出します。AI 推論を通じて修正された入力パラメータを生成します。 - ターゲット実行 (Invoke): 修正されたパラメータを使用して、実際のターゲットオブジェクトの元のメソッドを呼び出します。
- 後処理 (After):
Agent.postProcess(Result, Context)を呼び出します。AI が戻り値を再度要約または処理します。 - リターン: 最終的に処理された結果を呼び出し元に返します。
2. モジュール分割と依存関係トポロジ
AiSpect は厳密な単方向依存性の原則に従い、外部モジュール (Spring アダプターなど) が内部のコアロジックを逆方向に汚染することを絶対に防ぎます。基盤ベース、ネットワークレイヤー、およびインターセプトエンジンは、統合された Core ランタイムの巨大モジュールにマージされます。
aispect-agents: 組み込み AI Agent ライブラリ (純粋なビジネスコントラクト、依存関係ゼロ)。aispect-core: 統合基盤 (Common 例外とモデル、AI Client ネットワーク通信、プロキシエンジンを含む)。依存関係チェーンの最下層に位置し、いかなる環境や特定のビジネスコンポーネントにも依存しません。engines:*: ユーザー統合のための唯一のエントリポイント (例:aispect-engine-spring,aispect-engine-se)。環境ライフサイクルのマウントと自動ウィービングを提供するためにaispect-coreに依存しています。- 周辺モジュール:
aispect-bom(依存関係管理),aispect-test(専用テスト),examples(ベストプラクティス),aispect-website(ポータルサイト)。
3. Unit Agent から Graph ワークフローへ
AiSpect は、ローカルな連携とグローバルなオーケストレーションという 2 つの Agent の役割を明確に区別しています。
Unit Agent
中核となる責任は、Java プログラムとの連携です。AI の介入は主にアノテーションのインターセプトによって実現され、関数の入力パラメータと戻り値を変更します。このアプローチにより、全体のプロセス構造を破壊することなく、AI をワークフローの特定のステップに限定し、ローカルなインテリジェントな強化に焦点を当てます。
Graph Agent とワークフロー
複雑なシナリオでは、静的なアノテーションのみに依存して動的なオーケストレーションのニーズを満たすことはできません。AiSpect は、ワークフローのオーケストレーションにグラフアルゴリズム (Graph Algorithms) ロジックを導入しています。
Graph Agent の中核となる責任は、Java プログラムの編成です。
- メインプロセスまたはルーティングエントリポイントをインターセプトし、ワークフローを開始するための命令を認識します。
- グラフ内のノード (Node) は、
Graph Agentによって割り当てられるリソースになります。基盤となるシステムは、グラフエンジンを介してこれらのノードを動的に解析、スケジュール、および実行し、単一ポイントとグローバルのインテリジェンスの統一されたアーキテクチャを実現します。