在 DeepSeek Harness(DSH)的 Web GUI 中,智能体在会话工作区中处理文件时,往往需要跳转至终端或外部编辑器进行查看和版本控制。dsh-workspace-files 插件为会话视图增加了“文件”标签页,直接在浏览器中提供目录浏览和类 VS Code 的 Git 操作。
核心功能¶
该插件主要提供以下能力:
- 目录树浏览:支持懒加载和隐藏文件弱化显示。
- 文件查看:支持 UTF-8 文本和二进制识别,超大文件会自动截断。
- Git 集成:显示文件状态角标(M/A/D/R/?)及行级 diff。
- Git 源代码管理:支持暂存/取消暂存/放弃更改/提交/拉取/推送/分支切换。
- AI 生成提交信息:利用当前会话模型根据 diff 自动生成提交信息。
- 主题自适应:与 DSH 整体主题保持一致。
- 安全隔离:限制操作范围在会话工作区根目录内,防止路径穿越。
- 优雅降级:非 Git 目录或缺失 git 时自动退化为纯文件浏览模式。
安装¶
使用 DSH CLI 安装插件:
dsh plugin --profile web add github:sqfcyily/dsh-workspace-files
安装后重新打开 DSH Web GUI,在会话视图顶部会出现“文件”标签。
使用方法¶
- 在 Web GUI 中进入任意会话,点击顶部的“文件”标签。
- 浏览左侧目录树:点击目录展开,点击文件查看内容。
- 在“更改”区将文件暂存,或在“暂存的更改”区进行操作。
- 提交:输入提交信息,或点击 AI 生成按钮,按
Ctrl/⌘+Enter快捷提交。 - 推送与分支:通过工具栏的拉取/推送按钮和分支下拉菜单操作。
- 放弃更改:点击
↩放弃更改,需在弹出的确认框中确认(此操作不可撤销)。
安全与实现细节¶
- 操作范围:所有文件系统和 Git 操作严格限制在当前会话的工作区根目录内。尝试路径穿越会返回 403。
- 符号链接:插件不跟随符号链接,按自身类型上报。
- 二进制处理:前 8000 字节包含 NUL 的文件会被识别为二进制,不返回内容,仅返回
binary: true标记。 - 请求方法:只读浏览(列表、读取、diff)走
GET请求;Git 写操作(暂存、提交、推送等)走POST请求。 - Git 调用:Git 命令通过
execFile直接调用,不经过 shell,避免命令注入风险。 - 破坏性操作:放弃更改(discard)需二次确认,执行后不可撤销。
生态背景¶
DeepSeek Harness 遵循“一切皆插件”的理念。该插件维护于社区,不属于 DeepSeek 或幻方官方应用商店。