← 返回列表
需源码安装
面向运维场景的 DeepSeek Harnessdsh插件集:把 dsh agent 变成生产事件排查员——按名字解析…
暂不能直接安装(需源码编译或环境不满足):缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。 · 最近上游提交 2026/9/18 · 已提供中文文档
综合分
30.3
GitHub 分
30.3
用户评分
—
★ Stars
1
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add Elinpf/dsh-ops-plugins缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装,改用 GitHub 源安装
信任档位:已验证本站已于 1 天前真实安装成功
- 是什么
- dsh 原生插件 · other
- 装得上吗
- 本站已真实安装成功(非静态推断)
- 安全吗
- 本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
- 还在维护吗
- 活跃:最近一次提交在 7 天前
档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →
🟢实装验证通过· 2026/9/24
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/23(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查需源码安装
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-ops-plugins(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明
缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装
验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/23 08:33:51
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
由 DeepSeek 最新模型翻译生成dsh-ops-plugins
面向运维场景的 DeepSeek Harness(dsh)插件集:把 dsh agent 变成生产事件排查员——按名字解析 kubectl / ceph / ssh 凭证、对集群执行只读命令、把排查过程组织成树。
以单个 npm 包 @elinpf/dsh-ops 安装,颗粒化的 @elinpf/dsh-ops- 包作为依赖整体带入,锁步版本发布。
特性
- 凭证只登记路径,agent 只见档案名——密钥不进入模型上下文
- 默认只读;读写需按会话授权、人工审批,全程留审计日志
- 工具输出真实,敏感路径在到达模型前擦除
- trace 工具把排查组织成树,web UI 以 git-graph 风格渲染
- 环境清单扫描,agent 基于「实际存在什么」推理
- 系统提示词只注入几行方法论,完整文档按需拉取
环境要求
- DeepSeek Harness ≥ 0.1.0-rc(已在 0.1.0-rc、0.1.1-rc.2、0.1.5-rc.2 验证)
- pnpm ≥ 10
- 宿主机上有 kubectl 且集群网络可达;ceph / ssh 按需;使用密码登录的 ssh 档案(网络设备等)还需要 sshpass
安装
1. 安装插件包(依赖与宿主层行自动挂载):
dsh plugin --profile ops add @elinpf/dsh-ops
2. 需要 web UI 时,编辑 ~/.dsh/profiles/ops/package.json,把 web 宿主加进 bundles:
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"@elinpf/dsh-ops"
]
}
}
@deepseek-ai/dsh-web-app 随 dsh 安装解析,不能用 dsh plugin add 安装。
安装报 minimumReleaseAge 错误时,在 profile 的 pnpm-workspace.yaml 加排除项——用纯名字模式 @elinpf/,不带版本号,升级时无需再改:
minimumReleaseAgeExclude:
- '@elinpf/*'
部署
1. 落盘 ops 预设:
npx @elinpf/dsh-ops preset install --agents-home ~/.dsh
harness 从 ~/.dsh/.agent-presets/ 发现用户预设;不带 --agents-home 会装到 ~/.agents,静默失效。
2. 编辑 ~/.dsh/profiles/ops/cordis.patch.yml,把顶层数组改为:
- id: agent-presets
config:
default: ops
- id: session-reference
disabled: true
3. 启动(--no-open 不自动开浏览器;参数同 dsh web):
dsh --profile ops --no-open
4. 登记凭证到 ~/.dsh-ops/access.yaml——只存路径和连接参数,不存密钥。list_access 带 help: true 可拉取格式文档,也可用 web 管理界面登记。
验证:
dsh --profile ops --dump-config | grep -A4 'id: agent-presets' # default 应为 ops
dsh --profile ops --dump-config | grep -A2 'id: session-reference' # 应带 disabled: true
然后 web UI 开一个 ops 会话:list_access 列出档案、kubectl 正确解析、trace 面板渲染、rw 凭证触发审批。
集中凭证平台 access-hub(可选)
默认凭证存在 dsh 宿主机的本地 YAML 注册表里。需要集中管理——一处登记、轮换、审计——可以跑 @elinpf/dsh-ops-access-hub:一个独立部署的服务(不是 dsh 插件),全部凭证存于单一 AES-256-GCM 加密文档,对外提供 token 认证的小型 HTTP API 和内置 Web 界面。
1. 启动 hub:
npx @elinpf/dsh-ops-access-hub serve
参数(flag / 环境变量 / 默认):--port / ACCESS_HUB_PORT / 3090;--host / ACCESS_HUB_HOST / 127.0.0.1;--data-dir / ACCESS_HUB_DATA_DIR / ~/.dsh-ops-hub;--key-file / ACCESS_HUB_KEY_FILE / /hub.key;--admin-token / ACCESS_HUB_ADMIN_TOKEN 与 --read-token / ACCESS_HUB_READ_TOKEN / 未配置时首启生成并打印一次。master key 来自 ACCESS_HUB_KEY(base64/hex)或 key 文件(自动生成,0600)。
2. 把现有 YAML 注册表迁入 hub(路径形态的字段值会替换为文件内容):
npx @elinpf/dsh-ops-access-hub import ~/.dsh-ops/access.yaml \
--url http://127.0.0.1:3090 --admin-token
离线方式:用 --data-dir 替代 --url,直接写 hub 的数据文件。
3. 通过 dsh 服务的进程环境变量把 ops-access 指向 hub——这是升级不丢的接缝。access core 在 agent preset 面:profile 的 cordis.patch.yml 只能打 host 面的补丁,而落盘的 preset 文件(~/.dsh/.agent-presets/ops/agent.cordis.yml)每次 preset install 都会被重写。systemd 场景:
/etc/systemd/system/.service
Environment=ACCESS_HUB_URL=http://127.0.0.1:3090
Environment=ACCESS_HUB_READ_TOKEN=
Environment=ACCESS_HUB_ADMIN_TOKEN=
只设 ACCESS_HUB_URL 即切换到 hub 模式;token 本就支持环境变量兜底。preset 条目里显式写的 source/hubUrl 优先级高于环境变量(临时实验可用,但 preset install 后会被冲掉)。
改完重启服务。文件字段内容在 resolve 时按需从 hub 拉取并物化到 ~/.dsh-ops/hub-cache 下的 TTL 缓存文件(0600,过期与启动时清扫);profile 仍只携路径,访问门、能力探针、管理 UI、各工具的行为与 YAML 模式完全一致。
安全提示:v1 是明文 HTTP——保持默认的 loopback 绑定,或把 hub 放在 TLS 反向代理之后。hub 是单点:数据文件和 master key 都要备份。本地 YAML 模式随时可切回作为回退。
交给 Agent 安装
在任意 dsh 会话里把下面这段发给 agent,让它替你完成安装与部署:
阅读 https://github.com/Elinpf/dsh-ops-plugins 的 README.zh.md,
把 @elinpf/dsh-ops 插件集安装部署到 ops profile,
完成后按 README 里的验证步骤确认。
更新
dsh plugin --profile ops add @elinpf/dsh-ops@latest
npx @elinpf/dsh-ops@latest preset install --agents-home ~/.dsh # 预设是落盘文件,必须重新拷
dsh --profile ops --no-open # 重启
用 add @latest 而不是 update——update 不跨 minor。预设不随包更新自动刷新,必须重新落盘。
卸载
1. 移除预设:
npx @elinpf/dsh-ops preset remove --agents-home ~/.dsh
2. 移除插件包:
dsh plugin --profile ops remove @elinpf/dsh-ops
3. 重启 profile:
dsh --profile ops --no-open
4. 按需删除 ~/.dsh-ops/——凭证登记表、环境清单、被引用的凭证文件。
卸载不影响集群:凭证只是对自有文件的只读引用。
安全
- 密钥不进入服务、日志、错误信息或模型上下文
- 访问门的威胁模型是「防误操作,不防恶意」
- 设计决策见 docs/adr/;领域词汇表见 CONTEXT.md