优化: 弱模型工具行为治理(项目/任务清单补id + 缓存命中警告 + read_symbol 提示)
This commit is contained in:
@@ -249,8 +249,8 @@ fn app_config_query_guidance_section(lang: &str) -> &'static str {
|
||||
|
||||
/// 构建系统提示词(环境信息 + 固定前缀 + 当前项目/任务**全局清单**)
|
||||
///
|
||||
/// 本函数注入"全貌"清单:最近 20 项目 + 20 任务的 name/status/description(无 path),
|
||||
/// 供 LLM 知道当前存在哪些实体(非精准引用)。
|
||||
/// 本函数注入"全貌"清单:最近 20 项目 + 20 任务的 id/name/status/description(无 path),
|
||||
/// 供 LLM 知道当前存在哪些实体并拿到各自 id(清单含 id,引用时用 id 而非名称)。
|
||||
///
|
||||
/// **被@实体的精准投影**(含 path 脱敏、剥 frontmatter 的 skill 正文)由 chat.rs 的
|
||||
/// augmentation 层(`ResolverRegistry::resolve_all` + `build_augmentation_segment`)处理,
|
||||
@@ -301,7 +301,7 @@ pub(crate) async fn build_system_prompt_with_excluded(
|
||||
if excluded_project_ids.iter().any(|id| id == &p.id) {
|
||||
continue;
|
||||
}
|
||||
prompt.push_str(&format!("- {} ({}): {}\n", p.name, p.status.as_str(), p.description));
|
||||
prompt.push_str(&format!("- {} (id: {}) ({}): {}\n", p.name, p.id, p.status.as_str(), p.description));
|
||||
if let Some(ref dir) = p.path {
|
||||
prompt.push_str(&format!(" 目录: {}\n", dir));
|
||||
}
|
||||
@@ -320,7 +320,7 @@ pub(crate) async fn build_system_prompt_with_excluded(
|
||||
if excluded_task_ids.iter().any(|id| id == &tk.id) {
|
||||
continue;
|
||||
}
|
||||
prompt.push_str(&format!("- {} ({}): {}\n", tk.title, tk.status.as_str(), tk.description));
|
||||
prompt.push_str(&format!("- {} (id: {}) ({}): {}\n", tk.title, tk.id, tk.status.as_str(), tk.description));
|
||||
}
|
||||
// 机制层注明语(中/英):仅最近 20 条,全量/按项目查询走 list_tasks
|
||||
prompt.push_str(&tasks_listed_note(lang));
|
||||
@@ -349,11 +349,11 @@ pub(crate) async fn build_system_prompt_with_excluded(
|
||||
fn projects_listed_note(lang: &str, shown: usize) -> String {
|
||||
match lang {
|
||||
"en" => format!(
|
||||
"(Listed {} active projects above; the active set is shown, no need to call list_projects again.)\n",
|
||||
"(Listed {} active projects above; the active set is shown, no need to call list_projects again. Each entry carries its id — reference projects by id, not by name.)\n",
|
||||
shown
|
||||
),
|
||||
_ => format!(
|
||||
"(以上为活跃项目清单,无需重复调用 list_projects)\n"
|
||||
"(以上为活跃项目清单,无需重复调用 list_projects;每条已含 id,引用项目时用 id 而非名称)\n"
|
||||
),
|
||||
}
|
||||
}
|
||||
@@ -364,8 +364,8 @@ fn projects_listed_note(lang: &str, shown: usize) -> String {
|
||||
/// 而反复调 list_tasks 校验(实测单会话 20 次)。
|
||||
fn tasks_listed_note(lang: &str) -> String {
|
||||
match lang {
|
||||
"en" => "(Only the 20 most recent tasks are shown. For the full list or filtered by project, use the list_tasks tool.)\n".to_string(),
|
||||
_ => "(仅显示最近 20 条任务,全量或按项目查询请用 list_tasks 工具)\n".to_string(),
|
||||
"en" => "(Only the 20 most recent tasks are shown. For the full list or filtered by project, use the list_tasks tool. Each entry carries its id — reference tasks by id, not by title/name.)\n".to_string(),
|
||||
_ => "(仅显示最近 20 条任务,全量或按项目查询请用 list_tasks 工具;每条已含 id,引用任务时用 id 而非名称)\n".to_string(),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user