DDSG-X/dsh-workspace-dir
DeepSeek Harness plugin: show the current conversation's working directory in a draggable directory panel with adjustable opacity | DeepSeek Harness 插件:在可拖动、透明度可调的目录面板中显示当前对话的工作目录与文件列表
Listed
0
Ui
Bundle verified
Preview
What it does
Shows the current conversation's working directory in a draggable directory panel with adjustable opacity.
Best for
- Developers who want to inspect the active conversation's working directory without leaving DSH.
- Users who need a draggable, persistent directory browser with adjustable opacity and folder navigation.
- Cross-platform desktop users who want to open listed folders in Finder, Explorer, or a Linux file manager.
Not ideal for
- Users running the npm-installed Harness distribution; the documented peer dependencies may be unavailable there, and source-run Harness is required.
- Users expecting npm package-name installation; the plugin is not published to npm and must be installed from GitHub or a local checkout.
- Conversations without a working directory, where the directory control is not shown.
README
dsh-workspace-dir
一个 DeepSeek Harness 插件:在会话头部加一个 “📁 目录” 按钮,点一下就能弹出 当前对话工作目录的文件/子目录列表——不用切出 harness,边写代码边看项目结构。
点击后你会看到:一个可拖动的浮动面板,列出当前工作目录下的文件和子目录, 支持点击进入子目录,还能用滑杆调整面板背景透明度(0%–100%,默认 20%);每个 文件夹旁有 “↗” 按钮,一键在系统文件管理器中打开它。面板的位置、透明度、 打开/关闭状态都会自动记忆,重启 harness 也不会丢;所有可点击区域有悬停高亮与 按下缩放反馈(高亮度随面板透明度自适应)。
功能一览
- 会话头部”目录”按钮(Feather 风格文件夹图标 + 中文文本)
- 浮动目录面板:可拖动(拖标题栏)、透明度可调(滑杆 0%–100%,默认 20%)、位置/透明度/打开状态自动记忆(重启不丢)
- 点击反馈:所有可点击区域(目录行/↗ 按钮/关闭按钮)悬停高亮 + 按下缩放;高亮度随面板透明度自适应(≤50% 时 +20%,>50% 时 −20%)
- 显示当前会话工作目录 + 文件/子目录列表,缩进分层、支持下钻
- 在系统文件管理器中打开当前文件夹或任意子文件夹(Windows 资源管理器 / macOS Finder / Linux 文件管理器,自动适配)
- 切换会话自动跟随新会话的工作目录;无工作目录的会话不显示
快速开始(最正规,一条命令装完即激活)
环境要求:本插件要求 源码运行的 harness(官方 README 推荐方式)—— npm 安装版(
npx @deepseek-ai/dsh web)的 peer 依赖由源码仓库提供、npm 上不完整, 可能装不上。还需要pnpm(装完 harness 一般已有)。源码运行的 harness,
dsh是工作区脚本而非全局命令,需在 harness 源码目录用pnpm dsh调用;若你的dsh在 PATH 中(全局安装版),直接去掉pnpm前缀。
cd /path/to/deepseek-harness # ← 你的 harness 源码目录(Windows 示例: cd D:\deepseek-harness)
pnpm dsh plugin --profile web add github:DDSG-X/dsh-workspace-dir
装完重启 harness 即生效。生效规则:
-
add / remove(装/卸插件) → 必须重启 harness(loader 的 entry 表是启动时快照,只刷新会
failed to load或 404) - update(更新插件内容) → 刷新页面即可生效(服务端每次请求都重新读 bundle 文件)
更新 / 卸载 / 验证:
pnpm dsh plugin --profile web update dsh-workspace-dir # 更新
pnpm dsh plugin --profile web remove dsh-workspace-dir # 卸载
curl "http://127.0.0.1:3080/dsh-workspace-dir/list?path=<绝对路径>" # 验证:返回 JSON 文件列表即正常
# Windows PowerShell 里 curl 是别名,请用 curl.exe:
# curl.exe "http://127.0.0.1:3080/dsh-workspace-dir/list?path=D:/your/dir"
⚠️ 本项目未发布到 npm:不要用包名安装(
npm install dsh-workspace-dir、dsh plugin add dsh-workspace-dir会因 npm 上找不到该包而失败)。github 源直接 拉取本仓库;离线/本地开发才用file:指向本地克隆目录。不想手动敲命令?对 AI 说一句话即可——见下节「安装:让 AI 帮你」。
安装:让 AI 帮你(推荐新手——本项目的安装就是为这个设计的)
本项目面向完全不熟悉它的 DeepSeek Harness 用户。 你不需要懂插件、依赖、 profile——装好它,只需要对你的 AI 说一句话:
请把 https://github.com/DDSG-X/dsh-workspace-dir 克隆到英文路径,读取项目里的
AI-INSTALL.md,按里面的步骤把dsh-workspace-dir插件安装到我的 harness, 并验证”目录”按钮能正常弹出面板。
AI 会自己完成:克隆仓库 → 读取安装引导(AI-INSTALL.md)→ 判断你的 harness
是源码运行还是 npm 安装 → 检测/初始化 web profile → 把插件装进 profile →
重启 harness → 验证”目录”按钮。它只会在你批准时修改你的 profile 文件;
遇到环境差异,也会按引导里的故障排查表处理,并把结果汇报给你。
引导文件
AI-INSTALL.md为中英双语单文件(英文版在文件后半段,从# English Guide开始);对英文 AI 说: “Clone https://github.com/DDSG-X/dsh-workspace-dir to an English path, read the English section ofAI-INSTALL.md, install the plugin, then verify the Directory button works.”
备选:也可以只做 3 步(仍然让 AI 装)
-
克隆到英文路径(目录名含中文会导致 pnpm 乱码,安装会失败):
git clone https://github.com/DDSG-X/dsh-workspace-dir.git -
在 DeepSeek Harness 里,把克隆下来的目录设为当前工作目录(workspace) —— 这样 AI 才能读到克隆下来的
AI-INSTALL.md并操作这个目录; 不知道怎么设置就问你的 AI,它会带你操作; -
对你的 AI 说:
请读取本项目的
AI-INSTALL.md,按里面的步骤把dsh-workspace-dir插件安装到我的 harness,并验证”目录”按钮能正常弹出面板。
本仓库自带构建产物(
lib/),克隆后无需构建,可直接安装。只有修改源码的开发者才需要重新构建。⚠️ 本项目未发布到 npm:请不要用包名安装(如
npm install dsh-workspace-dir、dsh plugin add dsh-workspace-dir都会因 npm 上找不到该包而失败)。安装用 github 源(pnpm dsh plugin add github:DDSG-X/dsh-workspace-dir,一条命令装完即激活); 离线/开发场景才用file:指向本地克隆目录。
AI 安装效果示例
一个完全不了解插件的用户,实际体验大致是这样(实际输出会因环境和模型而异):
你:请读取本项目的 AI-INSTALL.md,把 dsh-workspace-dir 插件安装到我的
harness,并验证"目录"按钮能正常弹出面板。
AI:
✅ 第 1 步 检测环境
→ 发现 harness 源码 checkout
→ 发现 web profile(已初始化)
✅ 第 2 步 安装插件到 web profile
→ dsh plugin add(github 源)完成,依赖已写入 profile package.json
→ reconcile 自动把插件加入 dsh.profile.bundles(无需手动补行)
→ pnpm install 完成
✅ 第 3 步 重启 harness 并验证
→ 重启完成,端口 3080 就绪
→ 会话标题旁出现"目录"按钮
→ 点击弹出目录面板,显示当前工作目录的文件列表
→ 拖动/透明度/关闭均正常
安装成功!使用方式:打开任意会话 → 点标题旁"目录"按钮。
卸载:告诉我,或按 AI-INSTALL.md 的卸载章节操作。
AI 的语言、命令风格可能不同,但流程一致:检测 → 安装 → 重启验证 → 汇报。 若某一步失败,引导要求 AI 把错误信息带回来,你可以原样转发给维护者。
安装(手动,给想自己动手/了解细节的人)
一般用户不需要看这节——AI 安装(上一节)会自动处理一切。 环境要求与快速开始相同:源码运行的 harness +
pnpm(见「快速开始」)。
本插件是 out-of-tree 插件:依赖 profile 的 hoisted linker,缺失的 peer 依赖(
@deepseek-ai/*、react等)在运行时由 harness 安装提供,不需要也不 应该从 npm 单独安装。profile 的pnpm-workspace.yaml由dsh自动生成,已 含nodeLinker: hoisted与autoInstallPeers: false。
第 1 步:克隆插件仓库
git clone https://github.com/DDSG-X/dsh-workspace-dir.git
cd dsh-workspace-dir
仓库已包含构建产物 lib/(宿主半 lib/index.js + 浏览器半 lib/client.js),无需构建。
第 2 步:安装到你的 web profile
用 harness 的插件管理命令添加依赖(自动写入 profile 的 package.json,
并把插件注册为 profile bundle)。推荐用 github 源,一条命令装完即激活:
# 源码运行 harness:dsh 不在 PATH,需在 harness 源码目录用 pnpm 调用
pnpm dsh plugin --profile web add github:DDSG-X/dsh-workspace-dir
⚠️ 本插件未发布到 npm——不要用包名安装(如
dsh plugin add dsh-workspace-dir或npm install dsh-workspace-dir会失败)。github 源安装直接拉取本仓库; 离线/本地开发场景才改用file:指向本地克隆目录:pnpm dsh plugin --profile web add file:D:/path/to/dsh-workspace-dir。
本插件是 bundle 形态:
package.json声明了dsh.bundle.patch(指向仓库自带的cordis.patch.yml)。pnpm dsh plugin add装完依赖后会自动 reconcile,把插件写进 profile 的dsh.profile.bundles——不需要再手动编辑cordis.patch.yml。
无法用
pnpm dsh调用?也可以手动编辑~/.dsh/profiles/web/package.json,在dependencies里加"dsh-workspace-dir": "github:DDSG-X/dsh-workspace-dir", 然后在 profile 目录执行pnpm install,最后执行pnpm dsh plugin --profile web install触发 reconcile(或手动把dsh-workspace-dir加进 profilepackage.json的dsh.profile.bundles)。
第 3 步:重启 harness
重启 pnpm dsh web(在 harness 源码目录;或双击你的启动器)。重启后:
- 打开任意会话 → 标题旁出现 “目录” 按钮
- 点击弹出目录面板;拖动标题栏移动;滑杆调透明度;
✕关闭
更新插件
pnpm dsh plugin --profile web update dsh-workspace-dir
github 源安装的依赖,pnpm dsh plugin update 会拉取仓库最新代码并触发 reconcile
(仓库自带构建产物 lib/,无需重新构建)。若当初是用 file: 本地路径装的,
则改为在克隆目录 git pull 后重启 harness 生效。
故障排查
| 现象 | 原因 | 解决 |
|---|---|---|
| 按钮/面板不出现 | 插件未加载 | 检查 ~/.dsh/profiles/web/package.json 的依赖和 dsh.profile.bundles 是否都配好,然后重启 |
harness 启动报 duplicate loader entry id: workspace-dir
|
手动 patch 行与 bundle 层重复插入同一 id | 删除 profile cordis.patch.yml 里的手动 workspace-dir 行(bundle 形态会自动注册,手动行会与 bundle 层冲突) |
| 安装时报 peer 依赖版本找不到 | harness 是 npm 安装版 | 改用源码运行的 harness(见手动安装节说明) |
展开报 directory browse failed
|
用了旧版插件 | 更新到最新代码(pnpm dsh plugin --profile web update dsh-workspace-dir,或本地克隆 git pull + 重启) |
| 面板文字不可见 | 旧版用错主题变量 | 更新代码(--dsw-alias-* 已修复) |
卸载
- 从 profile 移除依赖:
pnpm dsh plugin --profile web remove dsh-workspace-dir—— 一条命令会同时移除依赖和dsh.profile.bundles里的 bundle 层; - 重启 harness。
开发
pnpm install # 只安装构建工具(tsdown、react 类型等),不会拉 @deepseek-ai peer
pnpm build # 构建 lib/index.js(Host)+ lib/client.js(Client)
pnpm watch # 监听源码变更并重新构建
类型检查(
tsc)需要@deepseek-ai/*的类型包,它们只存在于 harness 源码 仓库(部分为 vendored),不发布到 npm;如需类型检查,把本仓库作为 harness workspace 成员(packages/extensions/)并在 harness 根目录pnpm install后再跑tsc --noEmit。
项目结构
src/
index.ts # Host 半:webServer JSON 路由 + fs 列目录
client/
index.ts # Client 半:注册"目录"按钮 + 浮动面板插槽
DirectoryPanel.tsx # DirectoryToggle(按钮)+ DirectoryPanel(可拖动/透明度/缩进树)
lib/ # 构建产物(入库,克隆即用)
tsdown.config.ts # 独立构建配置(不依赖 monorepo)
pnpm-workspace.yaml # 独立仓库设置:autoInstallPeers: false
原理
-
Host 半注册
GET /dsh-workspace-dir/list?path=<abs>JSON 路由,用fs服务(resolve+listDir)列出文件与子目录(含类型和大小); - Client 半从会话快照读 cwd,fetch 该路由渲染目录树;
- 挂载点
conversation.session.header.actions+shell.overlay,均replaceRisk: none,零侵入; - 主题用真实 token(
--dsw-alias-*),与 harness 界面一致。
License
MIT
Frequently Asked QuestionsFAQ
Use the verified command dsh plugin --profile default add github:DDSG-X/dsh-workspace-dir in a DSH-enabled shell. The command resolves the public package metadata and keeps the plugin attached to the catalog identity shown on this page.
Compatibility follows the bundle and profile status shown above. If a profile is not detected, keep the plugin disabled there and check the repository documentation before enabling it in production.
The GitHub link and activity metadata are the source of truth for releases and maintenance. Revisit this page after a new release to confirm the catalog has observed the latest version.