English · 简体中文
Web Providers (网页提供商) is the official web-provider plugin for Agent2API. It connects Zhipu Qingyan, DeepSeek Web and Tabbit accounts to the gateway's unified model API. The gateway runs the plugin as a separate process and manages its accounts, routing and usage reports.
Provider capabilities depend on the account and the integration. This plugin uses web-account credentials, not the providers' paid API keys. For gateway installation and deployment, see the Agent2API installation guide.
The table describes the current implementation. It does not imply that every capability has been verified with a live account.
| Provider | LLM requests | Token auto-refresh | Model list | Balance query | Check-in | Claims |
|---|---|---|---|---|---|---|
| Zhipu Qingyan | ✓ | ✓ | Online + fallback | Signed-in accounts | Signed-in accounts | Signed-in accounts |
| DeepSeek Web | Text + image input; no tool calls | Undeclared | Online configuration + fallback | Undeclared | Undeclared | Undeclared |
| Tabbit (China) | Text; no tool calls | ✗ (7-day JWT, re-import) | Online + fallback | Percentage | ✓ | — |
| Tabbit (International) | Text; no tool calls | ✗ (7-day JWT, re-import) | Online + fallback | Percentage | ✓ | — |
“Undeclared” means the capability has not been confirmed or integrated; it does not establish that the upstream service lacks it.
- Supports guest accounts, pasted tokens and local Windows sign-in import.
- Fetches the online model catalog, with a built-in fallback.
- Renews signed-in credentials when a refresh token is available.
- Guests can chat and obtain replacement credentials, but have no points, check-in or reward system.
- Points queries, daily check-in, member rewards and task claims require a signed-in account.
- Existing accounts retain the provider ID
chatglm.
- Accepts your own
chat.deepseek.comuserToken.value, with a Cookie when needed. - Lists one model,
deepseek-web-flash(display name: DeepSeek Web), using the current default mode from official account settings. Disabled Expert and Vision modes are not separate models. - Implements streamed text and reasoning, plus actual image uploads referenced through
ref_file_idsafter parsing succeeds. - Accepts PNG, JPEG, GIF and WebP as base64 data URLs or public HTTP(S) URLs. Local/private addresses and redirects are rejected; fetched images never receive account credentials.
- Native tool calling is unavailable on the web endpoint. Prompt-based emulation has been removed; active
toolsand tool-history requests are rejected explicitly. - Paid API keys are not accepted. Human verification requires signing in manually on the official website.
- Text, streaming, model settings and image shape/color/text recognition have been verified with a live account. Credential renewal, balances, check-in and claims remain undeclared.
- Two providers:
tabbitforweb.tabbit.com(China) andtabbit-intlforweb.tabbit.ai(international). Tokens and signing keys are not interchangeable between the two sites. - The China site supports phone + SMS-code login (recommended) as well as importing an existing web login state (token + user_id in the Cookie, or the DevTools Copy as cURL of a request). The international site has no reproducible web-auth callback, and phone login is still in upstream rollout, so only an existing login state can be imported.
- The upstream uses the v3 room protocol: create session → join for SSE → post runs. Replies are translated from its events.
- Text only. There is no native tool-calling contract:
toolsrequests are rejected explicitly, and image input is not wired yet. - No refresh endpoint: the JWT lasts about 7 days; re-import it after expiry.
- Quota is percentage-based (used %, member level, reset time). Daily check-in uses the real
daily_sign_inendpoint. unlockPro(default on) sends the "set as default browser" marker inunique-uuidto unlock Premium models. Turning it off may make Premium models return 492.
Tokens, cookies and account exports are sensitive credentials. Do not publish or share them.
Requires Rust 1.88 or newer. The packaging script also requires Node.js.
Build and package for the current platform:
cargo build --release
node scripts/pack.mjs --skip-buildThe output is dist/agent2api-web-providers-<version>-<target>.zip.
The package contains pack.json, the executable, icons and provider capability notes.
For another platform, prepare the corresponding toolchain first:
cargo build --release --target aarch64-unknown-linux-gnu
node scripts/pack.mjs --skip-build --target aarch64-unknown-linux-gnuEach platform needs its own native executable. The manifest declares:
| Target | Platform |
|---|---|
x86_64-pc-windows-msvc |
Windows x64 |
x86_64-apple-darwin |
macOS Intel |
aarch64-apple-darwin |
macOS Apple Silicon |
x86_64-unknown-linux-gnu |
Linux / Docker amd64 |
aarch64-unknown-linux-gnu |
Linux / Docker arm64 |
crates/providers/— provider implementations and plugin executable.pack.json— plugin identity, version, providers and platform entry points.ui/provider-docs.json— capability notes in six languages.assets/— provider icons.scripts/pack.mjs— native package creation.
The shared agent2api-provider-protocol and agent2api-provider-sdk crates come from Agent2Providers.
Their Git dependencies are pinned by tag in crates/providers/Cargo.toml.