逆向网页识图模式,免费分析图片与屏幕截图
27.8/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add orrinzeng/chat-deepseek-vision该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · vision
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 77 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
🔴 安全扫描发现高危能力自动 · 静态分析源码
v2.7.0🔴 扫描:高危尚无人工评估
静态扫描发现安装期即执行代码,或命令参数由运行时变量拼接(参数来源无法静态判定,从严处理)。
命令参数由运行时变量拼接读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 21 处,展示前 20 条)
- 读取密钥环境变量lib/vision.js:48
token: pluginConfig.token ?? process.env.DSW_TOKEN ?? "", - 发起网络请求lib/vision.js:88
res = await fetch(source, { signal: AbortSignal.timeout(60_000) }); - 读取本地文件lib/vision.js:100
if (!existsSync(source)) throw new Error(`文件不存在: ${source}`); - 读取本地文件lib/vision.js:101
const buffer = readFileSync(source); - 读取本地文件lib/screen.js:18
const bytes = readFileSync(fp).length; - 发起网络请求lib/deepseek-web.js:67
const res = await fetch(`${this.baseUrl}/api/v0/users/current`, { - 发起网络请求lib/deepseek-web.js:81
const res = await fetch(`${this.baseUrl}/api/v0/chat_session/create`, { - 发起网络请求lib/deepseek-web.js:94
await fetch(`${this.baseUrl}/api/v0/chat_session/delete`, { - 发起网络请求lib/deepseek-web.js:106
const res = await fetch(`${this.baseUrl}/api/v0/chat/create_pow_challenge`, { - 发起网络请求lib/deepseek-web.js:127
const res = await fetch(`${this.baseUrl}/api/v0/file/upload_file`, { - 发起网络请求lib/deepseek-web.js:168
const res = await fetch(url, { - 写入本地文件lib/platform.js:16
writeFileSync(f, "\ufeff" + "[Console]::OutputEncoding = [System.Text.Encoding]::UTF8\n" + script, "utf-8"); - 执行外部命令运行时拼接lib/platform.js:18
return execSync(`powershell -NoProfile -ExecutionPolicy Bypass -File "${f}"`, { - 删除本地文件lib/platform.js:27
unlinkSync(f); - 读取本地文件lib/platform.js:68
if (!existsSync(candidate)) mkdirSync(candidate, { recursive: true }); - 写入本地文件lib/platform.js:68
if (!existsSync(candidate)) mkdirSync(candidate, { recursive: true }); - 读取本地文件lib/platform.js:129
if (result && existsSync(result)) return result; - 读取本地文件lib/platform.js:130
if (existsSync(fp)) return fp; - 读取本地文件lib/platform.js:202
if (result && existsSync(result)) return result; - 读取本地文件lib/platform.js:203
if (existsSync(fp)) return fp;
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-llm@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 逆向识图模式分析图片
- 分析屏幕截图
- 无需第三方API密钥
README
由 DeepSeek 最新模型翻译生成chat-deepseek-vision
一个原生 DeepSeek Harness (DSH) Cordis 插件,通过逆向工程实现的 chat.deepseek.com 视觉模式(model_type=vision)分析图像——免费,无需第三方视觉 API 密钥。
- 无 stdio/MCP 桥接(取代旧的 @deepseek-ai/dsh-mcp-client + node dist/index.js 配置)
- 工具直接注册到当前 agent 的工具注册表中,与官方 @deepseek-ai/dsh-tool- 插件同构
- 纯 ESM JavaScript,零运行时资源(官方 PoW wasm 以 base64 内嵌),无需构建步骤
工具
| 工具 | 描述 |
| analyze_image | 通过 chat.deepseek.com 视觉模式分析现有图像(本地路径 / http(s) URL / data URI),返回文本描述 |
| analyze_attachment | 分析发送框 / 会话中附加的图像(通过 attachment_id,可自定义提示词进行深入分析) |
| describe_screen | 捕获屏幕并分析(全屏 / 主屏 / 特定窗口;在后台捕获,不切换窗口) |
展开完整文档(README 剩余 1 节)
chat-deepseek-vision
一个原生 DeepSeek Harness (DSH) Cordis 插件,通过逆向工程实现的 chat.deepseek.com 视觉模式(model_type=vision)分析图像——免费,无需第三方视觉 API 密钥。
- 无 stdio/MCP 桥接(取代旧的 @deepseek-ai/dsh-mcp-client + node dist/index.js 配置)
- 工具直接注册到当前 agent 的工具注册表中,与官方 @deepseek-ai/dsh-tool- 插件同构
- 纯 ESM JavaScript,零运行时资源(官方 PoW wasm 以 base64 内嵌),无需构建步骤
工具
| 工具 | 描述 |
| analyze_image | 通过 chat.deepseek.com 视觉模式分析现有图像(本地路径 / http(s) URL / data URI),返回文本描述 |
| analyze_attachment | 分析发送框 / 会话中附加的图像(通过 attachment_id,可自定义提示词进行深入分析) |
| describe_screen | 捕获屏幕并分析(全屏 / 主屏 / 特定窗口;在后台捕获,不切换窗口) |
| take_screenshot | 仅捕获屏幕并保存(不分析) |
| list_windows | 列出所有可见窗口的标题 |
| dsv_status | 插件自检(掩码 token、端点、超时、截图目录、附件自动描述开关)+ DeepSeek Web 连通性检查 |
截图依赖 Windows PowerShell(CopyFromScreen / GDI BitBlt / PrintWindow 三种方法回退)。
视频/音频能力超出“通过 chat.deepseek.com 分析图像”的范围,不包含在此插件中。
发送框附件图像(直接支持)
用户可以直接在发送框中附加图像(拖放 / 粘贴 / 文件选择器)——无需文件路径:
1. 准入放行:DSH 的图像附件准入(prompt 入口)要求当前模型声明 image 输入,否则会直接拒绝请求(MODEL_DOES_NOT_SUPPORT_IMAGES,显示为“当前模型不支持图像”)。官方 DeepSeek 适配器在 resolveModelInfo 中硬编码
inputModalities: ["text"],且无配置覆盖,因此此插件安装了一个
能力声明补丁(lib/model.js):仅针对 deepseek 路由,它在返回的 resolveModelInfo modalities 中追加 "image",让附件准入通过。该补丁只改变声明,绝不改变任何真实请求;插件被释放时原始方法会被恢复。
2. 自动描述(agent/pre-step 钩子):会话消息中的 image 块被投影为文本占位符
(占位符由插件渲染为 [图片附件 id=sha256:... name=... WxH]——按设计为中文,携带
附件 id;DeepSeek 适配器永远不会收到图像块),同时插件自动运行 chat.deepseek.com 视觉并将描述作为用户消息注入:
此图像是……(完整描述)
模型可以直接根据描述作答;同一附件每个会话只分析一次(持久化标记 + 进程内缓存)。
3. 深度分析:模型可以调用 analyze_attachment 工具并传入 id 进行自定义分析(提取文本/数据、比较细节、翻译等)。
4. 原生图像模型:当使用真正接受图像的模型(例如 pi-ai 视觉模型)时,设置 nativeImageModels: true —— 当模型声明支持图像输入时,插件会跳过投影/描述,让原生图像管线处理它。
5. 禁用自动描述:设置 autoDescribe: false(analyze_attachment 手动工具仍然可用)。
注意:投影后,用户消息中原始图像缩略图的位置会显示附件占位文本(与 DSH 对纯文本模型下 MCP 图像结果的处理策略一致);附件字节本身仍作为会话附件存储,随时可通过 analyze_attachment 重新分析。
工作原理
针对 chat.deepseek.com 内部端点的纯 HTTP 调用(无浏览器):
POST /api/v0/chat_session/create → chat_session_id
POST /api/v0/chat/create_pow_challenge → PoW 挑战(DeepSeekHashV1)在本地求解 PoW(内置官方 sha3_wasm_bg.wasm,26KB,零导入) POST /api/v0/file/upload_file (multipart) → file_id(x-ds-pow-response 请求头) GET /api/v0/file/fetch_files → 轮询直到 status == SUCCESS POST /api/v0/chat/completion (SSE stream) → 回复文本(model_type="vision") POST /api/v0/chat_session/delete → 使用后删除会话
⚠️ 风险提示:这是一个逆向工程得到的非公开接口,仅供个人研究使用。DeepSeek 可能随时更改协议或标记账号;请自行评估风险。当算法变更时,替换 wasm/sha3_wasm_bg.wasm 并运行 npm run embed:wasm。
配置
插件配置来自加载器条目的 config;未设置的字段回退到同名环境变量:
| 插件配置 | 环境变量 | 默认值 | 描述 |
| token | DSW_TOKEN | - | DeepSeek Web 登录令牌(64 个字符,见下文) |
| cookie | DSW_COOKIE | - | 会话 cookie(例如 ds_session_id=...,可选) |
| baseUrl | DSW_BASE_URL | https://chat.deepseek.com | DeepSeek Web 端点 |
| timeoutMs | VISION_TIMEOUT_MS | 180000 | SSE 空闲超时(毫秒):以“无新数据”的持续时间来衡量,因此长输出不会被总时长上限终止 |
| screenshotDir | VISION_SCREENSHOT_DIR | ~/Pictures/Screenshots | 截图保存目录 |
| autoDescribe | - | true | 自动描述发送框附件并注入描述;设为 false 则仅保留 analyze_attachment 手动工具 |
| attachmentPrompt | - | 默认描述提示词 | 用于自动描述附件的自定义提示词 |
| nativeImageModels | - | false | 当为 true 时,如果当前模型声明支持图像输入(例如 pi-ai 视觉模型),插件会跳过投影/描述,改用原生图像管线 |
| userAgent | - | Chrome 132 UA | 请求 UA(可选) |
获取 token(64 个字符):
1. 在浏览器中登录 chat.deepseek.com
2. F12 → Console,运行:JSON.parse(localStorage.getItem('userToken')).value
3. 将输出填入 token(或 DSW_TOKEN)
限制:仅支持图像(截图、本地图像、URL、data URI),单张图像 ≤ 15MB。
安装到 DSH Profile
1. 将插件包安装到 profile 中
在 profile 目录中运行(dsh plugin 会将其参数转发给 pnpm):
dsh plugin --profile web add file:D:/mcp/chat-deepseek-vision
等同于在 %USERPROFILE%\.dsh\profiles\web 中运行 pnpm add file:D:/mcp/chat-deepseek-vision。
2. 在 cordis.patch.yml 中注册插件
编辑 %USERPROFILE%\.dsh\profiles\web\cordis.patch.yml 并追加一个 loader 条目(token 来自浏览器 localStorage):
chat-deepseek-vision: native DSH vision plugin (replaces the MCP deepseek-vision)
- insert:
- id: chat-deepseek-vision
name: chat-deepseek-vision
config:
token: 'your-64-char-token'
cookie: 'ds_session_id=xxx; ...' # optional
baseUrl: 'https://chat.deepseek.com'
timeoutMs: 180000
你也可以省略 config,改为依赖环境变量 DSW_TOKEN/DSW_COOKIE(对于无头/CI 场景更方便)。
3. 重启 DSH
重启后,进行验证:让 agent 调用 dsv_status —— “connected OK” 表示安装成功;analyze_image 已可使用。
本地开发
npm run smoke # smoke test: wasm/PoW, config resolution, resolveImage, plugin shape, screenshots, attachment projection/auto-describe
npm run embed:wasm # after DeepSeek updates the PoW algorithm, re-embed from wasm/sha3_wasm_bg.wasm
node scripts/smoke.mjs
目录结构:
chat-deepseek-vision/
├── package.json # name: chat-deepseek-vision (peer: @deepseek-ai/cordis, @deepseek-ai/dsh-llm, @deepseek-ai/dsh-tools)
├── lib/
│ ├── index.js # Cordis plugin: name/inject/apply + 6 tool registrations + agent/pre-step attachment handling
│ ├── attachment.js # send-box attachments: image-block projection / auto-describe / analyze_attachment ref lookup
│ ├── model.js # capability-declaration patch: deepseek routes declare image (attachment admission pass-through)
│ ├── vision.js # facade: config resolution + resolveImage/analyzeImage(Buffer) + self-check
│ ├── deepseek-web.js # DeepSeekWebClient (session/PoW/upload/SSE, ported from client.ts)
│ ├── screen.js # screenshot tool logic (ported from tools.ts: describe_screen etc.)
│ ├── platform.js # 截图与窗口枚举(从 platform.ts 移植,PowerShell,execSync 管道捕获) │ ├── pow.js # PoW 求解器(wasm-bindgen 调用约定,从 pow.ts 移植) │ └── wasm-base64.js # 生成:官方 sha3_wasm_bg.wasm 以 base64 嵌入 ├── wasm/sha3_wasm_bg.wasm # 官方 PoW wasm(更新源) └── scripts/ ├── embed-wasm.mjs # 重新生成 wasm-base64.js └── smoke.mjs # 本地冒烟测试(SMOKE_SCREENSHOT=1 还会运行一次真实屏幕捕获)
许可证
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
orrinzeng/chat-deepseek-vision
逆向网页识图模式,免费分析图片与屏幕截图
相关插件 · 视觉能力
智能体工作台Devin-AXIS/iPolloWork
企业级、本地优先的智能体工作台,面向个人和智能体团队——一个工作区,容纳多个智能体引擎;一套统一体系,管理插件和技能;支…
★ 7,359已汉化DSH
72
开源设计工作台nexu-io/open-design
OpenDesign:首个协作式 AI 设计智能体工作区
★ 105,514已汉化DSH
71.8
多智能体编码工作区spacering-net/codeg
多智能体协作的 AI 编程工作区:汇总 Claude Code、Codex、OpenCode、Pi、Grok Build 等来源的会话。支持桌面应用、自托管服务器或 Docker。
★ 4,289已汉化DSH
71.6
GPT 图像提示词库freestylefly/awesome-gpt-image-2
Prompt as Code | GPT Image 2 / 2.5 提示词与案例库,530+ 个案例、20+…
★ 34,534已汉化DSH
71.5
架构图生成器tt-a1i/archify
把你想理解、规划或分享的事,变成可以互动的可视化作品。
★ 93,105已汉化DSH
71.1
AI 用量桌面小部件Javis603/token-monitor
EN | 简 | 繁 | KO | JA | PT
★ 3,522已汉化DSH
71
这是你的仓库?认领条目