其他
完整应用
deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
DeepSeek Harness(DSH)Web UI 的文件浏览器:不离开聊天界面就能浏览工作区文件、预览与编辑内容,面板可停靠、可浮动。
node_modules、.git 等(可切换显示)~/.dsh-file-explorer-trash/)0.1.0-rc.6,Windows(路径处理按 Windows 习惯)npm install -g pnpm)dsh plugin --profile web add github:Zalpha263/dsh-file-explorer
dsh plugin --profile web add dsh-file-explorerdsh plugin --profile web update/remove dsh-file-explorerDSH 旧版本没有 dsh plugin 流程,需要把本包复制到两处并手工注册:
$DSH_HOME/profiles/<profile>/node_modules/dsh-file-explorer<npmRoot>/@deepseek-ai/dsh/node_modules/dsh-file-explorer$DSH_HOME/profiles/<profile>/cordis.patch.yml 追加注册行:- insert:
- id: file-explorer
name: dsh-file-explorer
| 控件 / 操作 | 作用 |
|---|---|
| 右侧 / 中间 / 浮动 | 停靠模式切换;「右侧/中间」模式拖边缘调整宽度 |
| 标题栏拖动 | 浮动模式下拖动面板位置 |
| 面板四边 / 四角 | 浮动模式下自由调整大小 |
| ↻ 刷新 | 重新加载当前目录 |
| 👁 隐藏 | 显示 / 隐藏 node_modules、.git 等条目 |
| 预览区上方分隔条 | 拖动调整预览区高度 |
| 点目录 / 点文件 / ✕ | 展开目录 / 打开文件预览 / 关闭预览 |
Ctrl+S 保存、Esc 退出;保存带版本检测,编辑期间被外部改动会拒绝保存txt / md / py / js / json / ts / html / css 模板)、新建文件夹、重命名、复制、粘贴(同名自动加后缀)、复制绝对 / 相对路径、删除(确认后移入回收站)dsh plugin --profile web remove dsh-file-explorer
重启 DSH 后插件不再加载,面板消失,无残留。
| 问题 | 原因与解决 |
|---|---|
| 点「📁 文件」没有出现面板 | 多为页面缓存或渲染异常:先硬刷新(Ctrl+F5);仍不行则重启 DSH |
| 树里显示红色错误行 | 该路径当前不可读(权限 / 已删除);点「↻ 刷新」重试 |
| 保存文件提示「文件已改变」 | 该文件在编辑期间被其它程序修改;重新载入后再保存 |
| 删除的文件去哪了 | 系统回收站;不可用时落内置回收站 ~/.dsh-file-explorer-trash/(自动清理:保留 30 天、最多 200 条) |
| 复制到剪贴板失败 | 浏览器在非安全上下文禁用剪贴板 API(本机 localhost 通常可用);可改用右键「复制」内部剪贴板 |
| 面板位置跑出屏幕 | 清除浏览器该站点的 dsh-file-explorer:* localStorage 键后重新打开 |
| 与旧版 / 临时版插件冲突 | v1.2.0 起通过官方 bundle 只安装一个实例即可,移除其它副本 |
0.1.0-rc.6;Windows / macOS / Linux(路径分隔符、大小写敏感、回收站策略均按平台自适应).pI_x6G_frame 等)针对该版本的客户端产物编写,DSH 大版本升级后可能需要复核@deepseek-ai/dsh-typert-protocol(peer 依赖)——不要单独安装该包的独立副本,否则 Remote 桥会失效fs/promises 执行——这是刻意设计(用户手动操作的文件管理器),但不受 DSH 的 read-only / workspace-write 策略约束,请勿在不可信环境下使用node_modules)整目录复制 / 跨设备移动会较慢,属正常现象lib/index.js):FileExplorerService 注册 fileExplorer 远程服务(fsList / fsRead / fsWrite / fsCreate / fsRename / fsCopy / fsDelete / fsMove / wsRoot / wsList);读操作走 DSH fs 服务,写操作 node:fs/promises 直连;删除按平台走 PowerShell / osascript / gio trash,失败落内置回收站(30 天 / 200 条自动清理);fsMove 处理跨设备(EXDEV)复制 + 删除回退;agent/status + session/event 维护最近活跃工作区lib/client.js):__ModuleLoader__.load 加载;ctx.remote.$mount 自挂载 fileExplorer 命名空间;零 React hooks(原生 DOM 渲染);路径拼接 / 相对路径 / 大小写比较按 platform 自适应;检测到 ui-beautify 的 dock 服务时注册为插件面板dsh plugin --profile web update dsh-file-explorerdata-vsc-dragging)暂停工作区跟随与目录树重建,避免拖动面板/停靠卡时树重渲染造成偶发卡顿。dock 存在时,标题栏不再注册「📁 文件」按钮(入口统一为「🧩 插件面板」,会话日志按钮旁),面板在两种模式下都由插件面板宿主渲染(卡片模式停靠卡 / 经典模式右侧停靠与浮动);自带的经典三档面板退役(仅 ui-beautify 缺失时启用);dock 面板宿主(卡片模式生效时)自动注册为停靠卡标签面板:点「📁 文件」在停靠卡中打开,支持 ⧉ 浮动 / 回停靠 / × 关闭,按钮高亮与面板开关实时同步;applyDock 打开时对保存坐标做视口夹紧(复用拖拽时的 clampFloatPos),窗口 resize 时也自动重新夹紧;localStorage.removeItem('dsh-file-explorer:pos') 后刷新。fsRead 改用流式读取(streamText),按字符数截断,>512KB 文件正确显示「已截断」;FS_NOT_TEXT 信号(原 includes('\0') 是死代码),二进制文件显示「无法预览」而非报错;(1) 开始(与文档一致);重命名/缓存清理大小写比较按平台自适应;toAbsolute 支持 UNC 网络路径;保存后预览 size 即时更新;拖拽增加 document 级兜底清理;移除子菜单死代码,回收站命令统一 runShell 执行器。onDrop 中先清空了 dragSrcPath 再调用依赖它的合法性校验,导致 drop 永远被拒绝;校验改为接收显式源路径参数。dragover 维护(不再因行内子元素 enter/leave 抖动而闪烁或难触发),dragleave 只在真正离开行时取消;拖到自身 / 子目录 / 原目录时保持系统禁止光标且不高亮——高亮 = 可以放下,识别一目了然。gio trash(XDG),均带内置回收站兜底 ~/.dsh-file-explorer-trash/;\ 导致非 Windows 新建、重命名、粘贴、删除全部失效);fsCopy 目录复制进自身会无限递归、点文件(.env)复制后丢点前缀;fsRename 增加自嵌套防护;(1) 后缀)/ 复制绝对与相对路径;fsWrite / fsCreate / fsRename / fsCopy(node:fs/promises 直连,不走沙箱围栏——见「兼容性」)。dsh.bundle.patch + 自带 cordis.patch.yml);@deepseek-ai/dsh-typert-protocol 改为 peerDependency——与 gateway 共享同一模块实例(Remote 标记的 WeakMap 按模块实例隔离,独立副本会导致桥接失效)。$mount 自挂载 fileExplorer 命名空间(v1 因 inject: ["remote.fileExplorer"] 等待一个无人挂载的服务而永远 pending);ctx.get("remote.fileExplorer") 访问(属性访问在自挂载场景会抛错并导致面板条目崩溃退役);TypertRemoteService 自动注册(服务 + typertRemote 绑定一步完成);remote.fileExplorer 而加载失败的问题,已被 v1.1.0 取代。MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。