🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

右侧工作区面板 DDDFXYqiming/dsh-side-panel-patched

DeepSeek Harness
DDDFXYqiming52 天前有提交已提供中文文档扫描:含敏感能力

在右侧拖拽面板里浏览文件、审查 Git 并开终端

31.2/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add DDDFXYqiming/dsh-side-panel-patched
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]!
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
数据截至 2026/10/31·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 52 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

⚠︎ 实装验证未通过(unknown · 2026/10/31) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包@dsh-external/dsh-side-panel(未发布到 npm,仅可源码安装)
✓Node 引擎要求 ^22.19 || >=24 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 01:49:32

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件
查看扫描证据(共 26 处,展示前 26 条)
  • 读取本地文件
    lib/index.js:72
    const children = await readdir(target.absolute, { withFileTypes: true });
  • 读取本地文件
    lib/index.js:81
    const info = await stat(resolve(target.absolute, child.name));
  • 读取本地文件
    lib/index.js:114
    children = await readdir(resolve(root, directory), { withFileTypes: true });
  • 读取本地文件
    lib/index.js:149
    const info = await stat(target.absolute);
  • 读取本地文件
    lib/index.js:170
    const body = await readFile(target.absolute);
  • 读取本地文件
    lib/index.js:187
    const body = await readFile(target.absolute);
  • 写入本地文件
    lib/index.js:369
    await writeFile(target.absolute, body.content, "utf8");
  • 启用终端会话(PTY)
    lib/index.js:567
    const terminal = pty.spawn(process.env.ComSpec || "cmd.exe", ["/d"], {
  • 执行外部命令固定命令
    lib/index.js:587
    const terminal = spawn("script", [
  • 读取本地文件
    lib/types/index.js:23
    const children = await readdir(target.absolute, { withFileTypes: true });
  • 读取本地文件
    lib/types/index.js:28
    const info = await stat(resolve(target.absolute, child.name));
  • 读取本地文件
    lib/types/index.js:44
    children = await readdir(resolve(root, directory), { withFileTypes: true });
  • 读取本地文件
    lib/types/index.js:73
    const info = await stat(target.absolute);
  • 读取本地文件
    lib/types/index.js:84
    const body = await readFile(target.absolute);
  • 读取本地文件
    lib/types/index.js:89
    const body = await readFile(target.absolute);
  • 写入本地文件
    lib/types/index.js:191
    await writeFile(target.absolute, body.content, 'utf8');
  • 执行外部命令固定命令
    lib/types/index.js:267
    const terminal = spawn('script', ['-qfec', `stty cols ${cols} rows ${rows}; exec ${shell}`, '/dev/null'], {
  • 读取本地文件
    src/host/index.ts:71
    const children = await readdir(target.absolute, { withFileTypes: true });
  • 读取本地文件
    src/host/index.ts:79
    const info = await stat(resolve(target.absolute, child.name));
  • 读取本地文件
    src/host/index.ts:111
    children = await readdir(resolve(root, directory), { withFileTypes: true });
  • 读取本地文件
    src/host/index.ts:143
    const info = await stat(target.absolute);
  • 读取本地文件
    src/host/index.ts:161
    const body = await readFile(target.absolute);
  • 读取本地文件
    src/host/index.ts:177
    const body = await readFile(target.absolute);
  • 写入本地文件
    src/host/index.ts:353
    await writeFile(target.absolute, body.content, "utf8");
  • 启用终端会话(PTY)
    src/host/index.ts:545
    const terminal = pty.spawn(process.env.ComSpec || "cmd.exe", ["/d"], {
  • 执行外部命令固定命令
    src/host/index.ts:564
    const terminal = spawn("script", [
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-client-runtime
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 右侧拖拽面板
  • 浏览文件
  • 审查Git

DSH Web 右侧工作区面板(分支增强版)

README

由 DeepSeek 最新模型翻译生成
dsh-side-panel-patched DSH Web 右侧工作区面板(文件浏览器 / Git 审查 / 终端)的本地增强版,以 fork 形式维护。 - 上游是 ccq1/dsh-side-panel(BSD-3-Clause,v0.2.0,安装源 github:ccq1/dsh-side-panel)。它提供右侧面板的基础功能,包括文件树、预览、编辑(CodeMirror)、Git 审查与终端(xterm),Node 端暴露 /side-panel/api(文件 / Git / 终端 API) - 本仓库在上游代码上叠加本地增强。改动在源码里带 PATCH(2026-08-14)、PATCH(2026-08-21)、PATCH(2026-08-27) 标记,grep 能直接定位,完整过程翻 git log 就能看到 功能增强(相对上游 v0.2.0) 实现细节都写在源码的 PATCH 标记旁边,git log 里有完整过程,这里只列要点。 - 独立面板挂载。面板放进自己的挂载点,绕开了官方 details 列和 520px 宽度上限。它用 position:fixed 停在右侧,宽度能在 420px ~ 60% 视口之间拖拽,拖出来的宽度会持久保存 - 头部尺寸与官方界面一致。
展开完整文档(README 剩余 1 节)
dsh-side-panel-patched

DSH Web 右侧工作区面板(文件浏览器 / Git 审查 / 终端)的本地增强版,以 fork 形式维护。

- 上游是 ccq1/dsh-side-panel(BSD-3-Clause,v0.2.0,安装源 github:ccq1/dsh-side-panel)。它提供右侧面板的基础功能,包括文件树、预览、编辑(CodeMirror)、Git 审查与终端(xterm),Node 端暴露 /side-panel/api(文件 / Git / 终端 API)
- 本仓库在上游代码上叠加本地增强。改动在源码里带 PATCH(2026-08-14)、PATCH(2026-08-21)、PATCH(2026-08-27) 标记,grep 能直接定位,完整过程翻 git log 就能看到

功能增强(相对上游 v0.2.0)

实现细节都写在源码的 PATCH 标记旁边,git log 里有完整过程,这里只列要点。

- 独立面板挂载。面板放进自己的挂载点,绕开了官方 details 列和 520px 宽度上限。它用 position:fixed 停在右侧,宽度能在 420px ~ 60% 视口之间拖拽,拖出来的宽度会持久保存
- 头部尺寸与官方界面一致。标题栏 44px,tabs 栏 28px,像素级贴合
- Codex 风格梭形拖拽把手
- Windows 原生终端。v0.2.1 使用可选依赖 node-pty 的 ConPTY 支持交互输入、输出和实时调整尺寸;单命令模式走隐藏窗口的 cmd.exe /c。Linux 保留 script PTY,运行期尺寸调整仍返回 applied:false。
- ctx.sessions / ctx.workspaces 服务注入声明补齐。会话切换能被跟踪,文件 tab 按会话分组
- 终端会话归属(PATCH(2026-08-27))。宿主按 owner=sessionId 校验所有 terminal- 动作,轮询、输入、缩放、关闭都绑定打开终端时的那个会话
- 放大按钮在 60% 视口与全宽之间切换,拖拽出的宽度保留
- 多文件 tab 栈。文件树是单例,跟随当前激活的 tab;滚动位置跨 tab 保持;打开第一个文件后自动隐藏「文件」功能 tab;tab 按会话与工作区分组,互不串扰

markdown 预览增强(2026-08-21,PATCH(2026-08-21))

- GitHub 风格排版,亮暗主题自适应。代码围栏用 lezer 做语法高亮,解析器复用插件内置的 CodeMirror,没有新增依赖,每段代码带语言徽标
- mermaid 代码围栏按需渲染成 SVG。渲染引擎从 CDN 懒加载(先 jsdelivr 后 unpkg,mermaid@11.17.0),主题跟随 DSH,切换时重新渲染,输出再过一遍 DOMPurify。离线、CSP 拦截或语法出错时降级回源码视图
- 实现入口在 lib/client.js 的 dfbRenderMarkdown / markdownCss / dfbRenderMermaidBlocks。src/ 是源码,npm run build 由 src/host 与 src/client 构建出 lib/

安装

v0.2.1 已针对 DSH 0.1.2-rc.1 验证。Windows 需要支持 ConPTY 的系统(Windows 10 1809+)及 node-pty 原生组件;Linux 使用 script、stty 和 Bash。pnpm test 同时覆盖终端实际命令输出、归属校验和目录链接边界。

从 GitHub 安装(推荐)
dsh plugin --profile web add github:DDDFXYqiming/dsh-side-panel-patched
本地开发时也可直接使用仓库目录
dsh plugin --profile web add

发布形态

- 插件实际加载 lib/,本包以预构建产物分发。src/ 与 tsconfig.json 是唯一的源码,npm run build 把 host 和 client 一起构建进 lib/(host 侧经 typescript 转译擦类型)。prepare 脚本运行完整 build + check,npm pack 和 GitHub 安装都会重新产出 lib/;pnpm ≥10 首次 git 安装需在 profile 的 pnpm-workspace.yaml 放行:allowBuilds: 下加入 pnpm 打印的本包键
- scoped 包已配置 publishConfig.access: public。所有前端依赖(codemirror / xterm 等)都内联进 bundle,声明在 devDependencies 里,只在构建期使用
- 配置默认值由插件内的 Schemastery Config 提供(maxTextBytes / maxImageBytes / searchMaxResults / terminalTimeoutMs / searchNodeBudget),cordis.patch.yml 不再携带默认值
- /side-panel/api 加了 Host / Origin 回环校验,只接受 127.0.0.1 / localhost / [::1] 来源

已知边界

- Windows 交互终端需要 node-pty 的 ConPTY 原生组件;Linux script 后端只在启动时设置尺寸。
- 面板覆盖官方 detailsCol,官方「工具调用详情」面板会被挡住
- 这是浏览器端插件。改了 lib/client.js 需要强刷页面生效;Node 端 lib/index.js 的改动需要重启宿主
- findFrameParts 用 [data-details-collapsed] / [class="centerCol"] 定位官方布局,hash class 后缀是稳定的。DSH 大版本升级如果改了结构,这里要重新适配

License

MIT(见 LICENSE 文件)。上游 ccq1/dsh-side-panel 原为 BSD-3-Clause,其归属已在 LICENSE 中保留
预览分享卡片长什么样 ↓DDDFXYqiming/dsh-side-panel-patched
分享 · DeepSeek Harness Hub
DDDFXYqiming/dsh-side-panel-patched

在右侧拖拽面板里浏览文件、审查 Git 并开终端

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部