把网页版聊好的方案一键打包交给新对话执行
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🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
huang13113/dsh-web-share
把网页版聊好的方案一键打包交给新对话执行
相关插件 · 对话 / 记忆
上下文中枢oceanbase/powercontext
上下文跟着工作走 —— 跨会话、跨智能体、跨人。
★ 1,487已汉化DSH
73
智能体记忆库plastic-labs/honcho
Honcho 是记忆基础设施,用来构建有状态的智能体。这些智能体能理解不断变化的人、智能体、群组、项目和想法。
★ 7,894已汉化DSH
71.7
长程智能体控制面loopx-project/loopx
给 Agent 一个目标,让工作持续向前。
★ 6,358已汉化DSH
71.3
智能体上下文数据库volcengine/OpenViking
给 AI 智能体用的上下文数据库
★ 41,379已汉化DSH
71.3
长效机器人团队Fei2411/DS-Bot
DS Bot 是一个基于 DeepSeek Harness简称 dsh的 bot 插件,插件将 dsh 改造为 bot…
★ 5,084已汉化DSH
71.1
可携带记忆层EverMind-AI/EverOS
为什么选择 EverOS
★ 13,778已汉化DSH
71.1
这是你的仓库?认领条目