fix(growth): Evolution Engine 穷尽审计 3CRITICAL + 3HIGH 全部修复
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
C-01: ExperienceExtractor 接入 ExperienceStore - GrowthIntegration.new() 创建 ExperienceExtractor 时注入 ExperienceStore - 经验持久化路径打通:extract_combined → persist_experiences → ExperienceStore C-02+C-03: 进化触发链路全链路接通 - create_middleware_chain() 注册 EvolutionMiddleware (priority 78) - MemoryMiddleware 持有 Arc<EvolutionMiddleware> 共享引用 - after_completion 中调用 check_evolution() → 推送 PendingEvolution - EvolutionMiddleware 在下次对话前注入进化建议到 system prompt H-01: FeedbackCollector loaded 标志修复 - load() 失败时保留 loaded=false,下次 save 重试 - 日志级别 debug → warn H-03: FeedbackCollector 内部可变性 - EvolutionEngine.feedback 改为 Arc<Mutex<FeedbackCollector>> - submit_feedback() 从 &mut self → &self,支持中间件 &self 调用路径 - GrowthIntegration.initialize() 从 &mut self → &self H-05: 删除空测试 test_parse_empty_response (无 assert) H-06: infer_experiences_from_memories() fallback - Outcome::Success → Outcome::Partial (反映推断不确定性)
This commit is contained in:
@@ -13,7 +13,7 @@
|
||||
use std::sync::Arc;
|
||||
use zclaw_growth::{
|
||||
AggregatedPattern, CombinedExtraction, EvolutionConfig, EvolutionEngine,
|
||||
ExperienceExtractor, GrowthTracker, InjectionFormat,
|
||||
ExperienceExtractor, ExperienceStore, GrowthTracker, InjectionFormat,
|
||||
LlmDriverForExtraction, MemoryExtractor, MemoryRetriever, PromptInjector,
|
||||
RetrievalResult, UserProfileUpdater, VikingAdapter,
|
||||
};
|
||||
@@ -79,14 +79,15 @@ impl GrowthIntegration {
|
||||
let retriever = MemoryRetriever::new(viking.clone());
|
||||
let injector = PromptInjector::new();
|
||||
let tracker = GrowthTracker::new(viking.clone());
|
||||
let evolution_engine = Some(EvolutionEngine::new(viking));
|
||||
let evolution_engine = Some(EvolutionEngine::new(viking.clone()));
|
||||
|
||||
Self {
|
||||
retriever,
|
||||
extractor,
|
||||
injector,
|
||||
tracker,
|
||||
experience_extractor: ExperienceExtractor::new(),
|
||||
experience_extractor: ExperienceExtractor::new()
|
||||
.with_store(Arc::new(ExperienceStore::new(viking))),
|
||||
profile_updater: UserProfileUpdater::new(),
|
||||
profile_store: None,
|
||||
evolution_engine,
|
||||
@@ -120,10 +121,8 @@ impl GrowthIntegration {
|
||||
///
|
||||
/// **注意**:FeedbackCollector 内部已实现 lazy-load(首次 save() 时自动加载),
|
||||
/// 所以此方法为可选优化 — 提前加载可避免首次反馈提交时的延迟。
|
||||
/// 在中间件持有 GrowthIntegration 的场景中,由于 `&self` 限制无法调用此方法,
|
||||
/// lazy-load 机制会兜底处理。
|
||||
pub async fn initialize(&mut self) -> Result<()> {
|
||||
if let Some(ref mut engine) = self.evolution_engine {
|
||||
pub async fn initialize(&self) -> Result<()> {
|
||||
if let Some(ref engine) = self.evolution_engine {
|
||||
match engine.load_feedback().await {
|
||||
Ok(count) => {
|
||||
if count > 0 {
|
||||
|
||||
Reference in New Issue
Block a user