dsh-file-handover

DSH PLUGIN会话与消息

仓库 7gzgn/dsh-file-handover

会话与消息 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

dsh-file-handover 是 7gzgn 维护的 会话与消息 类 DSH 可安装插件, 仓库为 7gzgn/dsh-file-handover,许可证 MIT。 下面按「装什么、怎么装、验没验过、跑起来要注意什么」逐项列出。

一句话选型结论

按资料字段整理

dsh-file-handover 是会话与消息类的 DSH 可安装插件,验证等级 L5 · 运行验证通过,安全审查为低风险,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类会话与消息 收录类型可安装插件 验证等级L5 · 运行验证通过 安全审查低风险
验证等级 L5 L5 · 运行验证通过
GitHub 星标 0 复刻 0 · 未关闭 issue 0
最近更新 2026-10-18 创建于 2026-10-16
README 6.8 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add github:7gzgn/dsh-file-handover
  1. 1
    确认版本与运行环境

    仓库没有标注兼容版本与 Node.js 要求,先确认你的 DSH 版本能装,再继续。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本未标注版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名未发布到 npm可用 npm view 查看包信息

能做什么

会话与消息
字段来自项目仓库与公开索引,中文说明由本站标注

适用场景

文件读写

上游标签

deepseek-harnessdsh-plugin

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 验证等级 L5:安装和运行都在沙盒里跑通过,装完能直接用的概率高。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有声明 Node.js 版本要求,版本不匹配可能装不上。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在会话与消息场景里给 DSH 补能力的人。
  • 想装完就能用、不想自己排依赖的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-file-handover当前 L5 · 运行验证通过 低风险 0 未标注 有
dsh-desktop L3 · 安装规范通过 低风险 3.0 万 未标注 无
openpets L4 · 沙盒安装通过 低风险 1,274 未标注 有
deeptide L4 · 沙盒安装通过 低风险 1,104 0.1.1-rc.2 有
jingyun-dsh L3 · 安装规范通过 低风险 1,004 未标注 有
study-mate 未做沙盒验证 未标注 856 未标注 无

仓库档案

会话与消息
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方7gzgn仓库 dsh-file-handover · 默认分支 main
分类会话与消息desktop
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言未标注仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue0 / 0 / 0收录时的数值,非实时
创建 / 更新2026-10-16 · 2026-10-18最后推送 2026-10-18
本站收录2026-10-30首次进入本站目录的时间

README 全文

6.8 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-file-handover(递文件)

把一个本地文件交给系统"打开文件"对话框 —— 网页上传、微信发文件、Photoshop 打开,
凡是"点一下、再在对话框里选文件"的地方,都由它代劳。

> 由来:AI 会点按钮、会打字,但不会在文件选择器里选文件 —— 这是 GUI 自动化的最后一块空白。
> 我是在给自己做"发抖音"的时候撞上它的:投稿页的上传按钮点得响,弹出的系统对话框却进不去。


它做什么(五步,每步都回读)

步 动作 为什么要这样
① 等 轮询等 #32770 文件对话框出现(默认 30 秒) 实测从点击到弹窗可以超过 15 秒,抢跑只会拿到空
② 认 在候选窗口里找带文件名控件(automation id 1148)的那个 只认结构、不认标题 —— 跨语言,也绕开 .ps1 编码坑
③ 填 剪贴板粘贴(全选 → 清空 → 粘贴);另有 Win32 SetWindowText 与 UIA ValuePattern 两条备用路 打字不可信:这台机器的中文输入法会把打进去的 \ : 变成全角标点和候选词(实测读回 谢谢D:、但是、workspace、…),剪贴板不过 IME
④ 校 读回来逐字比对,不一致就再来一轮(默认 3 轮) 实测第 1、2 轮读回都是脏的,第 3 轮才一致 —— 单次尝试真的不可信
⑤ 确认 按控件 id 找按钮(1=打开/保存、2=取消)并点击 盲发 Enter 不可靠,也挡不住输入法

失败会带现场:它把"看到过的每个候选窗口"和"每次尝试读回的实际值"一起返回,
所以排错不用猜。

安全边界

  • 目标必须显式:要交付的文件(path)必须是绝对路径;它不会自己去找"最像的对话框"。
  • 默认不按标题过滤:标题随语言/版本变化,是脆弱信号;要过滤就用 expectTitle 显式给。
  • 不动手也能看:dryRun 只探测(找对话框、报结构),不填不点。
  • 只点它自己的对话框:确认按钮只在①选中的那个对话框内部查找。

安装

市场收录后在 DSH 里搜 dsh-file-handover 安装。手动安装:

New-Item -ItemType Junction -Path "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\dsh-file-handover" -Target "D:\dsh\projects\dsh-file-handover"
# profile 的 package.json:dependencies 加 "dsh-file-handover": "link:D:/dsh/projects/dsh-file-handover"
# 并把 "dsh-file-handover" 加进 dsh.profile.bundles(漏了不加载)→ 重启 DSH

用法

工具

handover_file  path=<绝对路径>                        # 单个文件
handover_file  paths=[<绝对路径>, <绝对路径>, ...]      # 多选(v0.2.0,最多 12 个)
handover_file  path=... [timeoutSec] [dryRun] [expectTitle] [maxAttempts] [click]

多选(v0.2.0):对话框支持多选时(网页的多图上传、微信发多个文件、系统"打开"框),
给 paths 数组即可。插件把路径按 "a" "b" "c" 的格式填进去,逐个回读——
少一个就算失败,不会出现"以为交了三个、实际只进了一个"。

典型配合(以网页上传为例):

  1. 用浏览器工具真实点击页面的"上传/选择文件"按钮(程序化 input.click() 不会弹出系统对话框);
  2. 调 handover_file 递文件(单个用 path,多个用 paths);
  3. 用浏览器工具回读页面,确认它真的收到了那些文件(名字/字节数)。

命令

dsh-file-handover handover --path "D:\videos\a.mp4"
dsh-file-handover probe    --path "D:\videos\a.mp4"
dsh-file-handover handover --path "D:\a.mp4" --expect-title "Open" --no-click

退出码:0 已交付 / 1 未完成 / 2 用法错误。

它怎么实现的

宿主侧(Node)只做编排:校验参数、检查文件、起一个 PowerShell 子进程、解析它返回的 JSON。
真正碰 GUI 的是包内的 lib/handover.ps1(UIAutomationClient + EnumWindows)。

两个刻意的选择:

  • 用 PowerShell 而不是原生模块:Node 没有内置 Win32/UIA 绑定,而原生模块(ffi/winax)
    不能塞进一个纯 JS 插件。PowerShell 是 Windows 上唯一"零依赖"就能调 UIA 的通道。
  • 脚本全 ASCII:.ps1 若为无 BOM 的 UTF-8,Windows PowerShell 会按 GBK 读,
    脚本里的中文会变乱码、所有按标题匹配的逻辑会静默失效(实测:打开 → 鎵撳紑)。
    自测里有一条硬断言守着这个文件必须全 ASCII。

一次真实的实测记录(为什么上面那些边界长这样)

在一张真实的网页上传页上递一个 1MB 文件,这台机器上实际发生的事:

  1. 第 1 轮填完读回:
    谢谢D:、但是、workspace、——test、upload-payload。斌谢谢D:D:\dsh\workspace\_test\upload-payload.bin
    —— 中文输入法把打进去的字符变成了候选词和全角标点,而"全选"没生效,内容还在往后追加。
  2. 第 2 轮:谢谢D:、但D:\dsh\workspace\_test\upload-payload.bin —— 清空只生效了一半。
  3. 第 3 轮:✅ 逐字一致 → 才点确认 → 页面确认收到 upload-payload.bin:1000000。

所以这三件事不是设计洁癖,是被逼出来的:③ 走剪贴板(绕开输入法)、④ 必须回读(一次永远不算数)、
⑤ 只认控件 id(标题随语言变,认不起)。

0.1.2:两处"看起来成功"的修正(2026-10-17 真机事故)

  1. 文件名框少走了一级:现代文件对话框的结构是
    dialog > ComboBoxEx32 > ComboBox > Edit,而旧代码只找了 ComboBoxEx32 > Edit,
    于是 FindFileEdit 返回 0 —— 整条 win32 路径被静默跳过,直接掉到"猜焦点"的剪贴板路径。
  2. 回读不到就点确认:剪贴板路径读不回文件名时,旧代码仍把这次填充算作"已填"并点了确认。
    真机后果:粘贴其实落在了地址栏(对话框跳到了目标文件夹),确认后对话框关了、页面一个文件也没收到,
    而工具回执写的是"成功"。现在:回读不到 = 失败,不点确认,把对话框留着让人看。

已知限制

  • 仅 Windows:依赖 EnumWindows / UI Automation / powershell.exe。
  • 只认系统原生文件对话框(窗口类 #32770):应用自己画的(自绘)选择器不适用。
  • 冷启动有开销:每次调用会起一个 PowerShell 进程(数百毫秒到两秒)。
  • 它不负责"触发":打开对话框的那一下(点按钮、快捷键、菜单)要由调用方先做 ——
    这样"目标显式"才守得住。

自测

node test/smoke.mjs   # 不碰真实 GUI:PowerShell 用假 spawn 顶替;含干活脚本的静态检查

License

MIT

常见问题

6 问
答案由本站依据条目字段整理,不引用上游原文
dsh-file-handover 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add github:7gzgn/dsh-file-handover` 即可。

dsh-file-handover 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-file-handover 安全吗?

低风险。

dsh-file-handover 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-file-handover 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

会话与消息
按星标排序,可作替代方案

dsh-desktop

dsh-desktop

为 DeepSeek Harness (DSH) 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。

L3 · 安装规范通过 3.0 万 星

openpets

openpets

L4 · 沙盒安装通过 1,274 星

deeptide

deeptide

L4 · 沙盒安装通过 1,104 星

jingyun-dsh

jingyun-dsh

井云 DSH 客户端插件,为 DeepSeek Harness 注入会员登录、订阅支付、算力管控与应用市场,让智能体和技能快速变成可交易商品

L3 · 安装规范通过 1,004 星

study-mate

study-mate

StudyMate 是 DSH 的「学习模式」预设与技能包,为数学、计算机科目定制学习路线、讲解课件与练习评估,跨科目共享记忆。

未标注验证等级 856 星

7gzgn 的其它插件

6 个

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 —。