前言¶
用 DeepSeek Harness(DSH)开会话时,右侧 Sidebar 的文件预览通常只能看不能改;要看本地相对远程到底改了哪些文件,往往得切到终端跑 git status 或 git diff,和 Web GUI 里的工作流是断开的。mhxy13867806343 维护的 dsh-plugin-edit-files(当前版本 0.2.0,MIT 许可证)是给 DSH Web GUI 加能力的 Cordis 插件:在预览里直接编辑保存,在侧栏标签页里按上游远程分支列出真正不同的文件,并附带会话顶部的「文件」页签做工作区浏览与管理。它不替代 IDE,也不改你的项目配置。
这是什么¶
插件在 Host 侧注册 /api/edit-files/* 路由,在客户端注入右侧预览、Git 改动标签页和「文件」页签。定位可以概括为 README 里的一句话:在右侧文件预览里直接编辑保存;在侧栏对比本地与远程的 git 差异,只列出真正不同的文件,外加当前工作区的完整文件面板。
维护者与仓库:
- 目录页:https://www.skillhub.cn/plugins/mhxy13867806343/dsh-plugin-edit-files
- GitHub:https://github.com/mhxy13867806343/dsh-plugin-edit-files
核心功能¶
右侧预览直接编辑¶
启用后,文档预览工具栏会出现「编辑」入口,在同一窗口里改文本文件。
- ⌘S / Ctrl+S 保存,Esc 关闭;有未保存修改时会先确认。
- 保存时带上次读到的
mtime:磁盘文件已被外部改过则报冲突,可选「仍然覆盖保存」或「载入磁盘版本」。 - 写盘保留原换行符(LF / CRLF)与 BOM,采用「同目录临时文件 + rename」的原子替换。
- 二进制、超过大小上限或非普通文件会被拒绝并提示。
Git 改动(相对上游远程)¶
只在 git 仓库内生效:从当前目录向上找仓库根;不是仓库时不渲染 git 入口。
对比基准是上游远程分支(例如 origin/main),不是单纯的 git status:已提交未推送、暂存/工作区修改、未跟踪文件都统一与上游比;改回与远程一致的文件会从列表消失。
入口包括(README 列出的五处):工作区分组「⋯」菜单第一行「Git 改动」、会话行 hover 的 git 图标、会话「⋯」菜单、会话头部 git 徽标、右侧文件树工具栏 git 按钮;预览工具栏上的 git 标识仅在当前文件与远程不同时亮起并显示 M/A/D。
列表带状态字母(A/M/D/R/C/T/U)和增删行数;点文件看 unified diff,未跟踪文件显示全文。顶部显示分支与相对上游的领先/落后提交数。列表为空时显示「与远程一致,没有本地改动」。面板开着时每 6 秒自动刷新。
文件面板¶
会话顶部页签条在「对话 / 轨迹」旁增加 「文件」 页签:
- 递归浏览工作区,默认跳过
node_modules、dist、.git等(可切「显示忽略目录」,.git始终不列)。 - 模糊搜索(子序列、大小写无关)、按名称/修改时间/大小排序。
- 新建文件/文件夹、重命名、删除(删目录需勾选递归);点文件在编辑器浮层打开并可保存。
- 每行显示相对远程的 git 状态;前台时每 10 秒静默刷新,增删改与保存后立即重读。
- 多工作区时顶部可切换;选中正常工作区会切到该工作区最近会话并同步文件面板根目录。
安装与启用¶
前置条件:DSH Desktop 或带 Web GUI 的 dsh web profile;Node.js ≥ 22.13.0(package.json 的 engines);Git 改动功能需要本机安装 git。插件无 npm 依赖,不需要 npm install。
从本机目录安装(README 推荐)¶
在 DSH 里通过插件管理器安装,将 target 设为仓库绝对路径:
plugin_manager({ action: "install_bundle", target: "/绝对路径/dsh-plugin-edit-files" })
安装后 bundle 登记进当前 profile,插件列表出现 dsh-plugin-edit-files;若显示关闭,打开开关即可。
装完请重启一次 DSH Desktop(退出再打开,会话记录保留):Host 侧插件模块在进程内缓存,新增 Host 路由需重启才加载;客户端可热更新。若暂不重启,打开「文件」面板且 Host 路由仍为旧版(404)时,面板会提供「重启 DSH」按钮。
从插件市场安装¶
若插件被收录进 DSH Desktop「设置 → 插件市场」可选的索引(如 dsh-market 或 dsh-community-market),可在「插件 → 发现」搜索 dsh-plugin-edit-files 安装。仓库本身不附带市场索引;未收录时用本机目录方式。
典型用法¶
在预览里编辑¶
- 在右侧 Sidebar 打开文本文件预览。
- 点工具栏「编辑」,在浮层中修改,⌘S / Ctrl+S 保存。
- 外部改动导致冲突时,按浮层提示选择覆盖或载入磁盘版本。
- 保存成功后 Git 徽标与「Git 改动」列表会立即刷新。
查看 Git 改动¶
- 在 git 仓库的工作目录里开会话。
- 从会话「⋯」选「Git 改动」,或点会话头部 git 徽标,打开右侧标签页。
- 查看分支、领先/落后与文件列表;点文件看 diff。
- 若会话没有工作区路径,页面会提示「这个会话还没有工作区路径」。
在文件面板管理文件¶
- 点会话顶部 「文件」 页签。
- 搜索、排序,或使用「只看改动」过滤相对远程有变化的文件。
- 在当前目录新建、重命名、删除;点文件进入编辑浮层保存。
配置与 Host 接口¶
可选配置写在 profile 里该 bundle 的 patch config 中(安装前也可改仓库内 cordis.patch.yml;cordis.patch.example.yml 仅作参考,改它不会生效):
| 字段 | 默认 | 说明 |
|---|---|---|
maxFileBytes |
2097152(2 MiB) |
单文件读写上限 |
maxDiffLines |
4000 |
单文件 diff 最多行数 |
maxChangedFiles |
3000 |
改动列表最多条数 |
maxTreeEntries |
20000 |
文件面板一次最多条目 |
treeIgnores |
见 lib/config.js |
默认跳过的目录名 |
Host 路由前缀为 /api/edit-files/*,涵盖 health、git/info、git/changes、git/diff、file/read、file/write、files/tree 等;参数与返回字段见仓库 docs/route-contract.md。
适用场景与注意¶
适合:在 DSH 里快速改小文件、对照远程分支看清「真正还差哪些文件」、不离开 GUI 浏览工作区并做简单文件操作。
务必知晓:
- 插件以当前 DSH 进程权限读写本机文件;安装前应自行查看源码与 MIT 许可证,确认信任维护者与代码。
- 只支持 UTF-8 文本;默认单文件 ≤ 2 MiB;无 LSP、无语法高亮,大改请用 IDE。
- 删除为直接删盘,非回收站;
git不可用时 Host 返回git-unavailable,Git 入口不可用。 - 大仓库可能因
maxChangedFiles、maxDiffLines、maxTreeEntries截断并在响应中标记truncated。 - DSH 生态是「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
排查「按钮没出现」时,README 提供 cordis_inspect_query 对 EditFiles 提供者的 probe、dom、menuSelfTest 等方法;仓库内可运行 node test/host-selftest.mjs 与 node test/client-selftest.mjs 做自检(需本机 git)。
结尾¶
dsh-plugin-edit-files 把「预览里改文件」「相对远程的 Git 差异」和「工作区文件面板」收进 DSH 侧栏,步骤少、行为在 README 里写得很具体。需要安装包或源码时,见 SkillHub 目录页 与 GitHub 仓库。