dsh-plugin
DayuanJiang/next-ai-draw-iodsh 的 draw.io 绘图插件:通过 next-ai-drawio MCP 服务器作图,点回复里的链接在右侧栏打开实时预览,可以手动修改图,AI 的每次修改都是可以恢复的版本。需 Node.js 18+,首次使用由 npx 下载 MCP 服务器。
在原来的 DSH 聊天里使用多来源搜索,一家出错,自动尝试下一家。
可视化配置 · 自动回退 · 日志回放 · 账户额度
dsh-grok-search 是 DeepSeek Harness(DSH)的可视化搜索插件,以 Episkey-G 开发的 grok-search-rs 为 MCP 核心后端,接入 DSH 原有的 web_search。照常在聊天里提问,由插件提供 Grok 主搜索与补充来源回退,安装一个 DSH 插件即可。
grok-search-rs 配置,Key 可查看、修改,升级后继续保留。| 名词 | 含义 |
|---|---|
grok-search-rs | 本机运行的 MCP 搜索后端,界面名称为「Grok Search Rs」;0.1.26 是程序版本 |
| Grok 主搜索 | 使用 xAI Grok 模型的搜索服务;模型版本不是后端程序版本 |
| 补充来源 | Tavily、Exa、TinyFish、Firecrawl;关闭 Grok 后也能单独使用 |
| 回退 | 当前来源失败或返回空结果时,在剩余请求预算内尝试下一个来源 |
| 补充来源数 / 回退来源数 | 界面中的结果条数设置,不是启用的供应商数量 |
DeepSeek Harness 与「Grok Search Rs」横向相连,搜索来源在右侧纵向排列。每行只有图标、名称和开关,点击图标或名称即可配置。
本页图片与录屏保留真实的 0.2.0 版本标注,不作为 0.2.1 实录。安装流程仍适用,具体界面与行为以安装版本及文字说明为准。
图中查询、耗时、测试结果和账户额度用于演示界面,不作为性能、免费额度或实测通过的承诺。
0.2.1-rc.2 ~ 0.2.1-rc.5 或 0.2.2-rc.1,系统与入口见支持范围。grok-search-rs 时,插件会自动准备程序。当前版本为 0.2.1,可从 npm 或 GitHub Release 安装。两种方式任选其一;已安装的用户可直接看更新已有版本。
打开 「插件 → 添加插件」。
在 「包名或地址」 填写下面的名称,阅读来源提示后点击 「安装」:
dsh-grok-search
等待显示 「已安装」,确认包名后进入首次配置。下载进度可在「查看安装详情」中查看。
按完整包名即可定位安装,无需从搜索结果中挑选。若提示已经安装,返回已安装列表打开详情。
安装指定版本: 从 npm 发布列表选择所需版本,填写 dsh-grok-search@版本号,将“版本号”替换成实际已发布的号码。新版本刚发布时,DSH 的安全等待策略可能让裸包名安装到较早版本;下方录屏以 dsh-grok-search@0.2.0 演示,安装后请核对版本,无需关闭安全策略。
Windows Desktop 0.2.2-rc.1 · 已发布插件 0.2.0 · 约 13 秒,下载等待标注 ×8,安装成功即结束。
点击动态图观看 1920 像素宽高清 MP4。
适合安装指定版本或安装源尚未同步的情况,直接导入 .tgz 即可,无需解压。
打开 GitHub Releases,在所需版本的 Assets(附件) 下载 dsh-grok-search-<版本>.tgz。请选择插件包,Source code 是源码归档。
复制下载文件的绝对路径。
打开 「插件 → 添加插件」,在 「包名或地址」 粘贴该路径,不加引号。路径格式如下,<版本> 必须换成下载文件的实际版本:
C:\DSH-Plugins\dsh-grok-search-<版本>.tgz
点击 「安装」,看到 「已安装」 后继续首次配置。
Windows Desktop rc.5 · 0.2.0 候选包本地导入实录 · 约 15 秒,下载等待标注 ×8,安装成功即结束。
点击动态图观看 1920 像素宽高清 MP4;这是本地安装演示,不是 npm 按名称安装或 Release 下载实录。
.tgz 文件直接填绝对路径,例如 /Users/你的用户名/Downloads/dsh-grok-search-<版本>.tgz,将用户名和版本替换成实际值,不用加 file:。路径必须位于运行 DSH 的电脑;远程 Web 不能使用浏览器所在电脑的本地文件路径。
若已经解压,进入内层 package 文件夹,确认能直接看到 package.json、cordis.patch.yml 和 src,在同一个输入框填写 file: 加文件夹绝对路径:
file:C:\DSH-Plugins\dsh-grok-search\package
Windows 可在该文件夹按 Alt+D、Ctrl+C 复制地址。目录前的 file: 用于安装依赖;仅填目录路径可能变成开发链接并缺少依赖。请保留解压目录,便于再次导入。
以上示例均需换成实际路径。本地包首次安装仍可能联网下载依赖和 grok-search-rs,不是完全离线安装。
点击 「立即启用」,或打开已安装列表中的插件开关,再进入插件详情。等待 grok-search-rs 程序就绪;已有共享配置会自动读取,没有 Key 时显示「等待配置」。
按需配置来源,填好后保存并开启:
| 使用方式 | 操作 |
|---|---|
| 只用补充来源 | 关闭 Grok,点击 Tavily、Exa、TinyFish 或 Firecrawl,填写对应 API Key |
| 使用 Grok 主搜索 | 点击 Grok,填写 API Key;官方接口可保留默认地址,兼容网关按服务商要求选择协议并填写 Base URL 和模型 |
点击 「测试搜索 → 开始测试」,检查已开启来源的连通性。
确认接管:回到聊天,发起一个需要联网的问题。出现 web_search 后展开搜索步骤,查看「由 dsh-grok-search 执行 · 实际来源」;回到插件详情,还能看到对应的「最近搜索」记录。无需一直开着设置页,也无需在提问时点名插件。
是否发起 web_search 由 DSH 的对话与工具调用决定;普通聊天没有触发搜索时,不会产生搜索记录。诊断测试也不写入最近搜索。保存前请了解共享配置的影响。
支持范围内的 Linux CLI/Web 可执行:
dsh plugin --profile web add dsh-grok-search
按包名安装使用 npm 的 latest 入口。next 可能仍指向旧版,不作为更新入口。若镜像尚未同步,在安装弹窗的 「安装源」 选择 npm 官方源,或改用 Release 包,无需修改全局 npm 源。「自定义安装源」填写 npm registry(如 https://registry.npmjs.org/),不要填写项目的 GitHub 地址。
若只填名称却提示版本不兼容,先看报错中的实际解析版本:宿主的新版本等待策略可能仍选到旧包。可从 npm 发布列表选择兼容的精确版本,按 dsh-grok-search@版本号 填写,或使用 Release .tgz。精确版本仍受宿主安装策略约束,不需要关闭安全检查、卸载现有插件或清缓存。
正常更新不用重填 Key、不用清缓存,也不用重新安装兼容的 grok-search-rs。 配置和程序缓存与插件包分开保存;请继续使用原来的 DSH 配置环境,不要清空应用数据。
准备升级到 DSH 0.2.2-rc.1?先选择已发布且声明支持该宿主的插件版本,再更新 DSH。 插件 0.2.0 已加入该宿主支持;旧插件 0.1.1 不支持。若已经更新 DSH,直接安装兼容版本,不要通过忽略版本检查强行启用。
DSH 0.2.2-rc.1:优先在插件面板内更新。 从 npm 按包名安装的用户:
查不到新版本时,先核对安装源及发布等待提示;不要清缓存或强行忽略兼容检查。本地目录、Git 或 .tgz 来源不一定具备此更新入口,可用下面的方式。
各受支持版本均可直接导入新版 .tgz,不必先卸载旧插件:
.tgz,等待正在进行的搜索结束。.tgz 的绝对路径,点击 「安装」。旧宿主按包名或解压目录安装可能提示“已经安装”,优先改用新版 .tgz。确实无法原地更新时,才考虑在插件详情卸载后重新安装;正常卸载保留配置和程序缓存。
更新失败时,DSH 0.2.2-rc.1 会尝试恢复旧包,但恢复本身也可能失败。先查看更新结果,必要时用兼容当前宿主的已发布 .tgz 恢复;不要删除配置或缓存。
Windows Desktop 0.2.2-rc.1 已在隔离测试源验证 0.2.0 → 0.2.1 面板更新,无需重启;原开关状态、Key 配置和程序缓存保留,下载校验失败、启动失败及下载取消后可恢复旧版。0.2.1-rc.5 的 0.1.1 → 0.2.1 原地导入、重启与配置保留也已验证。这些测试不保证所有网络故障下都能恢复。新版插件包需要下载,已有兼容的搜索程序继续复用。
下表列出兼容范围与累计宿主证据;不表示每个候选安装包都已在所有组合重新实测。各版本的验证依据与未覆盖环境见支持矩阵。
| 系统 | 入口 | 兼容的 DSH 版本 | 验证情况 |
|---|---|---|---|
| Windows x64 | Desktop | 0.2.1-rc.2 ~ rc.5、0.2.2-rc.1 | rc.2 / rc.3 / rc.5 与 0.2.2-rc.1 已测;rc.4 源码审查支持 |
| macOS Apple Silicon | Desktop | 0.2.1-rc.2 ~ rc.5、0.2.2-rc.1 | rc.2 / rc.3 / rc.5 与 0.2.2-rc.1 已测;rc.4 源码审查支持 |
| Linux x64(WSL Ubuntu 22.04) | CLI/Web | 0.2.1-rc.2 ~ rc.5、0.2.2-rc.1 | 五个版本均已测 |
dsh-grok-search 各自独立编号。插件 0.1.1 不支持 DSH 0.2.2-rc.1;插件 0.2.0 同时支持表中旧宿主与新宿主。真正的 DSH 0.1.0 不在本项目支持范围,新旧版本不会自动互相兼容。0.2.2-rc.1 需要 Node.js ≥ 24.9;Desktop 自带运行时,CLI/Web 用户须自行满足此要求。插件没有自动升级全局 Node.js。grok-search-rs 程序版本为 0.1.26;优先复用兼容安装,缺少时准备私有缓存,不升级全局程序或自动采用未经验证的版本。原生 Linux、真实付费服务等验证边界见常见问题。
每行只保留图标、名称和开关,点击图标或名称打开配置弹窗。
| 来源 | 用途 | 可配置内容 |
|---|---|---|
| Grok | 使用 xAI Grok 模型的主搜索服务 | 接口协议、Base URL、API Key、模型、网页/X 搜索 |
| Tavily | 补充搜索 | Base URL、多个 API Key |
| Exa、Firecrawl | 补充搜索 | Base URL、API Key |
| TinyFish | 补充搜索 | 搜索与抓取 Base URL、API Key |
| GitHub | 专用链接解析与认证检测 | Token;不参与补充搜索排序 |
| Grok Search Rs 中间节点 | grok-search-rs 程序与通用设置 | 补充来源数、回退来源数、超时、缓存、回复字符上限 |
拖动补充来源调整顺序,也支持聚焦后按 Alt+↑/↓。「补充来源数」「回退来源数」指结果条数,不是供应商数量;设为 4 不表示调用四家。
| 场景 | 搜索行为 |
|---|---|
| Grok 开启 | 先走主搜索,失败后尝试可用的补充来源 |
| Grok 关闭 | 直接按你排列的补充来源顺序搜索 |
| 来源失败或返回空结果 | 在剩余请求预算内继续尝试,拿到第一份有效结果即停止 |
| 所有来源失败、没有可用来源或预算耗尽 | 明确报错,不自动回到 DeepSeek 官方搜索 |
例如 Tavily → Exa → TinyFish → Firecrawl:Tavily 报错、Exa 返回结果,本次搜索便由 Exa 完成。Tavily 有多个 Key 时,遇认证、限流等特定错误还会尝试下一把 Key。回退由故障触发,不主动探测余额,也不会永久跳过某个来源。
0.2.0 旧版离线示意:展示异常与路由动效,不作为实际搜索回退的证据 · 点击观看高清 MP4。
「测试搜索」会逐个检查全部已开启且已配置的来源和 Tavily 的每个 Key,不会因为某个来源成功就跳过其余来源。GitHub 仅在已填写 Token 且开启检测时单独检查认证,不参与补充搜索。
Grok 单项测试不额外调用补充来源,也不修改共享配置;上游未提供明确错误状态时,可能补发一次限时的 Grok 诊断请求。测试显示各来源是否可用; 只有真实搜索发生回退时,才显示「已静默回退」。
测试时显示已完成项、当前来源和等待秒数,可随时点击「停止测试」。每个独立请求遵守共享超时配置和插件预算,整轮逐项测试可能超过两分钟;空结果会明确标注,不当作 Key 失效。
真实搜索共用一次总预算(默认 120 秒,含排队与回收)。有可用备用来源时会预留回退时间,慢来源不会独占插件直接管理的回退窗口;全部未返回可用结果时明确结束,不无限重试,也不自动切到官方付费搜索。上游内部预取仍由 grok-search-rs 管理。
图标点亮表示已配置并开启,Key 可用性以测试结果为准。右上角图标与小圆点显示最近一次测试;出错来源短暂红边、轻颤,并显示简短原因,如 403 · 访问被拒绝。
日常搜索拿到有效结果就停止;测试搜索会逐项检查。 两者都可能消耗供应商额度,见隐私与费用。
插件启用后自动记录当前 DSH profile 的搜索。一个查询一条日志,最多显示最近 20 条;同一次 web_search 中的多个查询分别展示。
来源、结果与消耗放在同一条记录中;示例数据不代表真实账户或测试结论。
点击已完成记录的 「回放」,上方路由图会重现结果链路。回放只播放动画,不重新搜索、不消耗额度、不修改配置或 Key 状态。
内部回退依据 grok-search-rs 返回的标签展示实际供应商和官方图标;多来源结果分别展示,缺少标签时显示「来源未报告」。动画表达已知的结果路径,不还原原始网络时序,也不据此推算调用次数、使用的 Key 或费用。
回放结束后恢复当前配置,可点击「返回该条日志」继续查看明细。
打开已配置的供应商弹窗即自动查询,30 秒内重开复用同一账户缓存,过期后自动刷新;也可以手动刷新。
| 来源 | 可查看内容 |
|---|---|
| Tavily | 套餐已用/剩余;当前 Key 限制更低时,在总额度旁提示 |
| Firecrawl | 团队余额 |
| TinyFish | 钱包余额 |
| Exa | 尚未接入普通 Key 余额接口,可从标题旁「服务控制台」查看 |
自定义 Base URL 同样尝试查询;失败时显示原因和已获得的 HTTP 状态,可点击重试,刷新失败时保留并标明上次结果。当前表单的 Base URL 和 Key 无需先保存即可查询,查询不写配置,取消不会保存草稿。「服务控制台」始终打开对应供应商的官方控制台,自定义服务的余额以该服务提供方为准。
账户额度可能含其他应用的调用,不等于本次搜索消耗。 日志只展示接口实际报告的消耗,缺失显示「未报告」,说明收在旁边的圆形提示图标中,不按余额差值推算。
已用与剩余并列展示;图中 126 / 874 credits 为演示数据,实际额度以服务商返回为准。
本插件与 grok-search-rs 读写同一份配置文件,不另存第二份 DSH Key 配置。
.config/grok-search-rs/config.toml,也可由 GROK_SEARCH_CONFIG 指定。页底「Grok 共享配置」显示实际位置,支持打开文件、所在文件夹或复制路径。共享文件的修改也会影响使用它的其他 MCP 客户端。 配置历史与凭据保护见隐私与费用。
日常请只使用 DSH 已安装列表里的插件开关:关闭即恢复原搜索设置,重新开启由 dsh-grok-search 按当前来源设置接管。宿主没有启用热重载时,会提示需要重启。
DSH 的插件开关与详情中的组件开关是两层独立设置。若插件已启用,但组件被单独关闭,请手动将组件重新打开;卸载重装不会清除这条组件设置。
| 提示 | 建议操作 |
|---|---|
401 / Grok 认证失败 | 检查对应服务的 Key 是否正确、过期或被撤销;grok-search-rs 未提供 HTTP 状态码时不猜测 |
403 | 检查账号、模型或接口权限;不一定是余额不足 |
429 | 检查额度和限流,稍后重试 |
404 / 405 | 核对 Base URL 与接口路径 |
| 网络 / 超时 / TLS | 检查网络、代理、证书与超时设置,不要关闭证书校验 |
| Grok 未返回引用链接 | 回答没有可识别的来源;核对模型联网能力与接口引用格式,不等于 API Key 无效 |
OUTPUT_LIMIT / 回复上限过小 | 输出预算未能保留搜索链接;在「Grok Search Rs」中调大「回复字符上限」,不等于 Key 失效 |
CONFIG_CONFLICT | 读取最新配置,核对草稿后再保存 |
CONFIG_COMMIT_UNCERTAIN | 先回读确认文件状态,不要反复点击覆盖 |
CONFIG_BUSY / PREFERENCES_BUSY | 检查并发保存或上次中断;插件不会强抢遗留锁 |
| 程序准备 / 下载错误 | 在「Grok Search Rs」中间节点查看原因,检查网络后按界面提示重新检测或重新准备 |
GROK_CACHE_DAMAGED / 程序缓存损坏 | 点击「重新准备」,验证成功后自动使用新的私有程序;保留共享配置和 Key,不覆盖全局安装 |
GROK_VERSION_UNVERIFIED /「Grok 版本未经验证」 | 指 grok-search-rs 程序版本,不是 Grok 模型版本;未经插件验证不会自动安装、升级或覆盖,请等待插件更新 |
配置历史可能包含明文 Key/Token。
grok-search/config-history/保存修改前的完整配置,删除当前 Key 不会擦除历史中的旧值。请保护配置与历史文件,不要提交到 Git、上传公开网盘或附在问题反馈中。
先看报错发生在哪一步:
dsh-grok-search@0.1.1 与 DSH 0.2.2-rc.1 不兼容,说明实际安装的并非新版。DSH Plugin Hub 的 npm 包名是 dsh-plugin;v1.6.6 较旧,建议更新 Hub。Hub 自 v2.3.2 起锁定已过发布时间限制的版本,但刚发布时仍可能选择旧版;目录显示版本也可能滞后。可在 DSH 原生「添加插件」 中填写 dsh-grok-search@0.2.1,使用默认源或 npm 官方源,并核对实际安装版本。不要把带版本的名称直接填进 Hub 的裸包名输入框。精确版本仍须通过宿主策略。Cannot find module ...pnpm/bin/pnpm.mjs:DSH 自带安装工具缺失或其路径失效,尚未执行插件代码;改用 Hub、本地目录或 .tgz 也依赖它。完整退出 DSH,通过官方发行页修复或重新安装完整应用程序,保留现有用户数据目录与 grok-search-rs 共享配置。不要仅复制一个 pnpm.mjs、清空 .dsh 或重配 Key;全局安装 pnpm 也不能补齐该应用内路径。若更换安装源,GitHub 项目网址应放在「包名或地址」,不属于 npm registry。安装器恢复正常后再重试;仍失败时附上 DSH、Hub、实际插件版本及脱敏错误日志。
新版本刚发布时,pnpm 的默认非严格策略可能在安装精确版本后,自动记录当前 profile、该精确版本的等待期例外;严格策略则可能拒绝。无需手动关闭安全检查,安装结果以宿主提示为准。
grok-search-rs 是由 Episkey-G 开发的独立 MCP 搜索后端;本插件调用它执行 Grok 主搜索,并提供 DSH 原搜索工具接入、可视化配置、补充来源回退、诊断、进程管理和恢复。单独配置 grok-search-rs MCP 不会自动接管 DSH 原有的 web_search。
通常不用手动安装:已有兼容的 grok-search-rs 程序就复用,没有才下载到当前 DSH profile 的私有缓存,不改变其他 Agent 的程序路径或创建第二份 grok-search-rs 配置。上游程序新版未经验证时会明确提示,不盲目安装。
一个 DSH 实例串行复用一个受管的 grok-search-rs MCP 会话,程序空闲五分钟后退出;最多一个活动查询、八个排队查询,不会每次搜索都累积一个后台进程。
不会。卸载保留 grok-search-rs 共享配置,以及当前 DSH profile 目录下的数据:
| 位置(相对当前 profile) | 内容 |
|---|---|
grok-search/runtime-cache/ | 下载的 grok-search-rs 程序与校验记录 |
grok-search/preferences.json | DSH 主搜索/GitHub 检测开关,不保存 Key |
grok-search/config-history/ | 保存前的完整配置历史,可能包含明文 Key/Token |
control-intent.records/ | 接管与恢复记录 |
profile 通常位于 <DSH 主目录>/profiles/<profile 名>;Desktop 使用 desktop,上文 CLI/Web 命令使用 web。数据保留与保护说明见更新已有版本和隐私与费用。
第三方接口返回 HTTP 200 或普通回答,不一定具备可用的联网搜索来源。欢迎反馈实际使用问题,不承诺表外兼容或零故障。
DSH 0.2.2-rc.1 在宿主配置重建恰好与搜索派发重叠时,可能拒绝旧工具调用并返回 UNKNOWN_TOOL;重建完成后的下一次搜索正常,不会因此偷偷改用官方搜索。插件自己的 Key 保存不要求重启宿主。
开发建议 Node.js ≥ 24.9,与最新支持宿主一致。按锁文件安装依赖,再构建、测试和打包:
npm ci --ignore-scripts --legacy-peer-deps
npm run build:client
npm run test:all
npm run pack:release
pack:release 使用 npm pack --ignore-scripts,不会触发 prepack,因此构建和测试需要单独执行。产物与校验回执位于 artifacts/release-package/<运行编号>/;打包不等于发布。文档图片和录制脚本不随 npm 插件包分发。
反馈时请附系统、DSH 与插件版本、grok-search-rs 程序版本、模型名称(如有)、错误码及复现步骤;不要附 Key、完整配置或未脱敏路径。
用着还行?欢迎点个 Star,或通过 Issue 分享建议。
感谢 Episkey-G 创建并维护 grok-search-rs(MIT 许可证)。这个 Rust 编写的 MCP 搜索后端是本插件 Grok 主搜索能力的基础;我们在其之上提供 DSH 原工具接入、可视化配置、多来源回退和进程管理。
如果你也想在其他 MCP 客户端使用这些能力,欢迎阅读 grok-search-rs 的使用说明,了解上游的功能与更新。两个项目独立维护。
感谢 LINUX DO 提供技术交流与开源分享的社区空间。