Skip to content

Releases: taxueseek/dsh-files

v0.6.2 — 路由生命周期修复 + 宿主启动提速 + SDK 对齐 0.2.1-rc.3

Choose a tag to compare

@taxueseek taxueseek released this 24 Oct 02:40

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。当前运行线 = CLI 0.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 / start passed
  • Node.js ≥ 20;无默认关闭功能,全部能力开箱即用

安装

curl -fsSL https://raw.githubusercontent.com/taxueseek/dsh-files/main/install.sh | sh
# 重启 dsh web

npm 上名为 dsh-files 的包是无关第三方占位包,只用上面的脚本或 git 命令安装。

v0.6.0 — 附件可删可管 + 0.5.2–0.5.7 积压首发(breaking)

Choose a tag to compare

@taxueseek taxueseek released this 16 Oct 05:36

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 / start passed
  • Node.js ≥ 20

安装

curl -fsSL https://raw.githubusercontent.com/taxueseek/dsh-files/main/install.sh | sh
# 重启 dsh web

npm 上名为 dsh-files 的包是无关第三方占位包,只用上面的脚本或 git 命令安装。

v0.5.1:原生展示形态——回形针旁的文件夹按钮

Choose a tag to compare

@taxueseek taxueseek released this 05 Sep 05:45

相对上一版(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

Choose a tag to compare

@taxueseek taxueseek released this 05 Sep 04:13

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

Choose a tag to compare

@taxueseek taxueseek released this 24 Aug 05:26

dsh-files v0.4.0

插件已经原生化了:上传的图片不再落到本地路径,而是走 DeepSeek Harness 核心附件管线,任何支持视觉的模型都能直接看懂图,并用官方原生图片区呈现。

改进(以前不行,现在能行)

  • 以前:上传图片落成本地路径,read_document 只读文本层、读不了图片,模型看到一串路径却看不懂图。
  • 现在:JPEG / PNG / WebP / GIF 走核心附件管线(createDraftImages → addImages → 发送时转 base64 image_url),任何声明支持 image 模态的模型(DeepSeek 视觉版、Dots3、龙猫、OpenRouter 视觉模型等)都能真正看图,并由官方原生图片区渲染(缩略图、点开大图、原生移除)。

新增

  • 上传文件及文件夹更完整:回形针多选文件、文件夹按钮选整个目录、拖到页面任意位置;文件夹批量上传,子目录层级保留,有界并发 4。
  • @ 双源候选:本会话已上传文件(绝对路径)+ 工作区文件(相对路径),不用重新上传就能引用已有工作区文件。
  • /api/workspace-files 只读索引端点:BFS 遍历带忽略列表、深度/数量上限、跳过符号链接。
  • 解析缓存 in-flight 去重:并发分页同一大 PDF 只解析一次;read_document 补 sheet 输出字段,修复合法输出被拒。

默认关闭功能的打开方式

  • 无新增默认关闭项。trustedHosts 仅在公网域名 / 反向隧道部署时需要配置,回环部署默认可用。

依赖

  • 无新增运行时依赖;图片走核心附件管线,不需要额外库。