rainskills 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 +156 -420
- package/SKILL.md +37 -7
- package/agents/openai.yaml +2 -2
- package/bin/rainskills-tools.js +712 -0
- package/bin/rainskills.js +1109 -4
- package/install.sh +536 -63
- package/marketplace/rainskills/.claude-plugin/plugin.json +2 -2
- package/marketplace/rainskills/.codex-plugin/plugin.json +5 -5
- package/marketplace/rainskills/skills/rainskills/SKILL.md +38 -8
- package/package.json +14 -5
- package/pi/rainskills-mcp.ts +214 -1850
- package/rainbond-app-assistant/SKILL.md +123 -49
- package/rainbond-app-assistant/evals/01-linked-topology-missing.response.md +3 -3
- package/rainbond-app-assistant/evals/02-linked-topology-building.response.md +3 -3
- package/rainbond-app-assistant/evals/03-runtime-healthy-delivery-unknown.response.md +3 -3
- package/rainbond-app-assistant/evals/04-delivered-stop-without-promotion.expected.yaml +1 -1
- package/rainbond-app-assistant/evals/04-delivered-stop-without-promotion.response.md +1 -1
- package/rainbond-app-assistant/evals/05-delivered-explicit-dev-to-test.response.md +3 -3
- package/rainbond-app-assistant/evals/06-manual-validation-stop.expected.yaml +1 -1
- package/rainbond-app-assistant/evals/06-manual-validation-stop.response.md +3 -3
- package/rainbond-app-assistant/evals/07-cluster-capacity-blocked.response.md +4 -4
- package/rainbond-app-assistant/evals/08-code-build-handoff-stop.response.md +2 -2
- package/rainbond-app-assistant/evals/09-source-backed-failure-no-fallback.response.md +2 -2
- package/rainbond-app-assistant/evals/10-identity-ambiguous-stop.response.md +3 -3
- package/rainbond-app-assistant/evals/12-complex-suite-needs-descriptor-stop.response.md +2 -2
- package/rainbond-app-assistant/evals/13-explicit-git-url-locks-source.response.md +2 -2
- package/rainbond-app-assistant/evals/14-strategy-switch-cleans-residue.response.md +2 -2
- package/rainbond-app-assistant/evals/15-turn-discipline-reuse-alias.response.md +2 -2
- package/rainbond-app-assistant/references/operational-reference.md +77 -0
- package/rainbond-app-assistant/references/output-contract.md +454 -0
- package/rainbond-app-assistant/references/product-object-model.md +1558 -0
- package/rainbond-app-assistant/references/workflow-rules.md +343 -0
- package/rainbond-app-assistant/schemas/app-assistant-result.schema.yaml +6 -1
- package/rainbond-app-version-assistant/SKILL.md +57 -18
- package/rainbond-delivery-verifier/SKILL.md +86 -13
- package/rainbond-env-sync/SKILL.md +52 -11
- package/rainbond-fullstack-bootstrap/SKILL.md +79 -11
- package/rainbond-fullstack-bootstrap/evals/01-reuse-only.response.md +1 -1
- package/rainbond-fullstack-bootstrap/evals/02-deferred-dependency.response.md +1 -1
- package/rainbond-fullstack-bootstrap/evals/03-capacity-blocked.response.md +1 -1
- package/rainbond-fullstack-bootstrap/evals/04-template-skip.response.md +1 -1
- package/rainbond-fullstack-bootstrap/evals/05-source-ambiguity-stop.response.md +1 -1
- package/rainbond-fullstack-bootstrap/evals/06-external-artifact-unreachable.response.md +1 -1
- package/rainbond-fullstack-bootstrap/evals/07-provider-connection-contract.response.md +1 -1
- package/rainbond-fullstack-bootstrap/evals/08-explicit-dependency-after-manual-components.response.md +1 -1
- package/rainbond-fullstack-bootstrap/evals/09-inferred-provider-consumer-gate.response.md +1 -1
- package/rainbond-fullstack-bootstrap/evals/10-compose-service-name-not-hostname.response.md +1 -1
- package/rainbond-fullstack-bootstrap/evals/11-reverse-proxy-not-dropped.response.md +1 -1
- package/rainbond-fullstack-bootstrap/evals/12-optional-services-disclose-not-deploy.response.md +1 -1
- package/rainbond-fullstack-bootstrap/evals/13-env-reference-dependency-completeness.response.md +1 -1
- package/rainbond-fullstack-bootstrap/evals/14-client-package-upload.expected.yaml +1 -1
- package/rainbond-fullstack-bootstrap/evals/14-client-package-upload.response.md +3 -3
- package/rainbond-fullstack-bootstrap/evals/15-unfinished-dockerfile-recovery.expected.yaml +25 -0
- package/rainbond-fullstack-bootstrap/evals/15-unfinished-dockerfile-recovery.response.md +44 -0
- package/rainbond-fullstack-bootstrap/evals/16-complete-cnb-recreate-confirmed.expected.yaml +25 -0
- package/rainbond-fullstack-bootstrap/evals/16-complete-cnb-recreate-confirmed.response.md +44 -0
- package/rainbond-fullstack-bootstrap/modules/10-context-loading.md +8 -8
- package/rainbond-fullstack-bootstrap/modules/30-creation-rules.md +10 -10
- package/rainbond-fullstack-bootstrap/modules/40-source-and-package-rules.md +13 -9
- package/rainbond-fullstack-bootstrap/modules/50-workflow-and-convergence.md +6 -6
- package/rainbond-fullstack-bootstrap/modules/60-verification-and-handoffs.md +4 -4
- package/rainbond-fullstack-bootstrap/modules/70-output-contract.md +3 -3
- package/rainbond-fullstack-bootstrap/references/quick-reference.md +6 -6
- package/rainbond-fullstack-bootstrap/references/source-build-parameter-guide.md +6 -6
- package/rainbond-fullstack-bootstrap/references/sql-init-recipe.md +3 -3
- package/rainbond-fullstack-bootstrap/schemas/bootstrap-result.schema.yaml +3 -2
- package/rainbond-fullstack-bootstrap/scripts/upload_local_package.py +1 -1
- package/rainbond-fullstack-bootstrap/scripts/validate_bootstrap_output.py +2 -2
- package/rainbond-fullstack-troubleshooter/SKILL.md +103 -13
- package/rainbond-fullstack-troubleshooter/evals/10-config-file-configmap-missing.expected.yaml +21 -0
- package/rainbond-fullstack-troubleshooter/evals/10-config-file-configmap-missing.response.md +51 -0
- package/rainbond-fullstack-troubleshooter/references/operational-reference.md +70 -0
- package/rainbond-fullstack-troubleshooter/references/output-contract.md +259 -0
- package/rainbond-fullstack-troubleshooter/references/root-cause-rules.md +210 -0
- package/rainbond-fullstack-troubleshooter/schemas/troubleshoot-result.schema.yaml +3 -1
- package/rainbond-fullstack-troubleshooter/scripts/validate_troubleshoot_output.py +22 -1
- package/rainbond-platform-installer/SKILL.md +73 -9
- package/rainbond-platform-installer/agents/openai.yaml +2 -2
- package/rainbond-platform-installer/references/installation-policy.json +35 -1
- package/rainbond-platform-installer/references/installation-policy.md +33 -8
- package/rainbond-platform-installer/references/troubleshooting.md +3 -2
- package/rainbond-platform-installer/scripts/auto-update.js +495 -0
- package/rainbond-platform-installer/scripts/console-origin.js +159 -0
- package/rainbond-platform-installer/scripts/environment-credentials.js +225 -0
- package/rainbond-platform-installer/scripts/environment-registry.js +349 -0
- package/rainbond-platform-installer/scripts/existing-kubernetes-installer.js +1370 -0
- package/rainbond-platform-installer/scripts/host-cluster-installer.js +2143 -0
- package/rainbond-platform-installer/scripts/local-runtime-commands.js +180 -0
- package/rainbond-platform-installer/scripts/local-runtime.js +18 -0
- package/rainbond-platform-installer/scripts/mcp-router.js +212 -0
- package/rainbond-platform-installer/scripts/mcp-server.js +79 -0
- package/rainbond-platform-installer/scripts/platform-installer.js +694 -255
- package/rainbond-platform-installer/scripts/platform-routing.js +326 -0
- package/rainbond-platform-installer/scripts/runtime-credentials.js +163 -0
- package/rainbond-platform-installer/scripts/runtime-intents.js +251 -0
- package/rainbond-platform-installer/scripts/runtime-operations.js +383 -0
- package/rainbond-platform-installer/scripts/runtime-state.js +656 -0
- package/rainbond-platform-installer/scripts/secure-state.js +59 -13
- package/rainbond-platform-installer/scripts/ssh-key-setup.js +242 -0
- package/rainbond-platform-installer/scripts/telemetry.js +244 -0
- package/rainbond-platform-installer/scripts/user-message.js +125 -0
- package/rainbond-platform-installer/scripts/windows-auth.js +1 -1
- package/rainbond-platform-installer/scripts/windows-client-config.js +101 -22
- package/rainbond-platform-installer/scripts/windows-onboarding.js +179 -83
- package/rainbond-platform-installer/scripts/windows-platform.js +3 -3
- package/rainbond-platform-installer/scripts/windows-platform.ps1 +264 -28
- package/rainbond-platform-installer/scripts/windows-read-user-environment.ps1 +16 -0
- package/rainbond-platform-query/SKILL.md +88 -0
- package/rainbond-platform-query/agents/openai.yaml +4 -0
- package/rainbond-platform-query/evals/01-current-enterprise.expected.yaml +10 -0
- package/rainbond-project-init/SKILL.md +68 -9
- package/rainbond-project-init/references/manifest-rules.md +487 -0
- package/rainbond-project-init/references/operational-reference.md +74 -0
- package/rainbond-project-init/references/output-contract.md +272 -0
- package/rainbond-project-init/references/workflow-and-verification.md +85 -0
- package/rainbond-template-installer/SKILL.md +80 -16
package/README.md
CHANGED
|
@@ -1,525 +1,261 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Rainskills
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Rainskills 是一组面向应用识别、部署、排障和交付的 AI Skills,支持 Codex 和 Claude Code。用户在市场中只会看到一个 `Rainskills` 产品,安装后 10 个 `rainbond-*` Skill 仍会独立触发。
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 安装
|
|
6
6
|
|
|
7
|
-
从 Skill
|
|
7
|
+
从 Skill 市场安装:
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
10
|
npx skills add goodrain/rainskills
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
Skill
|
|
14
|
-
|
|
15
|
-
市场只展示一个 `rainskills` 入口。首次使用时,该入口会启动随包携带的交互式安装器,继续完成客户端选择、Rainbond 环境选择、浏览器授权和 MCP 配置;内部 `rainbond-*` Skill 不需要单独安装。
|
|
16
|
-
|
|
17
|
-
安装完成后,9 个 `rainbond-*` Skill 仍各自独立加载、独立触发和独立维护。统一的是安装、授权和升级入口,不会把业务 Skill 合并成一个大 Skill。
|
|
18
|
-
|
|
19
|
-
也可以使用客户端自己的 Plugin 市场。无论使用哪种入口,都只会看到一个 `Rainskills`,第一次使用时仍然进入同一套初始化和授权流程。
|
|
20
|
-
|
|
21
|
-
Codex Plugin:
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
codex plugin marketplace add goodrain/rainskills
|
|
25
|
-
codex plugin add rainskills@goodrain
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
Claude Code Plugin(在 Claude Code 会话中执行):
|
|
29
|
-
|
|
30
|
-
```text
|
|
31
|
-
/plugin marketplace add goodrain/rainskills
|
|
32
|
-
/plugin install rainskills@goodrain
|
|
33
|
-
/reload-plugins
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
也可以直接运行安装器:
|
|
37
|
-
|
|
38
|
-
```bash
|
|
39
|
-
npx --yes rainskills
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
安装器会识别或引导选择 Codex / Claude Code、填写 Rainbond 地址、打开浏览器授权、注册 MCP 并安装全部独立 Skill。没有 Node.js 或 Node 版本低于 18 时,使用保留的 CDN 安装方式:
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
bash <(curl -fsSL https://get.rainbond.com/rainskills/install.sh)
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
> **给 AI 助手的指引**:
|
|
49
|
-
> - 如果用户的请求是"帮我把这个 repo 装上 / 让我用上这套 Rainbond skills",优先让用户执行 `npx --yes rainskills`。
|
|
50
|
-
> - 如果用户没有 Node.js、Node.js 低于 18,或 npm registry 不可用,改用上面的 CDN `curl` 命令。
|
|
51
|
-
> - AI 应识别自己运行在 Codex 或 Claude Code,并把对应 target 传给安装器,不要再询问用户客户端类型。macOS、Linux 和 WSL 不支持 OpenClaw 或 Pi Agent 安装。
|
|
52
|
-
> - 不要 `git clone` 后手工把目录复制到任一客户端的 Skills 目录。
|
|
53
|
-
> - 不要手工拼 `~/.rainbond/mcp.env`、猜 JWT 或手改客户端 MCP 配置。
|
|
54
|
-
> - 不要建议 `npm install -g`、`pip install` 或 `make`。`npx` 只是启动包内的 `install.sh`,两种入口使用同一套安装流程。
|
|
55
|
-
> - 如果用户机器上需要换 MCP 服务地址、改默认安装路径,把对应 flag 直接追加到 `npx --yes rainskills` 或 `install.sh` 后面。
|
|
56
|
-
|
|
57
|
-
## 包含的 Skill
|
|
58
|
-
|
|
59
|
-
- `rainbond-app-assistant`
|
|
60
|
-
- `rainbond-app-version-assistant`
|
|
61
|
-
- `rainbond-delivery-verifier`
|
|
62
|
-
- `rainbond-env-sync`
|
|
63
|
-
- `rainbond-fullstack-bootstrap`
|
|
64
|
-
- `rainbond-fullstack-troubleshooter`
|
|
65
|
-
- `rainbond-platform-installer`(内部安装流程,不作为独立产品使用)
|
|
66
|
-
- `rainbond-project-init`
|
|
67
|
-
- `rainbond-template-installer`
|
|
68
|
-
|
|
69
|
-
## 适用场景
|
|
70
|
-
|
|
71
|
-
这些 skill 适合以下场景:
|
|
72
|
-
|
|
73
|
-
- 将本地项目首次接入 Rainbond
|
|
74
|
-
- 为已绑定项目同步环境信息
|
|
75
|
-
- 基于镜像或模板在 Rainbond 中完成初始化部署
|
|
76
|
-
- 管理 Rainbond 应用版本中心中的创建快照、发布、本地/云市场发布事件和快照回滚流程
|
|
77
|
-
- 对 Rainbond 全栈应用进行低风险排障
|
|
78
|
-
- 在部署结束后做交付验收
|
|
79
|
-
- 选择私有化但尚无平台时,在当前 Linux、当前 macOS、当前 Windows(预览)或远程 Linux 服务器部署 Rainbond 单机版
|
|
80
|
-
|
|
81
|
-
## 安装方式
|
|
82
|
-
|
|
83
|
-
### 0. 前置条件
|
|
84
|
-
|
|
85
|
-
- 已安装 `Codex` 或 `Claude Code`
|
|
86
|
-
- Skill 市场的 `npx skills add` 当前要求 Node.js 22.20.0 或更高版本
|
|
87
|
-
- 直接运行 `npx rainskills` 推荐 Node.js 22 或 24,最低支持 Node.js 18
|
|
88
|
-
- Node.js 18/20 已结束维护,安装器会警告但仍继续;Node.js 低于 18 请使用 CDN 安装方式
|
|
89
|
-
- macOS/Linux 本机可执行 `bash`、`curl`、`python3`;CDN 入口还需要 `tar`。远程 Linux 安装还需要系统 `ssh` 和 `scp`
|
|
90
|
-
- 使用 Rainbond Cloud 时需要可登录账号;私有化新安装会先创建平台,再在浏览器完成初始化和授权
|
|
91
|
-
|
|
92
|
-
### 1. 一行命令安装(推荐)
|
|
93
|
-
|
|
94
|
-
支持 macOS、Linux 和 Windows。Windows 本地安装目前是 preview,也可以改选 Linux 服务器:
|
|
13
|
+
Skill 市场当前要求 Node.js 22.20.0 或更高版本。直接运行 npx 安装器最低支持 Node.js 18:
|
|
95
14
|
|
|
96
15
|
```bash
|
|
97
16
|
npx --yes rainskills
|
|
98
17
|
```
|
|
99
18
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
Windows 本地预览要求 Windows 10 build 19041+ 或 Windows 11 x64、已开启 CPU 虚拟化,并使用 Administrators 用户和 UAC。推荐 4 核 CPU、8 GB 内存、50 GB 可用磁盘;2 核、4 GB 内存、10 GB 可用磁盘是预检最低门槛,低于推荐配置时安装器会提示风险但继续尝试。安装器会创建独立的 Rainbond WSL2 环境,首次下载可能较久且可能重启一次;下载会显示进度,重启后从已保存断点继续。Windows 登录后通过 `http://127.0.0.1:7070` 访问 Console。Windows 10/11 真机验收完成前不视为正式支持。
|
|
103
|
-
|
|
104
|
-
常用参数可以直接追加:
|
|
105
|
-
|
|
106
|
-
```bash
|
|
107
|
-
npx --yes rainskills codex --saas
|
|
108
|
-
npx --yes rainskills claude --self-hosted --rainbond-url <url>
|
|
109
|
-
npx --yes rainskills all --force
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
### 2. CDN 安装(保留的兜底方式)
|
|
113
|
-
|
|
114
|
-
国内推荐用 OSS 入口(CDN 加速,无需翻墙):
|
|
19
|
+
没有合适的 Node.js 时可使用 CDN 入口:
|
|
115
20
|
|
|
116
21
|
```bash
|
|
117
22
|
bash <(curl -fsSL https://get.rainbond.com/rainskills/install.sh)
|
|
118
23
|
```
|
|
119
24
|
|
|
120
|
-
|
|
25
|
+
仅安装 Skills 文件不需要 Node.js,CDN 入口在无 Node.js 时仍可完成这部分安装;这不代表应用部署、运行环境连接或私有平台安装已经可执行。用户首次提出需要运行环境的动作时,Rainskills 执行组件才要求 Node.js 18 或更高版本。
|
|
121
26
|
|
|
122
|
-
|
|
123
|
-
bash <(curl -fsSL https://raw.githubusercontent.com/goodrain/rainskills/main/install.sh)
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
脚本会按 **用户覆盖 → OSS → GitHub** 的顺序自动尝试下载仓库 tarball,解压到 `~/.rainbond/skills`(可通过 `RAINBOND_SKILLS_HOME` 覆盖),然后继续走交互式安装流程。
|
|
127
|
-
|
|
128
|
-
可通过环境变量自定义下载源:
|
|
129
|
-
|
|
130
|
-
- `RAINBOND_SKILLS_TARBALL_URL` — 用户显式指定的 tarball URL(最高优先)
|
|
131
|
-
- `RAINBOND_SKILLS_OSS_URL` — OSS tarball URL(默认 `https://get.rainbond.com/rainskills/rainskills-latest.tar.gz`)
|
|
132
|
-
- `RAINBOND_SKILLS_HOME` — 安装目录(默认 `~/.rainbond/skills`)
|
|
27
|
+
也可以使用客户端 Plugin 市场。
|
|
133
28
|
|
|
134
|
-
|
|
135
|
-
>
|
|
136
|
-
> ```bash
|
|
137
|
-
> curl -fsSLO https://get.rainbond.com/rainskills/install.sh
|
|
138
|
-
> less install.sh # 自行审阅
|
|
139
|
-
> bash install.sh
|
|
140
|
-
> ```
|
|
141
|
-
|
|
142
|
-
### 3. 已有本地仓库
|
|
143
|
-
|
|
144
|
-
如果你已经 `git clone` 了 rainbond-skills 仓库,直接进入仓库根目录执行:
|
|
29
|
+
Codex:
|
|
145
30
|
|
|
146
31
|
```bash
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
如果只是让 Codex 或 CI 在非交互模式下覆盖本地 skill,直接执行 `./install.sh --force` 即可;未提供 Rainbond 参数时,脚本会自动跳过 MCP 配置。
|
|
151
|
-
|
|
152
|
-
### 安装脚本会做的事
|
|
153
|
-
|
|
154
|
-
不论使用 npx、CDN 还是本地仓库,安装器都会引导你完成这些动作:
|
|
155
|
-
|
|
156
|
-
- AI 安装时自动识别当前客户端;直接运行命令时可选择 `Codex`、`Claude Code` 或全部
|
|
157
|
-
- Skill 文件安装完成后,选择要连接的 Rainbond:
|
|
158
|
-
- **Rainbond Cloud(SaaS)**:无需自行安装 Rainbond,地址固定为 `https://run.rainbond.com`
|
|
159
|
-
- **私有化部署**:已有平台时填写 Console 地址;尚无平台时进入内置单机安装向导
|
|
160
|
-
- 浏览器中完成登录并授权(无需在终端输入用户名/密码)
|
|
161
|
-
- 自动接收一年期、仅限 Rainbond MCP 使用的 JWT,并写入 `~/.rainbond/mcp.env`
|
|
162
|
-
- 自动配置 Codex 和 Claude Code 的原生 MCP
|
|
163
|
-
- 自动把环境变量加载逻辑写入当前 shell 的 rc 文件
|
|
164
|
-
- 自动验证所选客户端的专用 MCP 地址是否可用:
|
|
165
|
-
- Codex:`/console/mcp/rainskills/codex/query`
|
|
166
|
-
- Claude Code:`/console/mcp/rainskills/claude-code/query`
|
|
167
|
-
|
|
168
|
-
#### AI 代为安装时的用户选择
|
|
169
|
-
|
|
170
|
-
如果用户尚未明确要连接的 Rainbond 环境,AI 不得在安装命令中自行添加 `--saas`、`--self-hosted` 或 `--rainbond-url`,也不得根据已有缓存替用户做决定。安装器会在 Skill 文件安装完成后进入用户选择阶段并输出:
|
|
171
|
-
|
|
172
|
-
```text
|
|
173
|
-
[RAINSKILLS_USER_INPUT_REQUIRED:rainbond_connection]
|
|
32
|
+
codex plugin marketplace add goodrain/rainskills
|
|
33
|
+
codex plugin add rainskills@goodrain
|
|
174
34
|
```
|
|
175
35
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
用户选择私有化部署后,还需要明确选择“已经有平台”或“还没有,帮我安装”。已有平台时,安装器输出:
|
|
36
|
+
Claude Code:
|
|
179
37
|
|
|
180
38
|
```text
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
AI 看到该标记后,让用户发送浏览器中访问 Rainbond Console 的完整地址,然后把地址写回仍在等待的安装进程。
|
|
185
|
-
|
|
186
|
-
选择“还没有,帮我安装”时,当前阶段会保存 `0600` 权限的非敏感断点并输出一行固定 JSON:
|
|
187
|
-
|
|
188
|
-
```json
|
|
189
|
-
{"schema":"rainskills.next-action.v1","action":"install-platform","onboarding_id":"<id>","argv":["platform","install","--onboarding-id","<id>"]}
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
AI 必须把 `argv` 数组作为参数传回同一个 `rainskills` 命令,不得把输出拼成任意 shell 字符串。平台安装器会:
|
|
193
|
-
|
|
194
|
-
- 检查系统、架构、推荐资源(4 核 CPU、8 GB 内存、50 GB 磁盘)、最低资源门槛(2 核 CPU、4 GB 内存、10 GB 磁盘)、权限和端口;低于推荐配置时只提示风险
|
|
195
|
-
- 展示官方脚本实际可能修改的主机项目,并等待用户一次明确确认
|
|
196
|
-
- 从固定 HTTPS 官方来源下载脚本,限制同源跳转和文件大小,检查 Bash 结构与语法,并用本次 SHA-256 保证远程/WSL 执行内容一致
|
|
197
|
-
- 展示下载和启动阶段,保留受保护的本地日志
|
|
198
|
-
- 独立验证 Rainbond 容器、K3s、`rbd-system` 组件和 Console
|
|
199
|
-
- 自动执行 `npx rainskills resume --onboarding-id <id>`,继续浏览器授权
|
|
200
|
-
|
|
201
|
-
平台安装器会先识别当前设备,并统一提供“安装到本地”和“安装到 Linux 服务器”。回车默认安装到本地;Windows 本地路径由固定安装器自动准备 WSL2,用户不需要输入 WSL 命令。远程连接优先使用已有的 SSH Key;需要密码时由系统 SSH 在终端读取,Linux/macOS 会复用临时连接,Windows 自带 OpenSSH 可能在后续步骤再次请求密码,Rainskills 不会保存密码或私钥。
|
|
202
|
-
|
|
203
|
-
当前支持单机版,包括本机和远程 Linux 安装,以及 Windows 本地预览;不支持多节点、高可用、离线安装或自动清理已有容器和端口冲突。
|
|
204
|
-
|
|
205
|
-
当前版本默认从 `https://get.rainbond.com/` 下载并校验 Rainbond 官方安装脚本;Linux、macOS 和 Windows 的安装流程保持一致,不需要额外设置环境变量。
|
|
206
|
-
|
|
207
|
-
验证自定义 Rainbond 整体镜像时,可以在 `platform install` 命令后追加完整镜像名。安装器会在校验安装脚本后,仅替换 Rainbond 主镜像并继续执行原有安装、就绪检查和授权流程:
|
|
208
|
-
|
|
209
|
-
```bash
|
|
210
|
-
npx --yes rainskills platform install --onboarding-id <id> \\
|
|
211
|
-
--rainbond-image registry.cn-hangzhou.aliyuncs.com/goodrain/rainbond:v6.9.7-devs
|
|
39
|
+
/plugin marketplace add goodrain/rainskills
|
|
40
|
+
/plugin install rainskills@goodrain
|
|
41
|
+
/reload-plugins
|
|
212
42
|
```
|
|
213
43
|
|
|
214
|
-
|
|
44
|
+
安装流程支持 Codex 和 Claude Code;macOS、Linux 和 WSL 不支持 OpenClaw 或 Pi Agent 安装。不要手工复制 Skill、拼接凭据或修改 MCP 配置。
|
|
215
45
|
|
|
216
|
-
|
|
46
|
+
## 安装完成时用户会看到什么
|
|
217
47
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
如果 AI 使用的执行工具不能保持交互终端,平台预检后会输出:
|
|
48
|
+
安装完成后只完成 Skills 安装并展示能力列表,不选择运行环境、不登录 Rainbond,也不配置业务 MCP:
|
|
221
49
|
|
|
222
50
|
```text
|
|
223
|
-
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
AI 应先把检测结果和系统变更展示给用户;用户明确同意后,再用相同参数追加 `--yes`,不得自行确认。
|
|
227
|
-
|
|
228
|
-
`Ctrl+C` 会停止当前下载或安装子进程并保留断点。重新执行安装器输出的固定 `platform install` 命令即可从真实机器状态继续;Rainbond 已部署但授权未完成时,执行固定 `resume` 命令即可,不需要重新部署平台。
|
|
229
|
-
|
|
230
|
-
#### 安装效果统计
|
|
231
|
-
|
|
232
|
-
安装脚本会把安装流程状态异步上报到固定地址 `https://log.rainbond.com/api/rainskills/installations`,用于统计脚本执行、授权和配置成功率。每次执行使用一个随机的 `install_attempt_id` 串联以下阶段:
|
|
233
|
-
|
|
234
|
-
- `started`:脚本开始执行
|
|
235
|
-
- `authorized`:完成 Rainbond 授权,并取得当前企业的 `eid`
|
|
236
|
-
- `configured`:Codex / Claude Code MCP 配置完成
|
|
237
|
-
- `failed`:流程失败,仅记录固定的失败阶段和分类
|
|
238
|
-
|
|
239
|
-
上报字段只包含安装尝试 ID、`eid`、客户端类型、安装或刷新动作、阶段和状态。不会上报 JWT、账号、密码、用户名、邮箱、Rainbond 地址、原始错误信息或本地代码。统计请求在后台执行;统计服务不可用、超时或企业信息读取失败都不会改变原安装结果。
|
|
240
|
-
|
|
241
|
-
#### 浏览器登录是怎么发生的
|
|
242
|
-
|
|
243
|
-
安装器默认使用设备授权流程。终端显示八位授权码和 Rainbond 授权地址,并在
|
|
244
|
-
后台等待结果:
|
|
245
|
-
|
|
246
|
-
- **本地 macOS / Linux 桌面**:自动打开当前 Rainbond 的 `/device` 页面。登录
|
|
247
|
-
后核对终端中的授权码,点击允许,终端自动继续。
|
|
248
|
-
- **Windows / WSL**:使用固定 PowerShell 浏览器桥接打开 Windows 浏览器;授权
|
|
249
|
-
结果仍由原安装进程接收,不需要复制 Token。
|
|
250
|
-
- **SSH、容器或无桌面 Linux**:不会尝试打开远程浏览器。使用任意能够访问该
|
|
251
|
-
Rainbond 平台的电脑或手机打开终端中的地址,登录并允许访问;远程终端会自动
|
|
252
|
-
检测结果,不需要复制回调 URL、JWT 或在终端按回车。
|
|
253
|
-
|
|
254
|
-
设备码有效期为 10 分钟,只能成功交换一次。最终签发的 JWT 默认有效期为一年,
|
|
255
|
-
并带有 `token_use=mcp`、`scope=mcp` 和 `aud=rainbond-mcp` 限制,不能用于普通
|
|
256
|
-
Console API。安装器仅在确认旧版 Console 没有 Device Flow 路由时,才回退到
|
|
257
|
-
原来的本机回调/复制回调兼容流程。
|
|
258
|
-
|
|
259
|
-
`--no-browser` 只禁止自动打开浏览器,设备授权地址仍会输出:
|
|
260
|
-
|
|
261
|
-
```bash
|
|
262
|
-
npx --yes rainskills all --no-browser
|
|
51
|
+
Rainskills 安装完成,下一条消息即可直接使用。
|
|
263
52
|
|
|
264
|
-
|
|
265
|
-
RAINSKILLS_NO_BROWSER=1 npx --yes rainskills all
|
|
266
|
-
```
|
|
267
|
-
|
|
268
|
-
Device Flow 默认要求 HTTPS。Windows 本地安装使用的 loopback 或受管私网 Console
|
|
269
|
-
地址会自动允许 HTTP,不再要求额外参数;其他私有环境只有显式使用
|
|
270
|
-
`--allow-insecure-http` 才能继续,终端和浏览器授权页都会提示长期凭证可能被截获。
|
|
271
|
-
CI 或完全非交互环境仍应通过 `--token` / `RAINBOND_JWT` 提供已有凭证。
|
|
272
|
-
|
|
273
|
-
私有化平台升级时,应先发布包含 `/#/device` 的 Rainbond UI,再执行 Console 数据库
|
|
274
|
-
迁移,最后设置 `RAINBOND_MCP_DEVICE_FLOW_ENABLED=true`。平台有固定外部地址时同时
|
|
275
|
-
设置 `RAINBOND_MCP_DEVICE_PUBLIC_ORIGIN=https://你的平台地址`,避免代理请求头影响
|
|
276
|
-
浏览器授权地址。未开启功能开关时,Rainskills 会自动使用旧版授权兼容流程。
|
|
53
|
+
下一步可以直接说:
|
|
277
54
|
|
|
278
|
-
|
|
55
|
+
- 帮我部署当前项目
|
|
56
|
+
- 帮我部署一个 Git 仓库
|
|
57
|
+
- 帮我通过镜像或安装包部署应用
|
|
58
|
+
- 帮我安装一个应用模板
|
|
59
|
+
- 帮我分析当前项目应该如何部署
|
|
279
60
|
|
|
280
|
-
|
|
281
|
-
- `~/.codex/skills`
|
|
282
|
-
|
|
283
|
-
#### 显式指定部署形态
|
|
284
|
-
|
|
285
|
-
```bash
|
|
286
|
-
# npx 模式
|
|
287
|
-
npx --yes rainskills all --saas
|
|
288
|
-
npx --yes rainskills all --self-hosted --rainbond-url <url>
|
|
289
|
-
|
|
290
|
-
# CDN 模式:参数追加在脚本之后
|
|
291
|
-
bash <(curl -fsSL https://get.rainbond.com/rainskills/install.sh) all --saas
|
|
292
|
-
bash <(curl -fsSL https://get.rainbond.com/rainskills/install.sh) all --self-hosted --rainbond-url <url>
|
|
293
|
-
|
|
294
|
-
# 本地仓库模式
|
|
295
|
-
./install.sh all --saas # Rainbond Cloud
|
|
296
|
-
./install.sh all --self-hosted --rainbond-url <url> # 私有化
|
|
61
|
+
也可以直接告诉我你想部署什么应用。
|
|
297
62
|
```
|
|
298
63
|
|
|
299
|
-
|
|
64
|
+
用户第一次提出部署、查询、排障、验证、快照或模板安装等需要运行环境的动作时,Rainskills 才检查和连接运行环境。
|
|
300
65
|
|
|
301
|
-
|
|
66
|
+
## 按需连接应用运行环境
|
|
302
67
|
|
|
303
|
-
|
|
304
|
-
npx --yes rainskills claude
|
|
305
|
-
```
|
|
68
|
+
每个业务 Skill 都必须先通过相同门禁:
|
|
306
69
|
|
|
307
|
-
|
|
70
|
+
0. 第一步检查 Node.js 是否存在且主版本不低于 18。缺失或低于 18 时,只说明 Rainskills 执行组件需要 Node.js 18 或更高版本并停止;不选择运行环境、不调用 MCP、不猜测替代命令。只有用户或 agent 明确同意后才安装或升级 Node.js,再从同一原始 intent 继续。
|
|
308
71
|
|
|
309
|
-
|
|
310
|
-
npx --yes rainskills codex
|
|
311
|
-
```
|
|
312
|
-
|
|
313
|
-
同时装并配置全部平台:
|
|
72
|
+
固定 launcher 来自当前 `package.json` 版本:
|
|
314
73
|
|
|
315
|
-
```
|
|
316
|
-
npx --yes rainskills
|
|
74
|
+
```json
|
|
75
|
+
["npx", "--yes", "rainskills@0.1.2"]
|
|
317
76
|
```
|
|
318
77
|
|
|
319
|
-
|
|
78
|
+
所有调用都把 launcher 与参数合并成 argv 数组后直接执行;不得使用 `rainskills@latest`,不得把参数拼成 shell 字符串。
|
|
320
79
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
80
|
+
1. 执行 launcher + `["environment", "list", "--json"]`,先于项目扫描和任何业务 MCP。未指定环境时只使用全局默认环境,默认不可用时停止,不自动回退。
|
|
81
|
+
2. 每个请求生成独立 operation UUID,并执行 `operation begin`;显式环境只写入这次 operation。每个 Rainbond MCP 调用都携带返回的 `rainskills_operation_id`。项目不保存环境、团队或应用绑定,同一项目可以部署到多个目标。
|
|
82
|
+
3. 将动作转换为 `runtime-intents.js` 中对应的受限 intent 并完成字段校验。target 只允许 `codex`、`claude`、`all`;按用户选择构造 launcher + `["runtime", "connect", "<target>", ...环境参数, "--intent-json", "<JSON.stringify(已校验 intent)>"]`。
|
|
83
|
+
4. 环境参数必须恰好选择一组且互斥:Cloud 用 `["--saas"]`,已有私有环境用 `["--rainbond-url", "<已验证 Console origin>"]`,新建私有环境用 `["--install-private", "--location", "local"]` 或 `["--install-private", "--location", "server"]`。
|
|
84
|
+
5. 安装私有环境时,只消费完成 schema、action、onboarding id 和参数边界校验的 `rainskills.next-action.v1.argv`;拒绝字符串命令和其他输出字段。
|
|
85
|
+
6. 探针失败进入 reconnect。连接或安装完成后执行 launcher + `["intent", "resume", "--onboarding-id", "<同一 onboarding-id>"]`,恢复受保护的原始 intent 和 `resume_step`,不重新猜测用户动作。
|
|
325
86
|
|
|
326
|
-
|
|
87
|
+
`deploy`/`create` 允许先只保存动作类型。选择私有环境后,先完整完成本地单机、服务器单机、主机集群或已有 Kubernetes 的平台安装和验收;此阶段不得询问本地项目路径、Git 仓库 URL、镜像地址或安装包路径。恢复到 `project-analysis` 后才识别当前项目或询问缺失的应用来源。
|
|
327
88
|
|
|
328
|
-
|
|
89
|
+
### 新应用环境选择
|
|
329
90
|
|
|
330
|
-
|
|
331
|
-
./install.sh all --non-interactive \
|
|
332
|
-
--self-hosted --rainbond-url https://your-rainbond.example.com \
|
|
333
|
-
--token "$RAINBOND_JWT"
|
|
334
|
-
```
|
|
91
|
+
新应用场景使用以下说明:
|
|
335
92
|
|
|
336
|
-
|
|
93
|
+
> 可以,我会帮你完成应用识别、构建、部署和访问验证。
|
|
94
|
+
>
|
|
95
|
+
> 不过目前还没有可用的应用运行环境。
|
|
96
|
+
>
|
|
97
|
+
> 你刚安装的 Rainskills 是负责“部署”的 AI 助手,它会分析项目并执行部署流程;Rainbond 负责为应用提供稳定运行环境。
|
|
98
|
+
>
|
|
99
|
+
#### 选择运行环境
|
|
337
100
|
|
|
338
|
-
|
|
101
|
+
提示“请选择应用要运行的环境:”,并只显示:
|
|
339
102
|
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
--self-hosted --rainbond-url http://your-rainbond.example.com:7070 \
|
|
343
|
-
--username admin \
|
|
344
|
-
--allow-insecure-http
|
|
345
|
-
```
|
|
103
|
+
1) 云端环境(免费体验)
|
|
104
|
+
2) 私有环境(去对接)
|
|
346
105
|
|
|
347
|
-
|
|
106
|
+
选择私有环境后,直接显示:
|
|
348
107
|
|
|
349
|
-
|
|
108
|
+
请选择部署位置:
|
|
350
109
|
|
|
351
|
-
|
|
110
|
+
1、部署到本机
|
|
111
|
+
2、部署到独立服务器
|
|
112
|
+
3、部署到已有 Rainbond
|
|
352
113
|
|
|
353
|
-
|
|
114
|
+
选择 1 时执行 `install-private` route 并传入 `--location local`;选择 2 时执行 `install-private` route 并传入 `--location server`;选择 3 时询问已有私有环境地址并执行 `private-existing` route。不会再显示额外的接入方式中间步骤。不得在进入平台安装器后重复询问部署位置,也不得在环境准备完成前询问应用来源。
|
|
354
115
|
|
|
355
|
-
|
|
356
|
-
~/.rainbond/mcp.env
|
|
357
|
-
```
|
|
116
|
+
选择“部署到独立服务器”后,只显示:
|
|
358
117
|
|
|
359
|
-
|
|
118
|
+
请选择服务器类型:
|
|
360
119
|
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
120
|
+
1、单台服务器(Linux)
|
|
121
|
+
2、三台及以上服务器(Linux)
|
|
122
|
+
3、已有 Kubernetes 集群
|
|
364
123
|
|
|
365
|
-
|
|
124
|
+
### 服务器 SSH 固定流程
|
|
366
125
|
|
|
367
|
-
|
|
368
|
-
- 当前已经打开的终端不会被子进程脚本直接改写
|
|
369
|
-
- 安装完成后,如果你想立刻在当前终端运行 `codex` 或 `claude`,请执行脚本最后提示的 `source ~/.zshrc` 或 `source ~/.bashrc`
|
|
126
|
+
部署到独立服务器或主机集群时,流程不再根据 Agent 是否提供可见终端而变化:
|
|
370
127
|
|
|
371
|
-
|
|
128
|
+
1. Rainskills 先使用 `BatchMode=yes` 检查 SSH 免密连接。
|
|
129
|
+
2. 已可连接时直接继续安装流程;不可连接时固定停止,不在 Agent 任务终端里等待密码。
|
|
130
|
+
3. 单台服务器时,用户在系统终端执行一条版本锁定的 `ssh prepare --ssh <user@host> --ssh-port <port>` 命令。
|
|
131
|
+
4. 主机集群时,Rainskills 先检查全部节点,一次列出所有待处理节点的名称、IP 和端口,再只给出一条版本锁定的 `ssh prepare-cluster --cluster-config <path>` 命令。该命令依次处理全部节点,已可免密连接的节点自动跳过;不得逐台显示命令或逐台等待用户回复。
|
|
132
|
+
5. 指纹和一次服务器密码均由系统 SSH 读取;两种命令都只准备公钥连接,不安装 Rainbond。全部节点处理完后,用户统一回复一次“已完成”。
|
|
133
|
+
6. Agent 使用同一版本、同一 `onboarding-id` 和原安装参数继续。不得重新询问环境、安装模式、节点或应用来源。
|
|
134
|
+
7. 后续传输、安装和验收全部使用免密 SSH;系统终端不会继续安装或授权。
|
|
135
|
+
8. Rainbond 验收通过后只进行一次浏览器授权,随后自动恢复最初的应用任务;不得回到 Agent 后再次授权。
|
|
372
136
|
|
|
373
|
-
|
|
137
|
+
主机密钥发生变化时直接阻断并要求人工核对,不自动替换 `known_hosts`。聊天中永远不接收密码、私钥或 Token。
|
|
374
138
|
|
|
375
|
-
|
|
139
|
+
## 多运行环境
|
|
376
140
|
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
141
|
+
- 第一个连接成功的环境自动成为全局默认环境;以后新增环境不修改默认值。
|
|
142
|
+
- 用户未指定环境时使用默认环境;用户明确指定时只覆盖本次 operation。
|
|
143
|
+
- 环境名称自动生成,可重命名;内部不可变 ID 不随重命名改变。
|
|
144
|
+
- 添加、重命名、重新授权或删除环境不改项目配置,也不需要为每个环境重新配置 Agent MCP。
|
|
145
|
+
- 新增环境直接建立独立连接,不读取或恢复旧版单环境状态;HTTPS 直接进入授权,明文 HTTP 只增加一次可信网络确认。
|
|
146
|
+
- 新增环境与首次部署复用同一套固定选择:先选“云端环境(免费体验)/私有环境(去对接)”;选择私有环境后直接选“部署到本机/部署到独立服务器/部署到已有 Rainbond”,不再出现旧的接入方式中间步骤。
|
|
147
|
+
- Agent 始终连接一个本地 Rainskills MCP。Rainskills 按 `operation_id` 从隔离凭据存储中选择目标 Rainbond。
|
|
148
|
+
- 明确说“团队”表示默认或指定运行环境中的 Rainbond 团队;明确说“运行环境/平台”表示环境。裸名称同时匹配两者时必须询问。
|
|
381
149
|
|
|
382
|
-
|
|
150
|
+
常用管理命令:
|
|
383
151
|
|
|
384
152
|
```bash
|
|
385
|
-
|
|
386
|
-
|
|
153
|
+
node <已安装的 Skills 根目录>/rainbond-platform-installer/scripts/local-runtime.js environment list --json
|
|
154
|
+
node <已安装的 Skills 根目录>/rainbond-platform-installer/scripts/local-runtime.js environment rename --environment-id <uuid> --name <name>
|
|
155
|
+
node <已安装的 Skills 根目录>/rainbond-platform-installer/scripts/local-runtime.js environment set-default --environment-id <uuid>
|
|
156
|
+
node <已安装的 Skills 根目录>/rainbond-platform-installer/scripts/local-runtime.js environment remove --environment-id <uuid>
|
|
387
157
|
```
|
|
388
158
|
|
|
389
|
-
|
|
159
|
+
这些本地状态命令不访问 npm 或网络。Agent 从当前已加载 Skill 的同级目录解析实际绝对路径;只有连接或安装运行环境时才调用固定版本的 npx launcher。
|
|
390
160
|
|
|
391
|
-
|
|
392
|
-
- 安装到非标准目录
|
|
393
|
-
- 在 CI 或临时目录中做验证
|
|
161
|
+
### 已有应用环境选择
|
|
394
162
|
|
|
395
|
-
|
|
163
|
+
查询、排障、修改、交付验证、快照、发布和回滚属于已有应用操作,只让用户选择 Rainbond Cloud 或承载目标应用的已有私有 Rainbond,绝不执行 `install-private`,也不安装一个空的新平台代替目标应用。每个 Skill 的第一句话应匹配当前动作,例如“验证应用交付状态和访问地址”,不要全部写成“部署当前项目”。
|
|
396
164
|
|
|
397
|
-
|
|
165
|
+
### 认证与权限恢复
|
|
398
166
|
|
|
399
|
-
|
|
167
|
+
业务 MCP 返回 401 时,依次执行以下 argv 参数:
|
|
400
168
|
|
|
401
|
-
```
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
# Codex Plugin 市场
|
|
406
|
-
codex plugin marketplace upgrade goodrain
|
|
169
|
+
```json
|
|
170
|
+
["runtime", "record-failure", "--onboarding-id", "<同一 onboarding-id>", "--step", "<当前固定步骤>", "--reason", "credential-expired"]
|
|
171
|
+
["runtime", "reconnect", "--onboarding-id", "<同一 onboarding-id>"]
|
|
172
|
+
["intent", "resume", "--onboarding-id", "<同一 onboarding-id>"]
|
|
407
173
|
```
|
|
408
174
|
|
|
409
|
-
|
|
175
|
+
只允许重新授权一次,并只重试记录的步骤;第二次 401 停止。403 时执行 `["runtime", "record-failure", "--onboarding-id", "<同一 onboarding-id>", "--step", "<当前固定步骤>", "--reason", "permission-denied"]`,随后立即停止,不 reconnect、不重新授权、不自动重试。
|
|
410
176
|
|
|
411
|
-
|
|
412
|
-
/plugin marketplace update goodrain
|
|
413
|
-
/plugin update rainskills@goodrain
|
|
414
|
-
/reload-plugins
|
|
415
|
-
```
|
|
177
|
+
凭据只由受保护的本地状态和客户端配置处理。不要在聊天、intent、日志或命令行参数中发送密码、JWT、Token 或私钥。
|
|
416
178
|
|
|
417
|
-
|
|
179
|
+
## 私有 Rainbond 安装
|
|
418
180
|
|
|
419
|
-
|
|
420
|
-
npx --yes rainskills@latest --force
|
|
421
|
-
```
|
|
181
|
+
环境选择按渐进流程展示:
|
|
422
182
|
|
|
423
|
-
|
|
183
|
+
1. 用户选择“私有环境”后,直接选择部署到本机、独立服务器或已有 Rainbond。
|
|
184
|
+
2. 部署到已有 Rainbond 只询问环境地址,不执行平台安装。
|
|
185
|
+
3. 部署到本机直接进入单机版,不展示 ROI 或 Kubernetes;只有选择独立服务器后,再选择单台 Linux、三台及以上 Linux 或已有 Kubernetes。
|
|
424
186
|
|
|
425
|
-
|
|
426
|
-
bash <(curl -fsSL https://get.rainbond.com/rainskills/install.sh) --force
|
|
427
|
-
```
|
|
428
|
-
|
|
429
|
-
本地仓库模式:
|
|
187
|
+
主机集群支持 1、2 或 N 台 Linux 服务器,不要求固定三台;etcd 节点数必须是正奇数。首次进入该分支时,Rainskills 会生成一份受保护的 `cluster.yaml` 示例文件。用户一次性修改服务器地址、SSH 端口和节点角色后回复“已完成”,Rainskills 会一次列出全部可确定的配置问题;校验通过后只准备全部节点的 SSH 免密连接,再展示拓扑和安装变更供用户确认,不再执行额外的 CPU、内存、磁盘、端口、网络或已有安装检查。生成的文件中不得填写密码、私钥或 Token,SSH 密码仍只由系统 `ssh` 在终端中读取。确认后仅查询 bootstrap 节点架构以选择对应的 ROI 文件,实际安装条件由 ROI 判断。已有 Kubernetes 分支使用指定 kubeconfig 和 context 安装,要求 Kubernetes 1.24 或更高版本。
|
|
430
188
|
|
|
431
|
-
|
|
432
|
-
git pull
|
|
433
|
-
./install.sh --force
|
|
434
|
-
```
|
|
189
|
+
Windows 本地安装是预览能力,也可以改选 Linux 服务器。它要求 Windows 10 build 19041+ 或 Windows 11 x64、已开启虚拟化并允许 UAC;安装器使用受管 WSL2 环境。macOS 本地路径使用 OrbStack。用户不需要理解这些底层实现。
|
|
435
190
|
|
|
436
|
-
|
|
191
|
+
常用固定参数:
|
|
437
192
|
|
|
438
193
|
```bash
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
## 目录结构
|
|
444
|
-
|
|
445
|
-
```text
|
|
446
|
-
rainbond-skills/
|
|
447
|
-
README.md
|
|
448
|
-
install.sh
|
|
449
|
-
package.json
|
|
450
|
-
bin/rainskills.js
|
|
451
|
-
.gitignore
|
|
452
|
-
rainbond-app-assistant/
|
|
453
|
-
SKILL.md
|
|
454
|
-
rainbond-delivery-verifier/
|
|
455
|
-
SKILL.md
|
|
456
|
-
...
|
|
457
|
-
```
|
|
194
|
+
# 本地单机
|
|
195
|
+
npx --yes rainskills@0.1.2 platform install --onboarding-id <id> \
|
|
196
|
+
--location local --mode single-node
|
|
458
197
|
|
|
459
|
-
|
|
198
|
+
# Linux 服务器单机
|
|
199
|
+
npx --yes rainskills@0.1.2 platform install --onboarding-id <id> \
|
|
200
|
+
--location server --mode single-node --ssh <user@host>
|
|
460
201
|
|
|
461
|
-
|
|
202
|
+
# 服务器主机集群(自动生成受保护示例文件)
|
|
203
|
+
npx --yes rainskills@0.1.2 platform install --onboarding-id <id> \
|
|
204
|
+
--location server --mode host-cluster
|
|
462
205
|
|
|
463
|
-
|
|
206
|
+
# 已有高级 ROI cluster.yaml 才追加:--cluster-config <path>
|
|
464
207
|
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
-
|
|
469
|
-
|
|
470
|
-
## 常见问题
|
|
471
|
-
|
|
472
|
-
### 1. 安装后没有生效
|
|
473
|
-
|
|
474
|
-
Codex / Claude Code 请按安装器提示重启。
|
|
475
|
-
|
|
476
|
-
### 2. 为什么当前终端里还是连不上 MCP
|
|
477
|
-
|
|
478
|
-
因为 `./install.sh` 是一个子进程,不能直接改写你当前 shell 的环境变量。
|
|
479
|
-
|
|
480
|
-
处理方式:
|
|
208
|
+
# 已有 Kubernetes
|
|
209
|
+
npx --yes rainskills@0.1.2 platform install --onboarding-id <id> \
|
|
210
|
+
--location server --mode existing-kubernetes \
|
|
211
|
+
--kubeconfig <path> --kube-context <name> --chart-version <version>
|
|
212
|
+
```
|
|
481
213
|
|
|
482
|
-
|
|
483
|
-
- 或者开一个新的终端
|
|
214
|
+
可以为已有 Kubernetes 追加 `--values <path>`。非交互流程只有在展示预检和系统变更、用户明确同意后才追加 `--yes`。
|
|
484
215
|
|
|
485
|
-
###
|
|
216
|
+
### 安全与恢复边界
|
|
486
217
|
|
|
487
|
-
|
|
218
|
+
- Console origin 会先规范化、探测并锁定。HTTPS 跨 origin 跳转必须重新确认;明文 HTTP 只允许用户明确确认的可信内网。
|
|
219
|
+
- ROI 和 Helm 制品只从固定官方 HTTPS 来源获取,限制跳转和大小,并锁定版本与摘要;恢复时复用已验证字节。
|
|
220
|
+
- kubeconfig、values、ROI 配置和断点使用受保护文件;所有 kubectl/Helm 调用都绑定固定 kubeconfig、context 和集群 identity。
|
|
221
|
+
- 执行安装前必须完成只读预检和 dry-run(适用时),并单独确认真实下载/安装效果。
|
|
222
|
+
- 取消会停止活动子进程但保留断点。失败或取消后只执行安装器输出的固定重试 argv;不要凭记忆改写命令。
|
|
223
|
+
- 检测到目标、配置、集群 identity、版本或摘要漂移时停止,不静默换目标。
|
|
488
224
|
|
|
489
|
-
|
|
225
|
+
平台安装成功必须验证节点/平台组件、`rbd-app-ui` 和 Console 可访问,再恢复原始应用动作。详细规则见 `rainbond-platform-installer/references/installation-policy.md`。
|
|
490
226
|
|
|
491
|
-
|
|
227
|
+
## 更新
|
|
492
228
|
|
|
493
|
-
|
|
494
|
-
~/.rainbond/mcp.env
|
|
495
|
-
```
|
|
229
|
+
Rainskills 会在用户下一次发起业务动作时静默检查更新,且只跟随 npm `latest` 指向的正式版。当前版本是 RC 或其他预发布版本时不会查询、不会自动升级;npm 上的新 RC 版本也不参与正式版自动升级。
|
|
496
230
|
|
|
497
|
-
|
|
231
|
+
发现更高的正式版后,当前 launcher 只委托到经过校验的精确版本,例如 `rainskills@1.2.3`,不会执行浮动的 `@latest` 业务代码。新版本先原子刷新已经安装的 Rainskills Skills,再继续原业务操作。版本检查失败、安装位置不安全或文件迁移失败时会保留旧版本继续,不要求用户处理。
|
|
498
232
|
|
|
499
|
-
|
|
233
|
+
升级只更新 Rainskills 自身,不触发 Rainbond 安装、运行环境选择、登录授权、MCP 配置或重新对接。原始业务操作会继续执行;只有该业务操作本身需要运行环境时,才按既有门禁检查当前连接。可用连接直接复用,401 只重新授权一次,403 立即停止,从未连接过运行环境时才进入环境选择。
|
|
500
234
|
|
|
501
|
-
|
|
235
|
+
正在执行或等待恢复的部署、私有平台安装和授权流程继续使用启动时锁定的旧版本,自动升级不会插入这些流程。操作结束后的下一次普通业务请求才会再次检查正式版。
|
|
502
236
|
|
|
503
|
-
|
|
504
|
-
npx --yes rainskills refresh
|
|
505
|
-
# 或:bash <(curl -fsSL https://get.rainbond.com/rainskills/install.sh) refresh
|
|
506
|
-
# 或:bash ~/.rainbond/skills/install.sh refresh
|
|
507
|
-
```
|
|
237
|
+
如需手工恢复安装,可执行 `npx --yes rainskills@latest --force`;正常使用不需要主动运行更新命令。
|
|
508
238
|
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
刷新后按终端提示重启 Codex / Claude Code。
|
|
239
|
+
## 包含的 Skill
|
|
512
240
|
|
|
513
|
-
|
|
241
|
+
- `rainbond-app-assistant`
|
|
242
|
+
- `rainbond-app-version-assistant`
|
|
243
|
+
- `rainbond-delivery-verifier`
|
|
244
|
+
- `rainbond-env-sync`
|
|
245
|
+
- `rainbond-fullstack-bootstrap`
|
|
246
|
+
- `rainbond-fullstack-troubleshooter`
|
|
247
|
+
- `rainbond-opensource-app-deploy`
|
|
248
|
+
- `rainbond-platform-installer`
|
|
249
|
+
- `rainbond-platform-query`
|
|
250
|
+
- `rainbond-project-init`
|
|
251
|
+
- `rainbond-template-installer`
|
|
514
252
|
|
|
515
|
-
|
|
253
|
+
## 部署类 skill 怎么选
|
|
516
254
|
|
|
517
|
-
|
|
255
|
+
- 应用市场里有的应用 → `rainbond-template-installer`(一键安装商店模板)
|
|
256
|
+
- 市场里没有的开源软件(有 docker-compose、Helm 或镜像)→ `rainbond-opensource-app-deploy`
|
|
257
|
+
- 部署你自己写的项目(源码或私有镜像)→ `rainbond-app-assistant`
|
|
518
258
|
|
|
519
|
-
|
|
259
|
+
## License
|
|
520
260
|
|
|
521
|
-
|
|
522
|
-
2. 先查看 `docs/product-object-model.md`,它是当前产品对象模型和跨-skill 边界的主文档
|
|
523
|
-
3. 在虚拟环境中执行 `python3 -m pip install -r requirements-test.txt`,再执行 `npm test` 跑 helper、评测、安装器、包内容和 PTY 信号测试;测试在隔离临时目录中运行,无需输入,也不应打开真实浏览器
|
|
524
|
-
4. 执行 `./install.sh --dest /tmp/rainbond-skills-test --force` 做一次本地验证
|
|
525
|
-
5. 确认无误后再提交到 Git 仓库
|
|
261
|
+
Apache-2.0
|