dsh-file:DeepSeek Harness 的当前对话工作区文件管理器

前言

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 EditorCDN 加载;CDN 不可达时降级为纯文本 textarea

Markdown 预览

打开 .md 文件时,默认渲染为只读预览。Markdown 解析使用 marked + GFM

预览/源码切换按钮用于切换显示模式;模式选择会保存到 localStorage,下次打开沿用。

主题设置

编辑器工具栏的“主题”按钮可以打开主题设置面板。

预设主题包括浅色、深色、One DarkGitHub。可自定义背景色、文字色和字号,范围 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.bundlesweb 插件需要重启 dsh web 后生效。

桌面端 profile 与 web profile 独立,插件不会自动共享。安装到 desktop profile 后,需要完全退出并重启桌面端。

注意:不要往 ~/.dsh/profiles/desktop/cordis.yml 添加插件。正确入口是 profile package.jsondsh.profile.bundles + dependenciesdsh 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 依赖 CDNCDN 不可达时降级为纯文本 textarea
  • desktopweb profile 独立,安装命令中的 --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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜