dsh-kubectl-guard
在终端中运行以下命令:
dsh plugin install gengwg/dsh-kubectl-guard
将以下提示词粘贴到 DeepSeek Harness 对话框中:
在终端执行 dsh plugin install gengwg/dsh-kubectl-guard 即可安装,插件源码见 https://github.com/gengwg/dsh-kubectl-guard ,安装后重启 dsh 使 guard 自动加载到 bundle 栈中。
插件介绍
让 agent 代你敲 kubectl 命令,方便是方便,但一次手滑的 delete pod 或 scale --replicas=0 落在生产集群上就再无后悔药。dsh-kubectl-guard 不注册任何自有工具,而是嵌入 shell 工具管道,在每条命令真正执行前检查命令字符串,根据 kubeconfig context 和动词严重程度给出三级裁定:非本地集群上的不可逆操作(delete、drain、evict、apply --prune、replace --force、scale --replicas=0)直接拒绝;可恢复的写操作(apply、patch、exec 等)先弹 UI 审批;读操作(get、logs、top)和 --dry-run=server 始终放行,本地集群则完全不受限。
Context 解析遵循 shell 优先级:显式 --context 优先,其次 --kubeconfig,再次同一命令行上的 KUBECONFIG 赋值,最后才是环境继承——这意味着 KUBECONFIG=/path/to/prod kubectl delete ... 不会被误判为你 shell 当前指向的集群。无法解析的输入(sh -c、命令替换、未闭合引号)一律视为写操作,未知动词触发询问而非放行,故障方向始终安全。默认开启伪名模式,拒绝消息中集群名被替换为会话级伪名(如 ctx#4be1f92a),agent 和 LLM 服务商都看不到真实集群名。
它面向日常用 DeepSeek Harness 操作 K8s 的工程师,让 agent 保留完整读写能力的同时为幻觉 delete 兜底。但它是系在困惑 agent 身上的安全带,而非针对对抗者的沙箱:命令字符串中隐藏二进制名的手法(环境变量引用、base64 往返)天然绕过过滤。需要更强隔离时,直接收回集群凭证比过滤命令更可靠。当前仅覆盖 kubectl;helm、argocd、flux 尚未纳入,但动词表是纯数据,在 src/verbs.js 中加一行即可扩展。
使用场景
- Agent 在生产集群执行 kubectl delete 前自动拦截不可逆操作
- 对 apply、patch 等可恢复写操作弹出 UI 审批,确认后再执行
- 本地开发集群和读操作完全免审,不打断日常流程
适合人员
- 使用 DeepSeek Harness 日常操作 K8s 的工程师
- 希望保留 agent 完整读写能力但为幻觉 delete 兜底的用户
- 在共享 kubeconfig 环境中需按 context 分级管控的团队