Add inference snapshot notify client

This commit is contained in:
gqc
2026-06-05 18:14:00 +08:00
parent b5fad0e94f
commit ebc7aaa11c
16 changed files with 2243 additions and 96 deletions
+111
View File
@@ -0,0 +1,111 @@
# Codex 快速上下文:Windows + WSL + Linaro 交叉编译
这份文档主要给 Codex 在新聊天里快速恢复上下文用。用户希望中文回复,并希望每次回复末尾带一个简短的“上下文快照”。
## 必须记住
- 项目 Windows 路径:`C:\Users\Smos.DESKTOP-6MT98U8\Desktop\yolov5-inference`
- WSL 对应路径:`/mnt/c/Users/Smos.DESKTOP-6MT98U8/Desktop/yolov5-inference`
- 目标平台:aarch64 Linux
- 目标设备运行库较旧,约为 `GLIBC 2.28`
- 不要使用过新的 Ubuntu/Debian 交叉工具链,避免产物依赖 `GLIBC_2.33``GLIBC_2.34``GLIBCXX_3.4.29`
- 当前使用 Linaro GCC 7.4.1
`/home/smos/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu`
- 工具链必须放在 WSL Linux 文件系统中,不要放在 `/mnt/c/...`,否则符号链接可能损坏并触发 `liblto_plugin.so: file too short`
- C++ 标准保持 `C++14`
- RKNN 链接库使用 `rknn_api`,不要改成 `rknnrt`
## 当前 CMake 路线
当前 `CMakeLists.txt` 已直接设置交叉编译器:
```cmake
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR aarch64)
set(TOOLCHAIN_PATH "/home/smos/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu" CACHE PATH "Linaro GCC 7.4.1 aarch64 toolchain path")
set(CMAKE_C_COMPILER ${TOOLCHAIN_PATH}/bin/aarch64-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PATH}/bin/aarch64-linux-gnu-g++)
set(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_PATH}/aarch64-linux-gnu/libc)
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
```
因此常规构建时可以直接 `cmake <source>`,不一定需要额外传 `-DCMAKE_TOOLCHAIN_FILE`。仓库里还有 `toolchain-aarch64.cmake`,但当前主路线以 `CMakeLists.txt` 里的 Linaro 配置为准。
## 推荐编译命令
在 Windows PowerShell 中调用 WSL
```powershell
wsl -d Ubuntu bash -lc "rm -rf /home/smos/yolov5-linaro-build && mkdir -p /home/smos/yolov5-linaro-build && cd /home/smos/yolov5-linaro-build && cmake /mnt/c/Users/Smos.DESKTOP-6MT98U8/Desktop/yolov5-inference && make -j16 && file yolov5"
```
产物位置:
```text
/home/smos/yolov5-linaro-build/yolov5
```
## 验证命令
检查工具链版本:
```bash
/home/smos/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc --version
/home/smos/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ --version
```
预期包含:
```text
Linaro GCC 7.4-2019.02
```
检查产物架构:
```bash
file /home/smos/yolov5-linaro-build/yolov5
```
预期包含:
```text
ELF 64-bit LSB executable, ARM aarch64
```
检查是否误依赖高版本 glibc/libstdc++
```bash
/home/smos/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-readelf --version-info /home/smos/yolov5-linaro-build/yolov5 | grep -E 'GLIBC_2\.33|GLIBC_2\.34|GLIBCXX_3\.4\.29'
```
没有输出才是好结果。
检查 RKNN 链接:
```bash
/home/smos/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-readelf -d /home/smos/yolov5-linaro-build/yolov5 | grep rknn
```
预期包含:
```text
librknn_api.so
```
## 常见错误
- `liblto_plugin.so: file too short`:工具链放在 Windows 文件系统导致符号链接损坏。把工具链重新 clone 到 `/home/smos/...`
- `GLIBC_2.33` / `GLIBC_2.34 not found`:用了过新的工具链或 sysroot。改回 Linaro GCC 7.4.1
- `GLIBCXX_3.4.29 not found`:用了过新的 g++ 或 C++ runtime。保持 Linaro GCC 7.4.1、C++14、`rknn_api`
## 每次回复规则
用户希望每次回复末尾附带“上下文快照”,方便开新聊天避免上下文压缩丢信息。
Codex 看不到精确的上下文剩余额度或百分比,所以不要编造数字。可以在快照中写:
```text
上下文额度:无法读取精确数值;当前仅能提供风险状态和关键信息摘要。
```
当对话变长、文件内容很多、输出很大或任务跨多轮时,提醒用户可以开启新聊天,并把上下文快照复制过去。