前言¶
DeepSeek Harness 的插件生态强调「一切皆插件」。在 Web 或桌面端使用 dsh 做会话式开发时,经常会碰到一个具体需求:当前对话已经绑定了一个工作区目录,希望在不离开界面的情况下查看文件、编辑文件、保存修改,而不用切到本地编辑器或终端。
dsh-file 就是针对这个场景的插件。维护者是 chengzhi43,包名为 @rose43/dsh-file,许可证为 MIT。它做的事情比较集中:在 Web 侧边栏浏览当前对话工作区的文件,在中间主区域编辑。
这是什么¶
dsh-file 是 DeepSeek Harness 的 VS Code 风格文件管理器插件。
它把三个动作放进同一个界面:
- 在侧边栏显示当前工作区的文件树;
- 在中间主区域打开文件编辑视图;
- 文件视图与对话/轨迹并列,不依赖弹窗。
它适合希望在 dsh web 或桌面端内直接处理当前会话工作区文件的场景。
核心功能¶
侧边栏文件管理器¶
侧边栏底部有“文件”按钮。点击后,侧边栏主体切换为文件管理器;再次点击,切回工作区/会话列表。
文件管理器打开时,会解析当前会话的工作区目录(SessionHeader.cwd),并通过 setRoot 重新固定网关根目录。因此浏览范围跟随当前对话,而不是固定为启动 dsh web 的目录。
中间列编辑¶
点击文件后,文件在中间列的“文件”视图中打开。该视图与“对话/轨迹”并列。
编辑器使用 Monaco Editor,并按扩展名自动进行语法高亮。Monaco Editor 从 CDN 加载;CDN 不可达时降级为纯文本 textarea。
Markdown 预览¶
打开 .md 文件时,默认渲染为只读预览。Markdown 解析使用 marked + GFM。
预览/源码切换按钮用于切换显示模式;模式选择会保存到 localStorage,下次打开沿用。
主题设置¶
编辑器工具栏的“主题”按钮可以打开主题设置面板。
预设主题包括浅色、深色、One Dark、GitHub。可自定义背景色、文字色和字号,范围 10–28px。设置会实时应用,并持久化到 localStorage。
主题也支持导出 JSON 主题文件,并支持从 JSON 文件导入恢复。
编辑与保存¶
保存可以使用 Ctrl+S,也可以点击编辑器内“保存”按钮。未保存修改会有 dirty 标记。
多文件打开时,可以在顶部标签条切换,并逐个关闭。
文件操作¶
文件操作支持:
- 新建文件;
- 新建目录;
- 重命名;
- 删除。
删除需要确认;非空目录会被拒绝。
工作区边界¶
所有路径解析都相对当前固定的 root。越界路径会被 host 拒绝,并且包含 symlink 逃逸防护。
安装与启用¶
资料给出的 npm 安装命令为:
dsh plugin --profile web add @rose43/dsh-file
如果从 clone 下来的 dsh-file 目录本地安装,需要在插件目录内执行:
cd /path/to/dsh-file
dsh plugin --profile web add .
桌面端使用 desktop profile。命令为:
cd /path/to/dsh-file
dsh plugin --profile desktop add .
从 Releases 下载 tarball 后,资料中的本地安装示例为:
dsh plugin --profile web add ./rose43-dsh-file-0.1.2.tgz
执行 dsh plugin add 后,包会被 pnpm-link 进 profile,并追加到 dsh.profile.bundles。web 插件需要重启 dsh web 后生效。
桌面端 profile 与 web profile 独立,插件不会自动共享。安装到 desktop profile 后,需要完全退出并重启桌面端。
注意:不要往 ~/.dsh/profiles/desktop/cordis.yml 添加插件。正确入口是 profile package.json 的 dsh.profile.bundles + dependencies。dsh plugin add 做的正是这件事。
另外,不要在插件目录里跑 npm install,这可能破坏 profiles 的 symlink 结构。@deepseek-ai/* 包不能在插件自己的 node_modules 里安装副本;必须让 Node 解析到 dsh 安装目录的同一实例。生产发布时,插件将 @deepseek-ai/* 声明为 peerDependencies,由 profile 提供。
配置¶
cordis.patch.yml 中的 root 只是无会话时的兜底根目录,默认 process.cwd()。文件管理器打开时,会按当前对话工作区重新固定,因此一般无需改动:
- insert:
- id: '@rose43/dsh-file'
name: '@rose43/dsh-file'
config:
root: !!js process.cwd()
典型用法¶
1、点击侧边栏底部“文件”按钮,打开文件管理器。
2、点击某个文件,在中间列“文件”视图中打开。
3、如果打开 .md 文件,使用预览/源码切换按钮切换显示模式。
4、通过工具栏“主题”按钮打开主题设置,导出或导入 JSON 主题文件。
5、修改后使用 Ctrl+S 或“保存”按钮保存。
6、使用插件提供的文件操作新建、重命名或删除文件/目录。
适用场景¶
适合这些场景:
- 在
dsh web中使用当前对话工作区; - 在桌面端
dsh中希望快速查看和修改工作区文件; - 需要 Markdown 预览、主题设置和基础文件操作;
- 希望把文件浏览和编辑保留在插件化界面内。
注意事项¶
- 插件以当前
dsh进程权限运行,安装前应检查源码与许可证; - 工作区边界依赖当前固定
root,越界路径会被拒绝; Monaco Editor依赖CDN,CDN不可达时降级为纯文本textarea;desktop与webprofile 独立,安装命令中的--profile要与目标端一致;- 不要往
~/.dsh/profiles/desktop/cordis.yml添加插件; - 不要在插件目录里跑
npm install; @deepseek-ai/*需要解析到dsh安装目录的同一实例。
链接¶
目录页(社区目录):
https://www.skillhub.cn/plugins/chengzhi43/dsh-file
GitHub:
https://github.com/chengzhi43/dsh-file