deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:vianvio/dsh-plugin-drop-path
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README

把一个文件夹从访达(Finder)/ 资源管理器拖进 DSH:输入框里出现的不是"又一条传不上去的附件",
而是一个 folder 形状的 @路径/ 引用块——模型拿到的就是那个文件夹的本机绝对路径,
你可以接着打字发送。
文件夹在上游的附件流程里本来没有出路(目录不是文件,上传拿不到东西),而其中最有用的恰恰是路径本身。
当前版本
0.1.2· DSH 客户端插件 · 零运行时依赖
dsh plugin --profile desktop add dsh-plugin-drop-path
--profile 填你实际在用的那个(桌面端是 desktop,Web 端是 web)。重启 DSH 生效——
客户端半是启动时加载的。
这条命令背后是 pnpm:装完包之后,它会自动把声明了 dsh.bundle 的依赖加进 profile 的
dsh.profile.bundles——不用手改 package.json。
| 从哪装 | 命令 |
|---|---|
| npm(推荐) | dsh plugin --profile desktop add dsh-plugin-drop-path |
| GitHub 最新提交(还没发版的改动) | dsh plugin --profile desktop add github:vianvio/dsh-plugin-drop-path |
| 本地目录(改代码即时生效,用来开发) | git clone https://github.com/vianvio/dsh-plugin-drop-path.git ~/dsh-plugin-drop-pathdsh plugin --profile desktop add link:$HOME/dsh-plugin-drop-path |
以后升级、卸载:
dsh plugin --profile desktop update dsh-plugin-drop-path
dsh plugin --profile desktop remove dsh-plugin-drop-path
| 你拖进来的 | 结果 |
|---|---|
| 一个文件夹 | 抢下这次拖放,把它的绝对路径插进输入框 |
| 一个普通文件 | 不碰,照旧走上游附件流程(图片 / 文件上传) |
| 同时拖多个 | 不碰(多选里有文件夹也不猜) |
只有"恰好一个文件夹"才接管:猜错一次就会把文件吞掉,比少一个便利贵得多。 插进来的引用块另外放开了一点样式,让长路径显示完整(上游给引用块定了 240px 宽并省略号截断)—— 只改显示,不改发给模型的文本。
window 捕获阶段接管。 上游附件插件挂在 document 冒泡上,而 window 捕获永远先到,
所以"谁先拿到这次拖放"不取决于插件的加载顺序。window.__DSH_DESKTOP_FILE_PATH__,即 Electron 的
webUtils.getPathForFile)。浏览器不给绝对路径;桥不在时明确说"读不到",而不是插一个假路径。slash/input-insert-reference)而不是整篇替换草稿:输入框是一棵
Lexical 文档,整篇替换会把已有的引用块降级成纯文本、还会丢光标。机制细节、四个踩过的坑、以及怎么端到端验证,都记在 docs/notes.md。
~ 缩写、不做相对化——插进去的是给模型看的真路径,
缩写会让它在另一侧解释错。产物就在仓根、没有构建步骤:client.js 是页面按 <script src> 加载的经典脚本;index.js 是
宿主半(空 apply,只为让这个包在 Loader 里有一个条目,客户端产物才会被编进 __DSH_BOOT__)。
npm install
npm test # 20 项:行为 15 + 发布契约 5
改完发版:npm version patch && npm publish,然后 git push --follow-tags
(prepublishOnly 会在打包前先跑语法检查与测试)。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。