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

网页版交接 huang13113/dsh-web-share

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

把网页版聊好的方案一键打包交给新对话执行

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add huang13113/dsh-web-share
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · chat
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 1 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 18 处,展示前 18 条)
  • 读取本地文件
    lib/index.js:50
    await access(candidate, FS.R_OK);
  • 执行外部命令来自配置/变量
    lib/index.js:141
    const child = spawn(process.execPath, [cli, ...args], {
  • 读取本地文件
    lib/index.js:203
    const raw = await readFile(path, "utf8");
  • 写入本地文件
    lib/index.js:229
    appendFileSync(
  • 发起网络请求
    lib/client.js:57
    const res = await fetch(url, { headers: { accept: "application/json" } });
  • 读取本地文件
    docs/read-diag.mjs:14
    if (!existsSync(path)) {
  • 读取本地文件
    docs/read-diag.mjs:21
    const raw = readFileSync(path, "utf8");
  • 写入本地文件
    dsweb-share/driver-playwright.mjs:57
    mkdirSync(PROFILE_DIR, { recursive: true });
  • 发起网络请求
    dsweb-share/driver-playwright.mjs:159
    const r = await fetch(url, {
  • 读取本地文件
    dsweb-share/driver-tabbit.mjs:31
    await access(TABBIT_CLI, FS.X_OK);
  • 执行外部命令来自配置/变量
    dsweb-share/driver-tabbit.mjs:68
    const child = spawn(TABBIT_CLI, [
  • 读取本地文件
    dsweb-share/driver-tabbit.mjs:171
    const text = await readFile(v.tempPath, "utf8");
  • 删除本地文件
    dsweb-share/driver-tabbit.mjs:172
    await unlink(v.tempPath).catch(() => {});
  • 读取本地文件
    dsweb-share/dsweb.mjs:34
    const guard = JSON.parse(readFileSync(new URL("readonly.guard.json", import.meta.url), "utf8"));
  • 读取本地文件
    dsweb-share/dsweb.mjs:35
    const files = readdirSync(HERE).filter((f) => f.endsWith(".mjs"));
  • 读取本地文件
    dsweb-share/dsweb.mjs:39
    const src = readFileSync(join(HERE, file), "utf8");
  • 写入本地文件
    dsweb-share/dsweb.mjs:390
    mkdirSync(outDir, { recursive: true });
  • 写入本地文件
    dsweb-share/dsweb.mjs:394
    writeFileSync(mdPath, renderMarkdown({ title: packed.title, sessionId: packed.sessionId, rounds: packed.rounds }), "utf8");
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/dsh
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

先省钱地聊,再全力地干:在 DeepSeek 网页版把方案聊清楚,一键把交接包交给 DSH。只读设计,零凭证落盘。

README

由 DeepSeek 最新模型翻译生成
dsh-web-share 先省钱地聊,再全力地干。 在 DeepSeek 网页版把方案聊清楚,一键交给 DeepSeek Harness 去执行。 English · 中文 这个插件解决什么问题:省 token 用过 agent 的人都知道,一件复杂活儿的前半段是「磨方案」:试措辞、比路子、来回改、推翻重来。 这段过程在 agent 里做非常贵——每一轮试探都在烧上下文和 token。但如果先在 DeepSeek 网页版里聊,它自带智能搜索和深度思考,聊多久都不进 agent 的账。 问题只剩最后一步:聊完之后怎么交给 agent? 复制粘贴?一段 200 条的对话根本贴不动。 这个插件把最后这一步变成一次点击: 网页版里把方案聊好(免费额度,随便聊) ↓ 在 DSH 里点「导出到新对话」 ↓ 自动生成「交接包」+ 新建对话 + 预填进输入框 ↓ 你按回车 —— agent 拿着方案去写代码 / 写文件 / 干活 省下的就是那几千到几万 token 的「磨需求」过程。 agent 只拿到结论,不陪你想。
展开完整文档(README 剩余 1 节)
dsh-web-share

先省钱地聊,再全力地干。 在 DeepSeek 网页版把方案聊清楚,一键交给 DeepSeek Harness 去执行。

English · 中文

这个插件解决什么问题:省 token

用过 agent 的人都知道,一件复杂活儿的前半段是「磨方案」:试措辞、比路子、来回改、推翻重来。

这段过程在 agent 里做非常贵——每一轮试探都在烧上下文和 token。但如果先在 DeepSeek 网页版里聊,它自带智能搜索和深度思考,聊多久都不进 agent 的账。

问题只剩最后一步:聊完之后怎么交给 agent? 复制粘贴?一段 200 条的对话根本贴不动。

这个插件把最后这一步变成一次点击:

网页版里把方案聊好(免费额度,随便聊) ↓ 在 DSH 里点「导出到新对话」 ↓ 自动生成「交接包」+ 新建对话 + 预填进输入框 ↓ 你按回车 —— agent 拿着方案去写代码 / 写文件 / 干活

省下的就是那几千到几万 token 的「磨需求」过程。 agent 只拿到结论,不陪你想。

它长什么样

一个插件,两个入口,行为一致:

| 入口 | 位置 |
| 侧栏「网页版导出」 | 侧栏 插件 / 自动化任务 / 任务看板 下面,点开是整页面板 |
| 对话栏「网页版」 | 和「对话」「轨迹」并列的第三个标签页 |

点「预览」可以展开最后 4 轮、勾选要完整上传的轮次,再点「导出所选 N 轮」;也可以直接点「导出到新对话」用默认(最后 2 轮完整)。

点任意一条会话的「导出到新对话」,会:

1. 生成交接包:最后 2 轮逐字完整,更早的轮次压缩成一行
2. 新建一个对话(自动选好工作区)
3. 把交接包预填进那个新对话的输入框——不发送,你自己按回车

为什么是「交接包」而不是全量转写

实测:一段 202 条消息的对话有 25 万字符 ≈ 24 万 token,塞进任何输入框都会炸。

而交接真正需要的是方案定稿——它在最后一两轮里。所以交接包长这样:

- 前情:每轮一行(你的提问 + 它的回答各截一段),保留脉络
- 最后 2 轮:逐字完整,一字不删

实测 30 轮的对话 → 6,620 字符,其中最后 2 轮完整。全量转写和目录文件都不会生成,磁盘上不留东西。

前置要求

| 依赖 | 说明 |
| Edge 或 Chrome | 插件用 playwright-core 驱动你系统里的浏览器(不下载额外的 Chromium) |
| DSH | >= 0.1.7-rc.2(在 0.1.7-rc.2 与 0.2.1-rc.2 上验证过) |
| Node | >= 20 |
| 平台 | 仅 Windows(发布包 os: win32;macOS / Linux 上 npm 会按 os 字段拒绝安装,除非加 --force) |

已装 Tabbit 的用户也可以切到 tabbit 驱动(零登录,仅 Windows):
DSWEB_DRIVER=tabbit node dsweb-share/dsweb.mjs doctor

关于「浏览器适配性」——请务必先自测

⚠️ 这是本项目最需要注意的地方。

插件不调用任何官方 API,而是用 Playwright 驱动一个真实浏览器去读 chat.deepseek.com。
这意味着它的稳定性取决于三件不在我们控制范围内的东西:

1. 你本机浏览器的情况(Edge/Chrome 版本、是否被企业策略限制、配置目录是否可写)
2. DeepSeek 网页端的前端实现(接口路径、字段名随时可能变)
3. 网络环境(企业代理、加速器、DNS 都可能影响)

所以:装完之后请先按下面「自测清单」跑一遍,确认能用再日常使用。 出问题不会损坏任何东西(插件只读),最坏情况就是读不到数据。

自测清单(三条命令,1 分钟)

cd <插件目录>\dsweb-share

node dsweb.mjs selftest # ① 只读自检,必须通过
node dsweb.mjs doctor # ② 看驱动与登录状态
node dsweb.mjs list --count 5 # ③ 真读一次会话列表

- ① 失败 → 文件被改动过,别用
- ② 显示 playwright ⚪ 可用未登录 → 跑 node dsweb.mjs login 登录一次
- ③ 能列出标题 → 通了;报错请把报错原文贴 issue

安装

1) 装插件(会一并装 playwright-core,约 5 MB,不下载浏览器)
dsh plugin --profile web add github:huang13113/dsh-web-share

装完 重启 DSH(插件在启动时装配)。

2) 登录一次(会弹出一个真实浏览器窗口)
cd "$env:USERPROFILE\.dsh\profiles\web\node_modules\dsh-web-share\dsweb-share"
node dsweb.mjs login

在弹出的窗口里正常登录 chat.deepseek.com,登录成功后窗口自动关闭。
插件不接触、也不保存你的密码——登录态留在那个浏览器自己的配置目录里。

3) 验证
node dsweb.mjs doctor

也可以直接在 DSH 面板里点 「登录 DeepSeek」 按钮,效果一样。

使用

侧栏入口(推荐,任何状态下都能用)

侧栏 → 「网页版导出」 → 找到那段对话 → 点 「导出到新对话」 → 新对话已预填好 → 改一改按回车。

对话栏标签页

对话栏 → 「网页版」 → 同样点「导出到新对话」。

两个入口行为一致:都是开新对话 + 预填,不会往你当前这个对话里塞东西。

给智能体的工具

read_deepseek_web action=list # 列出所有网页版会话 read_deepseek_web action=read query="毕业论文" # 返回交接包

命令行

node dsweb.mjs doctor # 驱动 / 登录状态
node dsweb.mjs list --count 20 # 列出会话
node dsweb.mjs handoff "毕业论文" # 打印交接包
node dsweb.mjs export "毕业论文" --out D:\share # 完整转写(存档用,会落盘)

亮点

| 省钱 | 把"磨需求"的 token 花在免费网页版上,智能体只接结论 |
| 一次点击 | 导出 = 生成交接包 + 新建对话 + 预填,不用复制粘贴 |
| 交接包 | 选中的轮次逐字完整 + 前情一行压缩;30 轮对话 → 6,600 字符 |
| 预览挑轮次 | 展开预览最后 4 轮,勾选要完整上传的那几轮(默认最后 2 轮) |
| 不落文件 | 交接包全内存传递,超长时的临时文件读完即删 |
| 只读 | 只发 GET。代码里有强制自检,改出写能力直接拒绝启动 |
| 零凭据落盘 | 登录态留在浏览器自己的配置目录,插件从不读写任何凭据文件 |
| 驱动可换 | playwright(默认,系统 Edge/Chrome)/ tabbit(已装 Tabbit 的人) |
| 两个入口 | 侧栏整页面板 + 对话栏标签页,都是官方座位,不是外挂浮层 |

只读是设计前提,不是功能缺失

生态里做"网页版接入"的项目,主流思路是把它变成 模型服务商——让网页版替你生成内容。那条路很诱人,代价是账号风险:

| 事实 | 出处 |
| 同账号并发生成,不到 6 分钟触发 1 天临时封禁 | cv-superding/dsh-deepseek-web-login README 实测 |
| 判罚信号实证:5 临时禁言 / 10 永久封禁 / 11 设备风控 | NIyueeE/ds-free-api |
| 赛道最早的 LLM-Red-Team/deepseek-free-api 已因作者账号被封停更 | 下游 fork README |

本项目只读。 读历史不产生生成请求,和你自己翻聊天记录的流量没有本质区别。
这也是为什么它可以不逆向接口、不伪装指纹、不存可登录凭证。

强制自检

dsweb-share/readonly.guard.json 是只读铁律,规则外置(放在被扫描文件里会自我匹配)。
引擎每次启动先扫自己所有源文件,命中就 throw:

❌ 只读自检失败,拒绝运行。发现被禁止的模式:POST

铁律覆盖:生成接口、会话创建/删除/重命名、文件上传、以及 POST/PUT/PATCH/DELETE。

架构

┌──────────────────────────────────────────────┐
│ DSH Web GUI(浏览器) │ │ lib/client.js │ │ ├─ sidebar.panellist → 侧栏「网页版导出」 │ │ ├─ main#web-share → 整页面板 │ │ └─ conversation.view → 对话栏「网页版」标签 │ └───────────────────┬──────────────────────────┘ │ 同源 fetch /api/dsweb/* ┌───────────────────▼──────────────────────────┐ │ DSH 宿主(Node 进程) │ │ lib/index.js │ │ ├─ 工具 read_deepseek_web │ │ └─ 路由 list / handoff / login / read │ └───────────────────┬──────────────────────────┘ │ spawn 子进程(只读) ┌───────────────────▼──────────────────────────┐ │ dsweb-share/dsweb.mjs 业务逻辑(解析/渲染) │ │ dsweb-share/driver.mjs 驱动选择(auto) │ │ ├─ driver-playwright 系统 Edge/Chrome │ │ └─ driver-tabbit Tabbit CLI │ └───────────────────┬──────────────────────────┘ │ 页面上下文内 fetch ┌───────────────────▼──────────────────────────┐ │ 真实浏览器 → chat.deepseek.com │ └──────────────────────────────────────────────┘ 关键设计:桥接层里没有 LLM。让子代理「看着浏览器点点点」会烧掉几万 token,正好抵消省下来的量——所以这一层是纯确定性代码。

和同类项目的区别

这块生态已经有人在做,我把差异摆出来,你自己判断要不要用:

| 项目 | 做什么 | 和本项目的区别 |
| xmuwenxiang/dsh-web-chat | 在 DSH 里用网页版聊天(可发消息、可回填),并能把对话「迁移」成任务简报 | 它会替你发消息(走生成接口);迁移时用 LLM 蒸馏(要花 token)。本项目只读不发送,交接包是确定性拼装、零 LLM |
| cv-superding/dsh-deepseek-web-login | 把网页版当模型服务商,用免费额度驱动智能体 | 同样需要生成请求;本项目不碰生成侧 |
| KyMi-22/dsh-deepseek-web · sbbbx/dsh-client-ui-webchat | 把网页版对话接进 DSH | 功能取向往「聊天/双向搬运」靠;本项目只解决单向交接这一件事 |
| dsh-share / dsh-share-link / dsh-qr-share 等 | 会话分享(公网链接、二维码) | 名字里都有 share,但做的是「把会话发出去」,不是「把网页版对话交给智能体」 |

一句话定位:别人做的是「让网页版替智能体干活」,本项目做的是「让智能体接着你们聊好的方案干活」。
前者需要生成、有账号风险;后者只读、零风险。

如果你需要的是「在 DSH 里直接和网页版对话」,dsh-web-chat 更合适;如果你只是想把聊好的结论交出去,本项目的交接包更省。

常见问题

Q:面板是空的 / 标签在但没内容?

宿主半边加载失败时 DSH 是静默的。跑 node docs/read-diag.mjs 看诊断日志。

Q:doctor 显示「可用未登录」?

跑 node dsweb.mjs login,或在面板里点「登录 DeepSeek」。

Q:点了导出没反应 / 报错?

先跑自测清单。若仍失败,看浏览器控制台里的 [dsweb] 日志,或把 node dsweb.mjs list 的报错贴到 issue。

Q:能不用 Playwright、直接用我开着的浏览器吗?

做不到透明:普通启动的浏览器没开调试端口,而且跨域限制让 DSH 页面读不到 DeepSeek。
本项目的做法是「用你系统的 Edge/Chrome,但配一个独立配置目录」,登录一次即可。

Q:会用我日常的浏览器登录态吗?

不会。插件有自己的配置目录(~/.dsh/web-share/browser-profile),和你日常用的浏览器互不影响。

DSH Desktop(桌面端)说明

桌面端是 Electron 应用,插件在里面不需要特殊配置,但有三点要知道:

① 登录时确实会弹一个系统浏览器窗口

因为 DeepSeek 的登录态(userToken)只能存在于浏览器配置档里,而 Electron 的配置档对第三方插件是拿不到的。所以首次使用会:

点「登录 DeepSeek」→ 弹出系统 Edge/Chrome 的一个新窗口 ↓ 你正常登录 chat.deepseek.com 窗口自动关闭(登录态存进插件自己的配置目录) ↓ 之后完全后台静默:不再弹窗,导出直接走无头浏览器

这个窗口是独立配置的(~/.dsh/web-share/browser-profile),不会带出你日常浏览器的标签页、书签、历史。

② 为什么不在 Electron 里内嵌登录

内嵌需要应用层提供 webview / BrowserView 的插件 API,而 DSH 目前没有把这层开放给插件;退而求其次「复用你 Electron 里的会话」也不行——那属于应用自身的配置档,插件无权限访问。

③ 引擎拉起方式已做兼容

桌面端跑在 Electron 里,process.execPath 指向应用本体而不是 node。
插件拉起引擎时会自动带上 ELECTRON_RUN_AS_NODE=1,否则会把整个应用再启动一次。
这个分支已在代码中处理;如果你在桌面端遇到「点了没反应」,请先跑自测清单并把报错贴出来。

桌面端的配置档名通常是 desktop:
dsh plugin --profile desktop add github:huang13113/dsh-web-share

开发笔记:踩过的坑

完整版见 docs/DESIGN.md。摘要:

| 坑 | 现象 | 原因 |
| ctx 是代理 | 插件静默不生效 | 读任何未在 inject 声明的属性直接抛错,连 typeof 试探都不行 |
| 宿主失败是静默的 | 客户端标签照常渲染,宿主不注册路由 | 两条加载路径独立;必须落盘诊断日志 |
| HTTP 200 ≠ 成功 | 列表静默变空 | 业务错误在 biz_code 里 |
| count 太小非法 | 探活误报「未登录」 | fetch_page?count=1 返回 ILLEGAL_COUNT,最小要用 20 |
| startSession({prompt}) 的 prompt 会被吞 | 建了会话但输入框是空的 | 草稿在 composer 挂载时被清;改成「建→切→挂载后重试写草稿」 |
| 复用空白会话会吞新交接包 | 点了没反应、显示旧内容 | requestDraftInitialization 遇到非空草稿返回 preserved;改成每次新建 |
| Playwright 上下文不释放 | 命令跑完不退出 | 持久化上下文会保活进程,必须显式 close() |

路线图

- [ ] CDP 驱动:连接你自己用 --remote-debugging-port 启动的 Edge/Chrome(复用现有登录态)
- [ ] 多站点抽象(其他 web AI 的会话接口)
- [ ] 面板内预览交接包(先看再导)
- [ ] 工作区下拉(默认最近使用的)

免责声明

⚠️ 非官方项目:与 DeepSeek 无关联,未获授权或赞助。"DeepSeek" 为其权利人商标。

⚠️ 浏览器适配性风险:插件依赖真实浏览器与网页端私有接口,可能因浏览器版本、企业策略或网页改版而失效。请先按自测清单验证。

⚠️ 数据边界:读的是你自己账号的会话,只在本机处理。请勿把导出的转写提交到公开仓库。

⚠️ 协议风险:驱动网页端读取自身数据属于灰色地带。本插件刻意限制为只读、低频、手动触发,但不构成合规保证。

⚠️ 按现状提供:作者不提供担保(见 MIT License)。

License

MIT
预览分享卡片长什么样 ↓huang13113/dsh-web-share
分享 · DeepSeek Harness Hub
huang13113/dsh-web-share

把网页版聊好的方案一键打包交给新对话执行

这是你的仓库?认领条目

回到顶部