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    // DependencyGraph record
115    DependencyGraphRecord,
116    // Traits
117    FromRecord,
118    LlmCallRecord,
119    // Core types
120    Record,
121    // Helpers
122    RecordStream,
123};
124
125// Re-exports: Episode
126pub use episode::{
127    // Core types
128    Episode,
129    EpisodeBuilder,
130    EpisodeContext,
131    EpisodeId,
132    EpisodeMetadata,
133    // Trait (for custom Episode implementations)
134    EpisodeTrait,
135    Outcome,
136};
137
138// Re-exports: Training
139pub use training::{
140    // Conversation format
141    ConversationData,
142    ConversationRole,
143    ConversationTurn,
144    // Core types
145    TrainingData,
146    TrainingFormat,
147    TrainingMetadata,
148};
149
150// Re-exports: Store
151pub use store::{
152    DefaultEpisodeRepository,
153    // Types
154    EpisodeDto,
155    EpisodeFilter,
156    EpisodeMeta,
157    EpisodeRepository,
158    // Traits
159    EpisodeStore,
160    // Implementations
161    FileEpisodeStore,
162    FileLoraStore,
163    FileRecordStore,
164    InMemoryEpisodeStore,
165    InMemoryLoraStore,
166    InMemoryRecordStore,
167    LoraModelStore,
168    ModelFilter,
169    ModelMeta,
170    OutcomeFilter,
171    RecordFilter,
172    RecordId,
173    RecordMeta,
174    RecordStore,
175    RecordStoreError,
176    StoreError,
177    TrainedModelDto,
178    TrainingMetricsDto,
179};
180
181// Re-exports: LearnModel
182pub use learn_model::{
183    // DependencyGraph
184    DependencyGraphLearnModel,
185    // Generic DPO
186    DpoConfig,
187    DpoLearnModel,
188    DpoPair,
189    // Types
190    LearnError,
191    // Traits
192    LearnModel,
193    WorkerDecisionSequenceLearn,
194    WorkerTaskLearn,
195};
196
197// Re-exports: Trigger
198pub use trigger::{
199    AlwaysTrigger,
200    AndTrigger,
201    // Implementations
202    CountTrigger,
203    ManualTrigger,
204    NeverTrigger,
205    OrTrigger,
206    QualityTrigger,
207    TimeTrigger,
208    // Traits
209    TrainTrigger,
210    // Builder
211    TriggerBuilder,
212    // Context
213    TriggerContext,
214    TriggerError,
215    TriggerMetrics,
216};
217
218// Re-exports: LoRA
219pub use lora::{
220    ApplicatorError,
221    LlamaServerApplicator,
222    LlamaServerConfig,
223    LoraModelId,
224    // Trainer
225    LoraTrainer,
226    LoraTrainerConfig,
227    LoraTrainerError,
228    // Applicator
229    ModelApplicator,
230    NoOpApplicator,
231    TrainedModel,
232    TrainingMetrics,
233};
234
235// Re-exports: Daemon
236pub use daemon::{
237    Applier,
238    ApplierConfig,
239    ApplierError,
240    ApplyMode,
241    ApplyResult,
242    DaemonBuilder,
243    DaemonConfig,
244    DaemonError,
245    DaemonStats,
246    // Components
247    DataSink,
248    DataSinkError,
249    DataSinkStats,
250    // Core
251    LearningDaemon,
252    ProcessResult,
253    Processor,
254    ProcessorConfig,
255    ProcessorError,
256    ProcessorMode,
257};