Replies: 4 comments 1 reply
|
core 层实现贴图(工作区镜像 + vision bridge + 信任边界)——社区一直在讨论区提(#1378/#1327 都是),终于有 core 实现落地了。 视觉桥家族从插件(#1153/#1269)进化到 core 层,生态正循环的信号。已收录进手册生态章节:https://github.com/Electricitysheep/dsh-handbook/blob/main/docs/07-ecosystem.md |
|
不客气,core 实现很扎实,期待后续。 |
|
更新(2026-08-16):分支已 rebase 到官方最新 rc.8( 官方 master 在 rc.5 → rc.8 期间推进了 647 个 commit(含
rebase 中处理的情况:
结论不变:官方 rc.8 的多模态支持解决"有眼睛的模型",本实现解决"纯文本模型 + 社区视觉工具"——两者互补,vision bridge 依然是社区提案(#2005 store-and-annotate / #1378 host 层降级)的官方层落地。 获取方式更新: git fetch https://github.com/gloryxpnv/deepseek-harness.git feat/image-upload-vision-bridge
git checkout feat/image-upload-vision-bridge |
|
补充一份独立的 rc.8 验证,聚焦本帖的信任边界修复部分:
本地采用了比“所有情况只比较 hostname”更窄的回环兼容分支:仅当 Host 为 loopback、Origin 同 hostname 且无端口、Fetch Metadata 为 在 rc.8 基线上重新执行:
因此你在分支更新里所说的“rc.8 仍未修复、补丁可干净应用”与独立检查一致。建议若继续维护 trust-only commit,可考虑加入 Referer 精确端口约束,作为比全局 hostname-only 更小的安全兼容面。主问题的最新复现证据也已同步到 #2009。 |
Uh oh!
There was an error while loading. Please reload this page.
TL;DR
我在
gloryxpnv/deepseek-harnessfork 的feat/image-upload-vision-bridge分支上实现了两个 core 层改动,正好对应社区反复提出的两个诉求:MODEL_DOES_NOT_SUPPORT_IMAGES拒绝——图片先镜像进工作区,可选的 vision-bridge 插件把图片转成文字描述,主模型只看到文本(对应 【建议】纯文本模型收到图片时提供“落盘+文字标记”回退,便于子 Agent / 视觉脚本接管 #2005、Idea: 纯文本模型贴图不再被拒——受理时转本地路径交给视觉技能 / accept pasted images with text-only models (fix ready on fork) #427、Feature request: image attachments with a text-only main model via a separate vision model (MCP vision-helper) #588、Proposal: allow image uploads in GUI when the main model is text-only but vision tools are installed #357、[Idea] 图片上传被模型目录能力硬性拦截:主模型无视觉模态时也应允许附件(以链接/路径交给工具处理,类似 opencode 做法) #1378 的提案)Origin省略非默认端口导致所有 POST 返回 403(对应 Web UI: every POST to /api/* returns 403 Forbidden (trust fence Origin/Host port mismatch) #2009)改动 1:图片上传 + vision bridge(文本模型看图)
现状问题:当会话模型
inputModalities不含image时,dsh-host-apiproxy的准入层直接拒绝整条消息,图片不落盘,视觉工具/子 Agent 完全拿不到图。社区目前靠第三方插件绕路(dsh-plugin-multimodal、pi2dsh、dsh-image-subagent),但正如 #2005 所说,这应该是官方 core 层的策略。我的实现(改 core,不是插件补丁):
关键设计:
vision-bridge是插件接口:官方 core 不内置任何 VLM,由插件(如 dsh-tool-vision)提供描述能力——符合官方"本地优先、零 API 成本"的方向imageFallback: store-and-annotate模式改动 2:信任边界修复(#2009)
Chrome 扩展控制的回环标签页可能发送
Origin: http://127.0.0.1(无端口)而Host: 127.0.0.1:3080(带端口),api-request-trust.ts中originUrl.host === hostUrl.host无法匹配 → 所有 POST 403。修复:仅对 loopback Host + 精确同 hostname +
sec-fetch-site: same-origin放行省略端口的 Origin;不放宽到非回环权威、别名或跨站请求——保持 DNS-rebinding 防御完整。测试
api-request-trust.host.spec.ts:11 passed(含新增兼容用例)api-proxy-upload-mirror.spec.ts:9 passed(新增,351 行,覆盖镜像/净化/去重/桥接/回退)serialize.spec.ts:28 passed获取
由于仓库关闭了 PR,先在这里展示实现,希望与官方和社区交流:
vision-bridge接口设计是否合适?(我的 vision 插件
dsh-tool-vision可作为 bridge 实现配合使用:https://github.com/gloryxpnv/dsh-tool-vision)All reactions