---
agent: 'agent'
description: Download, install or upgrade cloudwise-sdd tool based on operating system
---

<meta>
description: Download, install or upgrade cloudwise-sdd tool based on operating system
</meta>

# SDD 工具安装/升级

<background_information>
**使命**: 根据操作系统自动下载、安装或升级 cloudwise-sdd 工具

- macOS / Linux：使用 Bash 脚本安装/升级
- Windows：使用 PowerShell 脚本安装/升级
- **可重复执行**：如果已安装 cloudwise-sdd，再次执行此命令将自动升级到最新版本

**成功标准**:

- 正确检测操作系统类型
- 执行对应平台的安装/升级脚本
- 安装/升级完成后提供使用说明
  </background_information>

<instructions>
## 核心任务
根据当前操作系统类型，执行相应的 cloudwise-sdd 安装或升级脚本。此命令可以反复执行，如果已安装 cloudwise-sdd，将自动升级到最新版本。**每日检查机制**：如果今天已经执行过安装/升级，将自动跳过，避免重复调用。

## 执行步骤

1. **检查今天是否已执行**: 首先检查今天是否已经执行过安装/升级。根据操作系统使用相应的工具：
    - **macOS / Linux**: 使用 Bash 工具执行检查：
      ```bash
      TODAY=$(date '+%Y-%m-%d')
      LAST_INSTALL_FILE=".github/prompts/.last_install_date"
      if [ -f "$LAST_INSTALL_FILE" ] && [ "$(cat "$LAST_INSTALL_FILE" 2>/dev/null | tr -d '\r\n')" = "$TODAY" ]; then
        echo "Already installed today ($TODAY), skipping installation/upgrade"
        exit 0
      fi
      ```
    - **Windows**: 使用 PowerShell 工具执行检查：
      ```powershell
      $today = Get-Date -Format "yyyy-MM-dd"
      $lastInstallFile = ".github/prompts/.last_install_date"
      if (Test-Path $lastInstallFile) {
        $lastDate = (Get-Content $lastInstallFile -Raw).Trim()
        if ($lastDate -eq $today) {
          Write-Host "Already installed today ($today), skipping installation/upgrade"
          exit 0
        }
      }
      ```
    - 如果文件存在且日期是今天，则跳过安装/升级步骤，直接退出
    - 如果文件不存在或日期不是今天，则继续执行安装/升级步骤
    - 注意：标记文件位于项目根目录下的 `.github/prompts/.last_install_date`（Windows 路径使用反斜杠）

2. **检测操作系统**: 使用 Bash 工具检测当前操作系统类型：
   ```bash
   # 检测操作系统类型
   OS_TYPE="unknown"
   if [[ "$OSTYPE" == "darwin"* ]]; then
     OS_TYPE="macOS"
   elif [[ "$OSTYPE" == "linux-gnu"* ]] || [[ "$OSTYPE" == "linux"* ]]; then
     OS_TYPE="Linux"
   elif [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "cygwin" ]] || [[ -n "$WINDIR" ]]; then
     OS_TYPE="Windows"
   else
     # 尝试使用 uname 命令
     UNAME_OS=$(uname -s 2>/dev/null || echo "")
     if [[ "$UNAME_OS" == "Darwin" ]]; then
       OS_TYPE="macOS"
     elif [[ "$UNAME_OS" == "Linux" ]]; then
       OS_TYPE="Linux"
     fi
   fi
   echo "检测到操作系统: $OS_TYPE"
   ```

3. **执行安装/升级脚本**:
    - **macOS / Linux**: 如果检测到 macOS 或 Linux，使用 Bash 工具执行（如果已安装会自动升级）：
      ```bash
      /bin/bash -c "$(curl -fsSL https://docp.cloud.cloudwise.com/ARCH/cloudwise-sdd/install.sh)" -- --copilot --yes
      ```
    - **Windows**: 如果检测到 Windows，使用 PowerShell 工具执行（如果已安装会自动升级）：
      ```powershell
      powershell -ExecutionPolicy Bypass -Command '& { $script = (Invoke-WebRequest -Uri "https://docp.cloud.cloudwise.com/ARCH/cloudwise-sdd/install.ps1" -UseBasicParsing).Content; Invoke-Expression $script }' -Agent copilot -Yes
      ```
    - **未知系统**: 如果无法检测操作系统类型，提示用户手动选择：
        - 对于 macOS/Linux，执行 Bash 脚本：`/bin/bash -c "$(curl -fsSL https://docp.cloud.cloudwise.com/ARCH/cloudwise-sdd/install.sh)" -- --copilot --yes`
        - 对于 Windows，执行 PowerShell 脚本：`powershell -ExecutionPolicy Bypass -Command '& { $script = (Invoke-WebRequest -Uri "https://docp.cloud.cloudwise.com/ARCH/cloudwise-sdd/install.ps1" -UseBasicParsing).Content; Invoke-Expression $script }' -Agent copilot -Yes`
    - **注意**: 此命令可以安全地反复执行，如果 cloudwise-sdd 已安装，脚本会自动检测并升级到最新版本

## 重要约束

- 必须正确检测操作系统类型
- 根据操作系统执行对应的安装脚本
- 如果检测失败，应提示用户手动选择安装方式
  </instructions>

## 工具指南

1. **每日检查**:
    - **macOS/Linux**: 使用 **Bash** 工具检查 `.github/prompts/.last_install_date` 文件
    - **Windows**: 使用 **PowerShell** 工具检查 `.github/prompts/.last_install_date` 文件
    - 如果文件存在且日期是今天，跳过安装/升级步骤，直接退出
    - 此机制确保每天只执行一次安装/升级，避免重复调用
    - 标记文件位于项目根目录下，跨平台兼容（macOS/Linux/Windows）

2. **操作系统检测**:
    - 使用 **Bash** 工具执行检测命令，通过 `$OSTYPE` 环境变量或 `uname -s` 命令判断操作系统
    - 将检测结果保存，用于后续步骤

3. **执行安装/升级脚本**:
    - **macOS/Linux**: 使用 **Bash** 工具执行安装/升级命令（如果已安装会自动升级）
    - **Windows**: 使用 **PowerShell** 工具执行安装/升级命令（如果已安装会自动升级）
    - 如果无法确定操作系统，提供两种安装方式的说明，让用户选择
    - 此命令可重复执行，已安装的情况下会自动升级

4. **安装/升级后处理**:
    - 检查安装/升级是否成功
    - 如果安装/升级成功，根据操作系统使用相应的工具将今天的日期写入标记文件：
        - **macOS / Linux**: 使用 Bash 工具执行：
          ```bash
          echo "$(date '+%Y-%m-%d')" > .github/prompts/.last_install_date
          ```
        - **Windows**: 使用 PowerShell 工具执行：
          ```powershell
          New-Item -ItemType Directory -Force -Path ".github/prompts" | Out-Null
          (Get-Date -Format "yyyy-MM-dd") | Out-File -FilePath ".github/prompts/.last_install_date" -Encoding utf8 -NoNewline
          ```
    - 提供使用说明和下一步操作建议
    - 说明可以随时再次执行此命令以升级到最新版本

## 操作系统检测逻辑

1. **macOS**: `$OSTYPE == "darwin"*` 或 `uname -s == "Darwin"`
2. **Linux**: `$OSTYPE == "linux-gnu"*` 或 `uname -s == "Linux"`
3. **Windows**: `$OSTYPE == "msys"` 或 `$OSTYPE == "cygwin"` 或存在 `$WINDIR` 环境变量

## 安装/升级后说明

安装或升级完成后，cloudwise-sdd 工具将可用于：

- 管理 Steering：`/sdd-steering`
- 创建自定义 Steering：`/sdd-steering-custom <name>`
- 初始化新功能：`/sdd-spec-init "description"`
- 其他 SDD 相关命令

**升级说明**: 此命令可以反复执行，如果 cloudwise-sdd 已安装，再次执行将自动升级到最新版本。建议定期执行此命令以保持工具为最新版本。
**注意**: 此命令失败不影响后续执行。