在浏览器里管理本机服务、文件与软件包
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/11 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add lsl1931/dsh-server-panel该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · market
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 24 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 47 处,展示前 36 条)
- 读取本地文件lib/index.js:33
return JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8")).version ?? "0.0.0"; - 发起网络请求lib/client.js:300
const response = await fetch(url, init); - 发起网络请求lib/client.js:1140
fetch(`${BASE}/files/upload?${query}`, { method: "PUT", body: file, cache: "no-store", credentials: "same-origin" }).then(async (response) => { - 执行外部命令来自配置/变量lib/exec.js:35
child = execFile( - 读取本地文件lib/files.js:75
real = await realpath(abs); - 读取本地文件lib/files.js:93
realDir = await realpath(path.dirname(abs)); - 读取本地文件lib/files.js:103
const st = await lstat(target); - 读取本地文件lib/files.js:105
const linkReal = await realpath(target); - 读取本地文件lib/files.js:124
st = await stat(resolved.path); - 读取本地文件lib/files.js:131
names = await readdir(resolved.path); - 写入本地文件lib/files.js:224
await writeFile(resolved.path, text, "utf8"); - 写入本地文件lib/files.js:268
await pipeline(readable, createWriteStream(temp, { flags: "wx", mode: 0o644 })); - 写入本地文件lib/files.js:269
await rename(temp, target); - 删除本地文件lib/files.js:271
await rm(temp, { force: true }).catch(() => {}); - 写入本地文件lib/files.js:282
await mkdir(resolved.path); - 写入本地文件lib/files.js:299
await rename(from.path, dest.path); - 删除本地文件递归lib/files.js:329
if (recursive) await rm(resolved.path, { recursive: true, force: false }); - 删除本地文件lib/files.js:330
else await rmdir(resolved.path); - 删除本地文件lib/files.js:332
await rm(resolved.path, { force: false }); - 写入本地文件lib/fsroot.js:184
await writeFile(stage, text, { mode: 0o600 }); - 删除本地文件lib/fsroot.js:195
await rm(stage, { force: true }).catch(() => {}); - 写入本地文件lib/fsroot.js:252
await pipeline(readable, createWriteStream(stage, { mode: 0o600 })); - 删除本地文件lib/fsroot.js:265
await rm(stage, { force: true }).catch(() => {}); - 读取本地文件lib/metrics.js:37
return readFileSync(path, "utf8"); - 读取本地文件lib/metrics.js:298
export function countProcesses(listDir = () => readdirSync("/proc")) { - 读取本地文件lib/packages.js:72
indexUpdatedAt = statSync("/var/lib/apt/lists").mtimeMs; - 执行外部命令固定命令lib/sudo.js:123
return spawn("sudo", ["-n", ...argv], { stdio: ["ignore", "pipe", "pipe"] }); - 删除本地文件递归build.mjs:19
rmSync(libDir, { recursive: true, force: true }); - 写入本地文件build.mjs:20
mkdirSync(libDir, { recursive: true }); - 读取本地文件build.mjs:22
const pkg = JSON.parse(readFileSync(join(root, "package.json"), "utf8")); - 读取本地文件build.mjs:26
const hostModules = readdirSync(srcDir, { withFileTypes: true }) - 写入本地文件build.mjs:36
copyFileSync(join(srcDir, name), join(libDir, name)); - 读取本地文件build.mjs:41
const body = readFileSync(join(srcDir, "client", "index.js"), "utf8"); - 写入本地文件build.mjs:55
writeFileSync(join(libDir, "client.js"), wrapped); - 读取本地文件build.mjs:59
const entry = readFileSync(join(libDir, "index.js"), "utf8"); - 读取本地文件build.mjs:64
readFileSync(target);
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 资源总览
- systemd服务管理
- 文件管理器
README
由 DeepSeek 最新模型翻译生成dsh-server-panel
把 DSH WebUI 变成本机服务器运维控制台:侧栏一枚「服务器」图标,点开是整页面板。
不新开端口、不引 nginx、不需要图形界面——插件挂在 dsh 自己的 Web 服务与 UI 上,自动继承它的认证、主题、暗色模式与语言。
浏览器(经你的 SSH 隧道) └── 127.0.0.1:3080 dsh web ├── DSH 原有 UI └── dsh-server-panel ├── Client 半:左导航面板(总览/服务/文件/日志/软件包/网络)+ 命令面板 └── Host 半:26 条 /dsh-server-panel/* 路由 + 采样器 + root 通道
界面(v2)
顶栏:主机名 · 发行版/负载/内存摘要 · 命令面板(⌘K / Ctrl+K)· 自动刷新开关 · root 身份胶囊。
左导航:总览 / 服务 / 文件 / 日志 / 软件包 / 网络。
展开完整文档(README 剩余 1 节)
dsh-server-panel 把 DSH WebUI 变成本机服务器运维控制台:侧栏一枚「服务器」图标,点开是整页面板。 不新开端口、不引 nginx、不需要图形界面——插件挂在 dsh 自己的 Web 服务与 UI 上,自动继承它的认证、主题、暗色模式与语言。 浏览器(经你的 SSH 隧道) └── 127.0.0.1:3080 dsh web ├── DSH 原有 UI └── dsh-server-panel ├── Client 半:左导航面板(总览/服务/文件/日志/软件包/网络)+ 命令面板 └── Host 半:26 条 /dsh-server-panel/* 路由 + 采样器 + root 通道 界面(v2) 顶栏:主机名 · 发行版/负载/内存摘要 · 命令面板(⌘K / Ctrl+K)· 自动刷新开关 · root 身份胶囊。 左导航:总览 / 服务 / 文件 / 日志 / 软件包 / 网络。 | 页面 | 能力 | | 总览 | 异常横幅(failed 单元、磁盘 ≥85%、内存 ≥90%、负载超核数、可升级包)→ CPU/内存/磁盘/系统四张 KPI 卡 → 常用服务快启(可收藏)→ 本次会话操作事件流 | | 服务 | 分组(失败/运行中/开机自启/全部)+ 搜索;行内启停重启;右侧抽屉看状态与实时跟随的 journalctl 日志 | | 文件 | 面包屑 + 常用位置书签;列表(名称/大小/时间/权限/属主);覆盖层大编辑器(mtime 冲突检测);上传/下载/新建/重命名/删除/chmod/chown | | 日志 | 按单元 + 关键字过滤,实时跟随,行数可选(100–1000) | | 软件包 | apt 模拟升级得出的可升级列表(当前 → 候选)、单包/全部升级、刷新索引、已安装查询 | | 网络 | 网卡卡片(IP + 实时速率)、监听端口(root 时含全部进程名)、已建立连接 Top、防火墙现状 | 命令面板覆盖:跳页、解锁/锁定 root、刷新、暂停轮询、打开 /etc、打开 /var/log、刷新 apt 索引、升级全部。 权限模型 未解锁 ──[面板里输入 sudo 密码]──▶ 已解锁(root 身份,可一键锁定) ├ 文件:白名单(~、/etc、/var/log…) ├ 文件:全盘可读可写 ├ 日志:仅本用户可见 ├ 日志:全量 ├ 服务:只读 ├ 服务:启停/重启/自启 └ 软件包:只读 └ 软件包:更新/升级 - 解锁后所有模块的请求自动带 root=1,不再逐模块判断;未解锁时点到需要权限的操作会直接弹解锁框,解锁后自动重试。 - 写系统目录(/etc /boot /usr /lib /bin /sbin /var/lib)必须二次确认;关键目录(/、/etc、/usr、/home …)拒绝删除。 - 密码只写进 sudo -S 的 stdin,只存 dsh 进程内存;锁定、空闲 10 分钟、插件卸载即清除并 sudo -k。错误信息归一化,不回传 PAM 细节。 - 端口仍只监听 127.0.0.1,走你的隧道;不要把 3080 暴露到局域网。 路由 | 方法 | 路径 | 说明 | | GET | /health /overview | 插件自述 / 资源快照 | | GET | /services /services/logs | 单元列表 / journalctl | | POST | /services/action | start/stop/restart/reload/enable/disable(需 root) | | GET/POST | /sudo/state /sudo/unlock /sudo/lock | 身份通道 | | GET/PUT/POST | /files/list /read /write /download /upload /mkdir /rename /delete /chmod /chown /roots | 文件管理(root=1 走 root;confirm=1 过系统目录闸门) | | GET | /packages/upgradable /packages/installed | apt 查询 | | POST | /packages/update-index /packages/upgrade | 需 root | | GET | /network/overview /network/listeners /network/connections | 网卡/端口/连接 | 目录 src/index.js Host 入口:配置、采样器、sudo 会话、路由注册 src/routes.js 26 条路由:root 切换 + 系统目录闸门 + 错误码映射 src/fsroot.js root 文件传输层(sudo -n find/cat/cp/mv/rm/chmod/chown) src/files.js 普通身份文件服务(白名单 + realpath + mtime 乐观锁) src/metrics.js /proc 采样(CPU/内存/磁盘/网络/进程) src/services.js systemctl / journalctl 封装 src/packages.js apt 模拟升级解析、索引刷新、升级 src/network.js ip -j addr / ss 解析 src/sudo.js 内存态 sudo 会话(unlock/runRoot/spawnRoot/lock/dispose) build.mjs 零依赖构建:src/.js → lib/.js,客户端包进模块加载器工厂 安装与迭代 node build.mjs # 构建 node test/run.mjs # 10 个测试文件、90+ 断言 安装:plugin_manager → install_bundle,target = 本目录绝对路径 重要:Host 半是 Node 模块,同一路径的模块在同一进程里只会求值一次——改了 src/.js 之后必须重启 dsh(电源按钮)才会加载新世代;只改 cordis.patch.yml 的 config 会即时生效。客户端半由页面加载,重启后一并刷新。 License MIT © 2026 lsl1931 — 仓库:<https://github.com/lsl1931/dsh-server-panel> 这个插件能在解锁后以 root 操作本机(改系统配置、启停服务、开 root 终端)。 请只在本机或可信隧道后面运行它,不要把端口直接暴露到公网。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
lsl1931/dsh-server-panel
在浏览器里管理本机服务、文件与软件包
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 22,025未汉化DSH
73.6
新词雷达zhuyansen/new-term-radar
new-term-radar新词雷达
★ 2,049已汉化MCP
72.8
插件生态导航0xsline/awesome-deepseek-harness
安装 贡献指南 DeepSeek Docs 公开插件目录 Issues
★ 1,188已汉化DSH
72.6
技能注册中心iflytek/skillhub
企业级开源智能体技能注册中心——发布、发现并管理组织内可复用的技能包。
★ 5,358已汉化DSH
71.9
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13938 个插件含 PR 收录与…
★ 350已汉化DSH
71.8
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7
这是你的仓库?认领条目