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

左栏菜单管理 zhujiuyi/dsh-leftpanel

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

逐项隐藏或显示左侧菜单入口,保持界面清爽

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add zhujiuyi/dsh-leftpanel
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · browser
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 9 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 6 处,展示前 6 条)
  • 读取本地文件
    index.js:120
    const parsed = JSON.parse(await readFile(file, 'utf8'))
  • 写入本地文件
    index.js:137
    await mkdir(dirname(file), { recursive: true })
  • 写入本地文件
    index.js:139
    await writeFile(temp, `${JSON.stringify(next, null, 2)}\n`, 'utf8')
  • 写入本地文件
    index.js:140
    await rename(temp, file)
  • 发起网络请求
    client/client.js:438
    const response = await fetch(STATE_PATH, {
  • 发起网络请求
    client/client.js:455
    const response = await fetch(STATE_PATH, {
扫描于 2026/10/31(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DSH 左侧面板插件

README

由 DeepSeek 最新模型翻译生成
dsh-leftpanel · 左栏菜单管理 DeepSeek Harness 插件:列出所有可以出现在左侧菜单里的功能,逐个隐藏或显示。 入口在 设置 → 左栏菜单,不占用左侧菜单本身。 左侧菜单里能出现的每一项都由插件注册而来。装上本插件后,设置里会多出一个「左栏菜单」分区,把当前所有面板入口列成一张表,每一项后面带一个开关: - 面板入口 —— 插件注册到 sidebar.panellist 的条目(插件、自动化任务、 Token 用量、MCP 服务……),可逐项隐藏或显示。 - 固定控件 —— 侧边栏外壳自己的座位(新建会话、工作区/会话列表、设置、底部控件、品牌标记)。它们不经过面板注册,因此只列出、不提供开关。 隐藏只改变左侧入口的可见性:被隐藏的功能仍然完整注册在布局服务里,通过命令、快捷键或其他入口照常可以打开。 本插件故意不占用左侧菜单:一个管理菜单的插件自己去挤那个菜单,只会给用户想清理的列表再添一行。
展开完整文档(README 剩余 1 节)
dsh-leftpanel · 左栏菜单管理

DeepSeek Harness 插件:列出所有可以出现在左侧菜单里的功能,逐个隐藏或显示。
入口在 设置 → 左栏菜单,不占用左侧菜单本身。

左侧菜单里能出现的每一项都由插件注册而来。装上本插件后,设置里会多出一个「左栏菜单」分区,把当前所有面板入口列成一张表,每一项后面带一个开关:

- 面板入口 —— 插件注册到 sidebar.panellist 的条目(插件、自动化任务、 Token 用量、MCP 服务……),可逐项隐藏或显示。
- 固定控件 —— 侧边栏外壳自己的座位(新建会话、工作区/会话列表、设置、底部控件、品牌标记)。它们不经过面板注册,因此只列出、不提供开关。

隐藏只改变左侧入口的可见性:被隐藏的功能仍然完整注册在布局服务里,通过命令、快捷键或其他入口照常可以打开。

本插件故意不占用左侧菜单:一个管理菜单的插件自己去挤那个菜单,只会给用户想清理的列表再添一行。

安装

在 desktop(或任意)profile 目录里
pnpm add link:E:/dsh-plugin/dsh-leftpanel

再把包名加进 profile 的 package.json → dsh.profile.bundles:

{
"dsh": {
"profile": {
"bundles": ["@zhujiuyi/dsh-leftpanel"]
}
}
}

重启 DSH 后,打开 设置,左栏标签列里会出现「左栏菜单」。

它怎么工作

两个半边:

| 半边 | 文件 | 职责 |
| Host | index.js | 把「哪些入口被隐藏」持久化到 Harness home 下的 left-panel.json,并提供 GET/POST /api/left-panel/state |
| Browser | client/client.js | 向设置页的 settings.section 列表注册「左栏菜单」分区,并把隐藏状态应用到侧边栏行上 |

为什么需要 Host 半边。 隐藏集合必须在首屏绘制前就能读到,而且要跨重启保留。
放在 Host 侧意味着每个 profile 只有一份权威状态,浏览器侧读到的就是它。

左栏行是怎么被隐藏的。 侧边栏外壳拥有自己的行列表:它为 sidebar.panellist 的每个存活条目渲染一行,本身没有「隐藏」概念,而注销别的插件的注册也不是本插件该做的事。本插件做的是一次表现层的处理:找到外壳那个行列表( 下直接挂着面板按钮),按与外壳完全相同的排序规则把行与条目投影对齐,再用行的可访问名称交叉校验,给命中的行打上 data-dsh-leftpanel-hidden,由本插件样式表里的一条规则把它变成 display:none。

这样做的好处是:别的插件组件保持挂载、状态不丢;而且能自愈——MutationObserver 会在外壳重新渲染(切换语言、折叠/展开、插件迟到加载)时重新应用标记。当行数与投影不一致或名称对不上时,只处理名称精确匹配的行,退化成「不隐藏任何行」,而不会隐藏错行。

持久化。 localStorage 只作首屏镜像,让第一次绘制就隐藏正确的行;Host 侧的 left-panel.json 才是权威。每次开关都会乐观写入并回报失败。

存储

<DSH home>/left-panel.json(默认 ~/.dsh/left-panel.json):

{
"version": 1,
"hidden": ["plugins", "token-dashboard"]
}

损坏的文件不会让页面报错:它降级为「什么都没隐藏」,并在日志里告警一次。

开发

node --check index.js && node --check client/client.js
node --test "test/*.mjs"

两组自检,共 24 项:

- test/client-selfcheck.mjs —— 模块加载器契约、只注册设置分区(且不注册左侧行)、t 由 locale 座位提供而非 inject 注入、双语文案键一致、样式表不含远程资源、Host 侧路由注册与 left-panel.json 的真实读写(含损坏文件与并发写入)。
- test/dom-pass.mjs —— 用真实 DOM 结构验证隐藏处理:命中的行被标记、未命中的不被标记、按 order 对齐、行数不一致时退化为名称匹配、名称不一致时宁可不隐藏。

许可

MIT
预览分享卡片长什么样 ↓zhujiuyi/dsh-leftpanel
分享 · DeepSeek Harness Hub
zhujiuyi/dsh-leftpanel

逐项隐藏或显示左侧菜单入口,保持界面清爽

回到顶部