Repository navigation
Releases: taxueseek/dsh-files
Releases · taxueseek/dsh-files
Release list
v0.6.2 — 路由生命周期修复 + 宿主启动提速 + SDK 对齐 0.2.1-rc.3
v0.6.2
本 release 合并 0.6.1 与 0.6.2 两版内容一次发布(上个 release 是 v0.6.0)。
修了一个路由生命周期 bug(0.6.1,响应外部测评 #17)
- 以前不行:插件移除后,三条附件路由(列表/下载/导出)不注销、继续可访问;插件重载(改配置那条路)会撞宿主
duplicate exact route,新配置不生效——把maxDownloadBytes收紧到 1 字节后,21 字节的附件照样下载成功 - 现在能行:路由 disposer 绑进插件 fiber,移除/重载即自动注销。真实宿主组件探针(Loader / WebServer / LocalAttachmentStore)复验:移除后 404、重载后新上限 413 生效
- 感谢 @fladyck 的高质量报告(附完整探针脚本);根因经反面对照验证无误,另补三条回归测试(对旧代码全红)与泄漏面核查(宿主 dsh-tools / dsh-system-prompt 内部自带清理,泄漏面仅 webServer 路由这一处)
宿主启动提速 ~200ms(0.6.1)
- 以前:插件加载时无条件全量导入四个文档解析器(pdfjs legacy 130ms + mammoth 42ms + read-excel-file 31ms),宿主每次启动都付这笔税,哪怕整个会话从不调用 read_document
- 现在:插件入口冷导入 152ms → 13ms(≈12 倍);解析器推迟到首次解析对应格式时才加载。0.5.0「解析缓存是噪音」的结论不受影响——不缓存结果,只是不提前加载
attachment_list 支持按名过滤(0.6.1,新增能力)
- 新增可选
query参数(文件名字子串、大小写不敏感):过滤发生在 200 条截断之前,附件库超过 200 条时模型按名检索仍然可达(以前第 201 条起永远不可见)
SDK 对齐宿主 0.2.1-rc.3(0.6.2)
- 兼容记录:README 兼容表 +
dshReleases补0.2.1-rc.2/0.2.1-rc.3。当前运行线 = CLI0.2.1-rc.3(桌面 App 仍rc.2,两者都在支持面内) - peer 范围显式覆盖宿主 0.2.1 线(dsh-fs / dsh-tools / ui-primitives / client-runtime 各加
|| ^0.2.1-alpha.1):semver 预发元组规则下旧范围本不匹配0.2.1-rc.x,此前靠宿主检查宽松度通过,现显式声明,不再依赖宽松度 - devDependencies 全线跟进
0.2.1-rc.3(cordis 4.0.5 / schemastery 3.18.5 与宿主发货一致);rc.3 类型面 typecheck、214 测试、#17 探针复跑全部通过,无 API 漂移。升级无动作,drop-in
兼容性
- 0.2.1-rc.3(当前,CLI 在跑)与 0.2.1-rc.2(桌面 App 在跑)—
dshReleases已声明,探针与日常运行均在这两版上 - 0.2.0-rc.2 — 2026-09-29 实测,
install/startpassed - Node.js ≥ 20;无默认关闭功能,全部能力开箱即用
安装
curl -fsSL https://raw.githubusercontent.com/taxueseek/dsh-files/main/install.sh | sh
# 重启 dsh webnpm 上名为
dsh-files的包是无关第三方占位包,只用上面的脚本或 git 命令安装。
v0.6.0 — 附件可删可管 + 0.5.2–0.5.7 积压首发(breaking)
v0.6.0
上个 release 是 v0.5.1(09-05);0.5.2–0.5.7 的内容从未单独发版,随本版一并发布。因含 breaking 改动(附件删除路由 + 宿主组件依赖归位 peerDependencies),版本号按 semver 落 0.6.0。
附件管理:可删可管(0.6.0,响应公开反馈 #16「只进不出」)
- 附件删除 —
DELETE /plugins/dsh-files/attachments?ref=sha256:…删除单个附件;面板行内垃圾桶按钮 + 两步确认防误点。护栏:ref 归一化为sha256:<64 hex>且必须命中库内已扫描条目,删除范围严格限定在库内对象目录(路径由内部 sha 派生,外部输入不参与路径构造);与下载/导出共用 Host 信任栅栏 - 分片级扫描缓存 — 2000 附件 / 256 分片实测:冷启动 70ms → 热调用 0.06ms;删除后分片 mtime 变化自动失效,无需手动清缓存
此前积压内容(0.5.2–0.5.6,随本版首发)
- 附件库(0.5.3)— 官方 Pill 胶囊挂
conversation.composer.dock(与官方会话统计胶囊同款视觉),点开展卡:重新插入任意会话 / 浏览器下载 / 导出到工作区 / 文件名搜索(客户端过滤,零 prompt token) - 上传文件夹双入口(0.5.3)— 工具行按钮紧贴回形针 +
+菜单官方样式条目,汇入同一条官方附件管线;拖目录上传照旧 @附件源(0.5.2)—@菜单新增附件组,模型看到与上传时一致的文件行- SDK 全线对齐宿主 0.2.0-rc.2(0.5.5)— 修掉「桌面端 App 里插件按钮不出现、原生上传不可用」的版本歧义
- DSH STORE 收录元数据(0.5.6)—
repository/engines/dsh.compatibility机器可读兼容记录;dsh-tools归位 peerDependencies(宿主自带件不重复安装) - 失败可自救 + 边界声明(0.5.4)
兼容性
- 0.2.1-alpha.3(当前,在跑) —
dsh.compatibility已声明;该线操作项未正式演练,保持 unknown - 0.2.0-rc.2 — 2026-09-29 实测,
install/startpassed - Node.js ≥ 20
安装
curl -fsSL https://raw.githubusercontent.com/taxueseek/dsh-files/main/install.sh | sh
# 重启 dsh webnpm 上名为
dsh-files的包是无关第三方占位包,只用上面的脚本或 git 命令安装。
v0.5.1:原生展示形态——回形针旁的文件夹按钮
相对上一版(0.4.3)的改进
宿主 0.1.3-alpha.1 原生接管了通用文件上传、图片视觉管线与 @file/@session 引用。0.5.1 不再自己画界面、自己管上传——展示与存储全部交给官方,插件只做官方没有的两件事:
新增能力
- 文件夹按钮:出现在官方回形针旁边,视觉 1:1 对齐原生按钮。点选目录后递归展平(子目录层级保留),文件逐个进入官方附件管线——预览区混排、上传进度、取消重试、会话切换续显、模型侧文件句柄,全部由官方持有
- 目录拖拽:把文件夹直接拖进页面(官方管线不支持目录拖入,本插件补上;普通文件拖拽仍完全由官方处理)
- read_document 工具:读内置 read 拒绝的 PDF / DOCX / XLSX(内容嗅探、GBK 编码链、分页、XLSX sheet 级访问、扫描件明示)
移除说明
0.4.3 的自研回形针、文件卡片、@ 双源候选、TTL 清扫随本版移除——对应能力已由宿主原生提供且更强。client bundle 从 ~60KB 缩到 9.5KB。
依赖
- harness ≥ 0.1.3-alpha.1(原生上传管线的载体)
- 安装:
curl -fsSL https://raw.githubusercontent.com/taxueseek/dsh-files/main/install.sh | sh或dsh plugin --profile web add git+https://github.com/taxueseek/dsh-files.git,装完重启 dsh web
dsh-files v0.4.3
dsh-files v0.4.3
一个纯修复版本:把「多文件上传只落第一个」这个最影响使用的 bug 修掉了,顺带清了一批卡片显示和边界处理的小毛病。
修复(以前不行,现在能行)
- 多文件上传只落第一个(#12):以前多选、选文件夹、多文件拖拽批量上传时,文件其实都传上去了,但输入框里只出现第一张卡片,其余弹红色「文件已上传但未能加入输入框」;甚至一张一张往同一条消息里加也一样,第二个起必失败。根因是插入位置用错了参照系(草稿剪贴板文本的长度被当成另一套 detect 坐标用,草稿里每多一张卡片两个坐标系就错开一截,宿主找不到插入点就静默跳过)。现在批量、逐个、同消息续加全部正常落卡(PR #13)。
- 移除一张卡片不再弄坏其他卡片:以前删掉一张文件卡片,剩下的卡片会退化成一串裸路径文本。现在其余卡片原样保留。
- 换会话后卡片信息不丢:以前切走再切回,卡片的名字、类型徽标、大小会退化成从存储路径反推的猜测。现在正常显示。
- 卡片徽标按真实扩展名显示:以前 .md / .html / .csv 一律显示灰色的 TXT,现在显示 MD / HTML / CSV(文件名没有短扩展名时才回退 TXT)。
- 小修:取消文件选择器不再往页面里残留隐藏元素;删除卡片后草稿不再留下连续双空格;同一文件重复插入时不再把失败误报成成功;换会话后删除卡片带上文件归属会话头,文件真正删掉而不是滞留等回收。
修复(服务端)
- 文件名截断被绕过:超长「扩展名」能把 120 字节文件名预算撑爆导致写入失败(ENAMETOOLONG),现在扩展名只认最后一点后 1-8 位字母数字。
- 文件名含 % 卡死连接:删除请求对路径二次解码,文件名带 %(如
50%off.pdf)时抛未捕获异常、keep-alive 连接就此挂起——已修。 - UTF-16 文件解析崩溃:BOM 后奇数字节抛 TypeError 而非按契约返回 null——已修。
sweepIntervalMs=0恢复合法:文档承诺 0 = 禁用周期清扫,实际配置会启动报错——已修。- 读大文档翻页更快:解析缓存键改用文件版本指纹,命中路径不再每次对整个文件算 sha256(24 MiB 约 40ms/次);失效强度与 fs 层编辑守卫同一套保证。
0.4.1 / 0.4.2 摘要(这两个版本没发过 Release)
- 0.4.1:安装指引改走 git 通道(npm 上同名
dsh-files是无关占位包,照旧指引会装错包);新增install.sh一行安装。 - 0.4.2:修 TTL 清扫在正常部署下从未生效的三个根因(清扫根错位、不递归子目录、配额漏算子目录);路径含空格时卡片移除切一半;
@候选池加 200 条上限。
安装 / 升级
- 新装:
curl -fsSL https://raw.githubusercontent.com/taxueseek/dsh-files/main/install.sh | sh(Windows 在 Git Bash 运行) - 已装升级:
dsh plugin --profile web add git+https://github.com/taxueseek/dsh-files.git#v0.4.3
依赖
- 无新增运行时依赖。
- 插入坐标修复优先使用宿主的
caretSpan()(dsh 0.1.2-alpha.5 / rc.1 已提供);更老的宿主自动回退旧逻辑,多文件批量在那类宿主上仍可能只落第一个。
dsh-files v0.4.0
dsh-files v0.4.0
插件已经原生化了:上传的图片不再落到本地路径,而是走 DeepSeek Harness 核心附件管线,任何支持视觉的模型都能直接看懂图,并用官方原生图片区呈现。
改进(以前不行,现在能行)
- 以前:上传图片落成本地路径,
read_document只读文本层、读不了图片,模型看到一串路径却看不懂图。 - 现在:JPEG / PNG / WebP / GIF 走核心附件管线(
createDraftImages→addImages→ 发送时转 base64image_url),任何声明支持 image 模态的模型(DeepSeek 视觉版、Dots3、龙猫、OpenRouter 视觉模型等)都能真正看图,并由官方原生图片区渲染(缩略图、点开大图、原生移除)。
新增
- 上传文件及文件夹更完整:回形针多选文件、文件夹按钮选整个目录、拖到页面任意位置;文件夹批量上传,子目录层级保留,有界并发 4。
@双源候选:本会话已上传文件(绝对路径)+ 工作区文件(相对路径),不用重新上传就能引用已有工作区文件。/api/workspace-files只读索引端点:BFS 遍历带忽略列表、深度/数量上限、跳过符号链接。- 解析缓存 in-flight 去重:并发分页同一大 PDF 只解析一次;
read_document补sheet输出字段,修复合法输出被拒。
默认关闭功能的打开方式
- 无新增默认关闭项。
trustedHosts仅在公网域名 / 反向隧道部署时需要配置,回环部署默认可用。
依赖
- 无新增运行时依赖;图片走核心附件管线,不需要额外库。