在 DeepSeek Harness (DSH) 的开发流程中,直接在 Web 前端查看和编辑本地项目文件通常需要依赖终端或外部工具。dsh-ws-files 插件将文件树、搜索和在线编辑器直接集成到 DSH 的布局系统中,支持在对话/轨迹同级打开标签页进行编辑。该插件由 zhangxiang1993621 维护,遵循 MIT 许可证。
核心功能¶
- 布局集成:面板注册进
layout.left或layout.right区域(id 为ws-files),与dsh-layout协同渲染。 - 树形浏览:支持懒加载目录,文件夹名称加粗,显示文件大小。
- 搜索:支持按文件名搜索(不区分大小写),可快速定位。
- 文件操作:点击文件可用系统默认程序打开;在对话/轨迹同级标签页打开,支持关闭。
- 在线编辑:
- 自动进入编辑模式。
- 实时高亮:支持关键词、注释、字符串、数字着色(叠层高亮,不中断输入)。
- 智能缩进:Enter 自动缩进,Tab/Shift+Tab 反缩进。
- 自动保存:防抖自动写入,状态栏显示保存状态,支持 Ctrl+S 立即保存。
- 撤销/重做:Ctrl+Z / Ctrl+Y。
- 类 IDE 预览:预览模式带行号、代码折叠、按文件类型设置缩进宽度。
- 多工作区:支持在
workspaceRegistry已登记的工作区间切换。
安装与启用¶
在 deepseek-harness 仓库目录下执行以下命令。使用 file:/ 安装发布版本,开发期使用 link:/ 以便热更新。
# 安装发布版本
node --import tsx/esm apps/cli/src/bin.ts plugin --profile web add file:/绝对/路径/dsh-ws-files
# 开发期使用 link(修改源码后刷新页面即生效)
node --import tsx/esm apps/cli/src/bin.ts plugin --profile web add link:/绝对/路径/dsh-ws-files
安装后需重启 DSH Web 服务。
架构与实现¶
插件分为 Host 和 Client 两部分。
- Host 端(
lib/index.js):通过 Cordis 插件行注入webServer、fs、workspaceRegistry,提供/ws-filesJSON 路由。 - Client 端(
lib/client.js):通过手工维护的__ModuleLoader__协议加载,注册布局面板和文件标签页槽位。
安全与注意事项¶
插件对文件读写进行了严格限制:
- 路径围栏:所有读写操作限制在
workspaceRegistry已登记的工作区根目录内,越界返回 403。 - 写沙箱:写入时显式携带
workspace-write沙箱策略,由宿主 fs 策略层双重把关。 - 写前确认:浏览器端保存前弹出确认框,不提供删除端点。
- 只读优先:默认可用 list/read/stat/search/open,write 需用户主动触发。
总结¶
dsh-ws-files 为 DSH 提供了一个轻量级的、集成了安全沙箱的文件浏览器和编辑器,适合需要在 Web 界面频繁查看和修改工作区代码的开发者。更多细节可查阅插件目录或源码。