DSH 本地内容寻址 attachment 存储后端,使用 sha256 ID 在 DSH_HOME 目录持久化对象,通过私有暂存和原子硬链接发布实现崩溃安全,支持图像格式和尺寸写入时验证,默认每边限 2000px 避免后续被模型服务拒绝
- 语言
- TypeScript
- License
- MIT
- 分支
- master
安装
$ dsh plugin --profile web add npm:@deepseek-ai/dsh-attachment-local在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程
English | 中文
The private local implementation of @deepseek-ai/dsh-attachment. Objects land at <DSH_HOME>/attachments/v1/objects/<sha256-prefix>/<sha256> and are addressed by an opaque sha256: id. Each process proves a home durable once by syncing every ancestor entry to the filesystem root, so a directory another process created but has not yet synced is never mistaken for a safe boundary. Writes then use a private staging directory, owner-only files, a synced temporary file, an atomic exclusive hard-link publish, and directory syncs on the publication path (POSIX; Windows relies on filesystem metadata journaling) so the reported reference survives a crash. Write admission and reads fully decode the raster before accepting its format and dimensions; reads also re-check the digest and logged metadata. Byte, total-pixel, and per-side dimension limits are write-time admission policy, so a later policy reduction does not make already-admitted history unreadable. The per-side default (2000px) stays below the strictest dimension bound deployed model routes enforce on requests carrying many images: an admitted image rides every later request of its session, so admission is the last point where a provider-rejected image can be kept out of durable history.
DSH_HOME resolves through the shared path policy: explicit config, $DSH_HOME, then ~/.dsh. Session logs contain only the reference and verified metadata, never this host path. readImage forwards optional cancellation into the filesystem read, observes it around verification, and preserves it instead of wrapping it as ATTACHMENT_READ_FAILED.
Model Experience
Indirectly, through durable replay of historical user images and structured model image output after restart and fork.
KV Cache effect
None beyond the image block owned by the requesting adapter.
Known Limitations and Deferred Work
- Objects are retained indefinitely; reference-aware garbage collection is deferred.
- The local backend assumes the host and provider adapter share this filesystem service.
- Animated GIF metadata is validated from the logical screen; frame-level decoding policy is provider-owned.