# 像鱼香 ROS 一样一条命令安装

鱼香 ROS 的方式是：

```bash
wget http://fishros.com/install -O fishros && . fishros
```

它的本质是：

1. 下载一个很小的入口脚本。
2. 运行这个入口脚本。
3. 入口脚本再下载、安装、配置完整工具链。

这个项目同时支持 Windows、Ubuntu、macOS。Windows 等价的一键命令建议用 PowerShell：

```powershell
irm https://gl-robotics.com/ai-dev/install.ps1 | iex
```

Ubuntu/macOS 使用：

```bash
curl -fsSL https://gl-robotics.com/ai-dev/install.sh | bash
```

或者：

```bash
wget -O- https://gl-robotics.com/ai-dev/install.sh | bash
```

其中：

- `irm` 是 `Invoke-RestMethod` 的简写，用来下载脚本内容。
- `iex` 是 `Invoke-Expression` 的简写，用来执行下载到的脚本。
- `install.ps1` 是本项目的 bootstrap 脚本，不是完整安装器。

如果你希望用户先看见脚本文件再执行，可以用更透明的两步命令：

```powershell
iwr https://gl-robotics.com/ai-dev/install.ps1 -OutFile install.ps1
powershell -ExecutionPolicy Bypass -File .\install.ps1
```

## 推荐发布结构

你需要准备两个在线文件：

```text
https://gl-robotics.com/ai-dev/install.ps1
https://gl-robotics.com/ai-dev/install.sh
https://gl-robotics.com/ai-dev/ai-dev-installer-mvp.zip
```

其中：

- `install.ps1` 来自 `bootstrap/install.ps1`。
- `install.sh` 来自 `bootstrap/install.sh`。
- `ai-dev-installer-mvp.zip` 是完整安装包。
- `claudian-compatible/` 是 Claudian 兼容版插件的静态镜像目录。
- `realclaudian/` 可保留为 Claudian 最新版镜像，但不要作为旧 Obsidian 桌面外壳的默认安装源。
- 可选的 Ghelper、Clash Verge 安装包建议放到对象存储或 Release，再把链接写入 `config/install-config.example.json`。
- Chrome 安装包也支持中转，但公开再分发前需要确认 Google Chrome 的分发条款；默认建议只写官方下载地址或企业/教学内网地址。

发布前，修改 `bootstrap/install.ps1` 里的：

```powershell
$DefaultZipUrl = "https://gl-robotics.com/ai-dev/ai-dev-installer-mvp.zip"
```

改成你的真实 zip 地址，例如：

```powershell
$DefaultZipUrl = "https://gl-robotics.com/ai-dev/ai-dev-installer-mvp.zip"
```

然后把这个 bootstrap 脚本上传为：

```text
https://gl-robotics.com/ai-dev/install.ps1
```

用户最终执行：

```powershell
irm https://gl-robotics.com/ai-dev/install.ps1 | iex
```

## 国内中转选择

可以放在：

- 阿里云 OSS
- 腾讯云 COS
- 七牛云
- 又拍云
- 自己的服务器
- GitHub Release 加国内 CDN
- 公司或学校内网服务器

如果目标是国内普通用户，优先推荐：

```text
对象存储 + CDN + HTTPS
```

不要只放百度网盘，因为脚本很难稳定自动下载百度网盘里的文件。

## 新功能中转配置

第三方软件默认应优先走官方源；国内网络下载失败时，再使用你的中转地址兜底：

```json
{
  "ghelperDownloadUrl": "https://ghelper.app/download/Ghelper-v2.8.18.zip",
  "ghelperMirrorDownloadUrl": "https://gl-robotics.com/ai-dev/ghelper/Ghelper-v2.8.18.zip",
  "chromeWindowsUrl": "https://你的域名/ai-dev/chrome/chrome_installer.exe",
  "chromeMacosUrl": "https://你的域名/ai-dev/chrome/googlechrome.dmg",
  "chromeLinuxDebUrl": "https://你的域名/ai-dev/chrome/google-chrome-stable_current_amd64.deb",
  "clashVergeWindowsX64Url": "https://你的域名/ai-dev/clash-verge/Clash.Verge_2.5.2_x64-setup.exe",
  "clashVergeMacosArm64Url": "https://你的域名/ai-dev/clash-verge/Clash.Verge_2.5.2_aarch64.dmg",
  "clashVergeLinuxDebUrl": "https://你的域名/ai-dev/clash-verge/Clash.Verge_2.5.2_amd64.deb",
  "clashVergeLinuxArm64DebUrl": "https://你的域名/ai-dev/clash-verge/Clash.Verge_2.5.2_arm64.deb"
}
```

Clash Verge 默认先走 `clash-verge-rev/clash-verge-rev` 的 GitHub Release；只有官方源解析或下载失败时，才使用 `clashVerge*Url` 中的 GL Robotics 中转地址。Ghelper 同理，先走官网公开下载包，失败后走 `ghelperMirrorDownloadUrl`。

## 完整链路

```text
用户执行一条 PowerShell 命令
  |
  v
下载 install.ps1
  |
  v
install.ps1 下载 ai-dev-installer-mvp.zip
  |
  v
解压到 %LOCALAPPDATA%\AI-Dev-Installer\current
  |
  v
运行 scripts\install.ps1
  |
  v
安装 Node / Claude Code / Claudian
  |
  v
配置 DeepSeek API
```

Ubuntu/macOS 链路相同，只是入口脚本为 `install.sh`，解压后运行 `scripts/install.sh`。

## 另一种更像 fishros 的 Windows 命令

如果你想让用户显式下载脚本到本地，命令可以写成：

```powershell
iwr https://gl-robotics.com/ai-dev/install.ps1 -OutFile ai-dev-install.ps1; powershell -ExecutionPolicy Bypass -File .\ai-dev-install.ps1
```

但对普通用户来说，下面这个更短：

```powershell
irm https://gl-robotics.com/ai-dev/install.ps1 | iex
```

Ubuntu/macOS 的短命令：

```bash
curl -fsSL https://gl-robotics.com/ai-dev/install.sh | bash
```

## 安全建议

一条命令远程执行脚本非常方便，但用户会担心安全。建议你发布时同时提供：

1. 开源仓库地址。
2. `install.ps1` 明文链接。
3. zip 包 SHA256。
4. 版本号和更新日志。
5. 不要在脚本里内置任何 API Key。

可以在页面上写：

```powershell
# 可选：先查看脚本内容
iwr https://gl-robotics.com/ai-dev/install.ps1

# 确认后安装
irm https://gl-robotics.com/ai-dev/install.ps1 | iex
```

Ubuntu/macOS 可以先查看：

```bash
curl -fsSL https://gl-robotics.com/ai-dev/install.sh
```

## 后续可以升级成短域名

最终可以做成：

```powershell
irm https://aidev.cn/install | iex
```

或者：

```powershell
iwr https://aidev.cn/install -OutFile aidev.ps1; powershell -ExecutionPolicy Bypass -File .\aidev.ps1
```

Windows 下不建议直接模仿 `. fishros`，因为 `. fishros` 是 Linux shell 的 source 语法。PowerShell 里更自然的是 `irm ... | iex`。
