d![]()
dsh-folderead
IdentifiedA right-sidebar file manager for DeepSeek Harness (DSH) · DeepSeek Harness(DSH)的右侧栏文件管理插件。
dsh-folderead
DeepSeek Harness(DSH)的右侧栏文件管理插件:在工作区里浏览、预览、编辑、整理文件,也可以把工作区之外的目录附加进来,让模型与你都能直接读写原文件。
这是 DSH 插件,不是独立的 npm 库。 它通过 DSH 的插件装载机制运行,需要宿主提供
webServer、workspaceRegistry、fs、sandboxPolicy、systemPrompt五项服务,脱离 DSH 无法启动。
安装
需要 DSH 0.2.0-rc.2 或更新,Node.js 20+。
# 从 npm
dsh plugin add dsh-folderead
# 或直接从 GitHub
dsh plugin add github:nipheryang/dsh-folderead
DSH Desktop 也可以从应用内的 Settings → Plugins 安装(该 profile 归应用的插件管理器所有,CLI 在应用运行时不会改动它)。装完重启 dsh web 或应用。
能力
- 树形浏览:目录就地展开,懒加载并按层缓存;悬停与按下时预热下一层。
- 多位置切换:位置胶囊在工作区与已附加目录之间切换,重名目录以父级消歧。
- 附加工作区外的目录:由你在原生目录选择器里亲手选定;其中的文件保持原位,插件直接操作原文件,不复制。
- 引用到对话:把文件或文件夹作为引用放进对话输入框。
- 面板内预览:Markdown(含 GFM 表格)、代码、图片、PDF。PDF 由随包自带的
pdfjs-dist渲染,不依赖宿主的内置阅读器。 - 面板内编辑:带 mtime/size 冲突检查;文件在外部被截断时不给编辑入口,避免保存把内容写短。
- 整理:新建、移动、重命名、导入、导出、删除。删除移入废纸篓,不永久删除。
- 在访达中显示:优先走宿主官方通道,通道不可用时退回
open -R。
权限与安全边界
这个插件能写文件,边界值得读完再装。
- 两类可写位置:已注册的工作区根,以及该工作区已附加的目录。除此之外一律拒绝。
- 附加即授权:附加一个目录,等于同时把该目录的读写权限交给模型。界面上会如实标注这一点;沙箱换根由插件自己的拦截层完成(接管
tools/execute上的write/edit/bash/pwsh)。 - 路径校验:所有读写目标先做词法包含检查,再用
realpath解析最近的已存在祖先,确保软链接不能被用来逃出所在位置。 - HTTP 路由只服务本机:通过 socket 地址、
Host头、同源标记三重校验,只接受本机回环请求。 - 导出需要亲手确认:目标目录必须由你在原生选择器里选定,且请求带
confirmOutside: true。 - 删除没有退路:唯一的删除操作是移入废纸篓,逐项执行,任一项失败立刻中止并点名那一项;没有任何退回永久删除的分支。非 macOS 直接返回
trash-unsupported,同样不退回rm。
平台
- 主要面向 macOS:删除依赖
osascript驱动访达,首次使用可能弹 macOS 自动化授权;在访达中显示依赖open -R。 - 非 macOS 平台可以浏览、预览、编辑、引用,但删除不可用(返回
trash-unsupported)。
开发
源码是纯 JavaScript,无构建步骤,运行时只依赖 Node 内置模块;浏览器半由宿主注入 React。
git clone https://github.com/nipheryang/dsh-folderead.git
cd dsh-folderead
node selftest-client.mjs # 浏览器半离线自测(React/DOM 桩,无需 DSH)
node selftest-secondary-dirs.mjs # 存储层自测
node selftest.mjs # Host 半自测
node selftest-intercept.mjs # 拦截层自测
Host 半与拦截层自测会在主工作区里建夹具目录(故意不放临时区,否则沙箱围栏会无条件放行,"忘了换根"就测不出来)。它们默认取插件目录上三级作为工作区根;克隆到别处时,用环境变量指定:
FOLDEREAD_SELFTEST_ROOT=/path/to/workspace node selftest.mjs
DFM_TEST_PARENT=/path/to/workspace node selftest-intercept.mjs
第三方
vendor/pdfjs/是pdfjs-dist6.3.289的逐字节原样副本(Apache-2.0),来源、版本与文件哈希见vendor/pdfjs/VENDOR.md。- 沙箱换根拦截层与 system prompt 段移植自
dsh-multi-folder@0.3.3(MIT,Copyright (c) 2025 Yutong Zou),完整许可证见LICENSE.dsh-multi-folder.txt。
许可
Comments
Loading…