🌍 全球英文版: 这是代理的英文翻译版,并针对全球使用做了适配。核心逻辑归原作者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
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 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🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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.comclient.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.comclient.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.comclient.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.预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
atharvotech/FreeDeepseekAPI-EN
🌍 全球英文版: 这是代理的英文翻译版,并针对全球使用做了适配。核心逻辑归原作者ForgetMeAI所有,由…
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,344已汉化DSH
71.5
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,045已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,202已汉化DSH
71.1