通过文件名、大小和 sha256 反查上传到 .dsh-uploads 的文件在本地原始位置的绝对路径。
安装
# Release 预构建包
dsh plugin --profile web add "https://github.com/wlc114514/dsh-upload-origin/releases/download/v0.1.0/dsh-upload-origin-0.1.0.tgz"
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:wlc114514/dsh-upload-origin
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
DeepSeek Harness 的主机端插件:当用户把文件拖进会话后,反查出该文件的原始本地绝对路径。
为什么需要它
浏览器拖拽上传时,出于安全限制,前端只能拿到文件内容和显示文件名,拿不到原始绝对路径。DSH 会把上传快照存到:
<session cwd>/.dsh-uploads/<sessionId>/<sha256-16>-<name>
dsh-upload-origin 运行在 DSH 主机端,扫描会话工作目录和常用用户目录,用文件名 + 大小 + sha256 匹配本地原文件。匹配到的原路径会注入当前 agent 的系统提示,同时通过工具提供按需查询。
功能
每轮组装时检查当前会话的
.dsh-uploads目录。只处理人类消息中实际引用过的上传文件。
解析原路径:
- 优先使用官方工作区文件索引
ctx.fileReferences; - 然后在会话工作目录、
Desktop、Documents、Downloads、OneDrive以及主目录浅层做有界文件系统扫描。
- 优先使用官方工作区文件索引
注入系统提示:
[Uploaded files: original local paths] - uploaded: .dsh-uploads/session-.../7538541a1efdc6c6-报告.docx original: C:\Users\Alice\Desktop\报告.docx [exact] 用户指自己的本地文件时优先使用该原路径;.dsh-uploads 里的是快照。注册
resolve_uploaded_file工具,供模型按需调用。
安装
从 GitHub Release 安装预构建 tarball:
dsh plugin --profile web add https://github.com/wlc114514/dsh-upload-origin/releases/download/v0.1.0/dsh-upload-origin-0.1.0.tgz
包内声明了 dsh.bundle,可按 DSH 正常的 bundle/profile 流程安装。
工具:resolve_uploaded_file
参数:
| 参数 | 类型 | 说明 |
|---|---|---|
file_path |
string,可选 | 上传文件路径,绝对路径或相对会话工作目录。 |
name |
string,可选 | 已知原始文件名,但没有上传路径时使用。 |
search_roots |
string[],可选 | 额外扫描的绝对目录。 |
max_results |
integer,可选 | 最多返回多少个候选(1-20,默认 10)。 |
返回值包含上传路径、原始文件名、大小、sha256、最可能的原路径、置信度、候选列表、扫描目录和扫描统计。
置信度:
| 置信度 | 含义 |
|---|---|
exact |
文件名、大小、sha256 全部匹配。 |
name+size |
文件名和大小匹配;sha256 未检查或不一致。 |
name+size-hash-differs |
文件名和大小匹配,但上传后内容已变化。 |
name-only-size-differs |
同名但大小不同。 |
name-only |
仅文件名匹配,需要人工确认。 |
配置
可在 bundle patch row 中传入可选配置:
- id: upload-origin
name: 'dsh-upload-origin'
config:
maxSearchFiles: 250000
searchTimeoutMs: 9000
maxDepth: 12
maxHashChecks: 30
maxResults: 10
recentUploadMs: 604800000
maxRecentUploads: 8
autoResolveTimeoutMs: 7000
| 字段 | 默认值 | 说明 |
|---|---|---|
maxSearchFiles |
250000 |
单次解析最多访问的文件系统条目数。 |
searchTimeoutMs |
9000 |
单次解析的总搜索时限。 |
maxDepth |
12 |
常用目录的最大扫描深度。 |
maxHashChecks |
30 |
最多对多少个候选计算内容哈希。 |
maxResults |
10 |
工具最多返回的候选数。 |
recentUploadMs |
604800000 |
只自动解析此时间内的上传(7 天)。 |
maxRecentUploads |
8 |
每次提示组装最多考虑多少个最近上传。 |
autoResolveTimeoutMs |
7000 |
每轮自动映射原路径的最长等待时间。 |
限制
- 浏览器不会在拖拽时暴露原始绝对路径;本插件通过主机端匹配上传快照来恢复。
- 如果原文件在上传后被修改,sha256 会不一致;插件会回退到
name+size或仅文件名候选。 - 默认目录之外的文件不会自动找到;调用工具时可传
search_roots。 - 上传副本仍然是读取时的可靠来源;原路径用于用户要编辑本地文件的场景。
安全
- 仅在主机端运行,不发起网络请求。
- 不读取、不存储、不传输任何凭据。
- 只读取与上传文件名相同的本地文件,并在本地计算内容哈希确认。
resolve_uploaded_file工具是只读的。
许可证
MIT
链接
同类插件
Tencent/WeKnora#dsh-weknora★ 27530
把 WeKnora 知识库接入 dsh 的四个只读工具:列出知识库、混合检索原文片段、按顺序还原单篇文档,以及直接取用 WeKnora 自己带引用的 RAG 或 ReAct agent 回答(含可续聊的 session id)。
superdesigndev/treg★ 1711
给 Agent 的工具目录:按「要做的事」检索约 2,600 个外部接口(SEO 与 SERP、外链、社交、人物与公司信息补全、广告库、抓取),查看参数与单次调用价格后直接调用,凭据由服务端注入。附带技能,MCP 行在未设置 TREG_TOKEN 前保持禁用。
TencentCloudBase/CloudBase-AI-Toolkit#dsh-plugin★ 1115
把腾讯云 CloudBase 后端接入 DeepSeek Harness——在对话里搭好并部署全栈应用,查询结果渲染为表格卡片(分页、排序、导出 CSV),部署后可预览真实域名,并提供 CloudBase MCP 工具集(`mcp__cloudbase__*`),登录走 device-code 流程。
gitroomhq/postiz-agent#dsh-postiz★ 475
通过 MCP 将 DeepSeek Harness 连接到 Postiz:列出已连接的社交媒体渠道、获取各平台发帖规则,并向 X、LinkedIn、Instagram、Facebook、Threads、TikTok、YouTube、Reddit、Bluesky、Mastodon、Discord、Slack、Telegram 等平台排期、存草稿或发布帖子;附带 postiz 工作流技能。
EthanYoQ/Invoice-Downloader#dsh-invoice-downloader★ 428
面向 DeepSeek Harness 的本地 IMAP 发票下载、OCR 识别、归档与 Excel 报销汇总。
anysearch-team/anysearch-dsh★ 420
基于 AnySearch 的实时网页与垂直搜索插件,为 DeepSeek Harness 提供搜索工具。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。