Files
dsh-enhancements/docs/mmx-image-bridge-PATCH.md
江晨 fdafd5d6b3 chore: 初始化 dsh-enhancements 留档仓库
- 插件源码:dsh-usage(用户头像 + DeepSeek 官方 API 消耗面板)
- 工具:dl-gh.mjs(node fetch 下载 gh,绕开沙箱 curl 限制)
- 文档:PLAN.md 路线图 + mmx 视觉桥接补丁说明
- 资产:DeepSeek 鲸鱼图标
2026-08-17 11:54:40 +08:00

54 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MMX 图片桥接补丁(聊天窗口发图 → mmx-vision 技能识别)
日期:2026-08-12
目的:让 DeepSeek Harness 的聊天窗口可以直接发送/粘贴图片。图片被持久化为附件,
发给模型时由适配器转成"附件路径文本提示"agent 收到后用 mmx-vision 技能(本地
Node 脚本调用 NVIDIA 托管的 MiniMax M3)识别或按用户意图取用。
## 相关自定义(本机桌面应用壳)
- `C:\Users\a1703\.dsh\bin\dsh-app.ps1`:托盘应用(无窗口后台运行 dsh web + 系统托盘,
右键"打开主界面 / 退出",打开用 Edge `--app` 独立窗口)。快捷方式
`桌面\DeepSeek Harness.lnk` 指向它(powershell -WindowStyle Hidden -File)。
- `C:\Users\a1703\.dsh\assets\dsh.ico`:多尺寸(16-256DeepSeek 鲸鱼图标,
`favicon.svg` 经 Edge 无头渲染 + System.Drawing 缩放生成,供托盘/快捷方式使用。
- 旧版 `C:\Users\a1703\.dsh\bin\dsh-web.cmd`:手动模式(显示控制台窗口),备用。
## 修改的文件(全部位于 npx 缓存安装,重启 Harness 生效)
### 0. @deepseek-ai/dsh-web-frontend/dist(应用窗口图标)
- 新增 `favicon-256.png``favicon.ico`(多尺寸鲸鱼图标)。
- `index.html`favicon 链接增加 `favicon-256.png`(放在 svg 前)。
- `manifest.webmanifest`icons 增加 png/ico 条目。
- 作用:Edge `--app` 独立窗口与浏览器标签显示 DeepSeek 鲸鱼图标而不是 Edge 图标。
静态文件实时生效(服务直接读磁盘),无需重启。
### 1. @deepseek-ai/dsh-llm-deepseek/lib/index.jsdeepseek 适配器)
- 原行为:内容含 image 块时抛 `UNSUPPORTED_CONTENT`(拒绝整轮对话)。
- 新行为:`assertTextOnly` 改为 `imageBlocksText`,把每个 image 块序列化成一行
`[用户发送的图片附件 id=sha256:xxx 类型=image/png 文件=<DSH_HOME>/attachments/v1/objects/xx/xxx]`
文本;`serializeMessages` 的用户消息文本 = 原文本 + 图片提示。
- 附件路径规则与 `@deepseek-ai/dsh-attachment-local` 的存储约定一致
(对象路径 `objects/<sha前2位>/<sha256>`attachmentId 前缀 `sha256:`)。
### 2. @deepseek-ai/dsh-host-apiproxy/lib/index.jshost API 代理)
- `prompt` RPC:删除"模型 inputModalities 不含 image 就拒绝(MODEL_DOES_NOT_SUPPORT_IMAGES"检查,
图片一律放行(由适配器文本化)。
- `selectModel` RPC:删除"会话已含图片时禁止切换到不支持图片的模型"检查。
## 生效条件
- 重启 Harness 进程后生效(node_modules 中的运行时文件改动不会热加载)。
- 备份:同目录 `index.js.mmx-bak`(每个改过的包旁边)。
## 升级后重放
重新安装/升级 @deepseek-ai/dsh 后,以上两处改动会被覆盖。重放步骤:
1.`node --check` 验证改动文件语法。
2. 对每个包:把 `assertTextOnly` 的抛错逻辑替换为 `imageBlocksText`(见下),
并删除 api-proxy 两处图片能力检查。
3. 或直接 diff 当前 `.mmx-bak` 与新文件,把差异搬过去。
## 不影响
- 客户端 UI 无需改动(图片 rail/拖放/粘贴本来就完整)。
- pi-ai 模型路由(真多模态)不受影响。
- 会话历史中的图片块在每次模型调用时都会文本化,客户端仍按附件渲染缩略图。