kubectl-qyai 是一个面向 Kubernetes 与 Linux 运维 的智能命令行助手:把自然语言需求转成可执行的命令(kubectl / bash),并在执行前做 风险分级 + 二次确认 + 审计/会话记录。
本项目基于开源项目 kubectl-ai 进行二次开发,重点增强:
curl -fsSL https://cnb.cool/qianyios/kubectl-qyai/-/git/raw/main/install.sh | bash
指定版本:
curl -fsSL https://cnb.cool/qianyios/kubectl-qyai/-/git/raw/main/install.sh | QYAI_VERSION=v1.1.2 bash
安装完成后的目录结构:
/usr/local/kubectl-qyai/bin/:kubectl-qyai、kubeqy/usr/local/kubectl-qyai/conf/:config.yaml、config.example.yaml、.env、.env.example/usr/local/kubectl-qyai/scripts/:随包脚本(例如 start-agent-serve.sh)/usr/local/kubectl-qyai/log/:默认日志目录(kubectl-qyai.log)
install.sh会把命令软链到/usr/local/bin/,确保 PATH 可找到。
go build -o ./bin/kubectl-qyai ./cmd/kubectl-qyai
ln -sf ./bin/kubectl-qyai ./bin/kubeqy
export KUBEQY_PATH=linux
# export KUBEQY_PATH=kubernetes
config.example.yaml 为 config.yaml 并修改,或直接放到默认路径:
/usr/local/kubectl-qyai/conf/config.yaml.env):.env.example(模板)DEEPSEEK_API_KEY / QWEN_API_KEY / OPENAI_API_KEY 等)kubeqy
kubeqy -p "获取所有 Pod"
kubeqy -p "获取所有 Pod" -e
kubeqy
# 或
kubectl-qyai --ui-type=terminal
kubectl-qyai --ui-type=tui
交互模式要点:
help / ?tools(可用工具)models / model(模型列表 / 当前模型)sessions / resume-session <id> / new-sessionclear / resetexit / quit语言:默认中文,可切换英文。
export KUBECTL_QYAI_LANG=en
交互模式里也可以用内置命令切换:输入
help查看lang用法(通过序号选择)。
kubectl-qyai ui --listen 127.0.0.1:18082
说明:Web UI 是本机 HTTP + SSE,用于浏览器里交互与会话管理。
适用场景:A 机器有 kubeconfig/网络/权限,B 机器只想“远程发 prompt 拿结果”。
kubectl-qyai agent-serve --runtime linux --listen 127.0.0.1:18081
kubectl-qyai agent-serve --runtime linux --listen 0.0.0.0:18081 --token "your-strong-token"
<ip>:<port>):scripts/start-agent-serve.sh
相关环境变量(优先级:系统环境变量 > .env):
KUBEQY_PATH:运行环境(linux / kubernetes)KUBECTL_QYAI_AGENT_SERVE_PORT:端口(默认 18081)KUBECTL_QYAI_AGENT_SERVE_TOKEN:可选鉴权 token(为空=不开启鉴权)HTTP 接口:
GET /healthzPOST /agent/run(可选:Authorization: Bearer <token>)远程调用示例(curl):
curl -fsSL http://127.0.0.1:18081/healthz
curl -sS http://127.0.0.1:18081/agent/run \
-H "Content-Type: application/json" \
-d '{"prompt":"列出所有 namespace","max_iterations":5}'
curl -sS http://<A机器IP>:18081/agent/run \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"prompt":"查看 kube-system 命名空间所有 Pod","model":"","max_iterations":10}'
说明:请求体支持字段:
prompt(必填)、model(可选)、max_iterations(可选)。
MCP server 只提供工具能力(kubectl/bash/...),不替调用方托管模型与密钥。
kubectl-qyai mcp --mode stdio --runtime linux
/mcp):kubectl-qyai mcp --mode streamable-http --http-port 8080 --runtime linux
模型通过 config.yaml 的 models: 配置,按 priority 选择;默认使用 default_model。
支持的 type(总览,完整变量清单见 .env.example):
| type | 典型必需环境变量 | 备注 |
|---|---|---|
qwen | QWEN_API_KEY(或 DASHSCOPE_API_KEY) | DashScope compatible-mode |
deepseek | DEEPSEEK_API_KEY | OpenAI-compatible |
ernie | ERNIE_API_KEY + ERNIE_SECRET_KEY | 百度千帆 |
spark | SPARK_APP_ID + SPARK_API_KEY + SPARK_API_SECRET | 讯飞星火 |
hunyuan | TENCENT_SECRET_ID + TENCENT_SECRET_KEY | 腾讯混元 |
local | (可选)LOCAL_API_KEY | 本地 OpenAI 兼容网关 |
heuristic | 无 | 离线兜底(建议保留) |
| type | 典型必需环境变量 | 备注 |
|---|---|---|
openai | OPENAI_API_KEY | OpenAI 官方或代理 |
openai-compatible | 通常 OPENAI_API_KEY 或网关 key | 推荐配 LLM_BASE_URL 明确网关 |
azopenai | AZURE_OPENAI_BASE_URL + AZURE_OPENAI_API_KEY | Azure OpenAI |
gemini | GEMINI_API_KEY | Google AI Studio |
vertexai | GOOGLE_CLOUD_PROJECT(及 location) | Vertex AI |
ollama | 无 | 本机 Ollama(默认 http://127.0.0.1:11434) |
llamacpp | 无 | llama.cpp server |
grok | GROK_API_KEY | xAI |
bedrock | AWS 默认凭据 + region | AWS Bedrock |
建议:当你同时配置了多个“兼容网关”的 key 时,在
config.yaml里给对应模型显式设置params.base_url,避免歧义。
默认读取路径(可用 --config 或 KUBECTL_QYAI_CONFIG 覆盖):
/usr/local/kubectl-qyai/conf/config.yaml/usr/local/kubectl-qyai/conf/config.example.yaml核心字段:
models[]:模型列表(name/type/priority/enabled/params)default_model:默认模型(对应 models[].name)safety:安全策略(read/change/destructive 分层,支持自定义规则)示例与完整注释请直接看:config.example.yaml。
优先级:环境变量 > ~/.config/kubectl-qyai/credentials.yaml。
.env 仅用于“补齐未设置的环境变量”(不覆盖你已经 export 的变量),加载顺序:
KUBECTL_QYAI_DOTENV 指定路径.env~/.config/kubectl-qyai/.env/usr/local/kubectl-qyai/conf/.env模板文件:/usr/local/kubectl-qyai/conf/.env.example(或仓库根 .env.example)。
--no-session 关闭):~/.kubectl-qyai/sessions/<id>.jsonl--no-audit 关闭):~/.kubectl-qyai/audit/audit-YYYYMMDD.jsonl/usr/local/kubectl-qyai/log/kubectl-qyai.log(目录存在时)可选环境变量:
KUBECTL_QYAI_LOG_DIR:自定义日志目录(会写入 kubectl-qyai.log)KUBECTL_QYAI_QUIET=1:关闭所有日志写入go test ./...