dsh-tinyfish
为 DeepSeek Harness 提供免费的网页搜索与抓取。
让你的 agent 连上实时网络——每次调用只要 $0。
[](https://www.npmjs.com/package/dsh-tinyfish) [](https://www.npmjs.com/package/dsh-tinyfish) [](https://github.com/viztor/dsh-tinyfish/actions/workflows/ci.yml) [](https://github.com/viztor/dsh-tinyfish/blob/main/LICENSE)
---
你的 agent 早就学会了推理,现在给它一点可供推理的“材料”:实时搜索结果与干净的页面正文,直连 harness 自带的 `web_search` 与 `web_fetch` 工具。由 [TinyFish](https://agent.tinyfish.ai/sign-up?ref=v1.dXNlcl8zSnh2TDJGaldOV2FQYWhnaDRqbTIzc0dqZTE.KxSdeNUG14oJKVFVFWLkOwn3-Pia7QI5BuaxiJ_iEVY) 驱动——两个端点都免费,你主机上的网络链路从此不再按次计费。
| 之前 | 之后 |
| --- | --- |
| 每次搜索调用都要计费 | **$0**,永久免费 |
| 抓回来的页面是 HTML,转换得磕磕绊绊 | **干净的 Markdown**,来自浏览器级提取器,开箱即用 |
| 换提供方就要重装 | 改配置文件的**两个单词**即可,不用重装 |
| 每个提供方要么接受你的原样查询,要么什么都不接受 | **常驻默认值**——域名、语言、时效、日期上下界、缓存 TTL、选择器 |
## 📊 方案对比
| 适用场景 | 解决方案 | 费用 |
| --- | --- | --- |
| 在原生工具里免费搜索与抓取 | **dsh-tinyfish**,任一通道 | **$0**——直连通道用 TinyFish 密钥,Monid 通道用平台密钥;两种载荷完全一致 |
| 官方默认 | `deepseek-official` + `http` | 搜索按次计费;抓回的 HTML 还要再付一道 turndown 转换 |
| 需要提供方特有的 SERP 细节(地理、流量、排名)或批量查询 | 经 `monid_run` 调用的 Monid SERP 镜像 | 每次约 $0.002–$0.18,随提供方而定——只在任务真需要这些细节时用 |
| `fetch` 读不了的页面(重 JS、需登录、要交互) | CLI 里的 `tinyfish agent` / `browser` | 按量计费($0.016/step,$0.002/min)——只在抓取落空后果断升级 |
## 🚀 快速上手
### 方法一:从 Web 界面直接安装(推荐)
DeepSeek Harness 支持直接在 Web 界面安装插件,全程不用碰终端:
1. 打开 DSH Web,在侧边栏选择 **Plugins**(插件)。
2. 点击 **Add plugin**(添加插件)。
3. 输入包名 `dsh-tinyfish`(或 `@viztor/dsh-tinyfish`)——这是自由输入框,不是仓库搜索。
4. 点击 **Install**(安装)——DSH 会从 npm 拉取软件包,并加载它声明的 bundle 补丁。live profile(官方 Web profile 挂载了 HMR)会立即生效;否则 DSH 会提示下次启动时生效。
5. 在该 **Plugins** 页面打开 **Tinyfish** 卡片:选择通道(`direct` 或 `monid`),填入密钥——两个都填也行——然后点击 **Save**(保存)!
6. 安装到此结束——bundle 已把两条网络链路都指向 TinyFish。若想另行选择,参见[选择提供方](#select-it)。
7. 问 agent 一个时效性问题;会返回实时来源。结果本身不会标明提供方——失败信息会,并会写出 `tinyfish`。
---
### 方法二:终端 / Profile 的 `package.json`
适用于无头环境、服务器或纳入版本管理的 dotfiles:
```sh
cd ~/.dsh/profiles/web
npm install dsh-tinyfish # or: npm install @viztor/dsh-tinyfish — same thing
```
认准**一个**名字装一次。两个 tarball 打包的是同一份构建产物、读取同一份设置(提供方注册为 `tinyfish`,配置挂在行 id `dsh-tinyfish` 下,凭证共用同一对引用)——所以之后改名不丢任何东西,但两个都挂会把 bundle 加载两遍。带 scope 的 tarball 其 manifest 与补丁的 `name` 不同,好让 loader 在 scope 下解析它。`dsh-tinyfish` 是 DSH 约定用的名字,本文档也用它。