@zhizuqiu/cubectl 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +139 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/core/ai/tools.d.ts +19 -4
- package/dist/cubectl.js +1 -1
- package/dist/cubectl.js.map +1 -1
- package/package.json +27 -13
- package/dist/core/ai/openai.d.ts +0 -19
- package/dist/core/ai/openai.js +0 -60
- package/dist/core/ai/openai.js.map +0 -1
package/README.md
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# Cubectl
|
|
2
|
+
|
|
3
|
+
🚀 **Cubectl** 是一个基于 AI 驱动的 Kubernetes 运维助手终端工具,使用 [Ink](https://github.com/vadimdemedes/ink) 构建。
|
|
4
|
+
|
|
5
|
+
用户可以通过自然语言与 Kubernetes 集群进行交互,无需记忆复杂的 `kubectl` 命令。它支持自动执行工具调用来查询资源,并提供实时的流式 AI 响应。
|
|
6
|
+
|
|
7
|
+
## 核心特性
|
|
8
|
+
|
|
9
|
+
- 🤖 **自然语言交互**:直接询问 "有哪些 pods 正在运行?" 或 "帮我查一下 default 命名空间的 service"。
|
|
10
|
+
- 📡 **流式响应**:实时展示 AI 的思考过程和输出结果,类似于 ChatGPT 的打字机体验。
|
|
11
|
+
- 🔧 **动态资源发现**:基于 `unstructured` 对象的动态 Kubernetes 客户端,支持几乎所有 K8s 资源类型(Pods, Deployments, Services, CRDs 等)。
|
|
12
|
+
- 💻 **终端原生 UI**:利用 React 和 Ink 构建,支持原生终端滚动、彩色高亮和加载动画。
|
|
13
|
+
- 🌏 **中英双语**:内置 i18n 支持,根据系统自动适配或手动配置。
|
|
14
|
+
- 🔍 **一键摘要**:快速获取命名空间的资源概览统计。
|
|
15
|
+
|
|
16
|
+
## 项目结构
|
|
17
|
+
|
|
18
|
+
这是一个使用 npm workspaces 管理的 monorepo:
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
cubectl/
|
|
22
|
+
├── packages/
|
|
23
|
+
│ ├── core/ # 核心库:包含 AI Agent 逻辑、动态 K8s 客户端和工具定义
|
|
24
|
+
│ └── cli/ # CLI 应用:Ink UI 组件和命令行入口
|
|
25
|
+
├── scripts/ # 构建和辅助脚本
|
|
26
|
+
├── .env.example # 环境变量模板
|
|
27
|
+
└── package.json # 根工作区配置
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## 快速开始
|
|
31
|
+
|
|
32
|
+
### 前提条件
|
|
33
|
+
|
|
34
|
+
- **Node.js**: >= 20.0.0 (必须,因为依赖使用了正则表达式 `v` 标志)
|
|
35
|
+
- **npm**: >= 10.0.0
|
|
36
|
+
- **Kubernetes**: 具有有效的 `~/.kube/config` 配置
|
|
37
|
+
|
|
38
|
+
### 安装与构建
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# 克隆并安装依赖
|
|
42
|
+
npm install
|
|
43
|
+
|
|
44
|
+
# 配置环境变量 (详见下文 环境变量 章节)
|
|
45
|
+
cp .env.example .env
|
|
46
|
+
|
|
47
|
+
# 构建项目
|
|
48
|
+
npm run build
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## 环境变量配置
|
|
52
|
+
|
|
53
|
+
在项目根目录下创建一个 `.env` 文件,或参考 `.env.example` 进行配置。
|
|
54
|
+
|
|
55
|
+
| 变量名 | 必填 | 描述 | 默认值 |
|
|
56
|
+
| :--- | :--- | :--- | :--- |
|
|
57
|
+
| `OPENAI_API_KEY` | 是 | 您的 AI 模型 API Key | - |
|
|
58
|
+
| `OPENAI_API_MODEL` | 否 | 使用的模型名称 | `gpt-4o` |
|
|
59
|
+
| `OPENAI_BASE_URL` | 否 | API 请求的基础 URL| `https://api.openai.com/v1` |
|
|
60
|
+
| `KUBECONFIG` | 否 | Kubernetes 配置文件路径 | `~/.kube/config` |
|
|
61
|
+
|
|
62
|
+
> [!TIP]
|
|
63
|
+
> 如果您使用的是非 OpenAI 的兼容接口(如通义千问、DeepSeek 等),请务必正确设置 `OPENAI_BASE_URL`。
|
|
64
|
+
|
|
65
|
+
### NPM 全局安装 (推荐)
|
|
66
|
+
|
|
67
|
+
您可以直接从 NPM 仓库安装 `cubectl` 并全局运行:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
# 安装
|
|
71
|
+
npm install -g @zhizuqiu/cubectl
|
|
72
|
+
|
|
73
|
+
# 直接使用
|
|
74
|
+
cubectl "列出 pods"
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### 源码安装(开发调试)
|
|
78
|
+
|
|
79
|
+
如果您想在本地开发或调试:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# 1. 克隆并安装依赖
|
|
83
|
+
npm install
|
|
84
|
+
|
|
85
|
+
# 2. 构建项目
|
|
86
|
+
npm run build
|
|
87
|
+
|
|
88
|
+
# 3. 链接到全局
|
|
89
|
+
cd packages/cli
|
|
90
|
+
sudo npm link
|
|
91
|
+
|
|
92
|
+
# 现在可以使用 cubectl 命令了
|
|
93
|
+
cubectl "列出 pods"
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### 如何发布到 NPM
|
|
97
|
+
|
|
98
|
+
如果您是项目维护者,可以按照以下步骤发布新版本:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
# 1. 确保已登录 npm
|
|
102
|
+
npm login
|
|
103
|
+
|
|
104
|
+
# 2. 构建所有 workspace
|
|
105
|
+
npm run build
|
|
106
|
+
|
|
107
|
+
# 3. 发布 cli 包
|
|
108
|
+
npm publish -w @zhizuqiu/cubectl --access public
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### 运行
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
# 启动交互式终端
|
|
115
|
+
npm start
|
|
116
|
+
|
|
117
|
+
# 直接执行查询
|
|
118
|
+
npm start "显示所有运行中的 pods"
|
|
119
|
+
|
|
120
|
+
# 启用调试模式
|
|
121
|
+
npm start -- --debug
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## 命令行参数
|
|
125
|
+
|
|
126
|
+
- `-d, --debug`: 启用调试模式
|
|
127
|
+
- `-c, --context <context>`: 指定 Kubernetes 上下文
|
|
128
|
+
- `-n, --namespace <namespace>`: 指定命名空间 (默认为 default)
|
|
129
|
+
- `-ae, --auto-execute`: 开启自动执行模式 (实验性)
|
|
130
|
+
- `-h, --help`: 显示帮助信息
|
|
131
|
+
- `--version`: 显示版本号
|
|
132
|
+
|
|
133
|
+
## 开发指南
|
|
134
|
+
|
|
135
|
+
详见 **[DEVELOPER.md](./DEVELOPER.md)**。
|
|
136
|
+
|
|
137
|
+
## 许可证
|
|
138
|
+
|
|
139
|
+
MIT
|