Skip to content

dsh-folder-reader

Verified

dsh-folder-reader · v1.0.0 · MIT · Web UI

DeepSeek Harness 文件夹阅读器插件:左侧目录树 + 代码高亮/Markdown 预览,右侧对话区收窄

Install

dsh plugin add dsh-folder-reader

Confirm the layer applied with dsh --profile default --dump-config — see the install guide.

Source

Published to npm without a public repository. Inspect the package contents before installing.

Tags

Creators

Readme

dsh-folder-reader

一个用于 DeepSeek Harness 的文件夹阅读器插件:把窗口左侧变成「目录树 + 文件预览」,原始的对话区被推到右侧并收窄。适合一边浏览项目文件、一边和 AI 对话的工作流。

⚠️ 注意:本插件会替换默认界面布局(禁用 ui-layout),是整套自定义 shell,而非可叠加的小部件。请安装到独立 profile,不要 add 进你现有的 web profile。

功能

  • 📁 目录树:可折叠、目录优先;点击目录展开/收起,点击文件即时预览
  • 🎨 代码高亮:常见语言(JS/TS/Python/Go/Rust/JSON/CSS/HTML…)轻量高亮 + 行号
  • 📝 Markdown 渲染:标题 / 列表 / 表格 / mermaid 图表等
  • 🖼️ 图片预览:常见图片格式直接显示
  • ✏️ 文件编辑:预览即编辑(记事本式,改动自动保存,无编辑/保存按钮)
  • 🔄 自动刷新fs.watch 监听 + 轮询兜底,文件改动后自动重读;另有手动刷新按钮
  • 🔍 搜索:文件名搜索 + 文件内容搜索(大小写不敏感子串匹配)
  • 🗂️ 文件操作:右键新建文件/目录、重命名、删除、复制/粘贴(同名自动 名称 (n)
  • 🖱️ 拖拽移动:把文件/目录拖到目标目录上即可移动
  • 🌿 Git 状态:文件旁显示 git status --porcelain 徽标
  • 📂 在资源管理器中打开 / 显示隐藏文件 / 文件类型图标着色
  • ↔️ 可调布局:三栏可拖拽调宽、目录树可折叠,宽度与开关状态自动记忆
  • 🌗 主题跟随:自动适配深/浅色主题

安装

需要 pnpm 在 PATH 中(dsh plugin 依赖 pnpm)。

# 1) 装进一个专门 profile(避免覆盖 web 默认界面;profile 不存在会自动初始化)
dsh plugin --profile reader add dsh-folder-reader

自定义名字的 profile 默认只含基础 bundle、不含 web 界面。因此第 2 步手动把随 DSH 自带的 @deepseek-ai/dsh-web-app 加进 bundles(它内置在 DSH 里,无需 npm 安装)。编辑 $DSH_HOME/profiles/reader/package.json,把 dsh.profile.bundles 改成:

["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-folder-reader"]

然后启动:

# 2) 启动
dsh --profile reader --port 3090

安装后重启 DSH。dsh plugin 会在 profile 不存在时自动初始化,并把本插件自动追加到 dsh.profile.bundles(因为本包声明了 dsh.bundle)。

使用

  • 启动后,窗口左侧即目录树 + 预览,右侧为对话区
  • 展开/收起目录:点击目录名
  • 预览文件:点击文件名
  • 文件操作:在文件/目录上右键弹出菜单(新建、重命名、删除、复制、粘贴、在资源管理器中打开等)
  • 搜索:顶部搜索框输入关键字,可切换「文件名 / 内容」
  • 拖拽移动:按住文件/目录拖到目标目录上松手

配置

配置文件位于 $DSH_HOME/folder-reader-config.json$DSH_HOME 通常是 ~/.dsh):

{
  "ignore": [".git", "node_modules", "dist", "build", "*.log"],
  "maxDepth": 12,
  "maxEntries": 4000,
  "maxTextBytes": 1048576,
  "hideHidden": false
}
  • ignore:按「路径任意一级名字」精确匹配,支持 *.ext 按扩展名匹配
  • maxDepth:目录树最大深度(1–64)
  • maxEntries:单次遍历最大条目数(1–100000)
  • maxTextBytes:预览 / 搜索时读取文本文件的最大字节数
  • hideHidden:是否隐藏以 . 开头的隐藏文件

已知限制

  • 会禁用 ui-layout,替换整套界面布局,不是可叠加小部件
  • mermaid 图表走 CDN 加载,渲染需要联网
  • 内容搜索为整文件大小写不敏感的子串匹配,不返回命中行号/上下文,不支持正则
  • 暂不支持键盘快捷键与手动排序;代码为纯 JavaScript(未迁移 TypeScript)

License

MIT