L5 CLI

# L6 CLI Dev Notes

该目录追踪 `packages/sage-cli` (L6) 与 `packages/sage-tools` 的命令行接口文档。

## 目录结构

| 文件 | 说明 |
|------|------|
| `COMMAND_CHEATSHEET.md` | `sage`/`sage-dev` 命令速查表(完整命令结构与示例) |
| `COMMAND_REORGANIZATION_SUMMARY.md` | `sage-dev` 命令重组总结(旧 → 新 映射与兼容策略) |
| `CLI_HELP_UPDATE.md` | `sage` / `sage-dev` 帮助信息与 UX 更新记录 |
| `llm-preset-launcher.md` | LLM 预设启动器设计(Control Plane 预设引擎管理) |

## CLI 架构

SAGE 提供两个主要的命令行入口:

### 1. `sage` (由 sage-cli 包提供)

平台管理和应用层命令:

```
sage
├── version        📋 版本信息
├── cluster        🌐 集群管理
├── head           🎯 头节点管理
├── worker         🔧 工作节点管理
├── job            📋 作业管理
├── jobmanager     ⚡ 作业管理器服务
├── config         ⚙️ 配置管理
├── doctor         🔍 系统诊断
├── extensions     🧩 扩展管理
├── docs           📚 文档管理
├── llm            🤖 LLM 服务管理
├── chat           🧭 编程助手
├── embedding      🎯 Embedding 管理
├── inference      🔮 统一推理服务
├── pipeline       🧱 Pipeline Builder
└── studio         🎨 可视化工作台
```

**代码位置**: `packages/sage-cli/src/sage/cli/main.py`

### 2. `sage-dev` (由 sage-tools 包提供)

开发工具命令:

```
sage-dev
├── quality/      🔍 质量检查
├── project/      📊 项目管理
├── maintain/     🔧 维护工具
├── package/      📦 包管理
├── resource/     💾 资源管理
├── github/       🐙 GitHub 管理
├── examples/     🔬 Examples 测试
├── maintenance/  🛠️ Dev-notes & Ruff 维护
└── docs/         📚 文档管理
```

**代码位置**: `packages/sage-tools/src/sage/tools/cli/commands/dev/__init__.py`

## 命令结构与重组概览

`sage-dev` 在 2025-11 完成了一次较大规模的命令重组,核心目标是将原先扁平的 15+ 顶层命令,收敛为少量语义清晰的命令组:

- 顶层结构:`sage-dev <group> <command>`,最多 4 级(如 `sage-dev maintain submodule init`)。
- 九大命令组:`quality`、`project`、`maintain`、`package`、`resource`、`github`、`examples`、`maintenance`、`docs`,职责边界清晰。
- 旧命令(如 `sage-dev test``sage-dev check-all` 等)在 `dev/main.py` 中保留包装,并在执行时输出弃用提示,引导用户迁移到新路径(如 `sage-dev project test``sage-dev quality check`)。

> 具体的组内命令列表与“旧 → 新”映射表见 `COMMAND_CHEATSHEET.md` 与 `COMMAND_REORGANIZATION_SUMMARY.md`,实现位置集中在 `packages/sage-tools/src/sage/tools/cli/commands/dev/` 目录下。

## 帮助信息与 UX 更新

为提升命令可发现性,`sage` 与 `sage-dev``--help` 输出在 2025-10 完成了一轮对齐与增强:

- `sage --help`:按 Platform / Apps 两大类分组展示命令,并在帮助说明中显式提示“开发相关任务请使用 `sage-dev`”。
- `sage-dev` 顶层:增加欢迎回调,直接展示常用命令示例(quality / project / maintain / package)与所有命令组的简要说明。
- 各子命令组(如 `quality``project``maintain``docs` 等)均补全了组级 help 文本和子命令摘要,使 `sage-dev <group> --help` 成为自解释的接口文档。

这些更新的设计与截图记录在 `CLI_HELP_UPDATE.md` 中,实际实现分别位于 `sage/cli/main.py``sage/tools/cli/commands/dev/__init__.py` 中的 Typer 应用定义。

## LLM 预设启动器设计概要

为方便一次性启动“一组 LLM + Embedding 引擎”,CLI 侧设计了 `sage llm preset` 命令族,与 Control Plane 的 `EngineStartRequest` / `/v1/management/engines` 接口联动:

- **Presets 描述**:使用简单的 YAML 文件(存放在 `sage.llm/presets/`),声明多个引擎及其元数据(`kind=llm|embedding`、模型、并行度、端口、标签、metadata 等)。
- **Engine Kind 语义**:通过 `engine_kind` 区分 `llm``embedding` 运行时,使 Control Plane 能在调度时区分 GPU 需求与请求类型。
- **CLI 工作流**    - `sage llm preset list|show`:列出内置预设并查看具体 YAML。
    - `sage llm preset apply <name|--file>`:解析 preset,并为每个引擎依次调用 `/v1/management/engines`,支持 `--dry-run`- **失败与回滚策略**:当某个引擎启动失败时,默认尝试回滚已成功的引擎,除非用户显式指定 `--no-rollback`
完整设计细节与字段说明见 `llm-preset-launcher.md`;L1 层的 Control Plane 增强(如 `engine_kind` 扩展与注册表更新)在 `l1-common` dev-notes 中有对应总结。

## 快速参考

### 常用命令

```bash
# 质量检查
sage-dev quality check           # 运行所有质量检查
sage-dev quality format          # 代码格式化

# 项目测试
sage-dev project test --coverage # 带覆盖率的测试

# 维护工具
sage-dev maintain doctor         # 健康检查
sage-dev maintain submodule init # 初始化子模块

# LLM 服务
sage llm serve                   # 启动 LLM 服务
sage studio start                # 启动 Studio
```

### 向后兼容

旧命令仍可使用但会显示弃用警告:

| 旧命令 | 新命令 |
|--------|--------|
| `sage-dev test` | `sage-dev project test` |
| `sage-dev check-all` | `sage-dev quality check` |
| `sage-dev status` | `sage-dev project status` |

## 相关文档

- [COMMAND_CHEATSHEET.md](./COMMAND_CHEATSHEET.md) - 完整命令速查
- [sage-tools README](../../../../packages/sage-tools/README.md) - sage-tools 包文档
- [sage-cli 源码](../../../../packages/sage-cli/src/sage/cli/) - CLI 实现

## 更新指引

当新增或修改 CLI 命令时:

1. 更新 `COMMAND_CHEATSHEET.md` 中的命令表格
2. 如有帮助文本变更,更新 `CLI_HELP_UPDATE.md`
3. 验证命令与代码实现一致