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

网页终端面板 wuwuzhige-sudo/dsh-terminal-panel

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

在对话页里直接执行命令并管理远程文件

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

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

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

状态速览

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

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

验证判据与等级说明 →

可信度证据

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

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 21 处,展示前 19 条)
  • 执行外部命令固定命令
    lib/index.js:80
    const out = spawnSync('tailscale', ['ip', '-4'], { encoding: 'utf8', timeout: 5000 })
  • 执行外部命令固定命令
    lib/index.js:91
    const out = spawnSync('ip', ['-4', 'addr', 'show', 'dev', 'tailscale0'], { encoding: 'utf8', timeout: 5000 })
  • 读取本地文件
    lib/index.js:123
    const f = JSON.parse(readFileSync(CONFIG_FILE, 'utf8'))
  • 写入本地文件
    lib/index.js:168
    mkdirSync(DATA_DIR, { recursive: true })
  • 写入本地文件
    lib/index.js:169
    writeFileSync(`${DATA_DIR}/askpass.sh`, '#!/bin/sh\nprintf \'%s\n\' "$SXE_SSH_PASSWORD"\n', { mode: 0o700 })
  • 执行外部命令固定命令
    lib/index.js:205
    child = nodeSpawn('sftp', ['-q', '-b', '-', ...sftpArgs(sshIdentity, target)], { stdio: ['pipe', 'pipe', 'pipe'], env: sshEnv() })
  • 写入本地文件
    lib/index.js:267
    mkdirSync(TMP_DIR, { recursive: true })
  • 写入本地文件
    lib/index.js:269
    if (buf) writeFileSync(tmp, buf)
  • 删除本地文件
    lib/index.js:276
    try { unlinkSync(tmp) } catch (err) { }
  • 执行外部命令来自配置/变量
    lib/index.js:294
    const child = nodeSpawn(BASH, ['-c', script], { cwd: cwd ?? undefined, stdio: ['ignore', 'pipe', 'pipe'] })
  • 执行外部命令固定命令
    lib/index.js:314
    child = nodeSpawn('ssh', [...sshBaseArgs(sshIdentity, resolveTarget(), true), 'exec bash --noprofile --norc'], { stdio: ['pipe', 'pipe', 'pipe'], env:
  • 执行外部命令来自配置/变量
    lib/index.js:610
    proc = nodeSpawn(BASH, ['-c', script], { cwd: state.cwd, stdio: ['pipe', 'pipe', 'pipe'] })
  • 写入本地文件
    lib/index.js:691
    mkdirSync(DATA_DIR, { recursive: true })
  • 写入本地文件
    lib/index.js:692
    writeFileSync(CONFIG_FILE, JSON.stringify({ sshTarget: target, sshIdentity: identity, sshUser: user, sshPassword: password }, null, 2), { mode: 0o600
  • 读取本地文件
    lib/index.js:720
    if (!existsSync(keyPath)) {
  • 读取本地文件
    lib/index.js:724
    const pub = readFileSync(pubPath, 'utf8').trim()
  • 读取本地文件
    lib/index.js:727
    try { auth = readFileSync(authFile, 'utf8') } catch (err) { }
  • 读取本地文件
    lib/index.js:773
    try { buf = readFileSync(tmp) } catch (err) { }
  • 发起网络请求
    lib/client.js:100
    const res = await fetch('/sxec/' + method, {
扫描于 2026/11/5(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 执行主机命令
  • 保持工作目录
  • 命令历史记录

给 DeepSeek Harness(dsh)Web 界面加一个手动终端标签页,能在宿主机上跑命令,支持持久化工作目录、sudo 密码提示和命令历史。现在可以在 Web 界面里直接执行命令行了。

README

由 DeepSeek 最新模型翻译生成
dsh-terminal-panel 在 DeepSeek Harness(dsh)网页对话视图中提供 终端 + SFTP 标签页。直接从浏览器在 harness 宿主机上运行命令——绿字黑底的经典终端外观、持久化的 cwd、sudo 密码提示、命令历史——并通过同一个 SSH 连接在 SFTP 标签页中浏览/传输文件。 终端 功能特性 - 每个对话视图中都有 终端标签页(对话 · 轨迹 · 终端 · SFTP 顺序) - SFTP 标签页紧邻终端——通过同一个 SSH 连接(相同的主机 / 用户 / 密码 / 密钥,无需二次登录)进行文件浏览:浏览目录、上传、下载、创建目录、删除文件和空目录 - 通过 harness 的 subprocess 服务在宿主机上手动执行命令 - 持久化工作目录——普通的 cd 可跨命令生效(cd ..、cd ~/x、相对路径、错误目标的错误提示) - sudo 支持——以 sudo 开头的命令会以 sudo -S 运行;当 sudo 等待输入时,面板会遮蔽密码字段(在底行输入密码并按 Enter) - 命令历史(↑/↓)、Ctrl+C 中断正在运行的命令、清屏、重置目录 - 两种主题——经典绿字黑底和现代黑字白底,通过面板控件旁的按钮切换;选择会在重新加载后保留(localStorage),并同时应用于两个标签页
展开完整文档(README 剩余 1 节)
dsh-terminal-panel

在 DeepSeek Harness(dsh)网页对话视图中提供 终端 + SFTP 标签页。直接从浏览器在 harness 宿主机上运行命令——绿字黑底的经典终端外观、持久化的 cwd、sudo 密码提示、命令历史——并通过同一个 SSH 连接在 SFTP 标签页中浏览/传输文件。

终端

功能特性

- 每个对话视图中都有 终端标签页(对话 · 轨迹 · 终端 · SFTP 顺序)
- SFTP 标签页紧邻终端——通过同一个 SSH 连接(相同的主机 / 用户 / 密码 / 密钥,无需二次登录)进行文件浏览:浏览目录、上传、下载、创建目录、删除文件和空目录
- 通过 harness 的 subprocess 服务在宿主机上手动执行命令
- 持久化工作目录——普通的 cd 可跨命令生效(cd ..、cd ~/x、相对路径、错误目标的错误提示)
- sudo 支持——以 sudo 开头的命令会以 sudo -S 运行;当 sudo 等待输入时,面板会遮蔽密码字段(在底行输入密码并按 Enter)
- 命令历史(↑/↓)、Ctrl+C 中断正在运行的命令、清屏、重置目录
- 两种主题——经典绿字黑底和现代黑字白底,通过面板控件旁的按钮切换;选择会在重新加载后保留(localStorage),并同时应用于两个标签页
- ANSI 转义清理——原始转义序列绝不会到达面板
- 输出上限——512 KiB 滚动缓冲区,因此长时间运行的输出不会撑爆内存

安装

该插件以 dsh profile 插件的形式发布。在运行 dsh web 的机器上:

1. 将包安装到 web profile(git 依赖;pnpm 会解析它)
dsh plugin --profile web add /dsh-terminal-panel

2. 在 profile patch 层中注册插件
cat >> ~/.dsh/profiles/web/cordis.patch.yml /.ssh/dsh-terminal

一次性设置好身份(一条命令,之后无需密码提示):

ssh-keygen -t ed25519 -N "" -f ~/.ssh/dsh-terminal
allow shell access (no port forwarding etc.):
echo "restrict,no-user-rc $(cat ~/.ssh/dsh-terminal.pub)" >> ~/.ssh/authorized_keys
for a remote target, add the same line to the target's authorized_keys
在 SSH 模式下,每条命令执行后都会发出一个完成标记,以便面板知道远程命令何时结束(该标记会从显示中剥离)。
读取 stdin 的命令(例如 sudo -S)会保持 stdin 打开——在面板中输入密码并按 Enter;输入内容会被遮蔽。

安全

⚠️ 此插件会在 harness 主机上执行任意命令。 任何能够访问 /sxec/ 端点的人都可以以目标用户的身份运行命令。

- 仅接受来自回环主机或 trustedHosts 中列出的主机的请求(DNS 重绑定防御)。
- 没有内置身份验证——当将其暴露到 localhost 之外时,请使用反向代理认证层(例如 Caddy basic_auth)保护 Web 服务器本身。
- SSH 密码(如果已配置)存储在用户级 config.json(0600)中,并通过 SSH_ASKPASS 传递给 ssh;在共享机器上优先使用密钥认证。
- 该端点会继承 dsh Web 服务器前端组件的暴露程度:仅将其绑定到回环地址,或在其前面放置一个带身份验证的代理。

工作原理

- 主机端(lib/index.js):一个 dsh 插件,在 harness Web 服务器上注册 /sxec/ 路由族(term-init、term-run、term-send、term-signal、term-reset、term-read、term-config、term-init-key、sftp-init、sftp-list、sftp-mkdir、sftp-rm、sftp-download、sftp-upload)。命令要么通过 node:child_process 在本地运行(绕过 harness 子进程沙箱),要么在配置了 sshTarget 时通过持久化的 ssh -t pty 会话运行;输出会经过 ANSI 清理并缓冲。SFTP 操作会使用相同的凭据启动短生命周期的 sftp -b - 批处理进程。
- 客户端(lib/client.js):在 conversation.view 中注册 终端 和 SFTP 槽位,并通过同源 fetch('/sxec/*') 调用与主机通信(无 WebSocket,无额外端口)。两个标签页共享一个设置面板和一个主题。

开发

git clone /dsh-terminal-panel
edit lib/index.js (host) / lib/client.js (client), then:
systemctl --user restart dsh-web # host changes take effect immediately
client changes need a hard refresh of the page

许可证

MIT
预览分享卡片长什么样 ↓wuwuzhige-sudo/dsh-terminal-panel
分享 · DeepSeek Harness Hub
wuwuzhige-sudo/dsh-terminal-panel

在对话页里直接执行命令并管理远程文件

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