#!/usr/bin/env bash # SessionStart hook: 启动时输出项目关键上下文和提醒 # 不阻止会话启动,仅输出提示信息 set -euo pipefail PROJECT_DIR="${AGENT_PROJECT_DIR:-$(pwd)}" cd "$PROJECT_DIR" echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo " 万事宜 (Everything Is Suitable) — 项目上下文" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" # 当前分支 BRANCH=$(git branch --show-current 2>/dev/null || echo "未知") echo " 分支: $BRANCH" # 变更文件统计 STAGED=$(git diff --cached --name-only 2>/dev/null | wc -l | tr -d ' ') UNSTAGED=$(git diff --name-only 2>/dev/null | wc -l | tr -d ' ') echo " 变更: ${STAGED} 个暂存, ${UNSTAGED} 个未暂存" # 检测关键文件变更 CHANGED_FILES=$(git diff --name-only HEAD 2>/dev/null; git diff --cached --name-only 2>/dev/null; git ls-files --others --exclude-standard 2>/dev/null | sort -u) HAS_ALGORITHM_CHANGE="" HAS_TEST_CHANGE="" HAS_LOCALE_CHANGE="" HAS_COMPONENT_CHANGE="" while IFS= read -r f; do [ -z "$f" ] && continue case "$f" in */algorithms/*) HAS_ALGORITHM_CHANGE="yes" ;; */__tests__/*|*.spec.*|*.test.*) HAS_TEST_CHANGE="yes" ;; */locales/*) HAS_LOCALE_CHANGE="yes" ;; */components/*) HAS_COMPONENT_CHANGE="yes" ;; esac done <<< "$CHANGED_FILES" # 变更提醒 if [ -n "$HAS_ALGORITHM_CHANGE" ]; then echo "" echo " ⚠️ 检测到算法文件变更,请确保:" echo " ┌─ 测试覆盖 ─────────────────────────────────┐" echo " │ npx vitest run algorithms/__tests__/ │" echo " ├─ 交叉验证 ─────────────────────────────────┤" echo " │ 算法结果须与传统典籍/已知实现交叉验证 │" echo " └────────────────────────────────────────────────┘" echo "" fi if [ -n "$HAS_TEST_CHANGE" ]; then echo " ⚠️ 检测到测试文件变更,请确保:" echo " ┌─ 运行验证 ─────────────────────────────────┐" echo " │ npm test │" echo " ├─ Flaky 检查 ────────────────────────────────┤" echo " │ 新增测试至少连续运行 3 次确认稳定性 │" echo " └────────────────────────────────────────────────┘" echo "" fi if [ -n "$HAS_LOCALE_CHANGE" ]; then echo " ⚠️ 检测到国际化文件变更,请确保同步所有语言:" echo " locales/zh-CN.ts locales/en.ts locales/ja.ts ..." echo "" fi if [ -n "$HAS_COMPONENT_CHANGE" ]; then echo " ⚠️ 检测到组件变更,请确保:" echo " ┌─ 单元测试 ─────────────────────────────────┐" echo " │ npx vitest run components/ │" echo " ├─ E2E 测试 ──────────────────────────────────┤" echo " │ npm run test:e2e │" echo " └────────────────────────────────────────────────┘" echo "" fi # Skill 推荐 echo " 🎯 Skill 推荐(基于变更类型):" if [ -n "$HAS_ALGORITHM_CHANGE" ]; then echo " 算法 → TDD / systematic-debugging" fi if [ -n "$HAS_TEST_CHANGE" ]; then echo " 测试 → TDD / systematic-debugging" fi if [ -n "$HAS_COMPONENT_CHANGE" ]; then echo " 组件 → frontend-design / impeccable" fi echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo ""