跳到正文

acefun29/dsh-file-mount

30最近提交 2026年8月15日

dsh-file-mount DSH 插件

dsh-file-mount 是一个 DeepSeek Harness 插件,监控文件读取和写入,实现增量挂载和去重。它记录哪些行已经进入模型上下文,避免重复发送未变化的内容,并提供仪表盘显示文件段的新鲜度和 token 节省情况。

如何安装 dsh-file-mount DSH 插件

dsh plugin --profile web add github:acefun29/dsh-file-mount

复制不会执行命令。安装 dsh-file-mount DSH 插件前请核对仓库和版本。

dsh-file-mount DSH 插件数据来源

dsh-file-mount DSH 插件快照日期:2026年8月16日

discovered

dsh-file-mount DSH 插件能做什么

  • 增量文件挂载:后续读取时只发送新增或更改的行。
  • 去重:避免重复发送已读过的行范围,替换为标记。
  • 新鲜度感知注意力衰减:基于 U 形注意力得分自动从上下文中移除过期的段。
  • Token 节省估算:计算节省和花费的 token,显示净节省。
  • 通过 stat 缓存(mtime/size + sha256)和行级 diff 检测文件变更。
  • 提供仪表盘标签页,显示文件段的新鲜度颜色带和过期次数徽标。

dsh-file-mount DSH 插件适合哪些场景

  • 当模型反复读取同一文件时减少 token 用量。
  • 文件被外部编辑后自动只发送更改的行。
  • 可视化查看文件哪些部分在模型上下文中是新鲜或过期的。
  • 通过 file_mount_forget 工具重置文件记忆,使模型完全重读。
  • 跨会话追踪 token 节省,可选持久化统计文件。

dsh-file-mount DSH 插件适合谁

  • 频繁使用基于文件的上下文并希望最小化 token 浪费的 DSH 用户。
  • 构建增量文件内容变更的 AI 辅助工作流的开发者。

dsh-file-mount DSH 插件的限制

  • 压缩后挂载保证失效:被压缩的挂载内容离开上下文,插件依赖 checkpoint 的 sourceEventSeqs 跳过重新锚定。
  • UI 读取卡片降级为通用卡片(因为插件替换了结果文本),但 canonical value 保留。
  • 仅适用于具有规范值结构的 read/write/edit 工具;结构变化时回退为直通。
  • 超过 maxManagedBytes 或匹配 excludeGlobs 的文件不被管理,原样放行。
  • 新鲜度是启发式的:段过期不代表内容被移出上下文(只有压缩才会),因此重发会消耗额外 token。
  • 浏览器会话分页历史;仪表盘可能保留陈旧的文件行,直到文件重新挂载。

dsh-file-mount DSH 插件的仓库 README 摘录

以下文字摘自 dsh-file-mount DSH 插件的上游仓库 acefun29/dsh-file-mount 的 README,版权归原作者,仅作引用。

DeepSeek Harness 插件:**文件增量挂载 + 重复读取去重**。记录每个文件哪些行范围已经进入模型上下文,重复读取只补缺失部分;文件在磁盘上变化时按行级对比只补改动的行;并提供「挂载文件」仪表盘实时展示账本。 移植自 [piwpi](https://github.com/earendil-works/pi-mono) 的 context-mount 机制。 ## 效果 - **模型侧**:读过的行范围不重复进上下文(去重 marker);新内容只注入缺失区间(增量挂载);文件改动后只补改动的行(行级 diff,日志追加只补新尾巴);AI 自己写过的文件回头读直接免单;`file_mount_forget` 工具让模型能主动强制重读。 - **界面侧**:「挂载文件」标签页是仪表盘——每个文件行可展开成**文件段**列表,每段带**新鲜度色带**(绿=新鲜/黄=一般/橙=接近过期/红=已过期/灰=未知)和**过期次数徽标**;另有进度条、搜索框、排序、净节省与人民币折算;对话区有上下文注入折叠行,「文件已变更」时行上有角标。 - **节省统计**:中文按 1 字 ≈ 1 token、其他按 4 字符 ≈ 1 token 估算;同时记账「省下的」和「纸条花掉的」,界面显示**净值**;可选把跨会话总账落盘(`statsFile`)。 ## 安装 ```sh # 从 GitHub(需在 profile 的 pnpm-workspace.yaml 里授权该包的 prepare 构建) npx @deepseek-ai/dsh plugin --profile web add github:acefun29/dsh-file-mount # 或本地目录 / tarball npx @deepseek-ai/dsh plugin --profile web add file:../dsh-file-mount npx @deepseek-ai/dsh --profile web ``` 一个包两面:`dsh.bundle.patch` 挂载宿主插件行,`dsh.client` manifest 让 Web 端扫描出浏览器半部,无需额外配置。 ## 配置 ```yaml - id: file-mount name: dsh-file-mount config: enabled: true # 总开关;关闭后所有读取原生透传 capacity: 32 # 文件身份缓存容量(挂载中文件不受淘汰影响) ttlMs: 300000 # 缓存安全阀:同 stat 内容被改的兜底重读间隔 maxPinnedFiles: 256 #

阅读完整 README仓库许可: MIT

dsh-file-mount DSH 插件常见问题

使用 dsh-file-mount 后,为什么 UI 的读取卡片变成了通用卡片?

插件将模型可见的结果文本替换为去重标记或增量块,以避免重复发送内容。规范值(原始读取结果)被保留,但卡片根据结果文本渲染,因此显示为通用卡片。这是为了节省 token 而设计的行为。

如何让插件不管理某些文件?

可以在配置中设置 `excludeGlobs` 选项,使用模式如 `**/node_modules/**` 来排除这些路径。匹配这些 glob 的文件将直接透传,不做去重或增量挂载。另外,超过 `maxManagedBytes` 大小的文件也不会被管理。

仪表盘显示的 token 节省数字准确吗?

节省估算是近似值:中文字符按 1 字 1 token,其他字符按 4 字符 1 token 计算。仪表盘显示净节省(节省减去花费),并粗略按每百万 token ¥1 折算人民币。这些是估算值,只适合相对比较。

模型如何强制重新读取整个文件?

模型可以调用 `file_mount_forget` 工具来作废该文件的账本。下次读取该文件时,插件会发送完整的内容,就像从未挂载过一样。

跨会话统计如何工作?

如果配置了 `statsFile` 选项,插件会将 token 节省数据跨会话持久化到该文件。仪表盘目前显示当前会话的数据,但累计统计可以通过 `fileMount.stats()` 编程读取。跨会话的界面展示尚未实现。