fix(agent): recall search + memory_dir fallback + bersihkan dead llm_client
Hasil audit round 4 (workflow/hive_mind + memory + semantic_search). - fix(memory): recall.search selama ini TIDAK pernah dipakai — tool mengiklankan keyword search di skema tapi run() cuma list semua nama. Kini search benar-benar memfilter (cocok di name/description/content, case-insensitive), + output 'No memories match' bila kosong. - fix(memory): ToolCtxBuilder tidak punya setter memory_dir dan tak ada call-site yang mengisinya — remember/recall/forget memakai PathBuf kosong dan menulis memory ke CWD (bukan lokasi persisten). Tambah setter memory_dir + worktrees_dir, dan helper resolve_memory_dir() yang fallback ke Store::new().memory_dir bila ctx.memory_dir kosong; dipakai di ketiga tool memory. - refactor(workflow): hapus LlmClient dummy di WorkflowRun (dibuat dengan API key kosong + model default + base_url default lalu tak pernah dipakai — execute_workflow menerimanya sebagai _llm_client). Kini execute_workflow tak ambil parameter tak terpakai; LLM asli tetap lewat execute_primitive yang resolve kredensial dengan benar. - test: +2 (recall search memfilter; resolve_memory_dir fallback/eksplisit). Catatan audit yang dilaporkan (belum difix): synth_consensus hanya menggabungkan output (label Consensus menyesatkan, bukan sintesis LLM), dan semantic_search memegang Mutex index global saat full rebuild (bottleneck saat paralel) + index tidak workspace-aware. PENTING (infra): disk root 100% saat kerja. Saya bebaskan ~4.6G dari /tmp + cache aman (sekai*, verify-z, bun/npm cache). target/debug di repo = 38G — rampah, perlu cargo clean + rebuild (jangan dibiarkan).
This commit is contained in:
@@ -3,7 +3,6 @@
|
||||
use anyhow::Result;
|
||||
use tracing::{info, instrument};
|
||||
|
||||
use crate::llm::provider::LlmClient;
|
||||
use crate::tools::ToolCtx;
|
||||
use crate::workflow::engine::primitives::execute_primitive;
|
||||
use zesdex_domain::workflow::WorkflowScript;
|
||||
@@ -11,12 +10,8 @@ use zesdex_domain::workflow::WorkflowScript;
|
||||
/// Execute each phase of a workflow script sequentially.
|
||||
///
|
||||
/// Flow: for each phase → execute_primitive → collect result.
|
||||
#[instrument(skip(tool_ctx, _llm_client))]
|
||||
pub async fn execute_workflow(
|
||||
script: &WorkflowScript,
|
||||
tool_ctx: &ToolCtx,
|
||||
_llm_client: &LlmClient,
|
||||
) -> Result<Vec<String>> {
|
||||
#[instrument(skip(tool_ctx))]
|
||||
pub async fn execute_workflow(script: &WorkflowScript, tool_ctx: &ToolCtx) -> Result<Vec<String>> {
|
||||
info!(
|
||||
"Executing workflow: {} ({} phases)",
|
||||
script.name,
|
||||
|
||||
Reference in New Issue
Block a user