Chuyển đến nội dung chính

dsh-folder-reader

Đã xác minh

dsh-folder-reader · v1.0.0 · MIT · Giao diện web

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

Cài đặt

dsh plugin add dsh-folder-reader

Xác nhận layer đã áp bằng dsh --profile default --dump-config — xem hướng dẫn cài plugin.

Mã nguồn

Phát hành lên npm mà không có repository công khai. Hãy kiểm tra nội dung package trước khi cài.

Thẻ

Tác giả

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