fdtree
No description
- Stars
- 1
- Language
- JavaScript
- Created
- Aug 27, 2026
- Updated
- Aug 27, 2026
Introduction
DSH文件目录+diff插件
如果你和我一样不想为了一个目录树就安装大而全的 UI,这个插件或许可以帮到你
简述
在界面最右侧显示工作区文件目录树,点开文件后以真嵌入布局(四列占位:原生侧边栏|对话区|文件内容|文件树)展示内容与实时红绿 Diff(git 模式对比 HEAD,无 git 时对比会话基线,会话基线支持自定义),文件 Diff 支持 22 种语言的语法高亮。
功能
- 布局:始终占列的四列形态(原生侧边栏|对话区|文件内容|文件树),非浮动;内容列默认收起,仅显示文件树
- 文件树:点文件展开内容区,多标签打开,内容/Diff 整合为单一视图:🟥 删除行、🟩 新增行、行号、
+N −N统计 - 模式自动切换:工作区位于 git 仓库内(含父目录仓库)自动启用 git 模式;非仓库目录自动用基线模式;
git init后 15 秒内自动检测生效 - git 模式:与
HEAD对比(git 原生 xdiff),目录树徽标实时显示改动/未跟踪/删除;git commit后差异自动归零 - 基线模式(无 git 仓库):与打开时快照对比,支持「📌 设基线」
- 打开终端:右键目录树节点弹出菜单,可在宿主系统打开终端(Windows:Windows Terminal / PowerShell / cmd;macOS:Terminal.app;Linux:桌面终端),支持一键 cd 到选中目录
- 语法高亮:JS/TS、Python、JSON、Markdown、HTML、CSS、YAML、Shell、C/C++/C#/Java、Go、Rust、PHP、Ruby、Swift、Kotlin、SQL、PowerShell、Lua、Dockerfile、Makefile、.env
- 大文件优化:
FsVersion变更检测免重复读盘、大文件自动降载渲染
安装
方式一:dsh plugin 命令安装
# 在目标机器的 DSH web profile 中安装(自动 pnpm 安装 + 注册)
dsh plugin --profile web add "https://github.com/musclePatrickStar/fdtree.git"
# 或 SSH 方式(注意:必须用 git+ssh:// 完整格式,pnpm 不支持 git@github.com:xxx 简写)
dsh plugin --profile web add "git+ssh://git@github.com/musclePatrickStar/fdtree.git"
# 或本地路径
dsh plugin --profile web add "file:/path/to/fdtree"
如果是 fork 或自建镜像,把上面的仓库地址替换成你自己的即可。
方式二:手动编辑
- 在
$DSH_HOME/profiles/web/package.json的dependencies加一行:"fdtree": "github:musclePatrickStar/fdtree"(可锁定版本:"fdtree": "github:musclePatrickStar/fdtree#v0.1.0"); - 在
dsh.profile.bundles数组末尾追加"fdtree"; - 在
$DSH_HOME/profiles/web下执行pnpm install; - 重启 dsh web(
dsh web)。左侧栏底部出现「文件树」按钮,右侧自动显示文件树面板。
插件包结构遵循 DSH 插件规范:
package.json的dsh.bundle.patch+dsh.client、cordis.patch.yml补丁插入、lib/index.js宿主端、client/client.js客户端 bundle(__ModuleLoader__格式)。
卸载
dsh plugin --profile web remove fdtree
开发说明
- 宿主端:
lib/index.js(ESM,Cordis 插件,经webServer注册/fdtree/rpcHTTP JSON-RPC) - 客户端:
client/client.js(手写__ModuleLoader__bundle,同源fetch调用宿主 RPC) - 仓库根目录即插件包根目录:
lib/index.js宿主端、client/client.js客户端 bundle、cordis.patch.yml补丁、package.json包定义(不含演示文件)。
安全说明
- 无外部网络请求:客户端只通过同源
fetch('/fdtree/rpc')与本机 DSH web 服务器通信,不连接任何外部域名;无遥测、无上报。 - 只读工作区:插件只读取当前会话工作区内的文件(带路径越界检查),git 命令(
status/diff/branch)仅在本地运行并受 DSH 沙箱策略约束,从不执行fetch/pull/push。 - 会话隔离:未绑定会话前,所有 RPC 一律拒绝(
NO_SESSION),不会暴露任何路径或文件内容。 - 终端功能:仅在用户显式右键点击时触发,目标目录被限制在工作区内。
- 数据本地化:所有内容都在你自己的浏览器中渲染展示,不会发送到任何服务器。
- 安装即信任:与所有包管理器一样,安装插件等同于执行插件作者代码。请仅从可信来源安装。
License
MIT