SSH 远程执行智能体,集成终端与安全护栏
29.7/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/artemiroshnichenko/dsh-plugins.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 45 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-plugins-monorepo(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/21 23:55:17
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 42 处,展示前 42 条)
- 读取本地文件packages/dsh-env/src/index.ts:39
const pkg = JSON.parse(readFileSync(pkgPath, "utf8")); - 执行外部命令来自配置/变量packages/dsh-git/src/git.ts:28
child = spawn(file, args, { - 读取本地文件packages/dsh-git/src/git.ts:329
content = await readFile(excludeFile, 'utf8'); - 写入本地文件packages/dsh-git/src/git.ts:334
await mkdir(join(repoRoot, '.git', 'info'), { recursive: true }); - 写入本地文件packages/dsh-git/src/git.ts:335
await appendFile(excludeFile, '\n.dsh\n.dsh/\n'); - 写入本地文件packages/dsh-git/src/git.ts:386
await mkdir(baseWorktreesDir, { recursive: true }); - 执行外部命令固定命令packages/dsh-ssh/src/acp.ts:110
const p = spawn("ssh", sshPlainArgs(host, reapCommand(host)), { stdio: "ignore" }); - 执行外部命令固定命令packages/dsh-ssh/src/acp.ts:122
const child = spawn("ssh", sshArgs(this.#host), { stdio: ["pipe", "pipe", "pipe"] }); - 发起网络请求packages/dsh-ssh/src/acp.ts:210
return this.request("initialize", { - 发起网络请求packages/dsh-ssh/src/acp.ts:220
return await this.request("session/new", { cwd, mcpServers: [] }); - 发起网络请求packages/dsh-ssh/src/acp.ts:232
return this.request("session/resume", { sessionId }); - 发起网络请求packages/dsh-ssh/src/acp.ts:236
return this.request("session/list", cwd ? { cwd } : {}); - 发起网络请求packages/dsh-ssh/src/acp.ts:240
return this.request("session/prompt", { sessionId, prompt: [{ type: "text", text }] }); - 发起网络请求packages/dsh-ssh/src/acp.ts:248
return this.request("session/close", { sessionId }); - 执行外部命令固定命令packages/dsh-ssh/src/acp.ts:258
spawn("ssh", sshPlainArgs(this.#host, script), { stdio: "ignore", detached: true }).unref(); - 读取本地文件packages/dsh-ssh/src/hosts.ts:21
return parseSshConfig(await readFile(path, "utf8")); - 写入本地文件packages/dsh-ssh/src/index.ts:147
await mkdir(this.mirrorRoot, { recursive: true }); - 读取本地文件packages/dsh-ssh/src/index.ts:148
this.canonicalRoot = await realpath(this.mirrorRoot); - 执行外部命令固定命令packages/dsh-ssh/src/index.ts:258
const p = spawn("ssh", sshPlainArgs(host, listDirCommand(target), { connectTimeout: 15 }), { - 写入本地文件packages/dsh-ssh/src/index.ts:352
await mkdir(local, { recursive: true }); - 发起网络请求packages/dsh-ssh/src/remote.ts:217
const outcome = await (this.#ctx as any).approval.request({ - 读取本地文件packages/dsh-ssh/src/store.ts:11
const raw = JSON.parse(await readFile(path, "utf8")); - 写入本地文件packages/dsh-ssh/src/store.ts:20
await mkdir(dirname(path), { recursive: true }); - 写入本地文件packages/dsh-ssh/src/store.ts:22
await writeFile(tmp, JSON.stringify({ version: 1, hosts }, null, 2) + "\n", { mode: 0o600 }); - 写入本地文件packages/dsh-ssh/src/store.ts:23
await rename(tmp, path); - 请求外部主机registry.npmjs.orgpackages/dsh-updater/src/checker.ts:47
const res = await fetch("https://registry.npmjs.org/@deepseek-ai%2fdsh", { - 发起网络请求packages/dsh-updater/src/checker.ts:47
const res = await fetch("https://registry.npmjs.org/@deepseek-ai%2fdsh", { - 发起网络请求packages/dsh-updater/src/client.js:459
fetch(window.location.href, { method: "HEAD", cache: "no-cache" }) - 写入剪贴板packages/dsh-updater/src/client.js:597
navigator.clipboard.writeText(logLines); - 执行外部命令固定命令packages/dsh-updater/src/restarter.ts:52
const child = spawn("/bin/bash", [tmpScriptPath], { - 执行外部命令来自配置/变量packages/dsh-workbench/src/index.ts:55
execFile( - 读取本地文件packages/dsh-workbench/src/index.ts:144
const names = await readdir(at.path, { withFileTypes: true }); - 读取本地文件packages/dsh-workbench/src/index.ts:156
const info = await stat(join(at.path, dirent.name)); - 读取本地文件packages/dsh-workbench/src/index.ts:189
const info = await stat(at.path); - 读取本地文件packages/dsh-workbench/src/index.ts:194
const buffer = await readFile(at.path); - 读取本地文件packages/dsh-workbench/src/index.ts:218
const info = await stat(at.path); - 写入本地文件packages/dsh-workbench/src/index.ts:225
if (!at.exists) await mkdir(dirname(at.path), { recursive: true }); - 写入本地文件packages/dsh-workbench/src/index.ts:226
await writeFile(at.path, text, "utf8"); - 读取本地文件packages/dsh-workbench/src/index.ts:227
const info = await stat(at.path); - 读取本地文件packages/dsh-workbench/src/paths.ts:76
real = await realpath(abs); - 读取本地文件packages/dsh-workbench/src/paths.ts:80
const info = await stat(real); - 读取本地文件packages/dsh-workbench/src/paths.ts:106
real = await realpath(target);
扫描于 2026/11/2(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库
涉及外部主机:registry.npmjs.org
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 远程SSH智能体执行
- 集成终端与文件树
- 安全护栏
面向生产环境的 DeepSeek Harness(DSH)插件:远程 SSH 智能体执行、集成终端与文件树、安全护栏、技能与 MCP 服务控制台。
README
由 DeepSeek 最新模型翻译生成DeepSeek Harness 插件集(DSH)
精选一批生产级插件与扩展,专为 DeepSeek Harness (DSH) 打造。
装上这些插件,DeepSeek Harness 就变成功能齐全的 AI 开发环境:通过 SSH 在远程服务器上运行智能体,在内置 Web 终端里浏览文件、执行命令,对工具执行施加安全护栏,查看 MCP 服务器与技能,还能把环境变量动态注入系统提示词。
插件目录
| 包名 | 分类 | 说明 | Web GUI | 测试 |
| dsh-guard | 安全与护栏 | 单调工具拦截、危险命令拦截、审批门控 | — | 13 passed |
| dsh-workbench | 开发者工具 | 文件树浏览、带语法高亮与行号的实时编辑器、可视化差异、终端模拟器 | Yes | 17 passed |
| dsh-chat-ux | 交互与控制 | Claude Code 风格会话布局、工具调用折叠、分叉/回滚操作 | Yes | 13 passed |
| dsh-git | Git 与工作树 | 工作树管理、分支切换、脏状态提示、GitHub PR 集成 | Yes | 13 passed |
| dsh-ssh | 远程执行 | 通过 SSH 远程运行智能体,带 ACP 桥接与浏览器审批中继 | Yes | 80 passed |
展开完整文档(README 剩余 1 节)
DeepSeek Harness 插件集(DSH) 精选一批生产级插件与扩展,专为 DeepSeek Harness (DSH) 打造。 装上这些插件,DeepSeek Harness 就变成功能齐全的 AI 开发环境:通过 SSH 在远程服务器上运行智能体,在内置 Web 终端里浏览文件、执行命令,对工具执行施加安全护栏,查看 MCP 服务器与技能,还能把环境变量动态注入系统提示词。 插件目录 | 包名 | 分类 | 说明 | Web GUI | 测试 | | dsh-guard | 安全与护栏 | 单调工具拦截、危险命令拦截、审批门控 | — | 13 passed | | dsh-workbench | 开发者工具 | 文件树浏览、带语法高亮与行号的实时编辑器、可视化差异、终端模拟器 | Yes | 17 passed | | dsh-chat-ux | 交互与控制 | Claude Code 风格会话布局、工具调用折叠、分叉/回滚操作 | Yes | 13 passed | | dsh-git | Git 与工作树 | 工作树管理、分支切换、脏状态提示、GitHub PR 集成 | Yes | 13 passed | | dsh-ssh | 远程执行 | 通过 SSH 远程运行智能体,带 ACP 桥接与浏览器审批中继 | Yes | 80 passed | | dsh-console | 可观测性 | 技能与 MCP 服务器检查面板,带 /skills 和 /mcp 斜杠命令 | Yes | 3 passed | | dsh-env | 系统提示词 | 动态环境变量(today、platform、harness_version 等) | — | 5 passed | | dsh-updater | 生命周期与更新 | 自动检测更新、Web GUI 一键升级、自动重启 | Yes | 11 passed | 重点能力 🛡️ dsh-guard — 工具护栏与安全策略 在工具执行之前就拦住误操作,保护你的工作站和基础设施: - 即时拒绝(ctx.tools.guard):同步拦截灾难性命令(rm -rf /、裸磁盘写入 dd of=/dev/sd*、mkfs、fork 炸弹),不消耗 token 轮次。 - 人工审批门控:拦截危险操作(git 强制推送、删除分支、重启服务器、发布软件包),通过 Cordis 的 tools/pre-execute 瀑布式钩子提示用户交互审批。 - 文件系统限制:把写入和编辑工具严格限制在允许的工作区边界内,防止穿越到敏感目录(/etc、~/.ssh)。 💻 dsh-workbench — 文件浏览器与 Web 终端 直接嵌入 DeepSeek Harness Web GUI 的集成开发工作台: - 目录树:在侧边栏浏览文件、查看内容、查看已修改文件,并预览 git 差异。 - 终端模拟器(xterm.js / PTY):与智能体聊天并排运行的真实、响应式终端会话。 - 可运行代码块:为模型返回的 markdown 代码块添加交互式「在终端中运行」操作按钮。 - 安全穿越检查:使用加固的路径限制逻辑,防止目录穿越和符号链接逃逸。 🌐 dsh-ssh — 通过 ACP 远程执行智能体 直接在远程预发环境、云虚拟机或生产主机上通过 SSH 运行 DeepSeek Harness 智能体: - 智能体客户端协议(ACP):通过 SSH stdio(ssh host dsh --profile acp)连接远程机器,双向 JSON-RPC 流式传输。 - 本地工作区影子:在 ~/.dsh/remote/<host>/ 下索引并缓存工作区镜像,让本地会话历史、搜索和上下文持久化,同时操作在远程运行。 - 审批中继:把远程工具审批请求透明地路由回你工作站的本地浏览器 UI。 - Web GUI 主机切换器:从聊天头部即时切换目标服务器、浏览远程文件夹,并探测 ping 延迟。 🔍 dsh-console — 技能与 MCP 服务器检查器 完整查看智能体当前启用的工具和运行时配置: - 设置面板:在 Web GUI 设置中添加专用的「技能与 MCP」面板。 - 斜杠命令: - /skills:列出所有发现的工作区和全局技能、指令及调用参数。 - /mcp:显示活动的模型上下文协议(MCP)服务器、客户端传输方式和暴露的工具。 - 隐私安全:从检查输出中隐去授权 token、bearer 头和環境密钥。 ⚙️ dsh-env — 动态提示词环境变量 把实时运行时事实注入智能体系统提示词模板: - 内置变量:自动维护 today(日期边界)、platform(操作系统名称/架构)、os_version 和 harness_version。 - 自定义变量:在配置中定义键值对,提供部署专属上下文。 🔄 dsh-updater — 更新管理器与一键升级 直接在 Web 界面里让 DeepSeek Harness 和所有社区插件保持更新: - 自动检测版本:查询 npm registry 获取 @deepseek-ai/dsh 的新版本,并监控 git 远程仓库以发现插件更新。 - Web 界面设置与顶栏徽标:新增「Updates」设置页;有新版本发布时,在会话顶栏显示提醒徽标。 - 自动修复符号链接:在 pnpm 工作区中更新 @deepseek-ai/dsh 时,自动修复虚拟存储的符号链接。 - 无缝自动重启:在后台平稳重启服务器,浏览器界面会自动检测服务器何时恢复在线并刷新。 - 斜杠命令:用 /update 查看发布版本,或用 /update now 直接在对话中升级。 安装与使用 1. 克隆并链接插件 克隆本仓库,运行自动安装脚本,把所有插件链接到你的 DeepSeek Harness 配置档(默认是 web): git clone https://github.com/artemiroshnichenko/dsh-plugins.git cd dsh-plugins pnpm install pnpm build pnpm run link-plugins 2. 在配置中启用 把需要的插件加入本地 ~/.dsh/cordis.patch.yml 或 ~/.dsh/profiles/web/cordis.patch.yml: - insert: - id: workbench name: dsh-workbench - id: chat-ux name: dsh-chat-ux config: dedupSystemPrompts: true pageByTurn: true - id: git name: dsh-git config: ghEnabled: true - id: guard name: dsh-guard config: blockSshMutations: true - id: console name: dsh-console - id: env name: dsh-env - id: updater name: dsh-updater To route sessions over SSH (replaces default local agent loop): - delete: - id: agent-loop - insert: - id: ssh name: dsh-ssh config: hosts: - name: staging ssh: ubuntu@staging.example.com cwd: /var/www/app port: 22 重启 DeepSeek Harness 服务器,或重新加载配置档: dsh web 架构与规范 本仓库所有插件都遵循 DeepSeek Harness 架构规范: - Cordis DI 架构:通过 @deepseek-ai/cordis 注册纯服务、插件与 effect。 - 严格 TypeScript:用 TypeScript 5.5+ 严格模式编译(noImplicitAny、严格空值检查)。 - 运行时 Schema:在配置边界用 @deepseek-ai/schemastery 做校验。 - Typert RPC 网关:用 @deepseek-ai/dsh-typert-protocol 实现干净的主机到客户端远程过程调用。 - 全面的单元测试:112 个单元测试,由 Vitest 驱动,跑真实 fixture,不 mock 网络边界。 Monorepo 开发 Clone the repository git clone https://github.com/artemiroshnichenko/dsh-plugins.git cd dsh-plugins Install workspace dependencies pnpm install Build all packages and Web client bundles pnpm build 在所有包里跑单元测试 pnpm test 对整个代码库做类型检查 pnpm typecheck 常见问题(FAQ) dsh-ssh 能用密码认证吗? 强烈建议配置 SSH 密钥认证或 SSH agent(ssh-add),这样 DSH 才能拉起非交互的后台 SSH 会话,不会卡在终端密码提示上。 dsh-guard 会拖慢工具执行吗? 不会。静态安全规则和模式检查在命令发往 shell 之前同步跑完,耗时不到 1 毫秒。 dsh-workbench 怎么隔离文件操作? 所有文件访问都会对照真实规范路径(fs.realpath)校验,确保操作无法借符号链接或 .. 路径逃出授权项目根目录。 参与贡献 欢迎提交贡献、功能请求和问题反馈!先看看 CONTRIBUTING.md 了解怎么上手。 许可证 MIT © 2026 Artem Miroshnichenko
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
artemiroshnichenko/dsh-plugins
SSH 远程执行智能体,集成终端与安全护栏
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 22,225未汉化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,370已汉化DSH
71.9
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13941 个插件含 PR 收录与…
★ 355已汉化DSH
71.8
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7
这是你的仓库?认领条目