Skip to main content

swarm_engine_core/learn/
mod.rs

1//! Learn Module - 学習系 Domain の分離
2//!
3//! ## 設計思想
4//!
5//! **Engine (Core) と Learn の責務を明確に分離する。**
6//!
7//! - **Core (Engine)**: ActionEvent を発行、基本統計を管理
8//! - **Learn**: ActionEvent を受け取り、学習パターンを分析
9//!
10//! ## Model Layer
11//!
12//! ```text
13//! Model (base)
14//!   ├── Scorable      → 行動選択に使用(UCB1, Thompson, Greedy)
15//!   └── Parametric    → 戦略設定に使用(Orchestrator初期化)
16//! ```
17//!
18//! ## モデル種類
19//!
20//! | モデル            | 責務                           | 生存期間       |
21//! |-------------------|--------------------------------|----------------|
22//! | LearnedModel      | 行動選択スコア(遷移、N-gram等)| 1セッション    |
23//! | OptimalParamsModel| パラメータ最適化(ucb1_c等)    | 複数セッション |
24//!
25//! ## LoRA
26//!
27//! LoRA学習・適用は `lora` モジュールで管理。
28//! - `LoraTrainer`: LoRA学習の実行
29//! - `TrainedModel`: 学習済みLoRAアダプタ
30//! - `ModelApplicator`: llama-server への適用
31
32// Stats Model Layer (行動選択用統計モデル)
33pub mod stats_model;
34
35// Provider (Model へのアクセス層)
36mod provider;
37
38// Stats (統計データ)
39mod stats;
40
41// Extended modules
42pub mod component_learners;
43pub mod daemon;
44pub mod episode;
45pub mod facade;
46pub mod learn_model;
47pub mod learned_component;
48pub mod lora;
49pub mod offline;
50pub mod profile_adapter;
51pub mod profile_store;
52pub mod record;
53pub mod scenario_profile;
54pub mod scenario_registry;
55pub mod session_group;
56pub mod snapshot;
57pub mod store;
58pub mod training;
59pub mod trigger;
60
61// Re-exports: Stats Model Layer
62pub use stats_model::{
63    param_keys,
64    // Base trait and types
65    Model,
66    ModelMetadata,
67    ModelType,
68    ModelVersion,
69    OptimalParamsModel,
70    ParamValue,
71    Parametric,
72    // Capability traits
73    Scorable,
74    ScoreContext,
75    // Concrete models
76    ScoreModel,
77    ScoreQuery,
78    StatsModelId,
79};
80
81// Re-exports: Provider (Selection連携)
82pub use provider::{
83    ConfidenceMapProvider, LearnStatsProvider, LearnedProvider, LearningQuery, LearningResult,
84    NullProvider, ScoreModelProvider, SharedLearnedProvider,
85};
86
87// Re-exports: Stats
88pub use stats::{
89    ContextualActionStats, EpisodeTransitions, LearnStats, NgramStats, SelectionPerformance,
90    StrategyStats, StrategySwitchEvent,
91};
92
93// Re-exports: Snapshot
94pub use snapshot::{
95    // Functions
96    merge_snapshots,
97    // Implementations
98    FileSystemStorage,
99    // Core types
100    LearningSnapshot,
101    LearningStore,
102    MergeStrategy,
103    SessionId,
104    // Traits
105    SnapshotKey,
106    SnapshotMetadata,
107    SnapshotStorage,
108    TimeSeriesQuery,
109    Timestamp,
110    SNAPSHOT_VERSION,
111};
112
113// Re-exports: Offline
114pub use offline::{
115    ActionOrderSource, LearnedActionOrder, OfflineAnalyzer, OfflineModel, OptimalParameters,
116    RecommendedPath, StrategyConfig,
117};
118
119// Re-exports: Record
120pub use record::{
121    ActionRecord,
122    // DependencyGraph record
123    DependencyGraphRecord,
124    // Traits
125    FromRecord,
126    // LearnStats record
127    LearnStatsRecord,
128    LlmCallRecord,
129    // Core types
130    Record,
131    // Helpers
132    RecordStream,
133    // StrategyAdvice record
134    StrategyAdviceRecord,
135};
136
137// Re-exports: Episode
138pub use episode::{
139    // Core types
140    Episode,
141    EpisodeBuilder,
142    EpisodeContext,
143    EpisodeId,
144    EpisodeMetadata,
145    // Trait (for custom Episode implementations)
146    EpisodeTrait,
147    Outcome,
148};
149
150// Re-exports: Training
151pub use training::{
152    // Conversation format
153    ConversationData,
154    ConversationRole,
155    ConversationTurn,
156    // Core types
157    TrainingData,
158    TrainingFormat,
159    TrainingMetadata,
160};
161
162// Re-exports: Store
163pub use store::{
164    DefaultEpisodeRepository,
165    // Types
166    EpisodeDto,
167    EpisodeFilter,
168    EpisodeMeta,
169    EpisodeRepository,
170    // Traits
171    EpisodeStore,
172    // Implementations
173    FileEpisodeStore,
174    FileLoraStore,
175    FileRecordStore,
176    InMemoryEpisodeStore,
177    InMemoryLoraStore,
178    InMemoryRecordStore,
179    LoraModelStore,
180    ModelFilter,
181    ModelMeta,
182    OutcomeFilter,
183    RecordFilter,
184    RecordId,
185    RecordMeta,
186    RecordStore,
187    RecordStoreError,
188    StoreError,
189    TrainedModelDto,
190    TrainingMetricsDto,
191};
192
193// Re-exports: LearnModel
194pub use learn_model::{
195    // DependencyGraph
196    DependencyGraphLearnModel,
197    // Generic DPO
198    DpoConfig,
199    DpoLearnModel,
200    DpoPair,
201    // Types
202    LearnError,
203    // Traits
204    LearnModel,
205    WorkerDecisionSequenceLearn,
206    WorkerTaskLearn,
207};
208
209// Re-exports: Trigger
210pub use trigger::{
211    AlwaysTrigger,
212    AndTrigger,
213    // Implementations
214    CountTrigger,
215    ManualTrigger,
216    NeverTrigger,
217    OrTrigger,
218    QualityTrigger,
219    TimeTrigger,
220    // Traits
221    TrainTrigger,
222    // Builder
223    TriggerBuilder,
224    // Context
225    TriggerContext,
226    TriggerError,
227    TriggerMetrics,
228};
229
230// Re-exports: LoRA
231pub use lora::{
232    ApplicatorError,
233    LlamaServerApplicator,
234    LlamaServerConfig,
235    LoraModelId,
236    // Trainer
237    LoraTrainer,
238    LoraTrainerConfig,
239    LoraTrainerError,
240    // Applicator
241    ModelApplicator,
242    NoOpApplicator,
243    TrainedModel,
244    TrainingMetrics,
245};
246
247// Re-exports: Daemon
248pub use daemon::{
249    // Subscriber
250    ActionEventSubscriber,
251    Applier,
252    ApplierConfig,
253    ApplierError,
254    ApplyMode,
255    ApplyResult,
256    DaemonBuilder,
257    DaemonConfig,
258    DaemonError,
259    DaemonStats,
260    // Components
261    DataSink,
262    DataSinkError,
263    DataSinkStats,
264    EventSubscriberConfig,
265    // Core
266    LearningDaemon,
267    LearningEventSubscriber,
268    ProcessResult,
269    Processor,
270    ProcessorConfig,
271    ProcessorError,
272    ProcessorMode,
273};
274
275// Re-exports: Facade
276pub use facade::{LearnableSwarm, LearnableSwarmBuilder, LearnableSwarmConfig};
277
278// Re-exports: SessionGroup
279pub use session_group::{LearningPhase, SessionGroup, SessionGroupId, SessionGroupMetadata};
280
281// Re-exports: LearnedComponent
282pub use learned_component::{
283    ComponentLearner, LearnedComponent, LearnedDepGraph, LearnedExploration, LearnedStrategy,
284};
285
286// Re-exports: ComponentLearners
287pub use component_learners::{DepGraphLearner, ExplorationLearner, StrategyLearner};
288
289// Re-exports: ScenarioProfile
290pub use scenario_profile::{
291    BootstrapData, ProfileState, ProfileStats, ScenarioProfile, ScenarioProfileId, ScenarioSource,
292};
293
294// Re-exports: ProfileStore
295pub use profile_store::{ProfileStore, ProfileStoreError};
296
297// Re-exports: ScenarioRegistry
298pub use scenario_registry::{RegistryError, ScenarioRegistry, TaskMatcher};
299
300// Re-exports: ProfileAdapter
301pub use profile_adapter::{
302    migrate_offline_model_to_profile, offline_model_to_components, profile_to_offline_model,
303    ProfileToOfflineModel,
304};