init: tianyan-edge edge agent with Ascend NPU inference backend

- Go main process: stream ingestor, infer client, event uploader,
  heartbeat, config agent, OTA agent
- Python inference server rewritten to use CANN ACL (acl module)
  replacing ultralytics/PyTorch; supports YOLOv8 raw and YOLOv10
  NMS-free output formats via OUTPUT_FORMAT env var
- systemd services for edge-agent and edge-infer
- build/install/package scripts targeting arm64

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-06 21:49:04 +08:00
commit f6a85d7dfc
22 changed files with 1219 additions and 0 deletions

27
scripts/install.sh Normal file
View File

@@ -0,0 +1,27 @@
#!/usr/bin/env bash
set -euo pipefail
PREFIX=/opt/tianyan-edge
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
PYTHON_BIN="${PYTHON_BIN:-python3}"
sudo mkdir -p "$PREFIX"/{bin,python,config,systemd,staging,model}
sudo install -m 755 "$ROOT_DIR/build/edge-agent" "$PREFIX/bin/edge-agent"
sudo install -m 644 "$ROOT_DIR/python/infer_server.py" "$PREFIX/python/infer_server.py"
sudo install -m 644 "$ROOT_DIR/python/requirements.txt" "$PREFIX/python/requirements.txt"
if [ ! -f "$PREFIX/config/edge.yaml" ]; then
sudo install -m 644 "$ROOT_DIR/config/edge.yaml.template" "$PREFIX/config/edge.yaml"
fi
sudo install -m 644 "$ROOT_DIR/systemd/edge-agent.service" /etc/systemd/system/edge-agent.service
sudo install -m 644 "$ROOT_DIR/systemd/edge-infer.service" /etc/systemd/system/edge-infer.service
sudo "$PYTHON_BIN" -m pip install -r "$PREFIX/python/requirements.txt"
sudo systemctl daemon-reload
sudo systemctl enable edge-infer.service edge-agent.service
sudo systemctl restart edge-infer.service edge-agent.service
echo "installed to $PREFIX"