前言¶
当用户通过网页编辑器将文件拖入对话时,浏览器仅能传输文件字节和显示名称,无法暴露文件在本地系统中的原始绝对路径。DeepSeek Harness(DSH)会将上传的快照存储在 <session cwd>/.dsh-uploads/<sessionId>/<sha256-16>-<name> 目录下。
dsh-upload-origin 插件运行在 DSH 主机端,通过匹配上传快照的名称、大小和 SHA256 哈希值,扫描会话工作区及常用用户文件夹,从而恢复文件的原始本地路径。该路径随后会被注入到当前智能体的系统提示词中,并可通过工具按需查询。
插件简介¶
这是一个 DSH 主机插件,用于解决文件上传后的路径溯源问题。插件由 wlc114514 维护,属于“联网工具”分类,采用 MIT 许可证。它通过监视 .dsh-uploads 目录、筛选被引用的文件、结合文件引用索引和有界文件系统扫描,最终将原始路径映射注入系统提示词,并注册了 resolve_uploaded_file 查询工具。
安装¶
通过官方命令安装预编译的 tarball 包。该插件通过 DSH 的 bundle/profile 流程自动安装:
dsh plugin --profile web add https://github.com/wlc114514/dsh-upload-origin/releases/download/v0.1.0/dsh-upload-origin-0.1.0.tgz
配置¶
插件支持通过 bundle patch 行进行配置,主要参数包括:
- id: upload-origin
name: 'dsh-upload-origin'
config:
maxSearchFiles: 250000
searchTimeoutMs: 9000
maxDepth: 12
maxHashChecks: 30
maxResults: 10
recentUploadMs: 604800000
maxRecentUploads: 8
autoResolveTimeoutMs: 7000
工具:resolve_uploaded_file¶
插件注册了一个 resolve_uploaded_file 工具,用于在需要时手动查询文件的原始路径。
参数¶
file_path(string, optional): 上传文件的路径,可以是绝对路径或相对于会话工作区的路径。name(string, optional): 原始文件名,用于在未知上传路径时进行定位。search_roots(string[], optional): 额外的绝对扫描目录。max_results(integer, optional): 返回的最大候选结果数(默认 10)。
返回值与置信度¶
工具返回上传路径、原始名称、大小、SHA256、最佳原始路径、置信度、候选列表、扫描根目录及元数据。置信度表示匹配的精确程度:
| 置信度 | 含义 |
|---|---|
exact |
名称、大小和 SHA256 全部匹配。 |
name+size |
名称和大小匹配;未检查 SHA256 或哈希值不同。 |
name+size-hash-differs |
名称和大小匹配,但内容在上传后发生变更。 |
name-only-size-differs |
仅名称相同,大小不同。 |
name-only |
仅名称相同,需人工验证。 |
注意事项¶
- 运行环境:插件仅为主机端运行,不进行网络调用,不读取、存储或传输凭证。所有内容哈希计算均在本地完成。
- 工具权限:
resolve_uploaded_file工具为只读操作。 - 浏览器限制:由于浏览器在拖拽上传时不暴露原始绝对路径,本插件通过主机侧匹配来恢复路径。
- 文件变更:如果原始文件在上传后被修改,SHA256 将不同,插件会回退到“名称+大小”或仅“名称”的候选方案。
- 扫描范围:默认扫描根目录外文件需通过工具参数
search_roots指定或等待未来版本配置扩展。