dsh-free-search 0.9.25 → 0.9.26
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/README.md +2 -2
- package/lib/client.js +20 -15
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -37,7 +37,7 @@ dsh 默认的搜索 provider 依赖 DeepSeek 官方 API key(`DEEPSEEK_API_KEY`
|
|
|
37
37
|
|
|
38
38
|
设置页第七段「提示词」分成三段:状态、工具、约束。每段都有自己的翻页器,页 1 是内置英文、页 2 是内置中文,都按当前配置实时生成,不入盘,不能删也不能改;页 3 起是你自己加的页。发送时每段取你当前停的那一页,拼起来就是注入内容;三段都空则整段不注入。
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
「工具」那一段是九个工具各一行:前面的勾选框决定这个工具给不给模型,后面的框里是写给模型的那句话,只读,跟插件更新走,不能改。这一段的右上角有中英切换,一下切换全部工具;工具列表最上面是一个「全选」勾选框,勾上就是全部交给模型,取消就是全部不交,只勾一部分时它显示为半选。取消勾选的工具不再交给模型,工具说明也一并从请求里去掉,那一段里也不会再列出它。想加自己的要求,写在「约束」那一段的自定义页里。
|
|
41
41
|
|
|
42
42
|
### 分区链接契约(与 dsh-url-router 对接)
|
|
43
43
|
|
|
@@ -618,7 +618,7 @@ This plugin provides multiple free search engines with automatic fallback, compl
|
|
|
618
618
|
|
|
619
619
|
The seventh section is split into state, tools and constraints. Each has its own pager: page 1 is the built-in English page and page 2 the built-in Chinese one, both generated from the current config, never stored, and neither deletable nor editable; page 3 onwards is yours. What gets sent is the current page of each segment, joined; when all three are empty nothing is injected.
|
|
620
620
|
|
|
621
|
-
The tools segment is one row per tool: the checkbox decides whether the tool is handed to the model, and the box next to it shows the line written for that tool. Those lines are read only and follow plugin updates, and The
|
|
621
|
+
The tools segment is one row per tool: the checkbox decides whether the tool is handed to the model, and the box next to it shows the line written for that tool. Those lines are read only and follow plugin updates, and The top right has a Chinese/English switch that flips every tool at once, and the list starts with a Select all checkbox: check it to hand every tool to the model, clear it to hand none, and it shows the half state when only some are checked. An unchecked tool is not handed to the model, its tool description leaves the request too, and the segment stops listing it. Put your own requirements on a custom page of the constraints segment.
|
|
622
622
|
|
|
623
623
|
### Section-link contract (with dsh-url-router)
|
|
624
624
|
|
package/lib/client.js
CHANGED
|
@@ -402,7 +402,6 @@ window.__ModuleLoader__.load({
|
|
|
402
402
|
segTools: "工具",
|
|
403
403
|
segConstraints: "约束",
|
|
404
404
|
toolSelectAll: "全选",
|
|
405
|
-
toolSelectNone: "全不选",
|
|
406
405
|
promptHint: "第 1 页和第 2 页无法编辑和删除,其余页可自由编辑。",
|
|
407
406
|
promptPlaceholder: "想固定发什么就加一页",
|
|
408
407
|
|
|
@@ -531,8 +530,7 @@ window.__ModuleLoader__.load({
|
|
|
531
530
|
segState: "State",
|
|
532
531
|
segTools: "Tools",
|
|
533
532
|
segConstraints: "Constraints",
|
|
534
|
-
toolSelectAll: "
|
|
535
|
-
toolSelectNone: "None",
|
|
533
|
+
toolSelectAll: "Select all",
|
|
536
534
|
promptHint: "Pages 1 and 2 cannot be edited or deleted; the rest are yours to edit.",
|
|
537
535
|
promptPlaceholder: "Add a page for anything you always want to send",
|
|
538
536
|
|
|
@@ -564,7 +562,7 @@ window.__ModuleLoader__.load({
|
|
|
564
562
|
"cache_search",
|
|
565
563
|
"domain_search",
|
|
566
564
|
];
|
|
567
|
-
const PLUGIN_VERSION = "0.9.
|
|
565
|
+
const PLUGIN_VERSION = "0.9.26";
|
|
568
566
|
const PLUGIN_REPO_URL = "https://github.com/DDDMUC/dsh-free-search";
|
|
569
567
|
// 右侧浮动目录(#85):条目顺序即页面顺序,anchor 是页面里对应 field 的 id。
|
|
570
568
|
const NAV_ITEMS = [
|
|
@@ -1338,25 +1336,32 @@ window.__ModuleLoader__.load({
|
|
|
1338
1336
|
children: [
|
|
1339
1337
|
react_jsx_runtime.jsx("button", { type: "button", className: "dshfs-pagerBtn" + (toolsLang === "zh" ? " is-active" : ""), disabled: !ready || saving, onClick: () => { setPromptToolsLang("zh"); setDirty(true); setFailed(false); setSaveError(""); }, children: "中" }, "zh"),
|
|
1340
1338
|
react_jsx_runtime.jsx("button", { type: "button", className: "dshfs-pagerBtn" + (toolsLang === "en" ? " is-active" : ""), disabled: !ready || saving, onClick: () => { setPromptToolsLang("en"); setDirty(true); setFailed(false); setSaveError(""); }, children: "EN" }, "en"),
|
|
1341
|
-
react_jsx_runtime.jsx("button", { type: "button", className: "dshfs-pagerBtn", disabled: !ready || saving || disabledTools.length === 0, onClick: () => { setDisabledTools([]); setDirty(true); setFailed(false); setSaveError(""); }, children: t.toolSelectAll }, "all"),
|
|
1342
|
-
react_jsx_runtime.jsx("button", { type: "button", className: "dshfs-pagerBtn", disabled: !ready || saving || disabledTools.length === TOOL_TOGGLES.length, onClick: () => { setDisabledTools(TOOL_TOGGLES.slice()); setDirty(true); setFailed(false); setSaveError(""); }, children: t.toolSelectNone }, "none"),
|
|
1343
1339
|
],
|
|
1344
1340
|
}),
|
|
1345
1341
|
],
|
|
1346
1342
|
}),
|
|
1343
|
+
react_jsx_runtime.jsx("label", {
|
|
1344
|
+
className: "dshfs-platform dshfs-selectAll",
|
|
1345
|
+
children: [
|
|
1346
|
+
react_jsx_runtime.jsx("input", {
|
|
1347
|
+
type: "checkbox",
|
|
1348
|
+
checked: disabledTools.length === 0,
|
|
1349
|
+
disabled: !ready || saving,
|
|
1350
|
+
ref: (node) => { if (node) node.indeterminate = disabledTools.length > 0 && disabledTools.length < TOOL_TOGGLES.length; },
|
|
1351
|
+
onChange: () => {
|
|
1352
|
+
setDisabledTools(disabledTools.length === 0 ? TOOL_TOGGLES.slice() : []);
|
|
1353
|
+
setDirty(true);
|
|
1354
|
+
setFailed(false);
|
|
1355
|
+
setSaveError("");
|
|
1356
|
+
},
|
|
1357
|
+
}),
|
|
1358
|
+
t.toolSelectAll,
|
|
1359
|
+
],
|
|
1360
|
+
}),
|
|
1347
1361
|
...TOOL_TOGGLES.map(renderToolRow),
|
|
1348
1362
|
],
|
|
1349
1363
|
});
|
|
1350
1364
|
const renderPromptSegment = (segment) => {
|
|
1351
|
-
if (segment.key === "tools") {
|
|
1352
|
-
return react_jsx_runtime.jsx("div", {
|
|
1353
|
-
className: "dshfs-segment",
|
|
1354
|
-
children: [
|
|
1355
|
-
react_jsx_runtime.jsx("div", { className: "dshfs-label", children: segment.title }),
|
|
1356
|
-
...TOOL_TOGGLES.map(renderToolRow),
|
|
1357
|
-
],
|
|
1358
|
-
}, segment.key);
|
|
1359
|
-
}
|
|
1360
1365
|
const total = 2 + segment.pages.length;
|
|
1361
1366
|
const kind = segment.index === 0 ? "builtin-en" : segment.index === 1 ? "builtin-zh" : "user";
|
|
1362
1367
|
const textAt = (index) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-free-search",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.26",
|
|
4
4
|
"description": "Free web search for DeepSeek Harness: 27 engines (Bing/DuckDuckGo/AnySearch/SearXNG/Exa/Tavily/Keenable/Firecrawl/Parallel/You.com keyless; Zhihu global/site via MCP and Perplexity/SerpBase/DeepSeek (official + native tools/search)/Baidu/Kimi/Aliyun/Doubao with key; OpenAI/Gemini/Claude model built-in search, explicit-only) + auto smart routing + global engine enable/disable & fallback priority + editable zh/en language pools + multi mode (parallel full language-pool merge) + multi_search cross-source tool + failure-aware fallback (quota/auth cooldown, transient retry, fallbackOn) + time filtering + platform search + domain blocklist (blockedDomains) + web_fetch, with web settings UI.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|