























@@ -280,19 +280,76 @@ function resolveWebSearchDetail(args: unknown): string | undefined {
280280return undefined;
281281}
282282283-const query = normalizeOptionalString(record.query);
283+const queries = collectWebSearchQueries(record);
284284const count =
285285typeof record.count === "number" && Number.isFinite(record.count) && record.count > 0
286286 ? Math.floor(record.count)
287- : undefined;
288-289-if (!query) {
287+ : typeof record.max_results === "number" &&
288+Number.isFinite(record.max_results) &&
289+record.max_results > 0
290+ ? Math.floor(record.max_results)
291+ : typeof record.num_results === "number" &&
292+Number.isFinite(record.num_results) &&
293+record.num_results > 0
294+ ? Math.floor(record.num_results)
295+ : typeof record.limit === "number" && Number.isFinite(record.limit) && record.limit > 0
296+ ? Math.floor(record.limit)
297+ : typeof record.top_k === "number" && Number.isFinite(record.top_k) && record.top_k > 0
298+ ? Math.floor(record.top_k)
299+ : undefined;
300+301+if (queries.length === 0) {
290302return undefined;
291303}
292304293-return count !== undefined ? `for "${query}" (top ${count})` : `for "${query}"`;
305+const displayedQueries = queries.slice(0, 3).map((query) => `"${query}"`);
306+const queryText =
307+queries.length > displayedQueries.length
308+ ? `${displayedQueries.join(", ")}…`
309+ : displayedQueries.join(", ");
310+311+return count !== undefined ? `for ${queryText} (top ${count})` : `for ${queryText}`;
294312}
295313314+function collectWebSearchQueries(record: Record<string, unknown>): string[] {
315+const queries: string[] = [];
316+const seen = new Set<string>();
317+const add = (value: unknown) => {
318+const normalized = normalizeOptionalString(value);
319+if (!normalized || seen.has(normalized)) {
320+return;
321+}
322+seen.add(normalized);
323+queries.push(normalized);
324+};
325+326+add(record.query);
327+add(record.q);
328+add(record.search);
329+add(record.input);
330+331+for (const key of ["search_query", "image_query", "queries"]) {
332+const value = record[key];
333+if (!Array.isArray(value)) {
334+continue;
335+}
336+for (const entry of value) {
337+if (typeof entry === "string") {
338+add(entry);
339+continue;
340+}
341+const entryRecord = asRecord(entry);
342+if (!entryRecord) {
343+continue;
344+}
345+add(entryRecord.query);
346+add(entryRecord.q);
347+add(entryRecord.search);
348+}
349+}
350+351+return queries;
352+}
296353function resolveWebFetchDetail(args: unknown): string | undefined {
297354const record = asRecord(args);
298355if (!record) {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。