前言¶
2026 年,DeepSeek Harness (DSH) 依然是智能体开发中常用的本地化工具。当使用 dsh --profile web 启动 Web GUI 进行管理时,开发者通常只能通过浏览器查看工作区状态,缺乏直接在本地环境交互的能力。dsh-workspace-native-open 作为一个客户端插件,通过注入菜单项解决了这一痛点,让 Web 界面能够直接触发宿主机的文件操作。
核心功能¶
该插件仅在通过 loopback 地址访问 Web GUI 时生效。在 DSH 的工作区行点击 ⋯ 菜单,会新增三个本机动作:
- 在文件资源管理器打开:调用系统文件管理器(
explorer.exe/open/xdg-open)。支持 WSL 路径的自动翻译。 - 在终端打开:在工作区目录启动新终端窗口。Windows 优先探测
pwsh,其次为powershell;WSL 路径会经过wslpath翻译后交由 Windows 控制台打开;其他平台使用$TERMINAL。 - 在 Code 打开:直接尝试打开目录。插件不检测 VS Code 是否安装,点击后静默忽略失败情况。WSL 下优先使用 Linux 侧的
code脚本。
此外,插件具备以下特性:
- 安全性:仅对
localhost、127.0.0.1、::1以及内建放行的dsh.localhost显示菜单。远程访问或非白名单 Host 头的请求会被拒绝。 - 静默运行:失败时不打扰用户,但所有请求、探测结果和错误日志都会以
workspace-native-open前缀写入 harness 日志。
安装¶
需要使用 Web profile (dsh --profile web)。通过官方命令安装:
dsh plugin --profile web add github:JoeyLearnsToCode/dsh-workspace-native-open
工作原理¶
插件分为宿主侧和客户端侧两部分。
宿主侧在 webServer 服务上注册了 POST /api/plugin/workspace-native-open 端点。该端点会校验 Host 头是否在白名单内,检查请求体长度和超时(413/408),并执行本机打开动作。为了安全,它强制 JSON content-type 并进行 CSRF 防护。
客户端侧通过订阅 webserver/index-inject 事件,向 index.html 注入脚本和样式。脚本在 loopback 域名下激活,通过观察 DOM 中的工作区菜单按钮(依赖 aria-label 识别)和其后的 portal 菜单(点击因果配对)来动态添加菜单项。菜单文案根据 <html lang> 和插件内联的翻译文件生成。
平台细节与注意事项¶
- Windows 终端:使用
where.exe探测pwsh和powershell。注意 Windows 10+ 必带 PowerShell,因此不再保留cmd兜底。Windows 控制台程序使用Start-Process且不能带DETACHED_PROCESS,否则命令会静默退出。 - VS Code 安全:Node ≥ 20.12 拒绝直接 spawn
.cmdshim(CVE-2024-27980)。因此code.cmd通过 PowerShell launcher 调用,插件因此不探测安装状态。 - WSL 行为:在 WSL 上点击「在终端打开」会在翻译后的
\\wsl$路径打开 Windows 控制台,这与文件资源管理器的行为一致。 - 自定义白名单:
dsh.localhost已内建放行。如需放行其他本地域名,需修改src/index.ts中的LOOPBACK_HOSTNAMES并重新构建。 - 日志:所有操作均以
workspace-native-open为前缀记录日志,包括失败原因和退出码。
总结¶
dsh-workspace-native-open 是一个轻量级的 DSH 插件,通过 DOM 注入和宿主端点桥接,实现了 Web 界面与本地文件系统的安全交互。它适合需要在浏览器中管理本地开发环境的用户。