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

网页版直连 zgrajdnhj7806-svg/dsh-deepseek-web

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

用自己账号的网页版模型提问并分析文件行区间

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/09/29·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/03·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 50 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

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

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

可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 33 处,展示前 32 条)
  • 发起网络请求
    lib/client.js:60
    const response = await fetch(ROUTE + '/' + action, init)
  • 读取本地文件
    lib/service.js:52
    if (!existsSync(path) && !existsSync(`${path}.b64`)) {
  • 读取本地文件
    lib/skill.js:19
    export const SKILL_CONTENT = readFileSync(new URL('../assets/skill/SKILL.md', import.meta.url), 'utf8')
  • 发起网络请求
    lib/client-core.js:144
    response = await fetch(url, {
  • 发起网络请求
    lib/client-core.js:275
    response = await fetch(API + '/chat/completion', {
  • 读取本地文件
    lib/analyze.js:36
    raw = await readFile(filePath, 'utf8')
  • 读取本地文件
    lib/login.js:32
    return existsSync(explicit.trim()) ? explicit.trim() : undefined
  • 读取本地文件
    lib/login.js:34
    return EDGE_CANDIDATES.find((candidate) => existsSync(candidate))
  • 读取本地文件
    lib/login.js:109
    if (existsSync(file)) {
  • 读取本地文件
    lib/login.js:110
    const text = readFileSync(file, 'utf8').trim()
  • 读取本地文件
    lib/login.js:127
    const text = readFileSync(join(profileDir, 'DevToolsActivePort'), 'utf8').trim()
  • 发起网络请求
    lib/login.js:130
    const response = await fetch(`http://127.0.0.1:${port}/json/version`, { signal: AbortSignal.timeout(2000) })
  • 写入本地文件
    lib/login.js:161
    await mkdir(profileDir, { recursive: true })
  • 执行外部命令来自配置/变量
    lib/login.js:182
    child = spawn(browserPath, args, { stdio: 'ignore', windowsHide: false })
  • 发起网络请求
    lib/login.js:187
    const versionResponse = await fetch(`http://127.0.0.1:${port}/json/version`)
  • 执行外部命令固定命令
    lib/login.js:244
    if (process.platform === 'win32') spawn('taskkill', ['/PID', String(pid), '/T', '/F'], { stdio: 'ignore' })
  • 读取本地文件
    lib/state.js:115
    if (!existsSync(path)) return undefined
  • 读取本地文件
    lib/state.js:117
    const json = JSON.parse(await readFile(path, 'utf8'))
  • 读取本地文件
    lib/state.js:128
    #readFile() {
  • 写入本地文件
    lib/state.js:138
    async #writeFile(token, cookie) {
  • 写入本地文件
    lib/state.js:140
    await mkdir(dirname(path), { recursive: true, mode: 0o700 })
  • 写入本地文件
    lib/state.js:141
    await writeFile(path, JSON.stringify({ token, cookie }, null, 2), { encoding: 'utf8', mode: 0o600 })
  • 写入本地文件
    lib/state.js:142
    await chmod(path, 0o600).catch(() => {})
  • 读取本地文件
    lib/state.js:157
    const file = await this.#readFile()
  • 写入本地文件
    lib/state.js:175
    await this.#writeFile(token, cookie)
  • 写入本地文件
    lib/state.js:186
    if (existsSync(path)) await writeFile(path, JSON.stringify({ token: '', cookie: '' }, null, 2), 'utf8').catch(() => {})
  • 读取本地文件
    lib/state.js:186
    if (existsSync(path)) await writeFile(path, JSON.stringify({ token: '', cookie: '' }, null, 2), 'utf8').catch(() => {})
  • 读取本地文件
    lib/state.js:193
    if (!existsSync(path)) {
  • 读取本地文件
    lib/pow.js:52
    bytes = readFileSync(wasmPath)
  • 读取本地文件
    lib/pow.js:55
    const text = readFileSync(`${wasmPath}.b64`, 'utf8')
  • 读取本地文件
    bin/dsweb.mjs:43
    const json = JSON.parse(readFileSync(path, 'utf8'))
  • 读取密钥环境变量
    bin/dsweb.mjs:53
    const token = (typeof args.token === 'string' ? args.token : undefined) ?? process.env.DS_TOKEN ?? fromFile.token
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-settings@deepseek-ai/dsh-skill@deepseek-ai/dsh-tools@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 网页版模型提问
  • 分析文件行区间
  • 一键登录面板

README

由 DeepSeek 最新模型翻译生成
dsh-deepseek-web 把你自己账号的 DeepSeek 网页版(chat.deepseek.com)接进 DeepSeek Harness (dsh) 的插件: 模型可以直接调用网页端提问 / 按行区间(第 xx 行到 xx 行)分析文件,DSH 设置页里带一个一键登录面板,免 API Key、免客户端回环。 纯 Node 实现:PoW 用 Node 内置 WebAssembly 跑官方 sha3_wasm_bg.wasm,登录用 Edge/CDP 自动抓取,零 Python/Playwright 依赖。 特性 | 类型 | 名字 | 说明 | | 模型工具 | deepseek_web_analyze_lines | 读文件第 start_line–end_line 行,交给网页端模型分析;提示词带行号,回答可引用行号 | | 模型工具 | deepseek_web_ask | 直接提问;支持深度思考 / 联网搜索 / 新会话 / 多轮 | | 模型工具 | deepseek_web_status | 登录状态、token 摘要、凭据来源、账号 id | | 运行时技能 | deepseek-web | 告诉模型什么时候该用网页端模型、怎么用行区间分析 |
展开完整文档(README 剩余 1 节)
dsh-deepseek-web

把你自己账号的 DeepSeek 网页版(chat.deepseek.com)接进 DeepSeek Harness (dsh) 的插件:

模型可以直接调用网页端提问 / 按行区间(第 xx 行到 xx 行)分析文件,DSH 设置页里带一个一键登录面板,免 API Key、免客户端回环。

纯 Node 实现:PoW 用 Node 内置 WebAssembly 跑官方 sha3_wasm_bg.wasm,登录用 Edge/CDP 自动抓取,零 Python/Playwright 依赖。

特性

| 类型 | 名字 | 说明 |
| 模型工具 | deepseek_web_analyze_lines | 读文件第 start_line–end_line 行,交给网页端模型分析;提示词带行号,回答可引用行号 |
| 模型工具 | deepseek_web_ask | 直接提问;支持深度思考 / 联网搜索 / 新会话 / 多轮 |
| 模型工具 | deepseek_web_status | 登录状态、token 摘要、凭据来源、账号 id |
| 运行时技能 | deepseek-web | 告诉模型什么时候该用网页端模型、怎么用行区间分析 |
| 设置分区 | 设置 → DeepSeek 网页版 | 登录状态 + 一键登录 / 导入 / 手工粘贴 / 测试 / 退出 + 插件设置 |

三个工具都是串行的:DeepSeek 免费账号同一时刻只允许一路流式请求。

⚠️ 账号安全(务必先读)

本项目直接调用你本人账号的 DeepSeek 网页版(chat.deepseek.com),行为与你在浏览器里手动提问完全一样。请务必遵守:

1. 只支持单线程,不支持并发/并行提问。插件刻意把所有调用做成全串行:三个工具共用同一条流式通道,同一时刻只会有一个网页端请求在线。请不要自行并发调用、「多开」多个实例,或绕过插件并行发请求——免费账号同一时刻只允许一路流式,并发必失败。
2. 不高频轰炸。请保持接近真人提问的节奏(一次一问、串行推进)。高频、批量、自动化轰炸会触发 DeepSeek 的风控,可能导致账号被限流、临时冻结甚至封禁,后果由使用者自负。
3. 仅限个人学习与自动化。请遵守 DeepSeek 服务条款,不要用于违反条款的任何用途;发给网页端的内容会离开本机,敏感代码与凭据不要发送。

一句话:当单线程用,别当 API 用。

环境要求

- Node.js >= 20(DeepSeek 官方推荐 >= 22.19 或 >= 24)
- 已安装并初始化 dsh(npm install -g @deepseek-ai/dsh,官方快速开始)

一条命令安装

Windows(PowerShell)

irm https://raw.githubusercontent.com/zgrajdnhj7806-svg/dsh-deepseek-web/main/scripts/install.ps1 | iex

macOS / Linux

curl -fsSL https://raw.githubusercontent.com/zgrajdnhj7806-svg/dsh-deepseek-web/main/scripts/install.sh | bash

脚本会做两件事:

1. dsh plugin --profile web add github:zgrajdnhj7806-svg/dsh-deepseek-web(把插件作为依赖装进 web profile);
2. 把 dsh-deepseek-web 追加到 profile 的 dsh.profile.bundles 列表(dsh 按层栈加载插件的那一步)。

装完重启 dsh 即生效:

dsh web

手动安装(等价步骤,不想跑脚本时用)

dsh plugin --profile web add github:zgrajdnhj7806-svg/dsh-deepseek-web
编辑 ~/.dsh/profiles/web/package.json:在 dsh.profile.bundles 数组里追加 "dsh-deepseek-web"

另一个形态:v1.0/(MCP 服务版)

v1.0/ 是同一套网页端协议的另一份独立实现:一个纯 stdio 的 MCP 服务器,不依赖 dsh 的插件体系,任何支持 MCP 的客户端都能接入;只想把它当「网页端模型代理」用时选这个。

环境要求:Node.js >= 18(PoW 用 Node 内置 WebAssembly 直跑官方 sha3_wasm_bg.wasm,依旧零 Python / 零代理)

cd v1.0
npm install # 只装 @modelcontextprotocol/sdk

请保留仓库目录结构:v1.0/src/pow.mjs 在本目录找不到 wasm 时会向上找 assets/sha3_wasm_bg.wasm[.b64]。
只把 v1.0/ 单独拷走的话,要么连 assets/ 一起拷,要么把 sha3_wasm_bg.wasm(或 .wasm.b64)放进 v1.0/src/。

注册:把 v1.0/cordis.patch.yml 里的 - insert: 段合并进 /profiles/web/cordis.patch.yml 的顶层数组,并把 args 里的 换成 v1.0/ 的绝对路径:

- insert:
- id: mcp-deepseek-web
name: '@deepseek-ai/dsh-mcp-client'
config:
transport: stdio
serverName: deepseek-web
command: node
args:
- '/src/index.mjs'
env:
DEEPSEEK_WEB_TOKEN: ''
DEEPSEEK_WEB_COOKIE: ''
DWH_ROOT: ''
DEEPSEEK_WEB_CREDENTIALS: ''

环境变量(env 段)

| 变量 | 必填 | 说明 |
| DEEPSEEK_WEB_TOKEN | 是* | 网页端 userToken(F12 → /api/v0/chat/completion → Authorization: Bearer 后面的值) |
| DEEPSEEK_WEB_COOKIE | 否 | 同一次请求的 Cookie |
| DEEPSEEK_WEB_CREDENTIALS | 否 | 指向 { "token": …, "cookie": … } 的 JSON 文件 |
| DWH_ROOTS | 否 | fs_ 工具的允许根目录,逗号 / 分号分隔可配多个 |
| DWH_ROOT | 否 | 单个默认根目录;与 DWH_ROOTS 都没有时用用户主目录 |

凭据取用优先级:DEEPSEEK_WEB_TOKEN 环境变量 → DEEPSEEK_WEB_CREDENTIALS 指向的文件 → v1.0/credentials.json。

自带 8 个工具

| 工具 | 说明 |
| web_analyze_range | 把内容交给网页端模型分析:给 file + start_line/end_line 读文件区间,或直接给 code;支持 summary/analyze/explain/critique/implement、多轮 conversation_id、search=true 联网、save_result 存档 |
| critique_workspace | 对工作区做对抗式审查(挑刺 / 找漏洞) |
| deep_simulate | 「进程模拟推演 + 挑刺」一键工作流:目录树 → fs_grep 取证 → 三阶段推演(执行过程 / 可能走向 / 挑刺),支持 syntax_notes 提交语法陷阱 |
| fs_list | 列目录(限定在允许根内,防越界) |
| fs_read | 读文件(同上) |
| fs_grep | 内容检索(同上) |
| web_conversation_list | 列出当前会话池里的网页端对话 |
| web_conversation_clear | 按 conversation_id 删单条,或 all=true 清空会话池 |

直接跑(调试用)

node v1.0/src/index.mjs # 按 MCP stdio 协议收发,ready 行打到 stderr

「⚠️ 账号安全」对 v1.0/ 同样适用:单线程、全串行,不要并发调用,不要高频轰炸。

登录(三条路,从省事到兜底)

1. 一键登录(打开 Edge) —— 设置页按钮。插件拉起本机 Edge(独立 profile,存在 $DSH_HOME/cache/dsh-deepseek-web/browser_profile),你在窗口里登录一次,插件用 CDP 读 localStorage.userToken 与 cookie 并保存,之后长期免登录。
2. 从 credentials.json 导入 —— 兼容其他工具导出的登录缓存({ "token": …, "cookie": … });放到插件同级的 credentials.json,首次使用会自动只读迁移。
3. 手工粘贴 token —— 浏览器 F12 → 网络 → /api/v0/chat/completion 请求头,复制 Authorization: Bearer 后面的值。

登录态默认写进 DSH 凭据服务($DSH_HOME/.credentials.yaml,目录 0700 / 文件 0600,记录键 deepseek-web/login);凭据服务不可用时回退到 $DSH_HOME/cache/dsh-deepseek-web/credentials.json(0600)。token/cookie 不会写进 settings.yaml,也不会出现在任何发往浏览器的响应里(界面只显示摘要)。

设置项(settings.yaml 的 deepseek-web 段)

| 键 | 默认 | 说明 |
| enabled | true | 关掉后不注册工具与技能(设置页仍可用,方便修好再开) |
| autoLogin | true | 是否允许一键登录拉起浏览器 |
| browserPath | '' | Edge/Chrome 路径,留空自动探测 |
| loginTimeoutMs | 300000 | 等待用户完成登录的最长时间 |
| credentialsPath | '' | 待导入的 credentials.json;留空用插件同级的 ../credentials.json |
| wasmPath | '' | PoW WASM 路径(支持 .wasm 或同路径 .wasm.b64),留空用插件内置 |
| defaultThinking / defaultSearch | false | deepseek_web_ask 的默认开关 |
| timeoutMs | 180000 | 单次网页端请求超时 |
| maxLines | 400 | 行区间分析一次最多多少行(超了直接拒绝,避免把整文件塞进去) |
| maxChars | 60000 | 行区间分析一次最多多少字符 |
| conversationsPerSession | 4 | 每个 DSH 会话最多缓存多少个网页端会话 |

自测与独立 CLI

插件带一个脱离 DSH 的独立 CLI bin/dsweb.mjs,以及宿主侧集成自测:

node _selftest.mjs # 12 项:注册、凭据、路由围栏、真实行区间分析
node bin/dsweb.mjs --check
node bin/dsweb.mjs --file lib/pow.js --lines 30-52 --instruction "只关注内存安全"

文件结构

dsh-deepseek-web/
├── lib/
│ ├── index.js 插件入口:设置命名空间 + 工具 + 技能 + 路由 │ ├── config.js schemastery 配置 schema 与默认值 │ ├── service.js 业务层(配置 + 凭据 + 客户端 + 会话池) │ ├── tools.js 三个模型工具(defineTool) │ ├── skill.js 运行时技能描述符 │ ├── web.js 宿主 HTTP 路由(同源围栏 + ok/error 信封) │ ├── client.js 浏览器半边(设置分区,classic script 工厂) │ ├── client-core.js DeepSeek 网页端客户端(PoW + SSE + 多轮) │ ├── pow.js Node 版 WASM PoW 解题器(.wasm / .wasm.b64 均可) │ ├── analyze.js 行区间抽取 + 分析提示词组装 │ ├── login.js Edge + CDP 一键登录 │ └── state.js 凭据存取(凭据服务 / 0600 文件 / 只读导入) ├── assets/sha3_wasm_bg.wasm.b64 官方 PoW 模块的 base64 文本(运行时自动解码) ├── assets/skill/SKILL.md 技能正文 ├── bin/dsweb.mjs 独立 CLI(--check / --prompt / --file --lines) ├── cordis.patch.yml bundle patch 行 ├── scripts/ install.sh / install.ps1 一键安装 └── v1.0/ 独立的 MCP 服务版(package.json + src/index.mjs + src/pow.mjs + cordis.patch.yml)

已知限制

- 账号安全:网页端账号同一时刻只允许一路流式,插件全串行、单线程;请勿并发调用或高频轰炸(详见上方「⚠️ 账号安全」)。
- token 会过期(几天到几周),过期后 deepseek_web_status / 报错信息会提示重新登录。
- 只有一层技能目录 / 行区间上限 maxLines,超限直接拒绝而不是截断——拆小区间更准。
- 一键登录会弹出一个可见浏览器窗口(这是设计如此:需要你手动过验证码/2FA)。
- 仅用于个人学习与自动化,请遵守 DeepSeek 服务条款;发给网页端的内容会离开本机。

许可

MIT © 2026 zgrajdnhj7806-svg

assets/sha3_wasm_bg.wasm.b64 是 chat.deepseek.com 网页端公开资源(DeepSeekHashV1 PoW 模块)的 base64 文本,版权归 DeepSeek 所有,仅随本插件分发用于协议兼容,请勿用于违反条款的用途。
预览分享卡片长什么样 ↓zgrajdnhj7806-svg/dsh-deepseek-web
分享 · DeepSeek Harness Hub
zgrajdnhj7806-svg/dsh-deepseek-web

用自己账号的网页版模型提问并分析文件行区间

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部