fix: 联网搜索强制注入当前日期(system prompt + 工具层双保险)

This commit is contained in:
thzxx
2026-04-20 10:17:34 +08:00
parent eba0b4df5e
commit 6be27f4cfd
2 changed files with 7 additions and 4 deletions
+4 -2
View File
@@ -255,8 +255,10 @@ export async function handleWebSearch(params: { query: string; max_results?: num
return { success: false, error: '未找到搜索结果,请尝试其他关键词' };
}
// 构建格式化的搜索结果
const formatted = results.map((r, i) =>
// 构建格式化的搜索结果(附带当前日期)
const now = new Date();
const dateStr = `${now.getFullYear()}${now.getMonth() + 1}${now.getDate()}`;
const formatted = `[当前日期: ${dateStr}(搜索时的实时日期)]\n\n` + results.map((r, i) =>
`[${i + 1}] ${r.title}\n URL: ${r.url}\n ${r.snippet}`
).join('\n\n');
+3 -2
View File
@@ -54,7 +54,7 @@ const AGENT_SYSTEM_PROMPT = `你是一个具备工具调用能力的 AI 助手
1. 直接调用工具,不要写"我来帮你搜索"然后结束。有工具就调用,调用完根据结果继续下一步。
2. 多步任务必须逐步完成:搜到结果 → 给出答案。如果需要详情再抓取,但抓取失败时直接用搜索结果回答,不要卡在抓取上。
3. 需要最新信息(版本号、新闻、日期等)时,必须先用工具获取,不要凭记忆猜测。
3. 需要最新信息(版本号、新闻、日期等)时,必须先用工具获取,不要凭记忆猜测。每次联网搜索前必须确认当前日期,搜索结果会附带搜索时的日期,以该日期为准校准你的认知。
4. 工具出错时分析原因并换方法重试,最多重试 2 次。同一 URL 连续失败 2 次后不要再尝试,换其他方式。
5. 不要重复调用相同参数的同一工具。
6. web_search 结果中的标题、URL、snippet 已经包含关键信息,不要忽视它们。
@@ -88,7 +88,8 @@ const TOOL_USAGE_GUIDE = `【工具链规则(强制执行)】
11. 管理记忆:可以用 memory_replace 更新已有记忆(子串匹配 old_text),用 memory_remove 删除不再需要的记忆。
12. 查看技能:可以用 skill_list 列出所有可用技能,用 skill_view 查看特定技能的详细工具链。
13. 【严禁猜 URL】绝对不要猜测或编造 URL 路径(如 https://example.com/docs/install)。所有 URL 必须从搜索结果中获取。如果你猜了一个 URL 并得到 404 错误,不要继续猜其他路径,应该回到搜索结果中找正确的链接。
14. 搜索结果来源:搜索结果中每条都带有标题、URL 和摘要。摘要已经包含关键信息,优先从摘要中提取答案。不要忽视来自知乎、CSDN、博客园等中文来源的结果,它们通常包含有效的技术信息。`;
14. 搜索结果来源:搜索结果中每条都带有标题、URL 和摘要。摘要已经包含关键信息,优先从摘要中提取答案。不要忽视来自知乎、CSDN、博客园等中文来源的结果,它们通常包含有效的技术信息。
15. 【联网前确认日期】每次调用 web_search 之前,必须先确认当前日期。搜索结果会自动附带搜索时的日期,看到结果后请核对该日期与你认知是否一致。如果你的认知与搜索结果中的日期不符,以搜索结果中的日期为准。回答涉及时间的信息时,必须引用该日期以确保时效性。`;
/** 工具名白名单:用于文本解析兜底时过滤非法工具名 */
const VALID_TOOL_NAMES = new Set([