56 lines
2.1 KiB
Markdown
56 lines
2.1 KiB
Markdown
# xc-model-auto-adaptation-agent
|
||
|
||
信创模盒的“模型自动适配任务智能体”。它不是只给建议的兼容性预检工具,而是一个持续运行的任务执行器。
|
||
|
||
## 自动执行链路
|
||
|
||
1. 启动后立即读取信创模盒公开热门模型。
|
||
2. 筛选文本生成模型,并优先选择较小的 Qwen3、Llama3 或 DeepSeek-R1-Distill 候选。
|
||
3. 用模型 ID 与国产卡枚举查询当前账号的历史验证任务。
|
||
4. 已有相同任务则记录去重结果;没有则生成 EngineX/vLLM 配置并提交验证任务。
|
||
5. 每次扫描最多提交一个任务,默认每小时重复检查。
|
||
|
||
第一版目标卡为 **天数智芯|天垓100**,平台卡型枚举为 `Iluvatar_bi-100`,使用单卡、短上下文的保守验证配置。
|
||
|
||
## 平台契约
|
||
|
||
- 仓库根目录包含 `Dockerfile`,监听 `8080`。
|
||
- `GET /health` 始终返回 HTTP 200,并附带扫描器最近状态。
|
||
- 从平台注入的 `STRATEGY_ID` 获取自身策略 ID。
|
||
- 优先读取 `MODELHUB_XC_TOKEN`,同时兼容官方参考策略使用的 `EXTERNAL_SERVICE_TOKEN`。
|
||
- 正确处理 `SIGTERM`,在平台 30 秒窗口内退出。
|
||
- 仅使用 Python 标准库,符合 1 CPU / 512 MiB 的平台限制。
|
||
|
||
## 安全边界
|
||
|
||
- 令牌只从运行环境读取,不写入仓库、响应或日志。
|
||
- stdout 只记录令牌是否存在,不记录令牌值、请求头或完整 API 响应。
|
||
- 提交前必须完成精确去重;API 返回非成功业务码时不会伪报成功。
|
||
- 未获得令牌或策略 ID 时会明确记录 `task_submission_blocked`,不会静默假运行。
|
||
|
||
## 端点与关键日志
|
||
|
||
- `GET /health`:服务与扫描器状态。
|
||
- `GET /scanner`:最近候选、动作和错误类型。
|
||
- `POST /analyze`:返回该模型的实际适配执行计划。
|
||
|
||
正常启动后的关键事件依次为:
|
||
|
||
```text
|
||
service_started
|
||
scanner_started
|
||
candidate_scan_started
|
||
candidate_discovered
|
||
task_duplicate_skipped 或 task_submitted
|
||
```
|
||
|
||
如果运行环境配置不完整,会看到 `task_submission_blocked` 和具体缺失项。
|
||
|
||
## 本地验证
|
||
|
||
```bash
|
||
python3 -m unittest -v
|
||
python3 main.py
|
||
curl http://localhost:8080/health
|
||
```
|