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 daemon;
43pub mod episode;
44pub mod learn_model;
45pub mod lora;
46pub mod offline;
47pub mod record;
48pub mod snapshot;
49pub mod store;
50pub mod training;
51pub mod trigger;
52
53// Re-exports: Stats Model Layer
54pub use stats_model::{
55    param_keys,
56    // Base trait and types
57    Model,
58    ModelMetadata,
59    ModelType,
60    ModelVersion,
61    OptimalParamsModel,
62    ParamValue,
63    Parametric,
64    // Capability traits
65    Scorable,
66    ScoreContext,
67    // Concrete models
68    ScoreModel,
69    ScoreQuery,
70    StatsModelId,
71};
72
73// Re-exports: Provider (Selection連携)
74pub use provider::{
75    ConfidenceMapProvider, LearnStatsProvider, LearnedProvider, LearningQuery, LearningResult,
76    NullProvider, ScoreModelProvider, SharedLearnedProvider,
77};
78
79// Re-exports: Stats
80pub use stats::{
81    ContextualActionStats, EpisodeTransitions, LearnStats, NgramStats, SelectionPerformance,
82    StrategyStats, StrategySwitchEvent,
83};
84
85// Re-exports: Snapshot
86pub use snapshot::{
87    // Functions
88    merge_snapshots,
89    // Implementations
90    FileSystemStorage,
91    // Core types
92    LearningSnapshot,
93    LearningStore,
94    MergeStrategy,
95    SessionId,
96    // Traits
97    SnapshotKey,
98    SnapshotMetadata,
99    SnapshotStorage,
100    TimeSeriesQuery,
101    Timestamp,
102    SNAPSHOT_VERSION,
103};
104
105// Re-exports: Offline
106pub use offline::{
107    ActionOrderSource, LearnedActionOrder, OfflineAnalyzer, OfflineModel, OptimalParameters,
108    RecommendedPath, StrategyConfig,
109};
110
111// Re-exports: Record
112pub use record::{
113    ActionRecord,
114    // Traits
115    FromRecord,
116    LlmCallRecord,
117    // Core types
118    Record,
119    // Helpers
120    RecordStream,
121};
122
123// Re-exports: Episode
124pub use episode::{
125    // Core types
126    Episode,
127    EpisodeBuilder,
128    EpisodeContext,
129    EpisodeId,
130    EpisodeMetadata,
131    Outcome,
132};
133
134// Re-exports: Training
135pub use training::{
136    // Conversation format
137    ConversationData,
138    ConversationRole,
139    ConversationTurn,
140    // Core types
141    TrainingData,
142    TrainingFormat,
143    TrainingMetadata,
144};
145
146// Re-exports: Store
147pub use store::{
148    DefaultEpisodeRepository,
149    // Types
150    EpisodeDto,
151    EpisodeFilter,
152    EpisodeMeta,
153    EpisodeRepository,
154    // Traits
155    EpisodeStore,
156    // Implementations
157    FileEpisodeStore,
158    FileLoraStore,
159    FileRecordStore,
160    InMemoryEpisodeStore,
161    InMemoryLoraStore,
162    InMemoryRecordStore,
163    LoraModelStore,
164    ModelFilter,
165    ModelMeta,
166    OutcomeFilter,
167    RecordFilter,
168    RecordId,
169    RecordMeta,
170    RecordStore,
171    RecordStoreError,
172    StoreError,
173    TrainedModelDto,
174    TrainingMetricsDto,
175};
176
177// Re-exports: LearnModel
178pub use learn_model::{
179    // Types
180    LearnError,
181    // Traits
182    LearnModel,
183    // Implementations
184    WorkerDecisionSequenceLearn,
185    WorkerTaskLearn,
186};
187
188// Re-exports: Trigger
189pub use trigger::{
190    AlwaysTrigger,
191    AndTrigger,
192    // Implementations
193    CountTrigger,
194    ManualTrigger,
195    NeverTrigger,
196    OrTrigger,
197    QualityTrigger,
198    TimeTrigger,
199    // Traits
200    TrainTrigger,
201    // Builder
202    TriggerBuilder,
203    // Context
204    TriggerContext,
205    TriggerError,
206    TriggerMetrics,
207};
208
209// Re-exports: LoRA
210pub use lora::{
211    ApplicatorError,
212    LlamaServerApplicator,
213    LlamaServerConfig,
214    LoraModelId,
215    // Trainer
216    LoraTrainer,
217    LoraTrainerConfig,
218    LoraTrainerError,
219    // Applicator
220    ModelApplicator,
221    NoOpApplicator,
222    TrainedModel,
223    TrainingMetrics,
224};
225
226// Re-exports: Daemon
227pub use daemon::{
228    Applier,
229    ApplierConfig,
230    ApplierError,
231    ApplyMode,
232    ApplyResult,
233    DaemonBuilder,
234    DaemonConfig,
235    DaemonError,
236    DaemonStats,
237    // Components
238    DataSink,
239    DataSinkError,
240    DataSinkStats,
241    // Core
242    LearningDaemon,
243    ProcessResult,
244    Processor,
245    ProcessorConfig,
246    ProcessorError,
247    ProcessorMode,
248};