# Model Health MVP

用于维护一组模型供应商配置，并对它们做适合 OpenClaw 场景的健康检查与 `openclaw.json` 对齐校验。

## 目标
- 维护 provider 注册表（URL / key-env / models / aliases / tags）
- 对一个或所有 provider 做基础健康检查
- 检查长上下文、长输出、OpenClaw 风格 prompt、重复稳定性
- 校验 providers 配置与 `/root/.openclaw/openclaw.json` 中的模型/别名是否对齐

## 目录
- `config/providers.example.yaml` 示例 provider 配置
- `config/scenarios.json` 预留场景定义
- `src/` 核心逻辑
- `bin/model-health.js` CLI 入口
- `reports/` 输出 JSON / Markdown 报告

## Provider 配置
复制：

```bash
cp config/providers.example.yaml config/providers.yaml
```

配置示例：

```yaml
providers:
  - id: demo
    name: Demo Provider
    base_url: https://api.example.com/v1
    api_key_env: DEMO_API_KEY
    models:
      - demo/chat-model
      - demo/long-context-model
    aliases:
      demo-chat: demo/chat-model
    tags:
      - cheap
      - test
```

> 不要把 key 写进文件。只通过环境变量传入。

## 运行

### 1. 检查全部 provider
```bash
node bin/model-health.js check --all --config ./config/providers.yaml
```

### 2. 检查某个 provider
```bash
node bin/model-health.js check --provider demo --config ./config/providers.yaml
```

### 3. 检查某个模型
```bash
node bin/model-health.js check --model demo/chat-model --config ./config/providers.yaml
```

### 4. 校验 openclaw.json 对齐
```bash
node bin/model-health.js sync --check --config ./config/providers.yaml --openclaw /root/.openclaw/openclaw.json
```

## 当前探针
- `connectivity`：真实请求，检查基础可用性
- `short-context`：短指令正确性
- `long-context`：长文本中是否还能找回 needle
- `long-output`：长输出是否明显截断
- `openclaw-sim`：OpenClaw 风格 prompt 的基础兼容性
- `stability`：重复 3 次短请求的成功率

## 输出
生成到 `reports/`：
- `latest-check.json`
- `latest-check.md`
- `latest-sync.json`
- `latest-sync.md`

## 说明
这是一个可运行的 MVP，不是最终版。当前假设目标接口兼容 OpenAI Chat Completions：
- `POST {base_url}/chat/completions`
- `Authorization: Bearer <key>`

后续可以继续增强：
- provider 特定鉴权头
- 流式测试
- 更细的评分
- 延迟/错误率历史统计
- 自动生成 OpenClaw 配置 patch
