前言¶
DSH 通常让智能体在服务器工作区中读写文件。如果目标文件在本机,常见做法是先上传、复制,或依赖额外的同步方式;DSH 改完之后,还需要把结果回传到本地。
dsh-local-project 针对这个场景:把本地文件夹导入为服务器 DSH 工作区,并把 DSH 对服务器镜像的修改同步回本地文件夹。
这是什么¶
dsh-local-project 是一个 DSH 插件,由 0xKcyzz 维护,许可证为 MIT。
它的定位是:用户在浏览器中选择本地文件夹,DSH 在服务器端创建对应的工作区镜像;之后 DSH 使用原生工具直接操作服务器镜像,并把文件改动同步回本地。
核心功能¶
下面介绍已核实的几项能力:
- 在「添加工作区」入口选择本地文件夹,自动上传并在服务器创建镜像工作区。
- DSH 使用原生
read、write、edit、glob、bash工具直接操作服务器镜像,无需自定义工具。 - DSH 修改文件后,通过 WebSocket 实时同步回本地。
- WebSocket 断线后会自动重连,并补齐漏掉的变更。
- 「删除项目」只删除服务器副本与工作区记录,不影响本地文件。
- 刷新页面后,可以从服务器恢复项目列表,并重新选择本地文件夹恢复同步。
- 插件提供
/local-project/*HTTP 接口和 WebSocket 推送,支持创建、上传、列出、下载、删除和变更恢复。
安装与启用¶
先执行官方安装命令:
dsh plugin --profile web add github:0xKcyzz/dsh-local-project
安装后需要重启 DSH。重启后,「添加工作区」会打开本地项目导入对话框。
如果本地项目的服务器镜像目录不使用默认位置,可以配置环境变量:
DSH_LOCAL_PROJECT_ROOT
默认值:$DSH_HOME/workspaces
典型用法¶
下面是一个可复现的使用流程:
1、在 DSH 侧边栏或空状态中点击「添加工作区」。
2、输入项目名称,点击「选择文件夹并导入」。
3、在系统对话框中选择本地文件夹。该步骤需要 Chrome / Edge 浏览器授权。
4、首次导入会开始上传文件。完成后,左侧工作区列表会出现「本地项目: 名称」。
5、打开该工作区对话。DSH 操作的是服务器镜像副本,文件改动会自动同步回本地。
适用场景¶
适合这类使用方式:在浏览器中把本机代码或资料交给远程 DSH 直接读写,同时保留本地副本。
它更适合 DSH 侧发起修改的场景。DSH 在服务器镜像中改文件后,变更会推送回本地;本地已有的文件可以随首次导入上传到服务器。
注意事项¶
使用前注意以下限制:
- 需要浏览器支持 File System Access API:Chrome / Edge(含 Chromium)。Firefox / Safari 不支持。
- 单个文件上限约 15MB,上传使用 base64 JSON。超大文件不建议放入项目。
- 不传播单个文件的删除:只有「删除项目」会整包删除服务器副本。本地和服务器各自删除的文件,不会被对面清除。
- 本地改动不会自动上传:只有首次导入会上传本地文件。之后本地手动修改的文件,不会同步到服务器。
- 实时推送需要保持 WebSocket 连接。断线后会自动重连,并补齐漏掉的变更。
- 桌面端 Electron 窗口若 File System Access API 不可用,请用系统浏览器打开 DSH 的 Web 地址。
- 插件会随 DSH 插件机制加载,并以当前 DSH 进程的权限执行相关操作。安装前应检查源码与许可证。
链接¶
GitHub 仓库:https://github.com/0xKcyzz/dsh-local-project