dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
把右侧文件栏里的文件直接拖进输入框,插入一个 @ 文件引用——和手动输入 @ 选文件得到的是同一种引用 chip。
一个 DeepSeek Harness(DSH)Web UI 客户端插件。装上之后,在右侧「文件」标签里按住任意文件(或文件夹)行,拖到输入框上松手即可。
conversation.input.shell(sessionId).addFiles(...)),草稿里立刻渲染成文件 chip,自动补空格;不是把纯文本硬塞进去。ask_user_question / 计划审批)替换时,拖到卡片上会把 @相对路径 写进当前问题的「自由回答」框;计划审批这类没有回答框的卡片会给出提示,不再静默失效。@src/a.ts;带空格的路径使用 @"my file.txt" 语法;文件夹生成 @dir/(文件夹引用)。Esc、窗口失焦都会取消;鼠标/触控笔生效,触摸输入不劫持滚动。shell.overlay(拖拽浮层)和 conversation.input.overlay(输入框投放区)注册两个附加组件。dsh web 均可)。0.2.1-rc.3。@ 引用能力(默认均可用)。这是一个 DSH bundle 包(宿主半边为空,功能全在浏览器端)。
plugin_manager 的 install_bundle,target 填本仓库目录的绝对路径;或applied,插件列表中出现「文件拖拽引用」。安装后 profile 会记录 "dsh-file-drag": "link:",所以本地改动重新加载即可生效。
Ctrl+P)。@相对路径 的文件引用 chip,继续输入或发送即可。操作 · 结果 单击文件行 · 打开文件预览(保持官方行为) 拖动文件行 → 输入框 · 插入文件引用 拖动文件夹行 → 输入框 · 插入文件夹引用(尾部 /) 问题卡片显示时拖入 · 插入到该问题的自由回答框(纯文本路径) 拖动后松手在别处 / Esc / 失焦 · 取消,不改动草稿 会话正在提交、输入框暂不接受 · 不插入,控制台给出 [dsh-file-drag] 告警
[data-files-body] li[data-files-entry][data-files-path],超过阈值后进入自定义拖拽。不向官方 DOM 写入任何属性。shell.overlay 里的组件渲染跟随指针的文件 chip,以及命中输入框时的描边(仅使用 --dsw-alias-* 主题变量,自动适配明暗主题)。conversation.input.overlay 里的 session 级组件发布输入框卡片的矩形和插入回调;松手时按指针位置命中对应会话的输入框。conversation.input.shell(sessionId).addFiles([{ source: 'reference', ref, label, appearance, clipboardText }], []),与官方「把系统文件拖进输入框」走同一条路径;另有 insertReference / inputActions.insertText 两级降级。[data-question-key] / [data-plan-review-key] 卡片;有自由回答框时把文本写进去并触发 input 事件同步受控组件,没有回答框时用浮层提示原因。data-files-*、data-composer-card)和 conversation.input.shell 接口。它们目前可用但非版本化契约;若未来 DSH 改动,插件会静默失效(控制台有 [dsh-file-drag] 告警),不会破坏原有 UI。dsh-file-drag/
├─ package.json bundle 清单 + dsh.client 声明
├─ cordis.patch.yml 插入 file-drag 这一行插件
├─ index.js Host 半边(空实现,只为拥有 Loader 行)
├─ client.js 功能全部实现(拖拽、浮层、投放、引用插入)
├─ icon.svg 插件图标
├─ locale/{zh,en}.json 插件管理页标题/描述
└─ README.md / LICENSEclient.js 后刷新页面;若控制台仍是旧版本日志,重启 DSH。[dsh-file-drag]。dsh-file-drag,源码目录不受影响。Drag a file from the right Sidebar Files tab onto the chat composer to insert an @ file reference — the same reference chip produced by the @ picker.
conversation.input.shell(sessionId).addFiles([reference], [])), so spacing and chip rendering match the built-in behavior.@"path with spaces" mentions, and folder references with a trailing / are handled automatically.@ references (verified on 0.2.1-rc.3). Internal DOM markers and conversation.input.shell are not versioned APIs; a future DSH change makes the plugin degrade silently with a [dsh-file-drag] console warning.MIT. See LICENSE.