ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

读 dsh-free-search 的接管逻辑与配置落点

读 dsh-free-search 的接管逻辑与配置落点 装上能用只是第一步。当 profile 里已有别的 provider、你手改cordis.patch.yml、或从旧版本升级时三件事不清楚就会反复踩坑它何时接管、provider id 是什么语义、配置落在哪。接管的第一层bundle patch 里的显式写入正常安装dsh plugin add或插件管理器时插件自带的 bundle patchcordis.patch.yml会在配置层显式写入searchProvider: ddg。想横向比较同类插件的取舍可对照完整插件清单与汉化避坑指南。第二层运行时兜底接管官方默认第一层并不总生效——手工安装、或 profile patch 整体覆盖了web条目时显式写入可能就没了。运行时兜底接手web.searchProvider未设置或仍是出厂默认的deepseek-official时自动切换——不允许静默退回官方搜索。第三层已有 provider 时不抢占只告警如果你或别的插件已显式选择其他 provider本插件不抢占只在启动日志输出一条 WARN 与一段可复制的切换 YAML——装插件不等于夺走配置权。处理方式两条照日志给的 YAML 显式声明或在插件管理器里停用原来的 provider 条目。别把「搜索没被接管」当成安装失败。ddg是 provider id不是引擎名searchProvider: ddg里的ddg是本插件注册的固定 provider id不是「使用 DuckDuckGo 引擎」。它解决「搜索交给哪个 provider」「用哪个引擎」由设置页provider字段决定可填bing/baidu/auto等。整段覆盖为什么fetchProvider必须重述DSH 0.1.2 的 patch 语义是「整段覆盖 config」而不是深度合并你写的 patch 会替换整条 entry 的 config原web条目里没被重述的字段会被静默抹掉。所以fetchProvider: http必须一并重述配置落点挪过家从settings.yaml到 profile 条目从 DSH 0.1.7-rc.1 起配置跟随 profile 的插件条目保存设置页的改动与/free-search-engine的切换都写进当前 profile 的cordis.patch.yml中web-search-free条目的config。旧版~/.dsh/settings.yaml里的free-search:段不会被核心自动导入importLegacyDocument只为ui-developer-tools/ui-onboarding/shell三段提供映射原文件会被改名成settings.yaml.imported。插件启动时会检测它把可识别字段一次性补种进当前 profile 的条目 config写一次后不再重复日志可见free-search: migrated N field(s)…。peerDependencies唯一实例是硬约束插件对deepseek-ai/dsh-settings与deepseek-ai/dsh-tools使用peerDependencies因为 DSH 运行时必须用安装树里的唯一实例。安装一律走dsh plugin --profile name add ...不要把 DSH 核心包复制进 profile 的本地 node_modules重复副本会让工具调度器失效表现为「工具时好时坏」。低版本 DSH 看不到设置入口行配置插槽plugins.row.config需要DSH 0.1.7-rc.1。版本不够时「插件」页里根本没有web-search-free行的「配置」入口。解法是升级 DSH升级前只能改cordis.patch.yml或用tools/里那个零依赖的本地切换小工具。实现侧lib/index.js里注册了什么host 端lib/index.js实现WebSearchProvider对外暴露id/available()/search()内部做引擎路由与自动回退、timeRange透传它在web-search-free条目上声明可编辑配置.volatile()。浏览器端lib/client.js是 React 配置卡片与/free-search-enginecommandUipopupSelect。id决定 provider 归属available()决定是否被选中search()承载回退链.volatile()让配置可被设置页改写。总结接管分三层bundle patch 先写、运行时再兜底、已有 provider 时只告警配置落点也已从settings.yaml迁到 profile 条目认准cordis.patch.yml就不会找错地方详见完整插件清单与汉化避坑指南。再记两条硬约束整段覆盖要重述fetchProvider唯一实例不能有重复副本。适合与不适合适合想读懂接管与配置落点的使用者profile 里装了多个 provider、需要判断谁在生效的维护者从旧版 DSH 升级、要迁移settings.yaml配置的人。不适合只想「装上就能搜」、不愿碰cordis.patch.yml的纯使用者Node 低于 20 或 DSH 低于 0.1.7-rc.1 的环境行配置入口与补种逻辑可能对不上有强 SLA 要求的场景——免费引擎存在匿名限流、额度型引擎有月度或日度上限。标签dsh-free-search、DeepSeek Harness、provider 接管、cordis patch、配置迁移本文由 DeepSeek Harness Hub 自动整理数据来源于插件详情页。
返回列表