在侧边栏浏览工作区文件并用编辑器直接修改
38.3/100
综合分
8
GitHub 星标
175
npm 周下载
—/5
用户评分
数据截至 2026/9/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @rose43/dsh-filenpm 源 · @rose43/dsh-file 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · market
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 60 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包@rose43/dsh-file @ 0.2.1
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/31 03:45:27
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 19 处,展示前 11 条)
- 读取本地文件dist/index.js:83
const rootReal = await fs.realpath(root); - 读取本地文件dist/index.js:91
const parentReal = await fs.realpath(parent); - 读取本地文件dist/index.js:173
const st = await fs.stat(target); - 读取本地文件dist/index.js:179
const buf = await fs.readFile(target); - 读取本地文件dist/index.js:189
const dirents = await fs.readdir(target, { withFileTypes: true }); - 读取本地文件dist/index.js:198
const st = await fs.stat(nodePath.join(target, dirent.name)); - 写入本地文件dist/index.js:243
await fs.writeFile(target, content, 'utf8'); - 写入本地文件dist/index.js:262
await fs.mkdir(target, { recursive: true }); - 写入本地文件dist/index.js:273
await fs.rename(fromResolved, toResolved); - 删除本地文件dist/index.js:288
await fs.rmdir(target); - 删除本地文件dist/index.js:291
await fs.unlink(target);
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-typert-protocol@deepseek-ai/dsh-settings@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
界面预览
1 张 · 点击查看大图功能亮点
- 侧边栏浏览工作区文件
- 编辑器直接修改文件
最近更新
在 GitHub 查看全部 →v0.2.12026-09-04
· dsh-file 0.2.1
· 修复
· 兼容 DSH 0.1.2-rc.1:dsh-settings 移除运行时 settingsNamespace() 辅助函数后改用类型层 SettingsNamespace + 字面量命名空间,设置注册不受影响。
· 会话文件链接拦截适配新接缝:DSH 0.1.2-rc.1 起 workspaces.openPath 被移除、聊天视图改为调用 remote.session.openWorkspacePath(访问器挂载的 RPC);新增 patchOpenLinks 双接缝分发(session 优先、workspaces 回退),0.1.1-rc.2 及更早行为不变。
· 文件编辑器视图激活时隐藏对话列两侧的会话宽度调节把手(复用 DSH 轨迹视图的 data-conversation-composer-overlay 机制),不再遮挡编辑器左右边缘。
· 版本
· 0.2.0 → 0.2.1(兼容性修复,patch)。
感谢 @Dave-12138 贡献本版本修复。
v0.2.02026-09-01
· dsh-file 0.2.0
· 新增
· 会话文件链接可用插件编辑器打开(默认关闭):在 headless / WSL2 / 容器等无桌面环境下,点击产物 chip、行内文件引用、工具调用文件行时原生 opener 会静默失效;新增配置 openLinksInEditor,开启后这些链接改为在 dsh-file 编辑器中打开,处理不了的文件自动回退原生打开(服务层替换 workspaces.openPath,一处替换覆盖全部入口)。
· 设置界面:在 DSH「设置 → 插件」内为 dsh-file 新增配置卡片(工作区根目录兜底 + 会话文件链接开关),保存即热生效,无需重启。
· 版本
· 0.1.3 → 0.2.0(scoped 包名 @rose43/dsh-file)。
感谢 @Dave-12138 贡献本版本两项功能。
v0.1.32026-08-24
· dsh-file 0.1.3
· 修复
· 修复:从源码 checkout 用 tsx 运行 dsh 时,fileManager/* RPC 返回 404(插件与仓库内网关解析到不同的 @deepseek-ai/dsh-typert-protocol 实例,@Remote 标记的模块私有 WeakMap 不互通)。新增 ./typert strict host descriptor,由 dsh-typert-loader 以纯数据注册,端点解析不再依赖 SRC 的装饰器标记,兼容 tsx/源码模式(对应 issue #2)。
· 版本
· 0.1.2 → 0.1.3(scoped 包名 @rose43/dsh-file)。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成GitHub ·安装 ·主题导入导出 · FAQ ·反馈 Issues · Releases
English · 简体中文
dsh-file
DeepSeek Harness 的 VS Code 风格文件管理器插件:在 Web 侧边栏浏览当前对话工作区的文件,在中间主区域编辑。
A VS Code-style file manager plugin for DeepSeek Harness Web: browse the current conversation's workspace from the sidebar and edit files in the center column.
截图
侧边栏文件树浏览工作区,点击文件后在中间列「文件」视图中编辑(Monaco 编辑器,语法高亮)。
安装
在 clone 下来的 dsh-file 目录内执行(不是父目录)
cd /path/to/dsh-file
dsh plugin --profile web add .
dsh plugin add 会把包 pnpm-link 进 profile 并追加到 dsh.profile.bundles。重启 dsh web 生效(client 插件元数据按名缓存,重启后重新扫描)。
展开完整文档(README 剩余 1 节)
GitHub ·安装 ·主题导入导出 · FAQ ·反馈 Issues · Releases
English · 简体中文
dsh-file
DeepSeek Harness 的 VS Code 风格文件管理器插件:在 Web 侧边栏浏览当前对话工作区的文件,在中间主区域编辑。
A VS Code-style file manager plugin for DeepSeek Harness Web: browse the current conversation's workspace from the sidebar and edit files in the center column.
截图
侧边栏文件树浏览工作区,点击文件后在中间列「文件」视图中编辑(Monaco 编辑器,语法高亮)。
安装
在 clone 下来的 dsh-file 目录内执行(不是父目录)
cd /path/to/dsh-file
dsh plugin --profile web add .
dsh plugin add 会把包 pnpm-link 进 profile 并追加到 dsh.profile.bundles。重启 dsh web 生效(client 插件元数据按名缓存,重启后重新扫描)。
桌面端(DSH Desktop)安装
桌面端是 deepseek-harness-desktop 项目(包名 dsh-plugin-desktop)。它与 dsh web 使用互相独立的 profile(桌面端用 desktop,dsh web 用 web),插件不会自动共享——只装进 web profile 的插件在桌面端不会出现,设置 → 插件列表里也不会显示:
同样在 dsh-file 目录内执行
cd /path/to/dsh-file
dsh plugin --profile desktop add .
安装后完全退出并重启桌面端(退出应用,不是关窗口),dsh-file 才会出现在侧边栏底部"文件"按钮和设置 → 插件列表中。
注意:不要往 ~/.dsh/profiles/desktop/cordis.yml 里添加插件——桌面端每次启动都会把它重写为空列表 []。插件的正确入口是 profile package.json 的 dsh.profile.bundles + dependencies(dsh plugin add 做的正是这件事)。
从 npm 安装
dsh plugin --profile web add @rose43/dsh-file
或从 Releases 页面下载 tarball 后本地安装(桌面端把 --profile web 换成 --profile desktop):
dsh plugin --profile web add ./rose43-dsh-file-0.2.1.tgz
配置
cordis.patch.yml 中的 root 只是无会话时的兜底根目录(默认 process.cwd())。文件管理器打开时,浏览器会解析当前对话的工作区目录并通过 setRoot 重新固定根目录,因此一般无需改动:
- insert:
- id: '@rose43/dsh-file'
name: '@rose43/dsh-file'yaml
config:
root: !!js process.cwd() # 仅作为打开文件管理器前的兜底根目录
功能
- 侧边栏底部“文件”按钮:点击后侧边栏主体切换为文件管理器(文件树),再点切回工作区/会话列表
- 工作区跟随当前对话:文件管理器打开时自动解析当前会话的工作区目录(SessionHeader.cwd),通过 setRoot 重新固定网关根目录——不再是启动 dsh web 的目录
- 中间列编辑器(视图标签):编辑器注册为中间栏 conversation.view 视图(“文件”标签,与“对话/轨迹”并列)。点击文件后在页面内的会话滚动区(非弹窗)显示并编辑:Monaco Editor(VS Code 同款内核,从 CDN 加载)按扩展名自动语法高亮;CDN 不可达时降级为纯文本 textarea
- Markdown 预览:打开 .md 文件默认渲染为只读预览(marked + GFM:标题/列表/表格/任务列表/代码块),工具栏“主题”按钮旁有 VS Code 风格的预览/源码切换按钮(仅 Markdown 文件显示);模式选择自动记住(localStorage),下次打开沿用
- 主题设置(VS Code 风格):编辑器工具栏“主题”按钮打开设置面板——默认浅色,预设主题用下拉框选择(浅色/深色/One Dark/GitHub),可自定义背景色/文字色/字号(10–28px),实时应用到 Monaco 与编辑器面板(工具条/状态条/标签随背景联动),自动持久化到 localStorage
- 主题导入/导出:像 VS Code 一样把主题保存为 JSON 文件、从文件恢复,方便在不同环境间迁移配色(详见主题导入/导出)
- 编辑与保存:Ctrl+S 或编辑器内“保存”按钮,dirty 标记(●);打开多个文件可在顶部标签条切换、每个标签带 ✕ 关闭
- 文件操作:新建文件、新建目录、重命名、删除(删除需确认,非空目录拒绝)
- 工作区边界:所有路径解析相对当前固定的 root,越界路径被 host 拒绝(含 symlink 逃逸防护)
主题导入/导出
主题设置面板(编辑器工具栏“主题”按钮)支持把当前主题导出为 JSON 文件,或从 JSON 文件导入恢复——和 VS Code 的主题文件机制一致,方便换机器、换环境时迁移你的配色。
导出主题
1. 打开文件编辑器(中间列“文件”视图)。
2. 点击工具栏 主题 按钮,打开主题设置面板。
3. 点击 导出主题,浏览器会下载一个 dsh-file-theme-YYYY-MM-DD.json 文件。
导出的 JSON 同时包含本插件字段与 VS Code workbench colors 字段: json { "name": "dsh-file · One Dark", "type": "dsh-file-theme", "version": 1, "background": "#282c34", "foreground": "#abb2bf", "fontSize": 13,
"colors": {
"editor.background": "#282c34",
"editor.foreground": "#abb2bf"
}
}
导入主题
1. 打开主题设置面板。
2. 点击 导入主题,选择 JSON 文件。
支持的格式:
- 本插件导出的格式(background / foreground / fontSize);
- VS Code 主题 JSON:读取 colors["editor.background"] 与 colors["editor.foreground"](tokenColors 暂不参与,语法高亮沿用 Monaco 内置配色)。
导入成功后配色立即应用并持久化到 localStorage;文件不是有效 JSON 或缺少有效颜色时,面板会给出错误提示。
架构
插件由两半组成,共用包名 @rose43/dsh-file(GitHub 仓库仍为 chengzhi43/dsh-file):
| | Host 半(Node 进程) | Client 半(浏览器 React) |
| 源码 | src/index.ts | src/client/ |
| 构建产物 | dist/index.js(tsc,保留标准装饰器) | dist/client.js(esbuild,ModuleLoader bundle) |
| 职责 | 文件系统 RPC | 侧边栏文件树 + 中间列编辑器视图 |
| 关键 API | class FileManagerGateway extends TypertRemoteService + @Remote() | ctx.slots.register()、ctx.remote.$mount() |
Host ↔ Client 通信(Typert Remote)浏览器不能直接访问文件系统,所以 host 半把文件操作暴露为 RPC 端点(namespace fileManager:listDir / readText / writeText / createFile / createDirectory / rename / delete / stat / resolve / getRoot / setRoot)。客户端通过 ctx.remote.$mount(TYPERT_REMOTE) 挂载调用面,再用 ctx.get('remote.fileManager') 解析服务后调用。setRoot 用于把网关根目录重新固定到当前会话的工作区目录。
关键约束(SRC descriptor 契约):Typert gateway 用 Function.prototype.toString 从方法签名提取 wire 参数名——所以 host 方法必须用扁平参数(listDir(path: string),不是 listDir(input: {...})),参数名即客户端发送的字段名。两半的命名必须一致。
面板切换机制
侧边栏主区域是 sidebar.workspaces 单席位 slot(被工作区浏览器以 priority 0 占用)。插件点击按钮时以 priority: -1 注册自己的 shadow 条目——单席位 slot 渲染 priority 最低的条目,所以文件管理器成为 winner;关闭时注销条目,工作区浏览器自动恢复。文件树点击文件后,编辑器在 conversation.view 注册的"文件"视图里渲染——即中间列会话滚动区(与 chat / trajectory 并列),点会话头部的"文件"标签进入,非弹窗。
依赖解析(重要)
@deepseek-ai/ 包不能在插件自己的 node_modules 里安装副本:@Remote 装饰器标记存在模块级 WeakMap 中,若插件与 api-gateway 各持一份 dsh-typert-protocol 实例,标记互不可见(RPC 会 404)。必须让 Node 解析到 dsh 安装目录的同一实例:
本地开发(本机 dsh 通过 npx 安装时): ln -s ~/.dsh/profiles/node_modules/@deepseek-ai node_modules/@deepseek-ai
dsh 启动时会维护 $DSH_HOME/profiles/node_modules 的扁平 symlink 回退(healProfilesModuleFallback),指向 dsh 安装目录的每个包。生产发布时插件将 @deepseek-ai/ 声明为 peerDependencies,由 profile 提供。
桌面端(deepseek-harness-desktop)注意:
- 桌面端启动时会把 ~/.dsh/profiles/node_modules/@deepseek-ai 重指向 Desktop.app 打包目录(/Applications/DSH Desktop.app/.../app.asar.unpacked/node_modules),该目录裁剪了 .d.ts——保持上面的 symlink 指向 profiles 即可保证运行时与桌面端 api-gateway 同一实例(RPC 正常)。
- 但 tsc 构建会因缺类型失败。tsconfig.json 用 paths 把 @deepseek-ai/* 的编译期类型查找映射到全局 dsh 安装(有完整 .d.ts);运行时 Node 解析不受影响(仍走 node_modules symlink → profiles → 桌面端实例)。若全局 dsh 路径不同,按 tsconfig.json 注释调整。
- 不要在插件目录里跑 npm install:npm 会把 node_modules/@deepseek-ai symlink 解引用成真实目录并破坏 profiles 的 symlink 结构,导致 dsh 启动报 "exists and is not a symlink"。需要装新依赖时,装完重新执行上面的 ln -s。
开发
npm install # esbuild + typescript + 类型
node build.mjs # 构建 host (tsc) + client bundle (esbuild)
node build.mjs --watch # 只 watch client(host 改动需重跑)
构建产物:
- dist/index.js — host 半(Node ESM,tsc 编译以保留标准 stage-3 装饰器;esbuild 会把 @Remote 降级为 legacy 形式导致运行时崩溃)
- dist/client.js — client 半(window.__ModuleLoader__.load({id, factory}) 格式,react 等 seed 词 external)
调试
dsh --profile web --dump-config | grep -A4 dsh-file # 确认插件层已组合
测试 RPC(需 dsh web 运行中)
curl -X POST http://127.0.0.1:3080/api/fileManager/getRoot \
-H 'Content-Type: application/json' \
-d '{"type":"client-request","rpcId":"t","method":"fileManager/getRoot","payload":{"args":{}}}'
常见问题
- RPC 返回 not found:几乎总是 @deepseek-ai/dsh-typert-protocol 双实例问题——检查插件 node_modules/@deepseek-ai 是否是 symlink(ls -la node_modules/@deepseek-ai),不是则按上文建立链接后重启。
- 编辑器空白:Monaco 从 jsdelivr CDN 加载,内网环境需配置本地镜像或等待 textarea 降级。
- 打开的是错误的目录:确认当前会话的工作区目录正确(侧边栏标题显示目录名)。文件管理器打开时自动 setRoot 到当前会话的 cwd;若打开前无会话,则回退到 cordis.patch.yml 的 root。
- 插件改了不生效:host 半改动需重启 dsh web;client 半 bundle 改动后刷新页面即可(rev 变化触发重新加载)。
许可证
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
chengzhi43/dsh-file
在侧边栏浏览工作区文件并用编辑器直接修改
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 22,025未汉化DSH
73.6
新词雷达zhuyansen/new-term-radar
new-term-radar新词雷达
★ 2,049已汉化MCP
72.8
插件生态导航0xsline/awesome-deepseek-harness
安装 贡献指南 DeepSeek Docs 公开插件目录 Issues
★ 1,188已汉化DSH
72.6
技能注册中心iflytek/skillhub
企业级开源智能体技能注册中心——发布、发现并管理组织内可复用的技能包。
★ 5,358已汉化DSH
71.9
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13938 个插件含 PR 收录与…
★ 350已汉化DSH
71.8
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7
这是你的仓库?认领条目