npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

dsh-search-free

v0.1.1

Published

Free multi-layer web search provider (Exa -> Tavily -> Bing) + native fetch provider + web_fetch tool for DeepSeek Harness (DSH). No official search package required, no schemastery dependency.

Readme

dsh-search-free

DeepSeek Harness(DSH)提供的免费多层网络搜索 + 抓取 provider。

为什么有这个项目:官方 @deepseek-ai/[email protected] 引用了 npm 上不存在的 @deepseek-ai/dsh-environment,无法加载;官方 DeepSeek 搜索又需要充值余额。本插件开箱即用,提供免费可用的搜索栈。

功能

  • 搜索 provider freesearch,多层自动降级:
    1. Exa — 语义搜索(质量优先,使用你的 Exa key)
    2. Tavily — 通用搜索(免费档约 1000 次/月)
    3. Bing RSS — 零 key、零成本兜底
  • 抓取 provider native — 原生 fetch,跟随重定向,自动区分 HTML/文本
  • 模型工具 web_fetch — 与标准工具同契约(仅在不存在时注册)

代码中不内嵌任何密钥:密钥来自插件行配置(exaApiKey / tavilyApiKey)。key 为空则跳过对应层。

⚠️ 安装防坑(先读这个——v0.1.1)

不要在运行中的 DSH profile 目录里执行 npm install / pnpm add / pnpm install$DSH_HOME/profiles/<profile>)。pnpm 会创建一个影子 node_modules,其布局 与 profile 真实的依赖树不一致;运行中的实例懒加载模块时会从它加载,导致整个 工具管线崩溃,报错:

Cannot read properties of undefined (reading 'prepare')

这是我们踩过的坑。解法:删掉那个影子 node_modules(实例会重新解析父级/全局树), 改用符号链接挂载插件:

# 适用于有父级 hoisted 树的 profile(web/desktop)
ln -s <插件路径>/dsh-search-free "$DSH_HOME/profiles/node_modules/dsh-search-free"

v0.1.1 同时彻底移除了 @deepseek-ai/schemastery 依赖:插件自带 schemastery 副本 可能与宿主 DSH 的副本冲突。配置现在是普通对象(无需校验)。

安装

# 从 npm 安装
npm i dsh-search-free
# 或从 GitHub 安装
npm i github:lmcsh9527/dsh-search-free

然后在 profile 补丁(cordis.patch.yml)中挂载:

- id: web
  config:
    searchProvider: freesearch

- insert:
    - id: web-search-free
      name: 'dsh-search-free'
      config:
        exaApiKey: <EXA_API_KEY>        # 可选;为空跳过 Exa 层
        tavilyApiKey: <TAVILY_API_KEY>  # 可选;为空跳过 Tavily 层

使用

  • web_searchfreesearch(Exa → Tavily → Bing 自动降级)。
  • web_fetch 抓取任意 HTTP(S) URL 并转为可读文本(HTML 去标签,上限 2 万字符)。

测试

EXA_API_KEY=... TAVILY_API_KEY=... npm test

使用 mock ctx 对真实接口进行端到端测试。

许可证

MIT © lmcsh9527