在 DSH Web 环境中,处理文件通常需要切换窗口或使用功能臃肿的侧边栏。dsh-file-panel-left 提供了一个集中的“文件工作台”体验,将文件资源管理器、代码编辑器和预览器整合在一个面板中。这是一个精简的 Fork,保留了文件相关的核心能力(文件树、编辑器、预览、@ 引用),移除了终端、浏览器、Git 和标签页等无关功能。
核心功能¶
布局与交互¶
插件采用经典的“左树右内容”布局。左侧为文件树,右侧为内容区域。支持可拖动的面板宽度(240-480px,默认 280px)。内容区域的“关闭”按钮可折叠显示页,恢复 65% 的视口宽度以专注于文件树。布局状态和宽度偏好会按会话隔离保存。
文件树¶
文件树支持懒加载目录(每次加载一级以保持响应速度)、符号链接支持(解析真实类型并标记断链)、UNC 网络路径以及全局文件名搜索(300ms 防抖)。用户可以通过树头或文件夹行的“+”号创建新文件(Enter 确认,Esc 取消),或右键复制相对/绝对路径、重命名或删除文件。会话根目录不可删除。
代码编辑器¶
编辑器基于 CodeMirror 6 构建,支持 20+ 种语言的语法高亮(包括 JS/TS/JSON/Python/HTML/CSS/Markdown/Rust/Go 等)。提供 Ctrl/Cmd+F 搜索、括号匹配、代码折叠、自动缩进和列选择。支持 Ctrl/Cmd+S 保存文件,且包含自动保存机制(每秒检查一次未保存更改)。对于 JSON/JSONC 文件,支持 Ctrl/Cmd+Shift+F 快捷格式化。
查看器¶
内置 6 种查看器:图像、PDF、Markdown(含 Mermaid 预览)、HTML(在沙箱 iframe 中运行,不访问 GUI 数据或本地文件)、代码和二进制文件。超大文件会被截断显示(前 512 KB)。Markdown 支持预览和编辑模式切换。
@ 引用¶
在编辑器中选中代码并释放鼠标,会触发“添加到对话”弹窗,插入纯引用行(如 @relative/path L12-L25),不复制选中文本,以保持 Token 友好。插件包含 file-line-reading 技能,引导 AI 仅读取引用的行范围。该功能与 DSH 官方的 @ 源共存,互不干扰。
集成能力¶
聊天中的文件链接会优先在侧边栏打开。外部插件可以通过 ctx.betterSidebar 服务注册侧边栏标签和自定义文件查看器。
安装与启用¶
安装前请确保环境满足要求:Node.js >= 20 且已安装 DSH Web(CLI)。
dsh plugin --profile web add dsh-file-panel-left
安装后,无需额外配置文件。DSH 运行时会自动提供 React 18、Cordis 和 @deepseek-ai/dsh-* 依赖。安装完成后需重启 DSH 并硬刷新浏览器(Ctrl+Shift+R / Cmd+Shift+R)以加载插件。
典型用法¶
- 文件操作:单击文件打开,或使用树头/文件夹行的“+”创建新文件。
- 代码编辑:在编辑器中按 Ctrl/Cmd+S 保存,按 Ctrl/Cmd+F 搜索代码,按 Ctrl/Cmd+Shift+F 格式化 JSON。
- 引用代码:在编辑器中选中一段代码并释放鼠标,系统会自动插入
@path L12-L25引用行。
注意事项¶
- 本地开发:如果使用 pnpm 进行本地开发,
file:依赖是复制而非链接。修改源码后,需删除~/.dsh/profiles/web/node_modules/dsh-file-panel-left并重新运行pnpm install,否则浏览器可能加载旧的构建。 - 会话隔离:每个会话拥有独立的工作目录和面板状态。
- 兼容性:Windows 标题栏兼容模式下会预留空间;无设置服务的部署会回退使用
~/.dsh/dsh-file-panel-left-prefs.json存储偏好。
总结¶
dsh-file-panel-left 为 DSH Web 提供了一个轻量、专注的文件工作环境。它通过移除非必要功能提升了文件操作的效率,并提供了完善的编辑和引用体验。更多细节可参考 GitHub 仓库。