约球前不知道对方水平,是网球社交里最大的摩擦成本。 Tennisor 把 NTRP 评分 + 球友互证 + 六维能力图,做成一张你可以拿出来 / 分享出去的水平凭证。
网球是一项对匹配精度要求极高的运动 —— NTRP 差 0.5 就可能完全打不起来。但现有约球方式中,对方的真实水平完全是个黑箱。
"约了一场,打完才发现完全不在一个水平。"
微信群、口头介绍里的"3.5 水平"是自我评估、没有约束力。每一次约球都要反复试探、打完才知道合不合适 —— 这是网球社交里最大的摩擦。
"打过 30 个球友,没有一个能整理出来。"
线下网球高度依赖社交网络 —— 球友是球场认识的、朋友推荐的、群里约的。但每个人的球友关系、打球记录、口碑都散在群聊和私信里,没法沉淀。
水平凭证是抓手,球友档案是差异化,AI 叙述者是冷启动的解法 —— 三者合力,把线下散落的关系搬到线上。
NTRP 评分 + 6 维能力雷达 + 球友互证 + 置信度,集成在一张分享出去就让人懂的"水平名片"。
你可以为认识的球友建档(私密 → 协作 → 公开 → 认证四阶段)。真人注册时,发现"已有 3 位朋友为我建档"是关键转化点。
AI 是档案的"叙述者",不是球友的"扮演者"。它做统计、做趋势、做第三人称叙述;它绝不冒充本人、不主动约球、不私聊。
这不是好看与否的判断,是"什么不做"的纪律。一旦定下,所有屏幕共同遵守。
不是 Figma 里的色板,是工程实施时直接消费的 token。每个 hex、每个像素、每个圆角都有名字。
"克制"不是一开始就有的,是反复试错试出来的。下面是水平名片从激进 → 收敛的 5 个真实版本,每一版的决策点都被记录下来。
我(创作者)是一名网络安全公司的技术总监,懂安全、懂研发、懂 AI。Tennisor 是我用 AGI 一边设计一边实现的项目 —— 下面是 AI 的真实参与方式。
从两个用户需求开始,反复对话 ~20 轮,把产品打磨成今天这个形态。AI 提出了"球友档案"的合规边界设计、"中道派 AI 叙述者"的概念。
用 Claude Design 出图。先写设计 prompt(颜色 token、字重对比、单屏 olive ≤ 4 等硬约束),再让 AI 出每一屏的高保真稿。LevelCard 反复 5 版才定。
Claude Code 跑 TDD 节奏:每个任务先写失败测试、看到失败、最小实现、看到通过、提交。整个 backend skeleton(含 PG / Redis / Docker / CI)由 subagent-driven 流程跑完。
AI 不是替代我,是放大我。 所有产品判断、所有商业取舍、所有视觉品味的最终决定都是我做的。 AI 替我跑细节、替我做 reviewer、替我写 boilerplate、替我盯纪律。 当 AI 出错时(它会出错,比如 Plan 文档里曾经的 5 个 bug),我修; 当 AI 自作主张越界时(它会越界,比如曾擅自停掉无关容器),我把它叫停。 协作不是甩手掌柜,是更密集的对话。
iOS 原生 + 微信小程序两端共享一套 Python/FastAPI 后端。Apple Silicon 本地开发,腾讯云生产部署,DeepSeek-V3 提供 AI 叙述能力。
iOS 16+,Apple Silicon 原生构建,iPhone 17 Pro 模拟器为本地目标。xcodegen 维护项目,SwiftUI 严格并发模式。
Python 3.12 + 异步 SQLAlchemy 2.0 + Alembic + Pydantic v2。uv 管理依赖、ruff 统一代码、mypy strict 检查类型、pytest 跑 TDD。
原生 WXML/WXSS/JS。仅做"轻量入口" —— 看名片、扫码加好友、分享落地。深度功能(创建档案、AI 互动)引导到 iOS。
每个 Plan 一个子系统,对应一个 feature 分支 + PR + Code Review 流程。Plan 0 已并入 main,Plan 1 在执行中。