xx-ai-cli 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/search.d.ts.map +1 -1
- package/dist/core/search.js +65 -66
- package/dist/core/search.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/core/search.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB;
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/core/search.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB;AA8MD,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAoC3F;AAED,0BAA0B;AAC1B,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAMhE"}
|
package/dist/core/search.js
CHANGED
|
@@ -1,67 +1,73 @@
|
|
|
1
1
|
import { config } from './config.js';
|
|
2
|
-
// ───
|
|
3
|
-
async function
|
|
2
|
+
// ─── 必应搜索(国内可访问,无需 API Key)─────────────────────
|
|
3
|
+
async function searchBing(query, maxResults) {
|
|
4
4
|
const controller = new AbortController();
|
|
5
|
-
const
|
|
5
|
+
const timer = setTimeout(() => controller.abort(), 10000);
|
|
6
6
|
try {
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
const iaRes = await fetch(iaUrl, {
|
|
7
|
+
const url = `https://cn.bing.com/search?q=${encodeURIComponent(query)}&count=${maxResults}&setlang=zh-CN&cc=CN`;
|
|
8
|
+
const res = await fetch(url, {
|
|
10
9
|
signal: controller.signal,
|
|
11
|
-
headers: {
|
|
10
|
+
headers: {
|
|
11
|
+
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
|
|
12
|
+
'Accept': 'text/html,application/xhtml+xml',
|
|
13
|
+
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
|
|
14
|
+
'Accept-Encoding': 'gzip, deflate',
|
|
15
|
+
},
|
|
12
16
|
});
|
|
13
|
-
clearTimeout(
|
|
14
|
-
if (
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
17
|
+
clearTimeout(timer);
|
|
18
|
+
if (!res.ok)
|
|
19
|
+
throw new Error(`必应搜索返回 HTTP ${res.status}`);
|
|
20
|
+
const html = await res.text();
|
|
21
|
+
const results = [];
|
|
22
|
+
// 匹配 Bing 搜索结果块 <li class="b_algo">
|
|
23
|
+
const blocks = html.match(/<li class="b_algo"[\s\S]*?<\/li>/g) ?? [];
|
|
24
|
+
for (const block of blocks) {
|
|
25
|
+
if (results.length >= maxResults)
|
|
26
|
+
break;
|
|
27
|
+
// 提取标题和 URL
|
|
28
|
+
const linkMatch = block.match(/<h2[^>]*>\s*<a[^>]+href="([^"]+)"[^>]*>([\s\S]*?)<\/a>/);
|
|
29
|
+
// 提取摘要
|
|
30
|
+
const snippetMatch = block.match(/<p[^>]*>([\s\S]*?)<\/p>/);
|
|
31
|
+
if (linkMatch) {
|
|
32
|
+
const url = linkMatch[1];
|
|
33
|
+
const title = linkMatch[2].replace(/<[^>]+>/g, '').trim();
|
|
34
|
+
const snippet = snippetMatch
|
|
35
|
+
? snippetMatch[1].replace(/<[^>]+>/g, '').replace(/\s+/g, ' ').trim().slice(0, 300)
|
|
36
|
+
: '';
|
|
37
|
+
if (title && url && !url.startsWith('javascript')) {
|
|
38
|
+
results.push({ title, url, snippet });
|
|
28
39
|
}
|
|
29
40
|
}
|
|
30
|
-
if (results.length > 0)
|
|
31
|
-
return results.slice(0, maxResults);
|
|
32
41
|
}
|
|
42
|
+
if (results.length > 0)
|
|
43
|
+
return results;
|
|
33
44
|
}
|
|
34
|
-
catch {
|
|
35
|
-
clearTimeout(
|
|
36
|
-
|
|
37
|
-
return [{
|
|
38
|
-
title: '搜索不可用',
|
|
39
|
-
url: '',
|
|
40
|
-
snippet: `[搜索不可用] DuckDuckGo 无法访问(网络受限或未配置代理)。` +
|
|
41
|
-
`请改用 xxcli search-config set serper --key <API_KEY> 配置搜索引擎,` +
|
|
42
|
-
`或直接使用 xxcli install ${query.split(' ')[0]} 命令尝试安装。`,
|
|
43
|
-
}];
|
|
45
|
+
catch (err) {
|
|
46
|
+
clearTimeout(timer);
|
|
47
|
+
throw err;
|
|
44
48
|
}
|
|
45
|
-
|
|
49
|
+
throw new Error('必应搜索未返回结果');
|
|
50
|
+
}
|
|
51
|
+
// ─── DuckDuckGo(国外网络备用)───────────────────────────────
|
|
52
|
+
async function searchDuckDuckGo(query, maxResults) {
|
|
53
|
+
const controller = new AbortController();
|
|
54
|
+
const timeout = setTimeout(() => controller.abort(), 8000);
|
|
46
55
|
try {
|
|
47
|
-
const htmlController = new AbortController();
|
|
48
|
-
const htmlTimeout = setTimeout(() => htmlController.abort(), 8000);
|
|
49
56
|
const htmlUrl = `https://html.duckduckgo.com/html/?q=${encodeURIComponent(query)}`;
|
|
50
57
|
const htmlRes = await fetch(htmlUrl, {
|
|
51
|
-
signal:
|
|
58
|
+
signal: controller.signal,
|
|
52
59
|
headers: {
|
|
53
|
-
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36
|
|
60
|
+
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36',
|
|
54
61
|
'Accept': 'text/html',
|
|
55
|
-
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
|
|
56
62
|
},
|
|
57
63
|
});
|
|
58
|
-
clearTimeout(
|
|
64
|
+
clearTimeout(timeout);
|
|
59
65
|
if (!htmlRes.ok)
|
|
60
66
|
throw new Error(`HTTP ${htmlRes.status}`);
|
|
61
67
|
const html = await htmlRes.text();
|
|
62
68
|
const results = [];
|
|
63
|
-
const
|
|
64
|
-
for (const block of
|
|
69
|
+
const blocks = html.match(/<a class="result__a"[^>]+href="([^"]+)"[^>]*>([^<]+)<\/a>[\s\S]*?<a class="result__snippet"[^>]*>([\s\S]*?)<\/a>/g) ?? [];
|
|
70
|
+
for (const block of blocks) {
|
|
65
71
|
if (results.length >= maxResults)
|
|
66
72
|
break;
|
|
67
73
|
const urlMatch = block.match(/href="([^"]+)"/);
|
|
@@ -74,15 +80,12 @@ async function searchDuckDuckGo(query, maxResults) {
|
|
|
74
80
|
}
|
|
75
81
|
}
|
|
76
82
|
if (results.length > 0)
|
|
77
|
-
return results
|
|
83
|
+
return results;
|
|
78
84
|
}
|
|
79
|
-
catch {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
url: `https://duckduckgo.com/?q=${encodeURIComponent(query)}`,
|
|
84
|
-
snippet: `搜索 "${query}" 无结果。建议配置 Serper 或 Tavily 获得更好的搜索效果:xxcli search-config set serper --key <API_KEY>`,
|
|
85
|
-
}];
|
|
85
|
+
catch {
|
|
86
|
+
clearTimeout(timeout);
|
|
87
|
+
}
|
|
88
|
+
throw new Error('DuckDuckGo 搜索失败');
|
|
86
89
|
}
|
|
87
90
|
// ─── Serper(Google Search API,需要 API Key)────────────────
|
|
88
91
|
async function searchSerper(query, apiKey, maxResults) {
|
|
@@ -181,29 +184,25 @@ export async function webSearch(query, maxResults) {
|
|
|
181
184
|
results = await searchTavily(query, searchCfg.apiKey, limit);
|
|
182
185
|
}
|
|
183
186
|
else {
|
|
184
|
-
// 无 Key
|
|
185
|
-
results = await searchDuckDuckGo(query, limit);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
catch (err) {
|
|
189
|
-
// 降级到 DuckDuckGo 兜底(仍可能失败)
|
|
190
|
-
if (provider !== 'duckduckgo') {
|
|
187
|
+
// 无 Key 时:先尝试必应(国内可用),失败再降级 DuckDuckGo
|
|
191
188
|
try {
|
|
192
|
-
results = await
|
|
189
|
+
results = await searchBing(query, limit);
|
|
193
190
|
}
|
|
194
191
|
catch {
|
|
195
|
-
results =
|
|
196
|
-
title: '搜索不可用',
|
|
197
|
-
url: '',
|
|
198
|
-
snippet: `搜索服务暂不可用。推荐配置博查搜索(国内可用):\n xxcli search-config set bocha --key <API_KEY>\n获取 Key:https://open.bochaai.com`,
|
|
199
|
-
}];
|
|
192
|
+
results = await searchDuckDuckGo(query, limit);
|
|
200
193
|
}
|
|
201
194
|
}
|
|
202
|
-
|
|
195
|
+
}
|
|
196
|
+
catch {
|
|
197
|
+
// 全部失败时降级必应兜底
|
|
198
|
+
try {
|
|
199
|
+
results = await searchBing(query, limit);
|
|
200
|
+
}
|
|
201
|
+
catch {
|
|
203
202
|
results = [{
|
|
204
203
|
title: '搜索不可用',
|
|
205
204
|
url: '',
|
|
206
|
-
snippet:
|
|
205
|
+
snippet: `搜索服务暂不可用。\n· 免费方案:无需配置,默认已使用必应搜索(如仍失败请检查网络)\n· 推荐方案:配置博查搜索(稳定可用):xxcli search-config set bocha --key <KEY>\n 获取 Key(有免费额度):https://open.bochaai.com`,
|
|
207
206
|
}];
|
|
208
207
|
}
|
|
209
208
|
}
|
package/dist/core/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/core/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAcrC,
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/core/search.ts"],"names":[],"mappings":"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"}
|