🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

网页版 API 代理 atharvotech/FreeDeepseekAPI-EN

DeepSeek Harness
atharvotech58 天前有提交已提供中文文档扫描:含敏感能力

🌍 全球英文版: 这是代理的英文翻译版,并针对全球使用做了适配。核心逻辑归原作者ForgetMeAI所有,由…

46/100
综合分
29
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/17 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add atharvotech/FreeDeepseekAPI-EN
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · ui
装得上吗
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 58 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包free-deepseek-api(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=18.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/30 11:47:50

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 23 处,展示前 23 条)
  • 发起网络请求
    server.js:26
    return fetch(url, { ...options, signal: options.signal || AbortSignal.timeout(timeoutMs) });
  • 读取本地文件
    server.js:51
    return fs.readFileSync(secretPath, 'utf8').trim();
  • 读取本地文件
    server.js:188
    return fs.readdirSync(process.env.DEEPSEEK_AUTH_DIR)
  • 读取本地文件
    server.js:207
    const raw = fs.readFileSync(file, 'utf8');
  • 读取本地文件
    server.js:1558
    if (filePath.startsWith('/') && fs.existsSync(filePath)) {
  • 读取本地文件
    server.js:1567
    if (fs.existsSync(extractedPath) && !paths.includes(tag)) {
  • 读取本地文件
    server.js:1581
    if (filePath.startsWith('/') && fs.existsSync(filePath) && !paths.includes(`MEDIA:${filePath}`)) {
  • 执行外部命令来自配置/变量
    server.js:2337
    const result = spawnSync(process.execPath, [script], { stdio: 'inherit', env: process.env });
  • 执行外部命令来自配置/变量
    server.js:2371
    spawnSync(process.execPath, [path.join(__dirname, 'scripts', 'auth_import.js')], { stdio: 'inherit', env: process.env });
  • 读取密钥环境变量
    server.js:2390
    requireProxyApiKey(PROXY_API_KEY, isTruthy(process.env.REQUIRE_PROXY_API_KEY));
  • 读取密钥环境变量
    client.js:23
    token: process.env.DEEPSEEK_TOKEN || '',
  • 读取本地文件
    client.js:35
    if (fs.existsSync(authPath) && !CONFIG.token) {
  • 读取本地文件
    client.js:36
    const auth = JSON.parse(fs.readFileSync(authPath, 'utf8'));
  • 请求外部主机chat.deepseek.com
    client.js:66
    const chalResp = await fetch('https://chat.deepseek.com/api/v0/chat/create_pow_challenge', {
  • 发起网络请求
    client.js:66
    const chalResp = await fetch('https://chat.deepseek.com/api/v0/chat/create_pow_challenge', {
  • 请求外部主机chat.deepseek.com
    client.js:74
    const sessResp = await fetch('https://chat.deepseek.com/api/v0/chat_session/create', {
  • 发起网络请求
    client.js:74
    const sessResp = await fetch('https://chat.deepseek.com/api/v0/chat_session/create', {
  • 请求外部主机chat.deepseek.com
    client.js:87
    const compResp = await fetch('https://chat.deepseek.com/api/v0/chat/completion', {
  • 发起网络请求
    client.js:87
    const compResp = await fetch('https://chat.deepseek.com/api/v0/chat/completion', {
  • 读取本地文件
    client.js:132
    try { return fs.readFileSync(0, 'utf8').trim(); } catch { return ''; }
  • 写入本地文件
    client.js:150
    fs.writeFileSync(outFile, fullText.trim());
  • 发起网络请求
    lib/pow.js:18
    const resp = await fetch(wasmUrl, { signal: AbortSignal.timeout(timeoutMs) });
  • 写入剪贴板
    chrome-extension/popup.js:82
    navigator.clipboard.writeText(json).then(() => {
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库
涉及外部主机:chat.deepseek.com

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 本地OpenAI兼容代理

本地 OpenAI 兼容 API 代理,对接 DeepSeek 网页版聊天(全球英文版)。把 DeepSeek 接入 Open WebUI、Claude Code 和 OpenAI SDK 工具。由 Atharvotech 维护。

README

由 DeepSeek 最新模型翻译生成
FreeDeepseekAPI-EN 🌍 全球英文版: 这是代理的英文翻译版,并针对全球使用做了适配。核心逻辑归原作者(ForgetMeAI)所有,由 Atharvotech 维护并翻译,服务于全球开源社区。 FreeDeepseekAPI 为 DeepSeek Web Chat(chat.deepseek.com)启动本地 API 服务器/包装器,让你把 DeepSeek Web 无缝接入 Open WebUI、LiteLLM、Hermes、Claude Code、OpenAI SDK 风格的客户端,以及其他兼容 OpenAI 的 LLM 工具。 项目通过你平时登录的 DeepSeek 账号运行,使用独立的 Chrome 配置档。本地 localhost 服务器接收 API 请求,然后借助已保存的浏览器会话,自行与 DeepSeek Web 通信。 ⚠️ 这是实验性的 Web 聊天代理,用于本地 LLM 集成。DeepSeek 可能随时更改内部 Web API,恕不另行通知。生产环境建议使用官方付费 DeepSeek API,更可靠。
展开完整文档(README 剩余 1 节)
FreeDeepseekAPI-EN

🌍 全球英文版: 这是代理的英文翻译版,并针对全球使用做了适配。核心逻辑归原作者(ForgetMeAI)所有,由 Atharvotech 维护并翻译,服务于全球开源社区。

FreeDeepseekAPI 为 DeepSeek Web Chat(chat.deepseek.com)启动本地 API 服务器/包装器,让你把 DeepSeek Web 无缝接入 Open WebUI、LiteLLM、Hermes、Claude Code、OpenAI SDK 风格的客户端,以及其他兼容 OpenAI 的 LLM 工具。

项目通过你平时登录的 DeepSeek 账号运行,使用独立的 Chrome 配置档。本地 localhost 服务器接收 API 请求,然后借助已保存的浏览器会话,自行与 DeepSeek Web 通信。

⚠️ 这是实验性的 Web 聊天代理,用于本地 LLM 集成。DeepSeek 可能随时更改内部 Web API,恕不另行通知。生产环境建议使用官方付费 DeepSeek API,更可靠。

目录

- 它能给你什么
- 功能
- 快速开始
- Windows 启动
- Linux / Chromium 启动
- VPS / 无头启动
- Rootless Podman
- 诊断 / doctor
- 会话复用与聊天重置
- 多账号池
- 控制台鉴权思路
- 验证是否可用
- 用法示例
- Chat Completions
- 推理
- 联网搜索
- 流式输出
- Anthropic Messages API
- OpenAI Responses API
- 工具调用
- 模型
- 端点
- Open WebUI
- 更新登录
- 项目状态

✨ 它能给你什么

- 把 DeepSeek Web 当作本地 API 端点使用。
- 把 DeepSeek 接入 Open WebUI 和其他兼容 OpenAI 的客户端。
- 拿到普通 JSON 响应,或流式 SSE。
- 使用推理模型,输出单独的 reasoning_content。
- 配合 Anthropic Messages API 兼容层,支持 Claude Code / Anthropic SDK。
- 配合 OpenAI Responses API 兼容层,支持新版 OpenAI/Codex 风格客户端。
- 为不同智能体/用户保留独立的 Web 会话。

🚀 功能

- 兼容 OpenAI 的 API: POST /v1/chat/completions
- 兼容 Anthropic 的兼容层: POST /v1/messages
- OpenAI Responses 兼容层: POST /v1/responses
- 流式输出: SSE 分块,以及普通非流式 JSON 响应
- 推理输出: 为思考模型提供单独的 reasoning_content
- 工具调用: 解析 OpenAI tools、Anthropic tools 和 Responses function tools
- 模型能力: GET /v1/model-capabilities,提供别名 → 真实 Web 模式
- 智能体会话: 按 user / 智能体 id 分配独立的 DeepSeek 会话
- 会话恢复: 自动重置失效的链/会话
- 零依赖: Node.js 18+,无 npm 依赖

⚡ 快速开始

git clone https://github.com/atharvotech/FreeDeepseekAPI-EN.git
cd FreeDeepseekAPI-EN
npm run auth
npm start

npm run auth 会打开授权菜单:

1. 选择选项 1;
2. 在单独的 Chrome 配置档里登录 DeepSeek;
3. 发送一条短消息,比如 ok;
4. 回到终端按 Enter。

npm start 会显示启动菜单:

- 1 — 授权 / 更新 DeepSeek 登录
- 2 — 显示模型和状态
- 3 — 运行代理
- 4 — 退出

无头 / CI 启动,不要菜单:

NON_INTERACTIVE=1 npm start
or
SKIP_ACCOUNT_MENU=1 npm start

默认情况下,服务器监听:

http://localhost:9655

默认情况下,代理只能从本机访问。要从网络访问,需显式设置 host 和单独的代理密钥:

HOST=0.0.0.0 PROXY_API_KEY='replace-with-a-long-random-value' npm start

然后把密钥作为 Authorization: Bearer <key> 传入。没有 PROXY_API_KEY 时,非健康检查端点保持未认证,所以别把这样的实例暴露到网络上。

浏览器请求允许来自 loopback 源。如果 UI 从其他地址提供,把它的确切源加进去,用逗号分隔,例如 PROXY_CORS_ORIGINS=https://ui.example.com,http://192.168.1.20:3000。

🪟 Windows 启动

git clone https://github.com/atharvotech/FreeDeepseekAPI-EN.git
cd FreeDeepseekAPI-EN
npm run auth
npm start

如果 Chrome 装在非标准位置,显式设置路径:

$env:CHROME_PATH="C:\Program Files\Google\Chrome\Application\chrome.exe"
npm run auth

如果找不到 Chrome,npm run auth 现在会打印可直接照做的 Windows/macOS/Linux 说明,而不是一堆看不懂的堆栈跟踪。

🐧 Linux / Chromium 启动

git clone https://github.com/atharvotech/FreeDeepseekAPI-EN.git
cd FreeDeepseekAPI-EN
CHROME_PATH=$(which chromium) npm run auth
npm start

如果 Chromium 叫别的名字:

CHROME_PATH=$(which chromium-browser) npm run auth
or
CHROME_PATH=$(which google-chrome) npm run auth

🖥 VPS / 无头启动

服务器上没有 Chrome 时,最可靠的流程:

1. 在有 GUI/Chrome 的家用 PC 上:

npm run auth

2. 把 deepseek-auth.json 复制到 VPS:

scp deepseek-auth.json user@your-vps:/opt/FreeDeepseekAPI/deepseek-auth.json

3. 在 VPS 上导入/校验文件,并设置安全的权限:

cd /opt/FreeDeepseekAPI
npm run auth:import -- --input ./deepseek-auth.json
npm run doctor -- --offline

4. 不带交互菜单运行代理:

NON_INTERACTIVE=1 npm start

你不仅能导入现成的 deepseek-auth.json,也能导入浏览器 cookie 导出文件:

DEEPSEEK_TOKEN="<token>" npm run auth:import -- --input ./cookies.json
⚠️ 重要: deepseek-auth.json 是你 DeepSeek Web 登录态的访问凭证。不要提交它,不要发布它,存储时权限设为 0600。

🦭 Rootless Podman

容器只用于非交互式启动代理。浏览器授权在宿主机上执行 npm run auth 完成:授权脚本和 deepseek-auth.json 都不会复制进镜像。

用普通用户运行 Podman,不要用 sudo。

1. 构建本地镜像:

podman build --tag localhost/free-deepseek-api:local --file Containerfile .

2. 通过 Podman secret 传入 DeepSeek 授权和单独的代理密钥:

podman secret create --replace free-deepseek-auth ./deepseek-auth.json

printf 'Proxy API key: '
IFS= read -r -s PROXY_API_KEY
printf '\n'
printf '%s' "$PROXY_API_KEY" |
podman secret create --replace free-deepseek-proxy-key -

密钥要够长、够随机。这个值留在当前 shell 的 PROXY_API_KEY 变量里,方便你测试 API;它不会进入镜像,也不会出现在 Podman 命令行里。

3. 用最小权限运行容器:

podman run --detach \
--name free-deepseek-api \
--publish 127.0.0.1:9655:9655 \
--secret free-deepseek-auth,target=deepseek-auth.json,uid=1000,gid=1000,mode=0400 \
--secret free-deepseek-proxy-key,target=proxy-api-key,uid=1000,gid=1000,mode=0400 \
--read-only \
--cap-drop=ALL \
--security-opt=no-new-privileges \
localhost/free-deepseek-api:local

容器内部已预设 NON_INTERACTIVE=1、HOST=0.0.0.0,以及两个 secret 的路径。如果缺少密钥 secret 或密钥为空,REQUIRE_PROXY_API_KEY=1 会让容器无法启动。宿主机上端口只发布到 127.0.0.1;没有单独的网络防火墙或访问策略,不要去掉这个地址。

4. 检查存活状态、账号就绪状态和受保护端点:

podman healthcheck run free-deepseek-api
curl --fail http://127.0.0.1:9655/readyz
curl --fail \
-H "Authorization: Bearer $PROXY_API_KEY" \
http://127.0.0.1:9655/v1/models

内置健康检查会验证本地 /health(进程是否存活)。如果当前没有 DeepSeek 授权账号可以处理请求,/readyz 还会额外返回 503。容器诊断:

podman logs free-deepseek-api
podman inspect --format '{{.State.Health.Status}}' free-deepseek-api

停止并删除容器,同时清掉保存的 Podman secret:

podman stop free-deepseek-api
podman rm free-deepseek-api
podman secret rm free-deepseek-auth free-deepseek-proxy-key
unset PROXY_API_KEY

轮换授权或代理密钥时,替换对应的 secret 并重建容器,这样行为就不会依赖 Podman 版本。

🩺 Diagnostics / doctor

npm run doctor
不向 DeepSeek 发起网络请求:
npm run doctor -- --offline

doctor 会检查:

- 能否找到 deepseek-auth.json / DEEPSEEK_AUTH_DIR;
- JSON 是否合法;
- token、cookie、wasmUrl 是否存在;
- 在 macOS/Linux 上文件权限是否安全(0600);
- 正常模式下 —— DeepSeek PoW 端点是否可达。

如果看到 data.biz_data is null、fetch failed、401/403/429,或者 Hermes/OpenCode 看不到模型 —— 先跑 npm run doctor。

♻️ 会话复用与聊天重置

FreeDeepseekAPI 不会为每个 HTTP 请求都新建一个 DeepSeek 聊天。逻辑是:

- 一个 x-agent-session、session 或 user → 一个 DeepSeek 聊天会话;
- 如果会话 id 已存在 —— 代理会复用它,并通过 parent_message_id 继续这条链;
- 自动重置发生在 TTL 到期、DeepSeek 会话出错,或消息链过长时;
- 本地历史保留为短上下文,让新的 DeepSeek 会话能接着聊;
- 智能体的长请求在发送前会限制到 DEEPSEEK_MAX_PROMPT_CHARS(默认 80,000 字符):保留任务开头、最新的工具结果和工具适配器;
- 如果客户端已经发过多轮历史,本地恢复历史不会再加一遍;
- 空响应最多重试 DEEPSEEK_MAX_RETRIES 次(默认 2),每次重试都会缩减上下文。

显式指定智能体/会话:

curl -X POST http://localhost:9655/v1/chat/completions \
-H "Content-Type: application/json" \
-H "x-agent-session: my-agent" \
-d '{"model":"deepseek-chat","messages":[{"role":"user","content":"Hi"}]}'

查看活跃会话:

curl http://localhost:9655/v1/sessions

重置单个会话:

curl -X POST "http://localhost:9655/reset-session?agent=my-agent"

重置所有会话:

curl -X POST "http://localhost:9655/reset-session?agent=all"

为什么聊天仍会出现在 DeepSeek Web 里:代理走的是内部 Web Chat API,DeepSeek 把真正的聊天会话存在自己那边。对 Web 代理来说这很正常。会话复用的意义在于避免不必要地新建聊天,只在链过期/断裂时干净地重置。

👥 多账号池

你可以挂多个认证文件。正确的模型是:每个智能体/会话粘性绑定账号 —— 代理不会在活跃的 DeepSeek 会话内切换账号。如果某个账号收到 401/403/429 并进入冷却,会话会被安全重置,新请求可以转到另一个可用账号。

方案 1 —— 放认证文件的目录:

mkdir -p accounts
cp deepseek-auth-main.json accounts/main.json
cp deepseek-auth-backup.json accounts/backup.json
chmod 600 accounts/*.json
DEEPSEEK_AUTH_DIR=./accounts NON_INTERACTIVE=1 npm start

方案 2 —— 文件列表:

DEEPSEEK_AUTH_PATH="./accounts/main.json,./accounts/backup.json" NON_INTERACTIVE=1 npm start

账号池的工作方式:
- 新的智能体/会话会按轮询拿到一个可用账号;
- 选中的账号会绑定到会话(sticky);
- 遇到 401、403、429 时,账号进入冷却;
- 如果会话绑定的账号正在冷却,就重置旧的 DeepSeek 会话,免得它反复冲击一个被限流或已过期的账号;
- 账号状态可以在 /health 里看到,不暴露 auth 文件路径,也不暴露文件名;
- auth 文件必须以 0600 权限保存。

配置冷却:

DEEPSEEK_ACCOUNT_COOLDOWN_MS=600000 npm start

🔑 控制台认证思路

PR #3 里的密码流程可以实现,但更安全的做法是不保存密码,也不把它设为默认。一个靠谱的实现:

1. npm run auth:console 通过隐藏提示输入邮箱/手机号和密码。
2. 密码只留在进程内存里,绝不写入文件、日志或历史记录。
3. 脚本用 fetch/CDP 重放 Web 登录流程:拿到验证码/校验挑战,把链接或验证码交给用户,等待确认。
4. 登录成功后只保存标准格式的 deepseek-auth.json。
5. 如果 DeepSeek 要求验证码或 2FA,脚本就老老实实提示「打开链接,通过校验,按 Enter」,而不是去绕过防护。
6. 在 VPS 上,更适合用 auth:console --no-save-password --output deepseek-auth.json 模式。

最小安全 MVP:控制台认证只做交互式,不用环境变量传密码。可接受的自动化变体:DEEPSEEK_EMAIL=... npm run auth:console,但密码仍然通过隐藏提示输入。

✅ 验证是否可用

curl http://localhost:9655/
curl http://localhost:9655/v1/models
curl http://localhost:9655/v1/model-capabilities

一切正常的话,/health 会返回服务器状态、支持的别名列表,以及 config_ready: true。

🧪 用法示例

Chat Completions

curl -X POST http://localhost:9655/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-chat",
"messages": [{"role": "user", "content": "Hi! Answer in one sentence."}],
"stream": false
}'

Reasoning

curl -X POST http://localhost:9655/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-reasoner",
"messages": [{"role": "user", "content": "Answer briefly: why is the sky blue?"}],
"stream": false
}'

对推理模型,API 会把思维链和最终答案分开返回:

- 非流式:choices[0].message.reasoning_content
- 流式:choices[0].delta.reasoning_content
- usage:usage.completion_tokens_details.reasoning_tokens

reasoning_tokens 是根据提取出的 DeepSeek Web THINK 文本做的近似估算,因为 Web 流不提供官方的逐条推理 token 用量。

Web search

curl -X POST http://localhost:9655/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-chat-search",
"messages": [{"role": "user", "content": "Find a fresh fact about DeepSeek and answer briefly."}],
"stream": false
}'

流式输出

curl -N -X POST http://localhost:9655/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-chat",
"messages": [{"role": "user", "content": "Write a short joke."}],
"stream": true
}'

Anthropic Messages API

curl -X POST http://localhost:9655/v1/messages \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-chat",
"max_tokens": 512,
"messages": [{"role": "user", "content": "Answer exactly OK"}],
"stream": false
}'

Claude Code 可以直接把后端指过来:

export ANTHROPIC_BASE_URL="http://127.0.0.1:9655"
export ANTHROPIC_AUTH_TOKEN="dummy-key"
export CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1
claude --model deepseek-chat

OpenAI Responses API

curl -X POST http://localhost:9655/v1/responses \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-chat",
"input": "Answer exactly OK",
"stream": false
}'

工具调用

FreeDeepseekAPI 支持:

- OpenAI tools;
- Anthropic tools;
- Responses API function tools。

代理会要求 DeepSeek 返回严格的 JSON 工具调用,同时也知道怎么解析兜底格式:

- TOOL_CALL:
- 带显式 tool_call、tool_calls 或 function_call 外壳的围栏 JSON
- <tool_call>...</tool_call>
- DeepSeek DSML(<|DSML|tool_calls>...)以及 Web 变体 <||DSML|| Tool Calls>

🧠 模型

GET /v1/models 只返回当前已验证、且能通过本代理正常工作的别名。

可用别名

| 别名 | Web 模式 | 推理 | 联网搜索 | 备注 |
| deepseek-chat | Fast / default | 否 | 否 | 基础对话 |
| deepseek-v3 | Fast / default | 否 | 否 | 兼容性别名 |
| deepseek-default | Fast / default | 否 | 否 | 兼容性别名 |
| deepseek-reasoner | Fast / default | 是 | 否 | thinking_enabled=true |
| deepseek-r1 | Fast / default | 是 | 否 | R1 兼容别名 |
| deepseek-chat-search | Fast / default | 否 | 是 | 联网搜索 |
| deepseek-default-search | Fast / default | 否 | 是 | 联网搜索别名 |
| deepseek-reasoner-search | Fast / default | 是 | 是 | 推理 + 搜索 |
| deepseek-r1-search | Fast / default | 是 | 是 | R1 兼容 + 搜索 |
| deepseek-expert | Expert / expert | 否 | 否 | Expert 模式 |
| deepseek-v4-pro | Expert / expert | 是 | 否 | Expert + 推理 |

完整映射:

curl http://localhost:9655/v1/model-capabilities
根据 DeepSeek V4 Preview 官方页面,deepseek-chat 和 deepseek-reasoner 目前路由到 deepseek-v4-flash 的非思考/思考模式。chat.deepseek.com 直连流不会暴露确切的检查点名称(model: ""),所以代理同时记录网页模式(default / Fast)和当前官方路由(DeepSeek-V4-Flash)。

当前 DeepSeek Web 远程配置输出显示这些网页模式:

- default / UI Fast —— 可用;支持 thinking_enabled 和 search_enabled。
- expert / UI Expert —— 通过当前网页契约(x-client-version=2.0.0)可用,支持 thinking_enabled。/v1/models 暴露 deepseek-expert(不带推理)和 deepseek-v4-pro(Expert + 推理)。
- vision / UI Recognition —— 在远程配置里可见,但直连 Web API 目前返回 backend_err_by_model(Vision is temporarily unavailable)。所以 deepseek-vision 从 /v1/models 中隐藏。

根据远程配置,Expert 的搜索不可用,所以 deepseek-expert-search 仍不受支持。

🔌 端点

| 方法 | 路径 | 用途 |
| GET | / 或 /health | 代理状态 |
| GET | /v1/models | 可用的 OpenAI 兼容别名列表 |
| GET | /v1/model-capabilities | 别名、真实模型、能力的完整映射 |
| POST | /v1/chat/completions | OpenAI 兼容的 Chat Completions |
| POST | /v1/messages | Anthropic Messages API 兼容层 |
| POST | /v1/responses | OpenAI Responses API 兼容层 |
| GET | /v1/sessions | 活跃的本地智能体会话 |
| POST | /reset-session?agent=<id> | 重置单个会话 |
| POST | /reset-session?agent=all | 重置所有会话 |

🖥 Open WebUI

Docker 中 Open WebUI 的 Base URL:

http://host.docker.internal:9655/v1

不用 Docker 本地启动:

http://localhost:9655/v1

如果没设置 PROXY_API_KEY,你可以用任意 API key。如果设置了,客户端必须传完全一致的那个 —— 代理会先检查 bearer token,再放行模型、会话和补全。

🔐 更新登录

npm run auth
npm start

如果 DeepSeek 开始返回 401、403,或要求新的 PoW/会话 —— 重新运行 npm run auth,更新保存的浏览器会话。

本地授权文件不能提交到 GitHub:

- deepseek-auth.json
- .chrome-profile-deepseek/
- .env

它们已经加入 .gitignore。

🧪 测试

项目语法检查:

npm test

针对运行中的本地代理做实时冒烟测试:

BASE_URL=http://127.0.0.1:9655 MODEL=deepseek-chat npm run test:live

📌 项目状态

FreeDeepseekAPI-EN 是实验性的网页聊天代理,供本地使用和集成。它依赖当前的 DeepSeek Web Chat 契约,所以 DeepSeek 一旦改动,认证/会话逻辑或模型映射可能就需要更新。

如果哪里不工作了:

1. 通过 npm run auth 更新登录;
2. 检查 /v1/model-capabilities;
3. 在新会话中重试请求;
4. 如果问题仍然存在 —— DeepSeek 很可能改了内部 Web API。

Made with ❤️ in India | Atharvotech: Driven by logic. Powered by AI. Built for you.
预览分享卡片长什么样 ↓atharvotech/FreeDeepseekAPI-EN
分享 · DeepSeek Harness Hub
atharvotech/FreeDeepseekAPI-EN

🌍 全球英文版: 这是代理的英文翻译版,并针对全球使用做了适配。核心逻辑归原作者ForgetMeAI所有,由…

回到顶部