这份 runbook 用于在干净环境里复现“克隆 -> 起后端 -> 跑 iOS -> 展示可观测性”的最短路径,避免答辩现场出现大量手动配置。
cd "字节AI全栈挑战赛"
python3.11 -m venv server/.venv
source server/.venv/bin/activate
python --version
pip install -r server/requirements.txt
PYTHONPATH=server python server/scripts/self_check.py
PYTHONPATH=server python -m uvicorn app.main:app --host 127.0.0.1 --port 8000另开一个终端验证:
source server/.venv/bin/activate
PYTHONPATH=server python server/scripts/self_check.py --require-server
curl http://127.0.0.1:8000/api/health必须确认:
python --version是 3.10+,推荐 3.11。/api/health返回ok: true。product_count大于 100。vector_store.active_backend与演示口径一致。
如果需要展示标准向量数据库:
source server/.venv/bin/activate
pip install -r server/requirements-optional.txt
export VECTOR_STORE_BACKEND=chroma
export CHROMA_PATH=server/storage/chroma
PYTHONPATH=server python server/scripts/self_check.py
PYTHONPATH=server python -m uvicorn app.main:app --host 127.0.0.1 --port 8000验证点:
/api/health的vector_store.active_backend是chroma_hashing_vector或chroma_text_embedding。/admin/metrics的商品与数据质量卡片显示“当前向量库”和“Chroma 持久化”。- 一次推荐请求后的 Trace 里
retrieval_stack包含Chroma vector DB或Chroma text_embedding(...)。
没有文本 embedding key 时,Chroma 会承载本地 hashing 向量;配置 TEXT_EMBEDDING_* 并预计算后才会显示 chroma_text_embedding。
cd client-ios
open ShopGuide.xcodeproj选择 iPhone 真机或模拟器运行。App 显示名为「智购罗盘」。答辩演示优先使用真机 + Release,因为模拟器对毛玻璃和语音链路更容易受宿主机影响。
如果改过 client-ios/project.yml 才需要重新生成工程;普通演示不要现场跑 xcodegen。
- 重启后端,确认加载的是当前代码;如果
self_check.py提示/api/health没有vector_store字段,说明 8000 端口还是旧实例。 - 用
VECTOR_STORE_BACKEND=chroma启动后端,再打开/admin/metrics给评委看“当前向量库=chroma_text_embedding/chroma_hashing_vector”。 - 使用真机 + Release 跑 iOS;模拟器对毛玻璃和语音链路仍可能受宿主机软渲染影响。
- 演示开始前先跑
PYTHONPATH=server python server/scripts/self_check.py --require-server。 - 打开
http://127.0.0.1:8000/admin/metrics。 - 发送“推荐适合油皮的防晒,200元以内,不要含酒精”,确认商品卡先出现、首 token 正常。
- 打开该请求的
/api/traces/{trace_id},确认链路包含 intent/constraint/retrieval/guard。 - 用 App 点开侧栏、商品详情、购物车,确认动画流畅且文本不重叠。
- 走一次“把第一款加到购物车 -> 我要下单 -> 确认下单”,确认 order 卡片返回。
source server/.venv/bin/activate
PYTHONPATH=server python -m pytest server/tests -q
PYTHONPATH=server python server/evaluation/run_e2e_smoke.py --output-dir server/evaluation/output/e2e_goal_smoke如启用 Chroma,再补一次:
VECTOR_STORE_BACKEND=chroma PYTHONPATH=server python -m pytest server/tests/test_observability.py -q