DeepSeek Harness 插件

dsh-ws-files

工作空间文件浏览器:在 dsh web 界面直接查看工作空间目录与文件内容(英文原文)

跳到安装方式

来源信息

GitHub 仓库
zhangxiang1993621/dsh-ws-files
最近更新
2026年8月16日
分类
界面增强
GitHub stars
1
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/zhangxiang1993621/dsh-ws-files
插件名:dsh-ws-files
作者:zhangxiang1993621

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器3 个文件
README.md来源说明 · 只读预览

dsh-ws-files — 工作空间文件浏览器(DeepSeek Harness 插件)

在 DeepSeek Harness 的 Web 前端直接查看/编辑工作空间的文件:树形目录浏览、文件名搜索、系统默认程序打开、在线编辑保存(写前确认)。面板注册进布局的左/右区域(由 dsh-layout 渲染),点击文件会在「对话 / 轨迹」同级的标签页中打开内容。

!plugin !license

功能

  • 布局区域 pane:注册进 layout.left / layout.right(id ws-files),可被 dsh-layout 分配到左侧或右侧区域;随当前会话工作区自动切换
  • 树形目录:工作区根 → 逐层展开/折叠(懒加载),文件夹加粗、显示大小
  • 搜索:按文件名(不区分大小写)搜索,命中可直达
  • 打开:用系统默认程序打开文件/目录
  • 文件标签页:点击文件在「对话 / 轨迹」同级打开标签页(conversation.view)并自动激活、直接进入编辑模式;标签条上直接有 × 可关闭
  • 编辑器高亮:编辑时实时关键词/注释/字符串/数字着色(叠层高亮,不打断输入)
  • 智能缩进Enter 自动缩进(复制上一行并遇 { [ ( 或 Python : 加深一层),Tab 缩进、Shift+Tab 反缩进
  • 自动保存:改动后防抖自动写入(无确认框),状态栏显示 保存中/已保存/失败;Ctrl+S 立即保存
  • 撤销/重做Ctrl+Z 撤销、Ctrl+Y(或 Ctrl+Shift+Z)重做
  • 类 IDE 预览:预览模式带行号、按文件类型做关键词/注释/字符串高亮,按缩进层级折叠代码块(方法体折叠),并按类型设置缩进宽度(tab-size
  • 多工作区切换(下拉选择 workspaceRegistry 中已登记的任一工作区)

架构

文件作用
hostlib/index.jsCordis 插件行:inject ['webServer','fs','workspaceRegistry'],注册 /ws-files JSON 路由
clientlib/client.js浏览器 bundle(__ModuleLoader__ 协议,纯手工编写,仅 external 平台模块):layout.left / layout.right 面板 + conversation.view 文件标签页
声明package.jsondsh.bundle.patch(挂载 host 行)+ dsh.client(客户端声明)+ exports["./client"]

API(host 半)

方法端点说明
GET/ws-files?action=workspaces所有工作区 {id, path}
GET/ws-files?action=list&root=&path=列目录 {name, type, size}[]
GET/ws-files?action=read&root=&path=读文本内容
GET/ws-files?action=stat&root=&path=元信息
GET/ws-files?action=search&root=&q=按文件名搜索(限深 4 层 / 2000 条)
GET/ws-files?action=open&root=&path=系统默认程序打开
POST/ws-files?action=write&root=&path=写文件,body {"content": "..."}(客户端已确认)

安装

# 在 deepseek-harness 仓库目录
node --import tsx/esm apps/cli/src/bin.ts plugin --profile web add file:/绝对/路径/dsh-ws-files
# 或开发期用 link:(改源码只刷新页面即生效)
node --import tsx/esm apps/cli/src/bin.ts plugin --profile web add link:/绝对/路径/dsh-ws-files
# 重启 dsh web 生效

安全设计

  • 路径围栏:所有读写都限制在 workspaceRegistry 已登记的工作区根目录内(realpath 校验,越界返回 403)
  • 写沙箱:写入显式携带 workspace-write + 所选工作区根的沙箱策略(宿主 fs 策略层双重把关)
  • 写前确认:浏览器端保存前弹确认框,用户即审批者;不提供删除端点
  • 只读优先:list / read / stat / search / open 默认可用,write 需用户主动操作

开发备注

  • 客户端 bundle 无构建链:手工维护 __ModuleLoader__ 协议格式,仅 external 10 个平台模块(react / react-dom / @deepseek-ai/cordis / client-ui-* 等),其余代码全部内联
  • 槽位:layout.left / layout.right(布局区域 pane,list 槽,id=ws-files,由 dsh-layout 声明渲染)+ conversation.view(文件标签页,list 槽,id=ws-files-<fileId>,动态注册/注销)