dsh-deepseek-web-embed:在 DeepSeek Harness 里直接使用 chat.deepseek.com

前言

DeepSeek Harness(DSH)把智能体、工具与 Web 界面收在同一套进程里。日常若要用 DeepSeek 网页版对话,常见做法是另开浏览器标签访问 chat.deepseek.com,在 Harness 侧边栏与浏览器之间来回切换。社区插件 dsh-deepseek-web-embed(维护者 howIdobetter,分类:客户端)把官网页面嵌进 Harness 主区域:侧边栏点一次,主区就是 chat.deepseek.com 的原样界面,登录一次后长期有效,不必再单独开浏览器标签。

下面介绍它的定位、实现思路、安装步骤与使用方式。事实以 GitHub 仓库 README 为准;插件在 npm 上包名为 dsh-deepseek-web-embed,当前版本 0.1.0,许可证 MIT,要求 DSH >=0.2.1-rc.2,Node ^22.19.0 || >=24.0.0。

这是什么

dsh-deepseek-web-embed 通过 本机回环反向代理 加 独立站点 iframe,把 chat.deepseek.com 整站跑在本地 origin 上,再嵌入 Harness Web UI。聊天、深度思考、联网搜索、文件上传、会话历史、分享链接等行为与官网一致;插件不重写请求体,只做代理与页面改写。

为什么不直接 iframe

官网响应头含 content-security-policy: frame-ancestors 'none',普通 iframe 会被浏览器拒绝;接口又是绝对路径 /api/v0/...,即便绕过框架限制,请求也会打到 Harness 自己的域名。插件因此在回环地址上起反向代理(默认 localhost:45789,同时监听 127.0.0.1 与 [::1]),主要处理如下:

卡点 处理
frame-ancestors 'none' 文档由代理重发,去掉 CSP / XFO 头
接口 /api/v0/* 同源命中代理,原样流式转发到 chat.deepseek.com(含 SSE、上传、PoW 校验头)
静态资源在 fe-static.deepseek.com HTML 与 bundle 的 publicPath 改写到本机 /__cdn/,脚本同源加载,去掉 crossorigin / integrity
接口对匿名请求回 429(WAF) 转发页面发出的 authorization,带 token 可放行
Cookie 串味 站点 cookie 只留在代理侧 jar,不回传浏览器;不把 Harness 自己的 cookie 发出去
存储隔离 代理用 localhost,界面 iframe 用 127.0.0.1,不同站点,localStorage 互不相干
进程隔离 站点不同,Chromium 为 iframe 单独渲染进程;崩溃只影响嵌入区域

代理只绑定本机回环,不对外网开放。

安装与启用

在 Harness Web 界面:设置 → 插件 → 添加插件,粘贴下面任一 spec:

渠道 spec
GitHub(推荐,跟 main 走) github:howIdobetter/dsh-deepseek-web-embed
npm dsh-deepseek-web-embed
本地目录 /absolute/path/to/dsh-deepseek-web

命令行等价形式:

dsh plugin --profile <name> add github:howIdobetter/dsh-deepseek-web-embed

也可将 spec 换为 dsh-deepseek-web-embed 或本地绝对路径。装完后刷新 Web 界面,左侧图标栏会出现 DeepSeek。

插件以当前 DSH 进程权限运行;安装前建议自行查看 源码与 LICENSE,确认符合你的环境与合规要求。

典型用法

  1. 点侧边栏 DeepSeek,先看到启动卡片(此时尚未加载官网),点「进入 DeepSeek」。
  2. 首次在嵌入页内登录(手机号 / 邮箱)。之后每次打开保持登录态。
  3. 若登录被验证码卡住,可用「导入登录态」:
    - 在浏览器打开 chat.deepseek.com(保持已登录)→ F12 → Console → 执行 copy(localStorage.userToken)
    - 回到 Harness 面板 → 右上角 ⋯ → 导入登录态 → 粘贴 → 写入并重载

界面仅一条 2.4rem 细头栏(名称与两个图标按钮),下方满铺官网页面;按 ⋯ 可展开「复制地址 / 导入登录态」。颜色、圆角、字号取 Harness 主题 token,随明暗、皮肤与缩放变化。

配置与端点

cordis.patch.yml 中的 port 为首选端口;被占用时自动向上尝试 24 个。端口固定有意义:官网登录态存在该站点 origin 的 localStorage 里,换端口相当于换设备。

Harness 侧 HTTP 端点(README 表格):

方法 路径 用途
GET /api/dsh-deepseek-web/endpoint 回报代理地址与端口(走 connection 的信任围栏)
POST /api/dsh-deepseek-web/session 写入导入的登录态(一次性,下次文档加载时注入)

代理自身另有 GET /__dsw/health 与 GET /__dsw/log 供本机诊断。排查问题时,每次请求会记入 ~/.dsh/deepseek-web/requests.log(含失败响应体)。

适用场景与注意

适合:希望在 DSH 同一 Web 界面里完成 DeepSeek 网页对话、又不想维护单独浏览器标签的用户;需要官网能力(深度思考、联网、上传等)且接受本机代理方案的场景。

已知边界(README 原文):

  • 语音朗读的 wss://…/api/v0/chat/tts/ 未代理(返回 501),其它功能不依赖它。
  • 图形验证码(shumei / hcaptcha / Turnstile)按域名发令牌,代理域下可能被拒;登录态导入是兜底路径。
  • 响应头走白名单,不透传 strict-transport-security 或 alt-svc,避免污染 loopback 浏览器状态。

DeepSeek Harness 社区插件目录在独立站点 SkillHub 插件页,与 DeepSeek / 幻方无官方从属关系;安装 spec 以 README 为准,勿凭仓库名自行拼接错误命令。

结尾

dsh-deepseek-web-embed 用本机回环反代解决 iframe 与同源接口问题,把 chat.deepseek.com 原样放进 Harness。安装 spec 见上文表格;细节与目录结构见 GitHub:howIdobetter/dsh-deepseek-web-embed,目录介绍见 SkillHub。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜