refactor(crates): kernel/generation module split + DeerFlow optimizations + middleware + dead code cleanup

- Split zclaw-kernel/kernel.rs (1486 lines) into 9 domain modules
- Split zclaw-kernel/generation.rs (1080 lines) into 3 modules
- Add DeerFlow-inspired middleware: DanglingTool, SubagentLimit, ToolError, ToolOutputGuard
- Add PromptBuilder for structured system prompt assembly
- Add FactStore (zclaw-memory) for persistent fact extraction
- Add task builtin tool for agent task management
- Driver improvements: Anthropic/OpenAI extended thinking, Gemini safety settings
- Replace let _ = with proper log::warn! across SaaS handlers
- Remove unused dependency (url) from zclaw-hands
This commit is contained in:
iven
2026-04-03 00:28:03 +08:00
parent 0a04b260a4
commit 52bdafa633
55 changed files with 4130 additions and 1959 deletions

View File

@@ -134,18 +134,18 @@ impl Default for InMemoryStorage {
#[async_trait]
impl VikingStorage for InMemoryStorage {
async fn store(&self, entry: &MemoryEntry) -> Result<()> {
let mut memories = self.memories.write().unwrap();
let mut memories = self.memories.write().expect("InMemoryStorage lock poisoned");
memories.insert(entry.uri.clone(), entry.clone());
Ok(())
}
async fn get(&self, uri: &str) -> Result<Option<MemoryEntry>> {
let memories = self.memories.read().unwrap();
let memories = self.memories.read().expect("InMemoryStorage lock poisoned");
Ok(memories.get(uri).cloned())
}
async fn find(&self, query: &str, options: FindOptions) -> Result<Vec<MemoryEntry>> {
let memories = self.memories.read().unwrap();
let memories = self.memories.read().expect("InMemoryStorage lock poisoned");
let mut results: Vec<MemoryEntry> = memories
.values()
@@ -187,7 +187,7 @@ impl VikingStorage for InMemoryStorage {
}
async fn find_by_prefix(&self, prefix: &str) -> Result<Vec<MemoryEntry>> {
let memories = self.memories.read().unwrap();
let memories = self.memories.read().expect("InMemoryStorage lock poisoned");
let results: Vec<MemoryEntry> = memories
.values()
@@ -199,19 +199,19 @@ impl VikingStorage for InMemoryStorage {
}
async fn delete(&self, uri: &str) -> Result<()> {
let mut memories = self.memories.write().unwrap();
let mut memories = self.memories.write().expect("InMemoryStorage lock poisoned");
memories.remove(uri);
Ok(())
}
async fn store_metadata_json(&self, key: &str, json: &str) -> Result<()> {
let mut metadata = self.metadata.write().unwrap();
let mut metadata = self.metadata.write().expect("InMemoryStorage lock poisoned");
metadata.insert(key.to_string(), json.to_string());
Ok(())
}
async fn get_metadata_json(&self, key: &str) -> Result<Option<String>> {
let metadata = self.metadata.read().unwrap();
let metadata = self.metadata.read().expect("InMemoryStorage lock poisoned");
Ok(metadata.get(key).cloned())
}
}