Skip to content

yecllsl/nanobot-runner

Repository files navigation

Nanobot Runner

桌面端私人AI跑步助理

Python 3.11+ Code Coverage Tests License: MIT

最新版本: v0.12.0 - 新增智能跑步计划系统(数据感知层+智能调整层+预测规划层)

项目简介

Nanobot Runner 是一款基于 nanobot-ai 底座的本地化 AI 跑步助理。核心目标是解决数据隐私与深度分析的矛盾,通过 Parquet 列式存储与 Polars 高性能计算引擎,为技术型跑者提供企业级 BI 能力。

核心特性

  • 🔒 数据隐私: 本地存储,零外联设计,数据完全用户可控
  • 🚀 高性能: Polars LazyFrame 优化,查询性能提升 ≥ 20%
  • 🤖 AI 助手: 自然语言交互,智能分析跑步数据
  • 📊 专业分析: VDOT、TSS、心率漂移、训练负荷等专业指标
  • 📱 飞书推送: 支持周报/月报自动推送
  • ⚙️ 配置管理: 交互式初始化向导,支持配置备份和迁移 (v0.9.4)
  • 🏃 智能跑步计划: 数据感知层+智能调整层+预测规划层 (v0.10.0~v0.12.0)
  • 🛠️ 开发者友好: 完善的 API 文档和 CLI 工具

快速开始

安装

方式一:一键安装(推荐)

# 一键安装
curl -fsSL https://raw.githubusercontent.com/yecllsl/nanobot-runner/main/scripts/install.sh | bash

# 指定版本安装
curl -fsSL https://raw.githubusercontent.com/yecllsl/nanobot-runner/main/scripts/install.sh | bash -s -- --version v0.12.0

# 指定安装目录
curl -fsSL https://raw.githubusercontent.com/yecllsl/nanobot-runner/main/scripts/install.sh | bash -s -- --dir ~/my-runner

安装脚本会自动完成:Python 环境检测 → 安装 uv → 克隆仓库 → 安装依赖 → 初始化配置目录。

安全提示: 建议先下载脚本审查后再执行:

curl -fsSL -o install.sh https://raw.githubusercontent.com/yecllsl/nanobot-runner/main/scripts/install.sh
less install.sh  # 审查脚本内容
bash install.sh

方式二:手动安装

# 克隆项目
git clone https://github.com/yecllsl/nanobot-runner.git
cd nanobot-runner

# 使用 uv 安装
uv venv
uv sync --all-extras

# 激活虚拟环境
# Windows PowerShell
.venv\Scripts\Activate.ps1

# Linux/macOS
source .venv/bin/activate

导入数据

# 导入 FIT 文件
uv run nanobotrun data import /path/to/activity.fit

# 导入整个目录
uv run nanobotrun data import /path/to/activities/

# 强制重新导入(跳过去重)
uv run nanobotrun data import /path/to/activity.fit --force

查看统计

# 查看当前年份统计
uv run nanobotrun data stats

# 查看指定年份
uv run nanobotrun data stats --year 2024

# 查看日期范围
uv run nanobotrun data stats --start 2024-01-01 --end 2024-12-31

数据分析

# 查看 VDOT 趋势
uv run nanobotrun analysis vdot

# 查看训练负荷
uv run nanobotrun analysis load

# 分析心率漂移
uv run nanobotrun analysis hr-drift

初始化配置 (v0.9.4)

# 交互式初始化(推荐新用户使用)
uv run nanobotrun init

# 从旧版本迁移
uv run nanobotrun init --mode migrate

# 验证配置
uv run nanobotrun system validate

智能跑步计划 (v0.10.0~v0.12.0)

# 生成训练计划
uv run nanobotrun plan generate --goal "全马破4" --race-date 2024-12-01

# 记录训练反馈
uv run nanobotrun plan feedback --plan-id <plan_id> --session-id <session_id> --rpe 7 --feeling "体感良好"

# 调整训练计划
uv run nanobotrun plan adjust --plan-id <plan_id> --request "下周减量恢复"

# 查看计划完成度
uv run nanobotrun plan status --plan-id <plan_id>

# 生成长期规划
uv run nanobotrun plan generate-long-term --goal "全马破3" --race-date 2025-03-30

# 评估目标达成概率
uv run nanobotrun plan evaluate-goal --goal "全马破4" --race-date 2024-12-01

# 获取智能训练建议
uv run nanobotrun plan advice

AI 交互

# 启动 AI 助手
uv run nanobotrun agent chat

示例对话:

> 我今年跑了多少次?
📊 2024年您共跑了 156 次,总距离 1,250.5 km

> 我的 VDOT 趋势如何?
📈 当前 VDOT: 45.2,呈上升趋势 (+0.5/月)

> 查看最近5次跑步
📋 [显示最近5次跑步记录]

> 生成全马破4的训练计划
🏃 已为您生成16周全马训练计划,目标完赛时间3:59:59

> 调整下周计划,减量30%
✅ 已调整下周计划,跑量从60km减少至42km

> 评估我全马破4的概率
📊 基于当前训练数据,预测完赛时间4:05:23,达成概率65%

核心功能

1. FIT 文件解析

底层解析 .fit 格式,提取心率、步频、功率、轨迹等元数据。支持 Garmin、Wahoo 等设备导出的文件。

2. 高效存储

采用 Apache Parquet 列式存储格式:

  • 高压缩比(典型 3:1 ~ 5:1)
  • 适配 OLAP 分析场景
  • 按年份分区,高效查询

3. 智能去重

基于文件 SHA256 指纹的智能去重机制,确保幂等性导入。

4. 数据分析引擎

基于 Polars 的高性能数据分析引擎,支持:

指标 说明
VDOT 跑力值评估(Powers 公式,距离≥1500m)
TSS 训练压力分数(时长×IF²×100)
ATL/CTL 急/慢性训练负荷(7天/42天 EWMA)
TSB 训练压力平衡
心率漂移 有氧能力评估(相关性<-0.7判定为漂移)
配速分布 训练强度区间分析

5. Agent 交互

支持自然语言查询:

  • "我今年跑了多少次?"
  • "我的 VDOT 趋势如何?"
  • "查看最近10次跑步"
  • "分析这次跑步的心率漂移"

6. 飞书推送

支持周报/月报自动推送到飞书,使用飞书应用机器人:

{
  "feishu_app_id": "your_app_id",
  "feishu_app_secret": "your_app_secret",
  "feishu_receive_id": "your_user_id"
}

技术栈

  • 核心底座: nanobot-ai
  • 开发语言: Python 3.11+
  • CLI 框架: Typer + Rich
  • 数据存储: Apache Parquet (via pyarrow)
  • 计算引擎: Polars (LazyFrame 优化)
  • 数据解析: fitparse

项目结构

nanobot-runner/
├── src/
│   ├── core/              # 核心业务逻辑
│   │   ├── analytics/     # 数据分析引擎(v0.9.0 拆分)
│   │   ├── storage/       # 存储管理(含 SessionRepository)
│   │   ├── context.py     # 应用上下文(依赖注入)
│   │   ├── importer.py    # 数据导入服务
│   │   ├── parser.py      # FIT 解析封装
│   │   ├── logger.py      # 结构化日志
│   │   ├── exceptions.py  # 异常处理
│   │   └── decorators.py  # 装饰器
│   ├── cli/               # CLI 模块(v0.9.0 拆分)
│   │   ├── app.py         # CLI 入口
│   │   ├── commands/      # 命令定义
│   │   │   ├── data.py    # 数据管理命令
│   │   │   ├── analysis.py # 数据分析命令
│   │   │   ├── agent.py   # Agent 交互命令
│   │   │   ├── report.py  # 报告生成命令
│   │   │   ├── system.py  # 系统管理命令
│   │   │   └── gateway.py # 网关服务命令
│   │   ├── handlers/      # 业务逻辑调用层
│   │   └── common.py      # CLI 公共组件
│   ├── agents/            # Agent 定义
│   │   └── tools.py       # Agent 工具集
│   ├── notify/            # 通知模块
│   │   └── feishu.py      # 飞书推送集成
│   └── cli/               # CLI 模块
│       └── formatter.py   # CLI 格式化(v0.9.0 迁移)
├── tests/                 # 测试
│   ├── unit/              # 单元测试
│   ├── integration/       # 集成测试
│   ├── e2e/               # 端到端测试
│   └── performance/       # 性能测试
├── docs/                  # 文档
│   └── current/           # 当前版本文档
├── data/                  # 本地数据目录
├── pyproject.toml         # 项目配置
├── CHANGELOG.md           # 更新日志
└── README.md              # 项目说明

文档

API 参考

用户指南

架构与流程

DevOps

开发

依赖注入(v0.9.0 新增)

Nanobot Runner v0.9.0 引入了依赖注入机制,便于测试和扩展:

from src.core.context import AppContextFactory

# 创建应用上下文
ctx = AppContextFactory.create()

# 获取核心组件
storage = ctx.storage
config = ctx.config
analytics = ctx.analytics

# 自定义依赖注入(用于测试)
from unittest.mock import Mock

mock_storage = Mock()
ctx = AppContextFactory.create(storage=mock_storage)

运行测试

# 运行所有测试
uv run pytest

# 运行测试并生成覆盖率报告
uv run pytest --cov=src --cov-report=term-missing --cov-report=html

# 运行特定测试
uv run pytest tests/unit/test_analytics.py -v

# 运行单元测试(覆盖率要求80%)
uv run pytest tests/unit/ --cov=src --cov-fail-under=80

代码质量

# 代码格式化
uv run ruff format src/ tests/

# 代码质量检查
uv run ruff check src/ tests/

# 自动修复问题
uv run ruff check --fix src/ tests/

# 类型检查
uv run mypy src/ --ignore-missing-imports

# 安全扫描
uv run bandit -r src/ -s B101,B601

质量门禁

检查项 工具 门禁要求
代码格式化 ruff format 零警告
代码质量 ruff check 零警告
类型检查 mypy 警告可接受
安全扫描 bandit 高危漏洞=0
单元测试 pytest 通过率100%
代码覆盖率 pytest-cov core≥80%, agents≥70%, cli≥60%

数据存储

目录结构

~/.nanobot-runner/
├── data/                    # 业务数据存储
│   ├── activities_*.parquet # 运动数据(按年分片)
│   ├── profile.json         # 结构化画像数据
│   └── index.json           # 去重索引
├── memory/                  # 记忆系统
│   ├── MEMORY.md            # 长期记忆/用户画像
│   └── HISTORY.md           # 事件日志
├── sessions/                # 会话历史
├── AGENTS.md                # Agent行为准则
├── SOUL.md                  # 人格设定
├── USER.md                  # 用户画像
└── config.json              # 应用配置

配置分离

类型 位置 说明
LLM Provider ~/.nanobot/config.json 框架级配置
飞书通道 ~/.nanobot/config.json 框架级配置
跑步数据 ~/.nanobot-runner/data/ 业务数据
Agent记忆 ~/.nanobot-runner/memory/ 业务数据

常见问题

Windows PowerShell 执行策略

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

依赖问题解决

# 清理缓存并重新安装
uv cache clean; if($?) { uv sync --reinstall }  # Windows
uv cache clean && uv sync --reinstall           # Linux/macOS

许可证

本项目采用 MIT 许可证 - 详见 LICENSE 文件。


版本: v0.12.0 最后更新: 2026-04-19

About

Nanobot Runner - 桌面端私人AI跑步助理

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors