# 开发方案 v3:三位置图片路径缩略图(需求重定义 + 标准化修订) > **状态:待用户确认需求与文档内容,未进入开发。** > **与 v2 的关系**:`docs/PLAN.md`(v2)= 安全修复基线(7 项缺陷逐项修复,保留不动);v3 = 范围扩展(输入框①/发送框②)+ 白名单可移植性修订。安全基线继承 v2,本文只写增量。 > **日期**:2026-08-29。**续作入口**:本文件 + `../DevTaskOverview.md` + `../../ProjectOverview.md`。 --- ## 1. 需求(待用户确认) **用户原话(2026-08-29)**: > "我的需求是在文本输入框、文本发送框、LLM输出框(已实现)如果用户粘贴的是图片(或文件路径为),应该显示缩略图(如原图尺寸太大),……这个是DSH插件,安装应该遵循DSH的标准,而不是换了另外的文件目录或工作空间就不能使用" **我的理解**(请逐条纠错): | 位置 | 理解(Q1/Q2 已于 2026-08-29 确认) | 现状 | |---|---|---| | ① 文本输入框 | Web GUI 聊天输入框(composer):正在输入时,草稿里出现**图片格式文件路径** → 输入框**上方显示图片预览行**(展示尺寸随设置) | ❌ 只有路径文字(modlens 粘贴时插入的) | | ② 文本发送框 | **发送后的用户消息气泡**:消息里的图片路径 → **直接显示图片,与 LLM 输出一致**(Q1 确认) | ❌ 路径文字 | | ③ LLM 输出框 | 助手回复正文里的图片路径 → 内联渲染图片 | ✅ 已实现(当前依赖环境变量启动才能覆盖粘贴图) | **需求本质(Q2 确认)**:"缩略图"不是生成缩略图文件,而是**展示尺寸控制**——防止大尺寸原图占据整个会话框。插件提供**展示尺寸大/中/小三档设置(有默认档)**,三处统一生效;图片本体始终是原图,只改展示上限(CSS,见 §5.1)。 **触发条件**:粘贴图片(modlens 转路径)或手动输入路径,只要是 9 格式(png/jpg/jpeg/webp/gif/svg/avif/bmp/ico)的图片文件路径即触发。 **硬约束(用户批评,必须满足)**: 1. **标准 DSH 插件**——`dsh plugin --profile web add` 装完即用,不靠环境变量、不靠自定义启动脚本 2. **换目录/换工作区不能失效**——白名单不得绑定单一会话 workspace 3. 安全是前提:唯一文件读取执行点 = host 路由 handler(继承 v2 全部安全不变量,见 §8) **社区版对照(用户提问)**:`dsh-plugin-tasks/dsh-inline-images` **没有**实现此功能——它只做 ③(助手流改写)+ 点击放大;①② 零涉及(快照 `source/src/index.ts:231` 仅 `llm/stream` 包装;审计报告全文无输入框/发送侧内容)。 ### 确认点记录(2026-08-29 用户答复) | # | 确认点 | 结果 | |---|---|---| | Q1 | "文本发送框" = 发送后的**用户消息气泡**,发送之后像 LLM 输出一样直接显示图片 | ✅ **已确认** | | Q2 | 缩略图本质 = 展示尺寸控制(防大图占满会话框);插件支持**大/中/小三档尺寸设置**(有默认档),不一定生成缩略图文件 | ✅ **已确认** → 设计见 §5.1 + §3.6(设置卡片);① 预览位置 = 输入框上方整行(DSH 标准 slot 座;框内嵌 `` 架构上不可能,产品输入框是 `