← 返回列表
⚠ 装前注意
扩展加号按钮,选文件文件夹并预览附件
基本兼容但装前注意:未发布到 npm registry,仅可从源码安装 · 最近上游提交 2026/8/26 · 已提供中文文档
DeepSeek Harness 编辑器 + 按钮上的选项面板——从项目或机器上任意位置选择文件和文件夹,从你的设备上传,或运行斜杠命令——带有内联路径标签和 Claude Code 风格的附件预览。
综合分
29.9
GitHub 分
29.9
用户评分
—
★ Stars
0
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add navid-kianfar/dsh-add-assets未发布到 npm registry,仅可从源码安装,改用 GitHub 源安装
数据截至 2026/8/27(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查⚠ 装前注意
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包@achasoft/dsh-add-assets(未发布到 npm,仅可源码安装)
✓Node 引擎要求 ^22.19 || >=24 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
未发布到 npm registry,仅可从源码安装
验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/8/30 10:54:55
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-api-remotes@deepseek-ai/dsh-attachment@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-input-trigger@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-settings-plugins@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-file-reference用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
@achasoft/dsh-add-assets 为 DeepSeek Harness Web 客户端的 composer 的 + 添加一个选项面板,并提供类似 Claude Code 风格的已附加内容预览。 harness 自带的 + 只做一件事:打开斜杠命令菜单。此插件将这一个入口扩展为多个选项——添加文件、添加文件夹、从此设备上传、斜杠命令——每个选项都有键盘快捷键,且每个都接入 composer 已在使用的同一套机制。 为什么这个选择器值得打开,而不是直接输入 @: 它会在不同目录、搜索和范围之间保留你的选择,因此来自三个文件夹的三个文件只需一次操作即可加入。文件夹是一等目标,而不是通往文件的中间步骤。而且它可以触及项目之外——harness 自带的 @ 补全在设计上无法做到这一点。 选中的路径会以行内 chip 的形式落入草稿——📄 background.ts,而不是 @src/background/background.ts——而完整路径则隐藏地随行,并作为实际传递给模型的内容。待处理的图片以卡片形式显示在其上方,包含格式、尺寸和大小,并支持通过全尺寸预览翻页查看和移除。 要求 - 安装了带有 Web 客户端的 dsh(@deepseek-ai/dsh-web-app)。 - 对于 Project 范围:需要一个 Host 文件引用提供程序(标准配置中的 @deepseek-ai/dsh-file-reference-local)。没有它时,选择器仅以 This machine 范围打开。 - 对于 This machine 范围:无需额外内容——此插件自己的 Host 端点即可提供支持。可通过 outsideWorkspace: false 将其关闭。 - 对于斜杠命令行:需要触发管线(@deepseek-ai/dsh-client-ui-input-trigger),常驻的 + 也使用它。没有它时,该行会如此说明。 安装 dsh plugin 会转发给 pnpm,因此任何 pnpm 来源都可以使用: dsh plugin --profile default add @achasoft/dsh-add-assets 其他安装来源 dsh plugin --profile default add ./achasoft-dsh-add-assets-0.1.0.tgz # 来自 pnpm pack dsh plugin --profile default add ./dsh-add-assets # 本地检出 dsh plugin --profile default add github:navid-kianfar/dsh-add-assets# # 来自 git git 安装获取的是源代码,而不是构建产物。此包附带一个 prepare 脚本用于构建它们,但 pnpm ≥10 在你允许之前不会运行它——请将 pnpm 指定的键添加到你的配置文件的 pnpm-workspace.yaml 中: allowBuilds: '@achasoft/dsh-add-assets': true 这是允许在安装时执行此包代码的权限。请优先使用 npm 或 tarball 形式,它们不需要此类许可。 该 bundle 会自动将其自身追加到你的配置文件中。可使用 dsh --profile default --dump-config 验证,它应显示一个 # == @achasoft/dsh-add-assets 层。 面板的功能 | 行 | 添加的内容 | 默认快捷键 | | --- | --- | --- | | 添加文件 | 浏览文件并将所选路径作为 @path 提及插入草稿——与编辑器的 @ 补全写入的文本相同,因此工具会以相同方式解析它们。 | ⌘U / Ctrl+U | | 添加文件夹 | 同一个选择器,仅列出目录并选择它们,而不是进入其中。插入 @path/。 | ⇧⌘U / Ctrl+Shift+U | | 从此设备上传 | 浏览器的文件选择器。图像会成为草稿附件,与粘贴和拖放产生的效果完全相同。 | — | | 斜杠命令 | 在光标处打开编辑器自带的斜杠命令菜单。这就是常驻 + 按钮原本的功能。 | ⌘/ / Ctrl+/ | 两种范围 选择器顶部的开关会说明当前由哪种能力响应,因为它们的覆盖范围并不相同: - 项目 — 会话的工作目录,由 Host 的 @file 索引提供。输入时会模糊搜索整个工作区;输入路径时会浏览某一层级。路径会以工作区相对路径写入草稿。 - 此机器 — Host 文件系统,由此插件的端点提供。从 Home 开始一次浏览一层,按名称过滤,面包屑中显示完整路径。路径会以绝对路径写入草稿。 选择内容会跨开关保留,因此你可以在一次 添加 中从项目取两个文件,再从 ~/Downloads 取一个。 按键:↑/↓ 移动,Enter 选择或进入,→ 打开文件夹,← 返回上一级,⌘Enter 添加所有已选内容,Esc 关闭。面板高度固定,因此过滤时它绝不会在你的指针下方移动。 选中的路径是芯片,而不是路径 一次选择会变成一次内联引用出现:草稿携带一个短标签,编辑器会将其渲染为字形芯片,而完整的 @path 是该出现的隐藏序列化形式——与 harness 自带的 @ 补全使用的机制相同。因此,一个深层嵌套的文件在编辑器中显示为 📄 background.ts,而模型仍然会收到 @src/background/background.ts。 退格会像删除任何其他原子引用一样,将芯片整体删除。如果没有组合触发管线,就没有编解码器来序列化一次出现,因此选择器会退回到写入人们本可以手动输入的纯 @path 文本——读起来更长,但效果相同。 附件预览 每个待处理图像都是一张卡片:裁剪后的方形缩略图、文件名,以及一行详情(PNG · 1024×768 · 240KB)。悬停会显示移除控件;点击会在变暗的页面上打开完整图像,此时 ←/→ 可在草稿的其余附件之间翻页,垃圾桶控件会移除你正在查看的那个附件。 在页面任意位置拖动文件仍会显示拖放邀请,并且仍会在放下时附加——此插件从随附的附件栏手中接管了那个位置,因此它也拥有拖放目标。 想要更安静一些?设置 previewDensity: compact,即可获得仅带名称的小圆形缩略图。 设置 以下所有内容均可在 Settings → Plugins → Add assets 中编辑,并且可以通过你配置文件自身的 cordis.patch.yml($DSH_HOME/profiles//cordis.patch.yml)进行部署来修复。补丁会替换某一行的整个 config,因此需要重新声明每一个键。 - patch: - id: add-assets config: replaceCommandButton: true deviceUpload: true outsideWorkspace: true browseMaxEntries: 500 filesShortcut: mod+u foldersShortcut: mod+shift+u commandShortcut: mod+/ pickerResultLimit: 20 previewDensity: card previewDetails: true | 字段 | 含义 | | --- | --- | | replaceCommandButton | 隐藏编辑器自带的 +,使此插件的面板成为唯一入口。请参阅下方说明。 | | deviceUpload | 在文件入口下提供设备文件选择器。粘贴和拖放两种方式均可使用。 | | outsideWorkspace | 允许选择器离开项目。请参阅下方说明。 | | browseMaxEntries | Host 在每个浏览层级报告的条目数,1–5000。主目录远超此数;选择器会提示已截断,而搜索字段是你突破该限制的方式。 | | filesShortcut、foldersShortcut、commandShortcut | 形如 mod+u、mod+shift+u、mod+/ 的组合键。mod 在 macOS 上是 Command,在其他平台上是 Ctrl。留空则禁用该项。浏览器无法匹配的组合键会在加载时被拒绝,并指明该字段。 | | pickerResultLimit | 选择器每次查询渲染的行数,1–200。Host 会应用其自身更低的上限(默认 20),因此仅提高此值并不会扩大结果范围——请同时提高文件引用提供程序的 maxResults。 | | previewDensity | card(缩略图、名称、详情)或 compact(小圆形缩略图和名称)。 | | previewDetails | 详情行是否显示格式、尺寸和大小。 | 快捷键有意采用修饰键组合:编辑器的文本区域拥有所有裸键,而普通按键快捷键会吞掉你的输入。 关于 outsideWorkspace harness 的文件引用提供程序会拒绝会话工作目录之外的每一个路径——resolveDisplayDirectory 会直接拒绝 .. 和符号链接——而 Workspace 目录浏览器只返回目录。因此,要访问项目之外的文件,需要此插件自己的端点,而这正是 addAssets/browse Remote 的作用。 它会报告 Host 账户可读取的任何目录的条目名称、类型和绝对路径。它从不打开文件,也从不返回内容。它相比 harness 已暴露的能力所增加的,是能够从浏览器会话中枚举机器的目录树,包括文件名。如果这种枚举本身就是需要保留的内容,请将其设为 false;此时选择器只会在 Project 范围内打开,范围切换也会消失,而不是只显示一个选项。 关于 replaceCommandButton harness 把它的 + 画在自己的 InputBar 里,并且没有为它声明任何插槽,所以没有任何插件能就地替换它。因此,在工具行里只保留一个 +,就意味着要隐藏那个常驻的按钮,而本插件正是通过标记那单个元素来做到这一点的——它会在 composer 卡片(也就是它自己所在的位置)中搜索该按钮在整个客户端中独有的无障碍特征(aria-haspopup="listbox")来找到它。不涉及整个文档,不使用类名,并且当插件卸载时会移除该标记。 如果你希望没有任何插件触及 harness 自身的界面元素,就把它设为 false。这样两个按钮都会显示:常驻的那个仍然打开斜杠命令菜单,而本插件的面板就位于它旁边。 模型体验 间接地,且仅通过人类可见可编辑的文本。选中的路径会成为草稿中普通的 @path 提示文本——模型对它们的感知,就是 @deepseek-ai/dsh-file-reference-local 已经为手动输入的提及所提供的那些——而上传的图片会成为与粘贴和拖放所产生的相同的草稿附件。本插件不添加自己的提示、工具或会话事件。 KV 缓存影响 无;此包既不组装也不发送提供方请求。 已知限制与待办工作 - 常驻的 + 是被隐藏,而非被替换。 在 harness 为那个位置声明插槽之前,这种接管依赖于无障碍特征,而不是契约。它会以可见的方式失败(出现两个按钮),绝不会静默失败。 - 机器范围不会跨目录搜索。 该过滤器只缩小你当前所在层级的范围;项目索引是唯一会搜索目录树的东西,而它会在工作区根目录处停止。 - 选中的路径总是追加。 引用会加到草稿末尾,而不是插入符处,因为选择器在打开时会获取焦点。 - 选择器的插入符是 composer 的,但它的选区是折叠的。 从面板中选中的斜杠命令会插入到插入符处,且不会替换任何内容,即使有文本被选中。 - 图片仅出现在预览中。 composer 只接受图片附件,所以卡片始终是图片卡片;非图片文件卡片要等到 composer 接受非图片附件之后才会出现。 - 全尺寸预览中没有缩放或下载。 它以适配视口的大小渲染原图,支持翻页,并支持移除。 - 预览不会捕获焦点。 它设置了 aria-modal,并在关闭时恢复焦点,但 Tab 仍可到达其后面的页面——这与已发布的 lightbox 具有相同的限制。 开发 pnpm run typecheck pnpm run test # the Typert freshness check, then vitest pnpm run build # tsc emit → tsdown's two halves (lib/host.js, lib/client.js) link: 开发依赖指向一个同级的 deepseek-harness 检出目录,它提供了本包编译所依赖的类型和构建好的 lib/。构建会复现 harness 自己的(未发布的)客户端预设所生成的两种产物格式;tsdown.config.ts 记录了每一种为何被塑造成现在这样。 generated/ 保存着 addAssets 端点的 Typert RPC 契约。只有测试框架的生成器才能生成它,因此它作为已提交的源代码随附,并且当它与 src/host/ 不一致时,pnpm test 会失败。在更改该端点或它所引用的任何类型之后: node scripts/regen-typert.mjs ../deepseek-harness 它拒绝在脏的测试框架检出上运行,需要几分钟时间,并在 finally 中恢复它在那边触碰过的一切。两次重新生成绝不能重叠。 许可证 MIT
同作者(navid-kianfar)的其他插件
扫码进群