Yurzi/dsh-web-fetch-enhanced0

dsh-web-fetch-enhanced

Configurable non-public address allowlists for DeepSeek Harness web_fetch

包名
dsh-web-fetch-enhanced
版本
0.0.1
许可证
MIT
最近更新
2026年8月28日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Yurzi/dsh-web-fetch-enhanced

2. 配置白名单

打开 DSH Web,进入:

设置 → 插件 → 可配置插件 → Web Fetch Enhanced

展开卡片,在“允许的 CIDR”中每行填写一个网段。例如 Clash / Mihomo 的常见 Fake-IP 配置:

198.18.0.0/15

如果希望只有指定网站可以使用这个例外,再填写“允许的域名”:

api.example.com
*.docs.example.com

点击“保存”。无需重启 Profile,下一次 web_fetch 就会使用新规则。

3. 正常使用 web_fetch

插件不会改变 Agent 的使用方式。你仍然可以直接用自然语言提出请求,例如:

读取 https://docs.example.com/guide,并总结部署步骤。

Agent 会照常调用 web_fetch;地址解析、白名单判断和安全传输由本插件在底层完成。

常见配置场景

Clash / Mihomo Fake-IP

如果整个 Fake-IP 网段都由可信代理接管:

设置项内容
允许的 CIDR198.18.0.0/15
允许的域名留空

留空域名白名单表示:任意域名只要解析到已放行 CIDR,就可以使用该 CIDR 例外。公网地址仍照常访问。

只允许少量域名使用 Fake-IP

设置项内容
允许的 CIDR198.18.0.0/15
允许的域名api.example.com*.docs.example.com

这是更严格的配置,适合代理规则不完全受你控制的环境。

访问受信任的内网站点


### 只允许少量域名使用 Fake-IP

| 设置项 | 内容 |
| --- | --- |
| 允许的 CIDR | `198.18.0.0/15` |
| 允许的域名 | `api.example.com`、`*.docs.example.com` |

这是更严格的配置,适合代理规则不完全受你控制的环境。

## 高级配置

通常只需要在 Web GUI 中维护两项白名单。其他参数应由 Profile composition 管理:

| 字段 | 默认值 | 说明 |
| --- | --- | --- |
| `providerId` | `http-enhanced` | 注册到 `ctx.web` 的 fetch provider ID |
| `allowCidrs` | `[]` | 允许作为非公网例外的 IPv4 / IPv6 CIDR |
| `allowHostnames` | `[]` | 可选的精确域名或最左侧通配规则 |
| `maxResponseBytes` | `5,000,000` | 响应正文最大读取字节数 |
| `maxBodyChars` | `100,000` | 解码后最大字符数 |
| `timeoutMs` | `30,000` | 单次抓取超时(毫秒) |
| `maxRedirects` | `5` | 同源重定向最大跳数;`0` 表示不跟随 |
| `userAgent` | `dsh-web-fetch-enhanced/0.1.0` | 每个请求使用的 User-Agent |

默认安装采用独立的 `http-enhanced` provider ID,并保留原生 `http` provider。需要手动组合或 drop-in 替换时,参考:

- [独立 provider 示例](https://github.com/Yurzi/dsh-web-fetch-enhanced/blob/8c6c9a7257f49742169ff22fb3b14c8f3cc7a2a9/examples/coexist.cordis.yml)
- [drop-in 替换示例](https://github.com/Yurzi/dsh-web-fetch-enhanced/blob/8c6c9a7257f49742169ff22fb3b14c8f3cc7a2a9/examples/drop-in.cordis.yml)
- [手动 composition patch](https://github.com/Yurzi/dsh-web-fetch-enhanced/blob/8c6c9a7257f49742169ff22fb3b14c8f3cc7a2a9/examples/manual.cordis.patch.yml)
- [架构与 provider 选择语义](https://github.com/Yurzi/dsh-web-fetch-enhanced/blob/8c6c9a7257f49742169ff22fb3b14c8f3cc7a2a9/docs/design.zh-CN.md)

> 不要让原生 provider 和本插件同时注册同一个 ID,否则 Host 会以 `WEB_DUPLICATE_PROVIDER` 拒绝启动,而不是执行 last-wins 覆盖。