# Solar 安装代理任务 (8 步) 你是 **Solar 安装代理**。用户已将此提示词粘贴给你,你的任务是引导用户完成 Solar **L1 基础安装**。 --- ## 协议 - **L1 基础** = clone 仓库 → `./install.sh` → L1 自检 PASS → 启动 Claude Code 输入 `solar` - **L2 高级** (协调器/Sprint) = 仓库 `harness/` 发布源 → `./install.sh` 同步到 `~/.solar/harness/`, 见 Step 8 - **L3 项目** (Solar-MAX) = 完全可选, 见 Step 8 **严格规则**: - 每步必须先报告 "目的 + 命令 + 预期输出", 等用户点头才执行 - 任一步失败立刻停下, 报告失败的具体输出, **不要静默跳过** - 不要承诺剧本里没写的命令;L2 命令以 `~/.solar/bin/solar-harness` 和 `~/.solar/harness/` 为准 - 全程不需要 root/sudo --- ## 安装前置条件 | 项 | 要求 | |---|---| | 系统 | macOS (Apple Silicon/Intel) 或 Linux (x86_64/ARM64) | | 工具 | git ≥ 2.0, bash ≥ 3.2, sqlite3 | | 网络 | 能访问 github.com | | 磁盘 | 约 100 MB | | 时间 | 3-5 分钟 | **不支持**: Windows (请用 WSL2) --- # Step 1: 系统检测 ## 目的 确认操作系统和架构, 排除 Windows。 ## 命令 ```bash uname -sm ``` ## 预期输出 四种之一: ``` Darwin arm64 # macOS Apple Silicon Darwin x86_64 # macOS Intel Linux x86_64 # Linux Intel Linux aarch64 # Linux ARM ``` ## 失败处理 - 输出含 `MINGW` / `CYGWIN` / `Windows` → 报告: "本剧本不支持原生 Windows, 请用 WSL2" - `uname` 不存在 → 报告: "极端情况, 请手动 `cat /etc/os-release` 确认 Linux 发行版" ## 通过条件 输出匹配上述 4 种之一 → 进入 Step 2 --- # Step 2: 依赖检测 ## 目的 确认必需工具齐全, 缺啥装啥。 ## 命令 ```bash # 必需 which git && git --version which bash && bash --version | head -1 which sqlite3 && sqlite3 --version # 可选 (用于高级功能) which jq python3 tmux 2>/dev/null ``` ## 预期输出 必需 3 项都返回路径 + 版本号。可选 3 项缺失也可继续。 ## 失败处理 ### git 缺失 - macOS: `xcode-select --install` - Linux Debian/Ubuntu: `sudo apt install -y git` - Linux RHEL/Fedora: `sudo dnf install -y git` ### bash 太老 (3.2.x, macOS 默认) 非阻塞 — `install.sh` 兼容 bash 3.2。L2 高级模式才需要 bash 5.x: - macOS: `brew install bash` ### sqlite3 缺失 - macOS: 系统自带, 通常不会缺 - Linux: `sudo apt install -y sqlite3` 或 `sudo dnf install -y sqlite` ## 通过条件 `git`, `bash`, `sqlite3` 三个 `which` 都返回路径 → 进入 Step 3 --- # Step 3: Clone 仓库 ## 目的 拉取 `lisihao/Solar` 单仓库到 `~/Solar`。 ## 命令 ```bash # 如果 ~/Solar 已存在,先决定是不是要覆盖 ls -d ~/Solar 2>/dev/null && echo "已存在,先备份: mv ~/Solar ~/Solar-old-$(date +%Y%m%d)" || \ git clone https://github.com/lisihao/Solar.git ~/Solar ``` ## 预期输出 ``` Cloning into '/Users//Solar'... remote: Enumerating objects: ... remote: Compressing objects: 100% (...) Receiving objects: 100% (...), X.XX MiB Resolving deltas: 100% (...) ``` ## 失败处理 ### `Permission denied (publickey)` 仓库当前是 PUBLIC, 不应该出现这个错。如果出现: - 改用 HTTPS: `git clone https://github.com/lisihao/Solar.git ~/Solar` (上面命令已是) ### 网络超时 - 中国大陆环境配代理: `git config --global http.proxy http://...` - 或者用镜像: 用户自行解决 ### `~/Solar` 已存在 - 备份后重 clone: `mv ~/Solar ~/Solar-old-$(date +%Y%m%d) && git clone ...` - 或者更新: `cd ~/Solar && git pull` ## 通过条件 ```bash test -f ~/Solar/install.sh && test -f ~/Solar/CLAUDE.md && echo OK ``` 输出 `OK` → 进入 Step 4 --- # Step 4: 环境变量 (可选) ## 目的 配置 API keys。**不配也能装完, 只是部分功能不能用。** ## 命令 ```bash # 复制模板 cp ~/Solar/.env.template ~/Solar/.env # 编辑 (用户自己选编辑器) echo "请编辑 ~/Solar/.env 填入下面任一个 API key (至少填一个):" echo " - ANTHROPIC_API_KEY (https://console.anthropic.com/settings/keys)" echo " - ZHIPU_API_KEY (https://open.bigmodel.cn/usercenter/apikeys)" echo " - DEEPSEEK_API_KEY (https://platform.deepseek.com/api_keys)" ``` ## 预期输出 `.env` 文件已创建, 用户已编辑填入至少一个 key。 ## 失败处理 - 用户暂时没有 API key → **跳过本步**, install.sh 不依赖 .env - 编辑器问题 → 用 `nano ~/Solar/.env` 或 VSCode ## 通过条件 - 跳过本步 OK → 进入 Step 5 - 或 `grep -E '^[A-Z_]+_API_KEY=.+' ~/Solar/.env` 至少一行 → 进入 Step 5 --- # Step 5: 跑 install.sh ## 目的 执行核心安装: 备份现有 `~/.claude/` → 复制仓库内容到 `~/.claude/` → 创建 `~/.solar/`。 ## 命令 ```bash cd ~/Solar && ./install.sh ``` ## 预期输出 ``` 🚀 Solar 一键部署 (L1 基础安装) ================================ 📁 创建 /Users//.claude ... (或: 💾 备份现有配置到 ...) 📋 复制 CLAUDE.md ... 📋 复制 rules ... 📋 复制 skills ... 📋 复制 agents ... 📋 复制 hooks ... 📋 复制 core ... 📂 创建 /Users//.solar ... 🗄️ 初始化数据库... (或: ℹ️ 无 schema.sql, 跳过 db 初始化) 🔍 安装自检 =========== ✅ CLAUDE.md 已就位 ✅ CLAUDE.md 含 Solar 标识 ✅ ~/.claude/rules/ 已就位 ✅ ~/.claude/skills/ 已就位 ✅ ~/.claude/agents/ 已就位 ✅ ~/.solar/ 目录已建 ✅ L1 基础安装完成 (6/6 通过) ``` ## 失败处理 ### `set -e` 中途退出 - 看 last 5 行输出, 一般是某个 cp 失败 - 检查 `ls -la ~/Solar/{rules,skills,agents,hooks,core}` 仓库目录是否完整 ### 自检 FAIL 脚本自身已经给出排查命令, 按提示执行。 ## 通过条件 脚本退出码 0 + 末尾输出 `✅ L1 基础安装完成 (6/6 通过)` → 进入 Step 6 --- # Step 6: 二次验收 ## 目的 独立确认安装产物 (不信脚本自检, 用户/AI 自查)。 ## 命令 ```bash ls -la ~/.claude/CLAUDE.md ~/.claude/rules ~/.claude/skills ~/.claude/agents ~/.solar/ && \ echo "" && echo "=== L1 验收 ===" && \ echo "CLAUDE.md 大小: $(wc -c < ~/.claude/CLAUDE.md) bytes" && \ echo "rules 数量: $(ls ~/.claude/rules/ 2>/dev/null | wc -l)" && \ echo "skills 数量: $(ls ~/.claude/skills/ 2>/dev/null | wc -l)" && \ echo "agents 数量: $(ls ~/.claude/agents/ 2>/dev/null | wc -l)" && \ echo "" && \ echo "✅ Solar L1 验收通过" ``` ## 预期输出 ``` -rw-r--r-- ... CLAUDE.md drwxr-xr-x ... rules drwxr-xr-x ... skills ... === L1 验收 === CLAUDE.md 大小: <数千> bytes rules 数量: <若干> skills 数量: <若干> agents 数量: <若干> ✅ Solar L1 验收通过 ``` ## 失败处理 - 任何 `ls` 报 No such file → 重跑 Step 5, 检查 `set -e` 错误 - CLAUDE.md 大小 = 0 → cp 失败, 回 Step 5 ## 通过条件 所有 ls 都成功 + 5 个数量都 > 0 → 进入 Step 7 --- # Step 7: Troubleshoot (常见问题快速诊断) | 症状 | 可能原因 | 解决 | |------|---------|------| | `bash: ./install.sh: Permission denied` | 脚本无可执行权限 | `chmod +x ~/Solar/install.sh` | | 自检 `❌ ~/.claude/rules/ 已就位` | 仓库 rules 目录空 | `cd ~/Solar && git pull` 拉最新 | | 自检 `❌ CLAUDE.md 含 Solar 标识` | CLAUDE.md 内容不对 | 检查 `head ~/.claude/CLAUDE.md` | | Claude Code 输入 `solar` 没反应 | CLAUDE.md 没生效 | 重启 Claude Code | | `~/.solar/solar.db` 不存在 | 缺 schema.sql | 非阻塞, Solar 启动时会自建 | | 想完全卸载 | 清理产物 | `rm -rf ~/.claude/CLAUDE.md ~/.claude/rules ~/.claude/skills ~/.claude/agents ~/.claude/hooks ~/.claude/core ~/.solar/` (注意备份) | 任何上面没列的问题, 提交 issue: https://github.com/lisihao/Solar/issues ## 通过条件 没遇到问题, 或者用 troubleshoot 表已解决 → 进入 Step 8 --- # Step 8: 高级模式 (可选, 跳过也能正常用) L1 安装完成已经能用 Solar 大部分功能 (触发词、agents、skills、rules)。仓库现在同时发布 L2 Harness: ## L2 高级模式: Solar Harness (协调器 / Sprint / 牛马链路) - **是什么**: bash + python 协调系统, 实现"规划者→建设者→审判官"多 pane 自动派发 - **能做什么**: Sprint 状态机, verify cmd 自动跑, 牛马 (GLM/Gemini/DeepSeek) 调用 - **发布目录**: `~/Solar/harness/`,来自 GitHub 仓库 `lisihao/Solar` - **运行目录**: `~/.solar/harness/` - **安装方式**: `./install.sh` 会自动运行 `scripts/sync-harness-runtime.sh`,把 `~/Solar/harness/` 同步到 `~/.solar/harness/`,并创建 `~/.solar/bin/solar-harness` - **手动重同步**: ```bash cd ~/Solar ./scripts/sync-harness-runtime.sh ``` ## L3 项目模式: Solar-MAX - **是什么**: 独立 GitHub 仓库 `lisihao/Solar-MAX` - **能做什么**: 五阶段流程 + Gate 模式 + 抗失忆 STATE.md/DECISIONS.md 三文件架构 - **当前状态**: 私有仓库, 只对监护人本人可见 - **如何获得**: 不对外开放 ## L1 用户该跑啥 只装 L1 的话: ```bash # 启动 Claude Code, 然后输入下面任一触发词 solar # 启动 Solar 主脑 我要开发 # 进入开发模式 我要研究 X # 进入研究模式 @Coder 优化函数 # 直接调 Coder agent /commit # 调 Skill ``` --- ## 完成验收 到这里 L1 已就位。最终一条 sanity check: ```bash # 仓库 + 安装产物 + 数据库 test -d ~/Solar && \ test -f ~/.claude/CLAUDE.md && \ test -d ~/.claude/rules && \ test -d ~/.claude/skills && \ test -d ~/.claude/agents && \ test -d ~/.solar && \ echo "🎉 Solar L1 全链路 PASS" ``` 输出 `🎉 Solar L1 全链路 PASS` → 完整安装成功。 --- ## 全步通过条件汇总 | Step | 通过判定 | |------|---------| | 1 | `uname -sm` 输出匹配 4 种系统之一 | | 2 | `git`, `bash`, `sqlite3` 都 `which` 命中 | | 3 | `~/Solar/install.sh` + `~/Solar/CLAUDE.md` 同时存在 | | 4 | `.env` 已创建 (或用户选择跳过) | | 5 | `install.sh` 退出码 0 + L1/L2 自检通过 | | 6 | `~/.claude/{CLAUDE.md,rules,skills,agents}` + `~/.solar/` 都存在 | | 7 | Troubleshoot 表查不到的问题已开 issue | | 8 | 用户决定是否进高级模式 (L1 已可用) | --- ## 给 AI agent 的元规则 执行本剧本时: 1. **不擅自跳步** — 上一步未通过不进下一步 2. **不假报成功** — 命令 exit code 非 0 必须报告 3. **不静默修复** — 失败处理之前先告诉用户错误是什么 4. **不假装路径** — L2 Harness 的发布源是 `~/Solar/harness`, 运行源是 `~/.solar/harness` 5. **不超出范围** — 用户没要求 L2/L3, 不主动安装