chore: 同步本地更改

- 新增 aio-mcp 项目框架
- 新增 .trae/skills/ OCR/SKU 设计工具
- 更新 auto-check 配置和 stress 包
- 删除 fnhelp 文档目录
- 更新 Docker 压力测试脚本
This commit is contained in:
张威33321
2026-08-27 20:38:13 +08:00
parent a172a9bb5e
commit a8fa159f0f
75 changed files with 2266 additions and 4068 deletions

View File

@@ -55,7 +55,7 @@ go build -o auto-check .
### `run` / `stress`
| 标志 | 默认值 | 说明 |
|------|--------|------|
| `--stress` | `cpu,memory` | 压测类型: `cpu`, `memory`, `disk`, `memnative`, `full` |
| `--stress` | `cpu,memory` | 压测类型: `cpu`, `memory`, `disk`, `memnative`, `fnstable`, `full` |
| `--duration` | `30s` | 持续时间 |
| `--threads` | `4` | 线程数 |
| `--ips` | _(必填,仅stress)_ | 目标 IP (逗号分隔) |
@@ -68,8 +68,24 @@ go build -o auto-check .
| `memory` | stress-ng | 内存压测 |
| `disk` | stress-ng | 磁盘IO混合压测 |
| `memnative` | stressapptest | 内存稳定性精压(数据完整性校验) |
| `fnstable` | fnscript | 稳定性门禁:社区脚本 self_inspection.py 先行检测硬件stress CPU + memtester 内存校验),通过后自有压测再跑;未通过则自有压测全部跳过 |
| `full` | stress-ng | CPU+内存+磁盘 三合一综合压测 |
## 稳定性门禁fnstable
基于飞牛社区 [fnscript](https://gitee.com/xiao-zhu245/fnscript)MIT`self_inspection.py`vendor 原样收录在 `docker/stress-test/vendor/fnscript/`,源码不做修改:
1. 门禁先跑社区脚本CPU 稳定性(`stress`+ 内存数据校验(`memtester` 可用内存 97% 单遍30-120 分钟)
2. 门禁通过 → 自有压测工具stress-ng/fio 等)再跑一遍,按自有格式出报告
3. 门禁失败 → 自有压测全部 skip报告仍完整输出硬件已有问题无需再跑
适配说明(不改社区脚本源码的代价,已在适配层 `scripts/fnstable.sh` 规避):
- 脚本 CLI 模式无论成败 exit code 均为 0结果按 stdout 关键词("未发现问题")判定
- `--memory` 有 y/n 交互确认,用 `printf 'y\ny\n'` 管道喂入
- 依赖python3/psutil/memtester/stress/sudo预装在压测镜像中
配置(`auto-check.yaml``stress.fn_memory` 控制门禁是否执行 memtester 内存校验(默认 true快速验证可设 false
## 压测执行方式Docker 容器)
压测统一在 Docker 容器中执行:工具与测试脚本预装在镜像里,无需在目标机在线安装,环境一致性好(飞牛 NAS 默认已安装 Docker
@@ -80,13 +96,15 @@ auto-check/
├── docker/ # Docker 镜像维护目录(独立)
│ └── stress-test/
│ ├── Dockerfile # 镜像定义
│ ├── build.sh # 构建 + 导出 + 同步配置(时间戳 tag
│ ├── scripts/ # 测试脚本(打包进镜像)
│ │ ├── run.sh # 入口脚本(环境变量驱动)
│ │ ├── run.sh # 入口脚本(环境变量驱动 + 门禁调度
│ │ ├── fnstable.sh # 稳定性门禁适配器fnscript 社区脚本 → 结构化协议)
│ │ ├── cpu.sh # CPU 压测
│ │ ├── memory.sh # 内存压测
│ │ ├── disk.sh # 磁盘压测
│ │ └── ...
│ └── README.md
│ └── vendor/fnscript/ # 社区脚本原样收录self_inspection.pyMIT
└── pkg/stress/
└── runner.go # 核心逻辑:送镜像 + 驱动容器测试
```
@@ -97,24 +115,71 @@ auto-check/
3. 启动容器执行测试(脚本在镜像内,环境变量传参)
4. 解析容器输出 → 生成报告
### 容器内执行流程run.sh
1. 系统信息(`===SYSTEM_INFO===`
2. 温度监控后台采样(`temp_start.sh`
3. 稳定性门禁(`fnstable.sh`types 含 `fnstable`fnscript 社区脚本先行检测硬件稳定性,未通过则后续自有压测全部 skip
4. 各项压测先单项cpu/memory/disk/memnative、综合full最后
5. 温度监控收尾(`===MONITOR:temp===`
6. 内核日志(`===MONITOR:dmesg===``-T` 带时间戳)+ 结束标记
### 配置方式(在 `auto-check.yaml` 中)
```yaml
stress:
docker_image: "stress-test:latest" # 压测镜像(飞牛 NAS 默认支持 Docker
docker_image: "stress-test:20260824-153045" # 压测镜像 tagbuild.sh 自动维护
docker_tar: "docker/stress-test/stress-test.tar" # 本地镜像文件,目标机无镜像时自动上传并 load
docker_args: "--network=host --privileged"
```
### 容器运行时环境变量
| 变量 | 说明 | 默认值 |
|------|------|--------|
| `AUTOCHECK_TYPES` | 测试类型(逗号分隔) | `cpu,memory` |
| `AUTOCHECK_DURATION` | 持续时间(秒) | `30` |
| `AUTOCHECK_THREADS` | 线程数 | `4` |
| `AUTOCHECK_MEM_SIZE_MB` | 内存压测大小 | `0` (自动) |
| `AUTOCHECK_DISK_SIZE_MB` | 磁盘压测大小 | `1024` |
| `AUTOCHECK_DISK_DIR` | 磁盘压测目录 | `/tmp` |
| `AUTOCHECK_TEMP_INTERVAL` | 温度采样间隔 | `10` |
| `AUTOCHECK_SAMPLE_INTERVAL` | 运行时采样间隔 | `2` |
| `AUTOCHECK_FN_MEMORY` | fnstable 门禁是否执行 memtester 内存校验 | `1` |
### 容器运行时挂载(由 auto-check 自动添加)
| 挂载 | 作用 |
|------|------|
| `-v /sys:/sys:ro` | 容器内是独立 sysfs挂载后才能读到宿主机硬件传感器温度采集依赖此项 |
| `-v /etc/localtime:/etc/localtime:ro` | 容器时区与宿主机一致dmesg 时间戳与采样时间才准确 |
> 注意:镜像内已设置 `LC_ALL=C.UTF-8`。若 locale 为纯 C`sensors` 会输出 "+51.0 C"(无 ° 符号),导致温度正则失配、采集不到数据。
### 构建镜像(维护时使用)
固定分发模式:不依赖 registry镜像以 tar 文件形式放在工程目录。推荐用 `build.sh`(自动时间戳 tag
```bash
cd docker/stress-test
docker build -t stress-test:latest .
# 导出到工程目录,供测试时上传分发(不依赖 registry
docker save -o stress-test.tar stress-test:latest
./build.sh # 自动取当前时间戳YYYYMMDD-HHMMSS
./build.sh 20260824-153045 # 手动指定时间戳(重打/复现
```
### 详细文档
镜像维护说明请参考:[docker/stress-test/README.md](docker/stress-test/README.md)
`build.sh` 会同时完成:
1. 用时间戳 tag 构建镜像(不保留 `latest``docker images` 可区分每次构建)
2. 导出两份 tar带时间戳归档 `stress-test-<时间戳>.tar` + 同步覆盖 `stress-test.tar`auto-check 默认引用)
3. 自动更新 `auto-check.yaml``docker_image` 字段,确保配置与新 tag 同步
手动构建(不推荐)需自行同步 `auto-check.yaml``docker_image`;旧时间戳镜像可 `docker rmi stress-test:<旧时间戳>` 清理。
### 镜像内预装工具
| 工具 | 用途 |
|------|------|
| `stress-ng` | CPU/内存/磁盘压测 |
| `fio` | 磁盘 IO 测试 |
| `lm-sensors` | 温度监控 |
| `sysstat` | 系统性能统计 |
| `procps` | 进程监控 |
| `python3` + `psutil` | fnscript 稳定性门禁运行环境 |
| `memtester` | fnstable 门禁内存数据校验 |
| `stress` | fnstable 门禁 CPU 压测 |
| `sudo` | fnscript 脚本内部调用 `sudo memtester`(容器以 root 运行,无密码) |
## 项目结构