跳到主内容

dsh-web-files 使用指南

webdsh 浏览器侧的 Files 面板子插件:侧栏按钮一键唤起,浏览、上传、下载 workspace 文件,支持文本预览与多选 zip 打包,并向 AI agent 宣告文件交接通道。

本文为派生内容(基于 wiki / faq / compatibility_json 自动组装),非 AI 即时创作。

本文由本站基于该插件已收录的字段自动派生(wiki / faq / compatibility_json / readme),非 AI 即时创作。每节末尾标源字段。

快速上手

webdsh

— 源: plugin_wiki.wiki_content

安装与验证

dsh plugin --profile web add github:futrime/webdsh#path:packages/dsh-web-files

复制以上命令在 DSH Web Profile 内运行。安装完成后在「插件列表」启用即可。

— 源: plugins.install

关键要点

  • ⚡ Nothing to run. No server, no install, no local Node — the harness boots in the page.
  • 🖥️ Real Node, real Python. npm install and pip install both work, and the terminal and the agent share one container.
  • 🧩 Real plugins. Install from npm, a tarball, GitHub, or a path — from the browser.
  • 📦 Real dsh. The published @deepseek-ai/* packages, unmodified: 114 of 129 rows compose exactly as dsh web composes them.
  • 🔒 Yours. Files, sessions and keys live in your browser's storage. Nothing is uploaded.

— 源: plugin_wiki.readme_zh (fallback readme_raw)

常见问题

安装后从哪里打开 Files 面板?

在 webdsh 浏览器界面侧栏(终端按钮上方)有一个文件夹图标,点击即在页面底部唤起一个 Files 抽屉;再点一次或点 Close 收起。代码见 packages/dsh-web-files/src/client.tsx:575-582(slot 注入)与 433-449(按钮)。

文件面板里的 workspace 跟 agent 用的是同一个吗?

是同一个。面板所有读写都通过全局 __DSH_WEB_FILES__ 桥(由 src/host/bridges.ts:373 publish),read/write/list/mkdir/remove/archive 直接落到 agent 命令跑的那个 filesystem——容器运行时是 WebContainer,容器起不来时回落到页面自带的 volume,所以 agent 在终端里写的文件,面板里立刻能刷出来。

聊天里点开的文件路径会怎么样?

路径点击经 host.openPath 统一走 dsh-web:open-path 自定义事件(见 src/node/open-path.ts:18 与 src/shell/tools.ts),本插件 client.tsx:587-591 监听该事件,自动打开面板:点击文件就在浏览器的预览面板里显示,点击目录就跳进该目录并刷新列表。

我可以在线预览 PDF、图片、视频吗?

不可以。面板的预览(client.tsx:161-177 的 show)走 looksTextual(client.tsx:92-95)做启发式判断:仅取文件前 4 KB 找 NUL 字节,没有 NUL 才按文本解码渲染到 <pre> 里;否则就显示一行"This file is not text. Download it to open it elsewhere.",二进制文件只能下载到本地用别的工具看。

为什么不显示文件大小和修改时间?

因为 webdsh 用的容器文件系统 API 没有 stat,面板只列举 name 与 directory 两列;硬塞大小/时间列,只会在容器挂掉、回退到 page volume 时出现"列有时有、有时没有",所以默认就是不显示。源码注释见 src/client.tsx:18-21 与 src/host/bridges.ts:368-371。

下载多个文件或整个目录怎么操作?

在列表条目前勾选需要的目标(有"Select everything here"的全选复选框),点工具栏的 "Download N selected":单文件直接走浏览器原生下载(原文件名),多文件/包含目录时按 __DSH_WEB_FILES__.archive 打包成 zip 再下载,zip 名按所在目录 basename 生成。代码见 client.tsx:223-240、322-326。

我可以拖拽上传吗?会上传到哪?

可以。把一个或多个文件拖到 Files 面板任意位置松手即上传,或点 Upload 按钮走系统文件选择器;上传目标目录是当前正在浏览的目录(cwd),同名文件会被覆盖,写完会 touch() runtimePersistence(),即触发持久化,刷新不会丢。代码 client.tsx:242-257、287-294。

删除文件安全吗?

删除走的是 __DSH_WEB_FILES__.remove,删除前会有一次 globalThis.confirm 二次确认,目录会附带提示"and everything in it"防止误删子树。代码 client.tsx:259-270、389。

— 源: plugin_wiki.faq_json

兼容性

  • DSH: 0.1.0-rc.7+(根 package.json 锁定全部 @deepseek-ai/dsh-* 为 0.1.0-rc.7;子包 package.json 未单独声明,见根 package.json:42-217)
  • Node: 运行时无 Node 要求(插件跑在浏览器 webdsh 内);webdsh 仓库构建/启动脚本要求 Node >=22,见根 package.json:8-10

— 源: plugin_wiki.compatibility_json

踩坑提醒

安装前请审阅上游仓库;本指南基于已收录字段自动派生,可能滞后于最新版本。如发现与官方文档冲突,请以上游为准。

— 来源:通用规则