dsh-web-search-free
DSH 免费网页搜索:匿名 Parallel 默认后端加 Exa 备用,一个设置开关切换,并带兼容 Claude Code 与 Codex 的 MCP 服务器
sheep-programmer
@sheep-programmer
⬇ 1
★ 5
main
安装
dsh plugin --profile web add github:sheep-programmer/dsh-web-search-free
需要可复现安装时,可在仓库后追加 #commit 固定提交。
DSH 免费网页搜索:匿名 Parallel 默认后端加 Exa 备用,一个设置开关切换,并带兼容 Claude Code 与 Codex 的 MCP 服务器
该插件未提供要点说明,请参考仓库 README。
deepseek-harnessdshdsh-pluginfree-searchweb-search
- 安装并启动 DeepSeek Harness:
npx @deepseek-ai/dsh web - 在终端执行上面的安装命令(CLI 会解析插件并核验来源)
- 用 dsh plugins list 确认已安装,必要时重启 Harness 生效
插件以当前 dsh 进程的权限运行,安装时可能执行代码。请先通读仓库源码与许可证,确认无破坏性命令与越权访问;本站只做索引,不对第三方插件安全性作担保。
| 代码仓库 | github.com/sheep-programmer/dsh-web-search-free |
| 许可证 | MIT |
| 主要语言 | main |
| 下载量 | 1 |
| GitHub 星标 | 5 |
| 最近推送 | 2026-08-23 |
| 收录日期 | 2026-09-19 |
| 分类 | 工具与能力 |
事实信息来自公开插件目录快照(2026-10-03),介绍文案由本站再加工。
以下为插件仓库 README 全文(原始内容,由公开目录抓取整理)。
# dsh-web-search-free
> **中文** | [**English**](README.en.md) — DSH 插件([`dsh-plugin`](https://github.com/topics/dsh-plugin))· 免费网页搜索 provider + 设置开关 + **MCP server(兼容 Claude Code / Codex)**
把「DeepSeek 官方按量计费搜索」一键切换成 **OpenCode 同款免费搜索**(匿名免 key),
并且**同一个免费搜索后端直接作为 MCP 服务器**供 Claude Code、Codex 等任何 MCP
客户端使用。
- 🆓 **免费后端**:Parallel(默认) / Exa(备用)——都是 OpenCode 内置
`websearch` 工具的同款免费 MCP 端点,匿名可用、无需 API key、不扣任何余额。
- 🔄 **DSH 设置开关**:官方 ↔ 免费一键切换,自动维护 profile 补丁。
- 🔌 **MCP server**:零依赖,双传输(stdio + HTTP/SSE 双端口),
`claude mcp add` / `codex mcp add` 即装即用。
## 背景:为什么默认走 DeepSeek 官方 key
DSH 的 `web_search` 工具走 `ctx.web` 能力缝(seam)。默认装配的 provider 是
`@deepseek-ai/dsh-web-search-deepseek`(id = `deepseek-official`,由 `dsh-base`
依赖自动带入):每次搜索调用 DeepSeek 官方 Anthropic 兼容 API
(`https://api.deepseek.com/anthropic/v1/messages`)的原生 `web_search_20250305`
服务端工具,复用 `DEEPSEEK_API_KEY`,**按 token 计费**。
## 功能
### 免费后端(DSH 内)
注册两个免费搜索 provider 到 `ctx.web`,模型侧 `web_search` 工具调用方式不变:
| provider id | 后端 | 端点 | 说明 |
|---|---|---|---|
| `parallel-free`(**默认**) | Parallel Web Search | `https://search.parallel.ai/mcp` | 匿名免 key |
| `exa-free`(**备用**) | Exa | `https://mcp.exa.ai/mcp` | 匿名免 key;设 `EXA_API_KEY` 可提升限额 |
### 设置开关(DSH 设置 → 插件设置 → 可配置 → 免费网页搜索)
- **enabled 开关**(默认关 = 官方搜索):开启 → 免费;关闭 → 官方。
- **免费后端选择**:Parallel(默认)/ Exa(备用),单选。
- 变更自动维护 profile 用户层补丁 `~/.dsh/profiles/web/cordis.patch.yml` 的
`web` 行 `config.searchProvider`(开 → 写入所选 provider id;关 → 删除覆盖块)。
> 不能写 `~/.dsh/.env`:dsh-app-boot 拒绝 `.env` 里的任何 `DSH_*` 变量。
- **变更后重启 DSH 生效**(`WebRuntime` 启动时读取 `web` 行配置)。
### MCP server(Claude Code / Codex / 任意 MCP 客户端)
独立的零依赖 MCP server(`lib/mcp-server.js`,不依赖 DSH),暴露 `web_search`
工具(参数:`query` 必填、`provider` 可选 `parallel`/`exa`、`numResults` 可选)。
支持**双传输**:**stdio**(默认)与 **HTTP/SSE**(监听端口,兼容 Streamable
HTTP `POST /` 与老式 `GET /sse` + `POST /messages`)。
#### 传输一:stdio(默认,无需端口)
```bash
# 本地路径方式(clone 后)
claude mcp add dsh-web-search -- node /绝对路径/dsh-web-search-free/lib/mcp-server.js
codex mcp add dsh-web-search -- node /绝对路径/dsh-web-search-free/lib/mcp-server.js
# 或 npm 全局安装后(npx)
claude mcp add dsh-web-search -- npx -y @sheep233_/dsh-web-search-free
codex mcp add dsh-web-search -- npx -y @sheep233_/dsh-web-search-free
```
#### 传输二:HTTP/SSE(监听端口,双端口模式)
```bash
# 启动 MCP server(默认 http://127.0.0.1:3100;可用 --host/--port 调整)
node /绝对路径/dsh-web-search-free/lib/mcp-server.js --http --port 3100
```
- **Claude Code(Streamable HTTP)**:
```bash
claude mcp add --transport http dsh-web-search http://127.0.0.1:3100
```
- **Codex(OpenAI Codex CLI)**:
```bash
codex mcp add --transport http dsh-web-search http://127.0.0.1:3100
```
- **老式 SSE 客户端**(URL 指向 SSE 通道):
```bash
# 客户端配置 http://127.0.0.1:3100/sse(GET /sse 建立通道,POST /messages 发请求)
```
- **验证**:浏览器打开 `http://127.0.0.1:3100/` 返回
`{"name":"dsh-web-search-free","version":"0.3.0","transport":"http/sse","port":3100}`。
#### 其他 MCP 客户端
任何支持 **stdio** 或 **HTTP/SSE** 传输的 MCP 客户端都能接入(命令/URL 同上)。
可选环境变量:`EXA_API_KEY`(提升 Exa 匿名限额)。
## 安装(DSH 插件本体)
> ⚠️ **为什么别人装上设置里看不到卡片?** 设置卡片要显示需要同时满足:
> 1. 包被声明进 `dsh.profile.bundles`(**只把包放进 node_modules 是不够的**);
> 2. 安装后**重启 DSH**(host 装配与 client 图都在启动时解析);
> 3. 打开设置前**刷新浏览器页面**;
> 4. profile 是 `web`(`tui`/`headless` 无浏览器 UI);
> 5. 安装方式任选:本地路径 / `link:` / tgz / `npm i -g @sheep233_/dsh-web-search-free`
> (`npx @sheep233_/dsh-web-search-free` 也可用于 MCP server)。
> 装好后可用 `dev_plugin_status` 确认 `client ✓`,或直接看设置 → 插件设置 → 可配置。
**界面效果**(设置 → 插件设置 → 可配置 → 免费网页搜索):

**方式一:本机热装配(dsh-super-injector,免重启)**
```bash
dev_install_package # dir = 插件包目录(含 package.json 与 lib/)
```
**方式二:profile 声明(重启生效)**
在 `~/.dsh/profiles/web/package.json` 中声明:
```jsonc
{
"dsh": { "profile": { "bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
// ...其他 bundle...
"@sheep233_/dsh-web-search-free"
]}},
"dependencies": {
"@sheep233_/dsh-web-search-free": "link:/绝对路径/dsh-web-search-free"
}
}
```
**方式三:npm 包(tgz)**
```bash
npm run build && npm pack
# 把产物 tgz 加入 profile 依赖后重装(pnpm install),重启生效
```
## 验证
```bash
npm run verify # 补丁联动 + Parallel/Exa 真实搜索 + 选择矩阵 + MCP 冒烟
```
## 回退官方
设置里关闭 enabled 开关(覆盖块随即删除),重启 DSH。
(或手动删除 `~/.dsh/profiles/web/cordis.patch.yml` 里
`# >>> web-search-free` 与 `# <<< web-search-free` 之间的块。)
## 权限说明(安全透明)
- DSH 插件:启用免费后,`web_search` 请求仅发往 `search.parallel.ai` /
`mcp.exa.ai`;会修改 `~/.dsh/profiles/web/cordis.patch.yml`(带边界标记的
`web` 行覆盖,格式见上),不触碰其他配置。无 key、无数据收集、无监听。
- MCP server:只调用上述免费端点,不读你的任何文件/环境(除可选
`EXA_API_KEY`)。stdio 模式不监听任何端口;HTTP/SSE 模式仅在你指定的
`--host:--port`(默认 `127.0.0.1:3100`)上提供 MCP 端点,默认只绑本机回环地址。
## 开发
```bash
bash scripts/build.sh # tsc 编译 host + core + mcp-server,复制 client 到 lib/
npm run verify # 端到端验证
```
结构:
```
src/core.ts # 零依赖搜索核心:Parallel + Exa(host 与 MCP 共用)
src/index.ts # host:双 provider 注册 + settings 开关 + profile 补丁联动
src/mcp-server.ts # MCP server:stdio + HTTP/SSE 双传输(bin:dsh-web-search-mcp)
src/client/client.js # client:设置面板「免费网页搜索」开关卡片(含后端选择)
scripts/build.sh # 构建(自动探测 DSH_CHECKOUT)
scripts/verify.mjs # 端到端验证脚本
cordis.patch.yml # bundle 装配层(含 web 行 searchProvider 解除固定)
```
## License
MIT © sheep-programmer
数据来源:公开的 DeepSeek Harness 插件目录与各插件 GitHub 仓库。本站为独立第三方目录,与 DeepSeek、幻方(High-Flyer)及插件作者均无隶属或背书关系。