Skip to content
dsh.fish
Bundle

dsh-wsl-net

Diagnose WSL/Windows proxy, Node 24 fetch, dsh web process env, proxy TCP listen, DeepSeek/npm/ModelScope reachability.

Source
173787247
stars
2 stars
License
MIT
Updated
Updated 22 hours ago

Readme

# dsh-wsl-net
> **Install set:** part of [dsh-wsl-kit](https://github.com/173787247/dsh-wsl-kit). Prefer `KIT_SET=daily` | `llm` | `github` | `full` (see kit README). Fault tree: [TROUBLESHOOTING.md](https://github.com/173787247/dsh-wsl-kit/blob/master/docs/TROUBLESHOOTING.md).


DeepSeek Harness **tool** plugin: `net_doctor` diagnoses why HTTPS works in the Windows browser but fails from the WSL agent—and returns **copy-paste fix scripts**.

Pairs with [dsh-wsl-env](https://github.com/173787247/dsh-wsl-env). Part of **[dsh-wsl-kit](https://github.com/173787247/dsh-wsl-kit)**.

[中文说明 → README.zh.md](./README.zh.md)

---

## Why

Clash / V2Ray often runs on Windows with `HTTP_PROXY=http://127.0.0.1:…`. Node **24** `fetch` ignores proxy env vars unless `NODE_USE_ENV_PROXY=1`. The browser can look fine while the agent cannot reach DeepSeek or npm.

## What it does

- Reports `HTTP_PROXY` / `HTTPS_PROXY` / `ALL_PROXY` / `NO_PROXY` (userinfo redacted), `NODE_USE_ENV_PROXY`, optional npm registry
- Also inspects the **running `dsh web` process** env (`dshWeb`) so you can tell tool-process vs host-process proxy flags apart
- TCP-probes the configured proxy port (`proxyListen`)
- Probes DeepSeek API and the npm registry (HTTP status < 500 counts as reachable, including 401)
- Returns `advice` plus `fix.steps` / `fix.scripts` (reuses current proxy when set; otherwise a `127.0.0.1:7890` template you must edit)
- Optionally injects `NODE_USE_ENV_PROXY=1` and lowercase `http_proxy` aliases into bash/npm **child** processes (`injectChildProxy`)

Does **not** print API keys, change Clash ports, or invent a proxy URL when none is configured.

## Install

```sh
dsh plugin --profile web add github:173787247/dsh-wsl-net
```

Restart `dsh web`. In a new session, Tools should list `net_doctor`. Example ask: “Check whether DeepSeek API and npm are reachable.”

Child injection check:

```sh
node -e "console.log(process.env.NODE_USE_ENV_PROXY, process.env.http_proxy || process.env.HTTP_PROXY)"
```

Expect `1` and your proxy URL when a child bash/npm is wrapped.

## Tool parameters

| Arg | Values | Meaning |
|-----|--------|---------|
| `target` | `all` (default), `env`, `deepseek`, `npm` | What to check |

## Config

```yaml
- id: dsh-wsl-net
  name: dsh-wsl-net
  config:
    timeoutMs: 20000
    probeTimeoutMs: 5000
    injectChildProxy: true
```

| Key | Default | Meaning |
|-----|---------|---------|
| `timeoutMs` | `20000` | Tool timeout |
| `probeTimeoutMs` | `5000` | Per-probe timeout |
| `injectChildProxy` | `true` | Wrap `subprocess.spawn` / `spawnTerminal` |

## Changelog (short)

- **0.3.0** — `fix` copy-paste scripts
- **0.2.x** — child proxy injection; redact proxy userinfo; `ALL_PROXY`

## Test

```sh
npm test
```

## License

MIT

Install

dsh plugin --profile web add github:173787247/dsh-wsl-net

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source