重构: 后端编排拆解与DRY债收敛及命名纠偏
阶段1拆解: stream 系外移 stream_relay.rs,mod.rs 3048→2607,loop_body 502→83 技能收尾: regenerate/edit 回溯补技能,新增 read_skill 工具,项目级技能扫描 DRY: emit 双写 46 处收敛 event_bus 正典,KV 引号归一收口,LOCK-SLOW 33 处单行化 警示骨架 4→1 与压缩兜底 2→1,噪音目录档位收敛,truncate 同名陷阱消除 工具元数据落 ToolMeta 八维,7 张 match 表改查 registry,parity 测试锁等价 命名: is_noise_entry/teardown_round/probe_missed_terminal_event 等 6 项纠偏
This commit is contained in:
@@ -7,7 +7,7 @@ use df_storage::db::Database;
|
||||
use df_storage::models::AiProviderRecord;
|
||||
|
||||
use crate::commands::err_str;
|
||||
use crate::state::AppState;
|
||||
use crate::state::{AppState, SettingsNorm};
|
||||
|
||||
/// 获取当前活跃提供商配置
|
||||
pub(crate) async fn get_active_provider(state: &AppState) -> Result<AiProviderRecord, String> {
|
||||
@@ -486,13 +486,14 @@ async fn build_context_lists(
|
||||
|
||||
/// 自定义提示词段(设置 custom_prompt,追加到 system prompt 末尾)。无/空返回空串。
|
||||
async fn build_custom_section(state: &AppState) -> String {
|
||||
if let Ok(Some(custom)) = state.settings.get("custom_prompt").await {
|
||||
if !custom.is_empty() {
|
||||
let clean = custom.trim().trim_matches('"');
|
||||
if !clean.is_empty() {
|
||||
return format!("\n## 自定义指令\n{}\n", clean);
|
||||
}
|
||||
}
|
||||
// get_string_norm 归一去引号(前端 JSON.stringify 落库带引号),再 trim 空白;空返回空段。
|
||||
let clean = state
|
||||
.settings
|
||||
.get_string_norm("custom_prompt")
|
||||
.await
|
||||
.unwrap_or_default();
|
||||
if !clean.trim().is_empty() {
|
||||
return format!("\n## 自定义指令\n{}\n", clean.trim());
|
||||
}
|
||||
String::new()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user