用自建 RustXNG 实例接管内置网页搜索
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/26 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add kgmkm/dsh-rustxng该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · search
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 7 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 19 处,展示前 19 条)
- 写入本地文件index.js:326
mkdirSync(dir, { recursive: true }); - 发起网络请求index.js:336
const response = await fetch(`${baseUrl}/healthz`, { signal: AbortSignal.timeout?.(2500) }); - 读取本地文件scripts/install-binary.mjs:35
console.log(readFileSync(new URL(import.meta.url), 'utf8').split('*/')[0].replace(/^ ?/, '').trim()); - 发起网络请求lib/rustxng-client.js:239
const response = await fetch(`${baseUrl}/healthz`, { signal: guard.signal, headers: { accept: 'text/plain' } }); - 发起网络请求lib/rustxng-client.js:261
const response = await fetch(`${baseUrl}/config`, { signal }); - 发起网络请求lib/rustxng-client.js:323
response = await fetch(url, { - 发起网络请求lib/tools.js:198
const response = await fetch(`${baseUrl}/config`, { signal: AbortSignal.timeout?.(8000) }); - 发起网络请求lib/fetch-provider.js:150
async fetch(request, signal) { - 读取本地文件lib/process-manager.js:62
return existsSync(candidate); - 写入本地文件lib/process-manager.js:73
mkdirSync(join(logFile, '..'), { recursive: true }); - 执行外部命令来自配置/变量lib/process-manager.js:82
const child = spawn(binary, ['--bind', bindAddress, '--port', String(port)], { - 读取本地文件lib/install-binary.js:135
if (existsSync(destination) && !force) { - 写入本地文件lib/install-binary.js:168
mkdirSync(dir, { recursive: true }); - 写入本地文件lib/install-binary.js:172
writeFileSync(temporary, body); - 写入本地文件lib/install-binary.js:174
renameSync(temporary, destination); - 删除本地文件lib/install-binary.js:178
unlinkSync(temporary); - 写入本地文件lib/install-binary.js:184
copyFileSync(temporary, destination); - 删除本地文件lib/install-binary.js:185
unlinkSync(temporary); - 写入本地文件lib/install-binary.js:187
if (platform !== 'win32') chmodSync(destination, 0o755);
扫描于 2026/11/2(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DeepSeek Harness 插件:用你自己的 RustXNG 元搜索实例来应答内置的 web_search(支持 Windows、macOS、Linux)
README
由 DeepSeek 最新模型翻译生成dsh-rustxng
在 DeepSeek Harness 里使用你自己搭建的 RustXNG 实例,并用它来回答内置的 web_search。
RustXNG 是用 Rust 写的元搜索引擎,兼容 SearXNG:一次查询会分发到约 170 个搜索引擎,去重后返回结果,没有广告,也不做追踪。这个插件把 DSH 连到你自建的 RustXNG(Windows、macOS 或 Linux 都行),并额外提供:
| 贡献 | 你能得到什么 |
| 搜索服务商 | web 接缝上的 rustxng 服务商。把 web.searchProvider 指向它,内置 web_search 就由你的实例来回答——不需要 DeepSeek 搜索 API key。 |
| 设置卡片 | 插件页里的一张卡片,带两个实时开关和实例 URL。不用重启,也不用手工改 YAML。 |
| 工具 | rustxng_search(可按引擎、分类、语言和时间范围限定)和 rustxng_status(可达性、版本、引擎数量、服务商状态)。 |
| 二进制下载器 | node scripts/install-binary.mjs 会下载对应你操作系统和 CPU 的发布二进制,并校验。
展开完整文档(README 剩余 1 节)
dsh-rustxng
在 DeepSeek Harness 里使用你自己搭建的 RustXNG 实例,并用它来回答内置的 web_search。
RustXNG 是用 Rust 写的元搜索引擎,兼容 SearXNG:一次查询会分发到约 170 个搜索引擎,去重后返回结果,没有广告,也不做追踪。这个插件把 DSH 连到你自建的 RustXNG(Windows、macOS 或 Linux 都行),并额外提供:
| 贡献 | 你能得到什么 |
| 搜索服务商 | web 接缝上的 rustxng 服务商。把 web.searchProvider 指向它,内置 web_search 就由你的实例来回答——不需要 DeepSeek 搜索 API key。 |
| 设置卡片 | 插件页里的一张卡片,带两个实时开关和实例 URL。不用重启,也不用手工改 YAML。 |
| 工具 | rustxng_search(可按引擎、分类、语言和时间范围限定)和 rustxng_status(可达性、版本、引擎数量、服务商状态)。 |
| 二进制下载器 | node scripts/install-binary.mjs 会下载对应你操作系统和 CPU 的发布二进制,并校验。 |
DSH 本身没有打任何补丁:插件用的是文档里公开的 ctx.web.registerSearchProvider() API 和普通的 web.searchProvider 设置字段,所以 Harness 升级后照样能用。
环境要求
- DeepSeek Harness >= 0.2.0-rc.2 < 0.3.0(需要宿主提供 tools、web 和 settings 服务)。
已在 0.2.0-rc.2 和 0.2.1-rc.2 上验证;见 docs/PLATFORMS.md。
- Node.js 20+(插件用的是全局 fetch)
- 一个正在运行的 RustXNG 实例——见下文
1. 获取 RustXNG
最省事: 让插件去下载发布二进制。
node scripts/install-binary.mjs # into $DSH_HOME/bin (or ~/.dsh/bin)
node scripts/install-binary.mjs --dir ./bin --musl # Linux without glibc
脚本会挑出适合你平台的资源,校验发布的 SHA-256,然后打印启动命令。
或者你自己从发布页下载:
| 平台 | 资源 |
| Windows x64 | rustxng-v<ver>-x86_64-pc-windows-msvc.exe |
| macOS arm64 | rustxng-v<ver>-aarch64-apple-darwin |
| macOS x64 | rustxng-v<ver>-x86_64-apple-darwin |
| Linux x64 (glibc) | rustxng-v<ver>-x86_64-unknown-linux-gnu |
| Linux x64 (musl) | rustxng-v<ver>-x86_64-unknown-linux-musl |
启动它:
rustxng --port 8888 # listens on 127.0.0.1:8888 by default
curl 'http://127.0.0.1:8888/healthz' # → OK
RustXNG 在 <http://127.0.0.1:8888/> 提供自己的搜索界面;插件不替换那个页面,只是消费同一套 JSON API。
2. 安装插件
registry install (recommended)
dsh plugin --profile web add dsh-rustxng
or from a checkout of this repository
git clone https://github.com/<owner>/dsh-rustxng.git
then: Plugin Manager → install bundle → the checkout directory
从 checkout 安装会链接目录,因此 Node 解析到插件的真实路径(.../dsh-rustxng)。插件对此做了处理:如果从该路径无法解析 @deepseek-ai/schemastery,它会通过运行中的 Harness 自身入口点加载 schema 构建器,而不是静默丢弃 schema。
3. 启用
打开 Plugins → RustXNG,开启 Use RustXNG for web_search。或者在配置档补丁里设置(~/.dsh/profiles/<profile>/cordis.patch.yml): yaml
- id: dsh-rustxng
config:
baseUrl: http://127.0.0.1:8888
webSearch:
enabled: true
autoSelect: true
此后 web_search 由 RustXNG 应答。enabled 和 autoSelect 开关以及实例 URL 都是易变的:设置卡片会实时修改它们,关闭该功能会把 web.searchProvider 交还给之前的值。
配置
| 键 | 默认值 | 含义 |
| enabled | true | 总开关;false 会卸载工具并注销服务商。 |
| baseUrl | http://127.0.0.1:8888 | RustXNG 的监听地址。易变(可在卡片中编辑)。 |
| timeoutMs | 20000 | 单次搜索的超时时间。 |
| defaultLimit | 12 | 交给 web_search 的来源数量(1–50)。 |
| language | '' | 搜索语言(ja、en 等);留空 = 实例默认值。 |
| timeRange | '' | day / week / month / year;留空 = 不过滤。 |
| safeSearch | -1 | -1 = 实例默认值,否则为 0 / 1 / 2。 |
| categories | [] | 应用于每次搜索的分类过滤(general、it 等)。 |
| exposeTools | true | 注册 rustxng_search / rustxng_status。 |
| webSearch.enabled | false | 替换内置的 web_search。易变。 |
| webSearch.autoSelect | true | 替你写入 web.searchProvider = 'rustxng'。易变。 |
| debug | false | 记录每次服务商决策。 |
工具 jsonc // rustxng_search { "query": "rust async runtime", "limit": 8, "engine": "arxiv", "time_range": "year" } { "query": "東京 天気", "category": "news", "language": "ja" }
rustxng_status 报告实例是否应答、其版本、启用了多少引擎、服务商是否已注册,以及 web.searchProvider 是否指向它——搜索失败时先运行它。
平台支持
| 平台 | 状态 |
| Windows 10/11 x64 | 已验证:release 二进制 + 本插件(搜索、服务商替换、设置卡片)在 DSH 0.2.1-rc.2 上 |
| Linux x64(glibc / musl) | 已在独立 Ubuntu 26.04 服务器(DSH 0.2.0-rc.2:替换 + 卡片)和 WSL2 上验证(两个 release 构建均 12/12) |
| macOS arm64 / x64 | 设计上支持(release 资产已存在);验证待完成 |
各平台预期如何验证、二进制放置位置以及平台特定说明(PATH、服务管理器、WSL、musl),见 docs/PLATFORMS.md。
故障排查
| 症状 | 修复 |
| RustXNG is not answering at … | 启动实例,或修正卡片里的 baseUrl。rustxng_status 会显示探测错误。 |
| web_search 仍然报 DeepSeek 401 | 服务商没选对:检查卡片上的第一个开关,或官方 Web search 页面上的 web.searchProvider。在 DSH 0.2.0-rc.2 上,这个字段无法从插件写入 —— 请在配置档补丁里设置(见上文),或用 DSH_WEB_SEARCH_PROVIDER=rustxng。 |
| Plugins 里看不到卡片 | 插件行未激活 —— 检查 Plugin Manager,并确认 DSH 版本符合 dsh.compatibility。在链接检出(linked checkout)下,schema 经由 Harness 安装解析:rustxng_status 会打印 Config schema: loaded via … 或解析错误。0.1.2 能解析 <prefix>/bin/dsh 这类符号链接启动器。 |
| 明明开着,rustxng_status 却显示 Replace web_search: no (default) | 0.1.2 已修复(此前实时配置值被当作原始类型比较)。 |
| Wanted to register a provider but web is missing | 配置档里没有 @deepseek-ai/dsh-web;本插件做替换时需要它(工具本身仍可用)。 |
| 结果偏少 | 部分引擎按 IP 限流;rustxng_status / RustXNG 的 /stats 会显示哪些被暂停。!engine query 仍然可用。 |
开发 bash
node tests/smoke.mjs # payload normalisation + platform mapping (+ live search if an instance answers)
node tests/apply.test.mjs # host half against a stub instance: provider gate, selection, tools, live values
node tests/resolve.test.mjs # host-package resolution through a symlinked launcher (Linux npm-global layout)
apply.test.mjs 和 resolve.test.mjs 不需要运行实例,也不需要网络。
目录结构:
index.js host plugin: Config, provider + tools wiring, selection hand-over,
symlink-aware host-package resolution
lib/rustxng-client.js HTTP client: query building, payload normalisation, timeouts
lib/web-provider.js the rustxng seam provider and the web.searchProvider hand-over
lib/tools.js rustxng_search / rustxng_status
lib/client.js settings card (Plugins → RustXNG)
scripts/install-binary.mjs cross-platform release downloader with SHA-256 check
scripts/verify-linux.sh 12-item instance verification for POSIX hosts
许可证与署名
MIT —— 见 LICENSE。
RustXNG 本身是 AGPL-3.0-or-later,且不随本插件打包:插件通过 HTTP 与独立进程通信,scripts/install-binary.mjs 从 RustXNG 自己的发布页下载它。如果你再分发修改过的 RustXNG,AGPL §13 约束的是那份作品,不是本插件。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
kgmkm/dsh-rustxng
用自建 RustXNG 实例接管内置网页搜索
相关插件 · 搜索 / 抓取
LLM 知识平台Tencent/WeKnora
概览 ·快速开始 ·新特性 ·功能 ·客户端 ·文档 ·开发
★ 36,161已汉化DSH
72.1
智能体记忆系统MemTensor/MemOS
MemOS 2.0 Stardust星尘
★ 12,195已汉化DSH
71.2
跨代理记忆库zilliztech/memsearch
跨平台语义记忆,专为 AI 编程智能体打造。
★ 2,799已汉化DSH
70.9
技能语料库EverMind-AI/SkillCorpus
SkillCorpus 能给你什么
★ 694已汉化DSH
69.7
代码图谱记忆syncable-dev/memtrace-public
你的智能体值得拥有结构化记忆。
★ 509已汉化MCP
67.9
AnySearch 搜索插件anysearch-team/anysearch-dsh
AnySearch 网页搜索服务商,为 DeepSeek Harness(DSH)提供高级搜索工具
★ 457已汉化DSH
66.6