---
context: phase
phase: 01-curl-sh
status: in_progress
last_updated: 2026-06-12T06:53:51Z
---

<current_state>
Phase 01 核心逻辑全部完成并已提交（最新 df6d708）。
install.sh 是纯 bash，依赖只有 curl + unzip，无 Python。
versions.txt（TSV）涵盖 15 个 cpu/os 组合，由 GitHub Actions 每日更新。
剩余工作：验证国产 OS 检测逻辑 + 填写真实 VERSIONS_URL。
</current_state>

<completed_work>
- Task 1: install.sh 重写为 curl|sh 无参数风格（52d22fa）
- Task 2: update-versions.sh — eco.dameng.com API，纯 shell，TSV 输出（df6d708）
- Task 3: .github/workflows/update-versions.yml — ubuntu-latest（58deaaa）
- Task 4: eco.dameng.com API 发现（GET /eco-download-server/cpu/os/table/page/data）
- Task 5: install.sh detect_platform() — /proc/cpuinfo 区分 hygon/ft2000/kunpeng；/etc/os-release 检测 OS；awk 精确匹配 TSV（df6d708）
- Task 6: versions.txt TSV，15 个平台（df6d708）
</completed_work>

<remaining_work>
- Task 7: 更新 VERSIONS_URL（等 GitHub 仓库建好后填入 install.sh 第 17 行）
- Task 8: 在麒麟/统信 docker 镜像里验证 detect_platform() 的 OS 检测逻辑
- Task 9: x86_64/RHEL7 环境端到端 smoke test
</remaining_work>

<decisions_made>
- eco.dameng.com API 取 URL（境外可达，不需要 cn-runner）
- TSV 格式替代 JSON（shell 不用 Python/jq，awk 一行匹配）
- 运行时检测 CPU+OS 精确匹配包（飞腾/鲲鹏/海光 包不能互用）
- update-versions.sh log→stderr，TSV→stdout 重定向到文件
- 回退策略：OS 不匹配时取同 CPU 第一条记录，最终兜底 rhel7
</decisions_made>

<blockers>
- 国产 OS /etc/os-release 字段未在真实机器验证（有兜底逻辑，不阻塞）
- VERSIONS_URL 是占位符（等仓库建好）
</blockers>

## Required Reading (in order)
1. `install.sh` — detect_platform() 检测逻辑（arch/cpu/os 三段）
2. `scripts/update-versions.sh` — PLATFORMS 数组 + API 调用方式
3. `versions.txt` — TSV 格式，arch<TAB>cpu<TAB>os<TAB>url

## Critical Anti-Patterns (do NOT repeat these)
- 不要在 shell 脚本里用 Python 解析 JSON — 改用 TSV + awk
- 不要用文件探测获取下载 URL — eco.dameng.com API 直接返回准确 URL
- 不要按 arch 一刀切选包 — 飞腾2000 和鲲鹏920 的包不能互用，需精确匹配

## Infrastructure State
- versions.txt: 15 个平台，所有文件已 commit
- VERSIONS_URL in install.sh (第17行): 占位符，需填真实 raw URL

<next_action>
验证 detect_platform() OS 检测：在麒麟/统信 docker 镜像里运行
  bash -c 'source install.sh 2>/dev/null; detect_platform; echo "arch=$ARCH cpu=$CPU_KEY os=$OS_KEY"'
确认 /etc/os-release 里 ID 和 VERSION_ID 的实际值（尤其是 SP1/SP3 格式）。
</next_action>
