@mison/ag-kit-cn 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/.agent/.shared/ui-ux-pro-max/data/charts.csv +26 -0
  2. package/.agent/.shared/ui-ux-pro-max/data/colors.csv +97 -0
  3. package/.agent/.shared/ui-ux-pro-max/data/icons.csv +101 -0
  4. package/.agent/.shared/ui-ux-pro-max/data/landing.csv +31 -0
  5. package/.agent/.shared/ui-ux-pro-max/data/products.csv +97 -0
  6. package/.agent/.shared/ui-ux-pro-max/data/prompts.csv +24 -0
  7. package/.agent/.shared/ui-ux-pro-max/data/react-performance.csv +45 -0
  8. package/.agent/.shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  9. package/.agent/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  10. package/.agent/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  11. package/.agent/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  12. package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  13. package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  14. package/.agent/.shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  15. package/.agent/.shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
  16. package/.agent/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  17. package/.agent/.shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  18. package/.agent/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  19. package/.agent/.shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  20. package/.agent/.shared/ui-ux-pro-max/data/styles.csv +59 -0
  21. package/.agent/.shared/ui-ux-pro-max/data/typography.csv +58 -0
  22. package/.agent/.shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  23. package/.agent/.shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  24. package/.agent/.shared/ui-ux-pro-max/data/web-interface.csv +31 -0
  25. package/.agent/.shared/ui-ux-pro-max/scripts/core.py +258 -0
  26. package/.agent/.shared/ui-ux-pro-max/scripts/design_system.py +1067 -0
  27. package/.agent/.shared/ui-ux-pro-max/scripts/search.py +106 -0
  28. package/.agent/ARCHITECTURE.md +285 -0
  29. package/.agent/agents/backend-specialist.md +268 -0
  30. package/.agent/agents/code-archaeologist.md +106 -0
  31. package/.agent/agents/database-architect.md +225 -0
  32. package/.agent/agents/debugger.md +225 -0
  33. package/.agent/agents/devops-engineer.md +242 -0
  34. package/.agent/agents/documentation-writer.md +104 -0
  35. package/.agent/agents/explorer-agent.md +73 -0
  36. package/.agent/agents/frontend-specialist.md +618 -0
  37. package/.agent/agents/game-developer.md +162 -0
  38. package/.agent/agents/mobile-developer.md +382 -0
  39. package/.agent/agents/orchestrator.md +438 -0
  40. package/.agent/agents/penetration-tester.md +188 -0
  41. package/.agent/agents/performance-optimizer.md +187 -0
  42. package/.agent/agents/product-manager.md +112 -0
  43. package/.agent/agents/product-owner.md +95 -0
  44. package/.agent/agents/project-planner.md +405 -0
  45. package/.agent/agents/qa-automation-engineer.md +103 -0
  46. package/.agent/agents/security-auditor.md +170 -0
  47. package/.agent/agents/seo-specialist.md +111 -0
  48. package/.agent/agents/test-engineer.md +158 -0
  49. package/.agent/mcp_config.json +12 -0
  50. package/.agent/rules/GEMINI.md +273 -0
  51. package/.agent/scripts/auto_preview.py +148 -0
  52. package/.agent/scripts/checklist.py +217 -0
  53. package/.agent/scripts/session_manager.py +120 -0
  54. package/.agent/scripts/verify_all.py +327 -0
  55. package/.agent/skills/api-patterns/SKILL.md +84 -0
  56. package/.agent/skills/api-patterns/api-style.md +42 -0
  57. package/.agent/skills/api-patterns/auth.md +24 -0
  58. package/.agent/skills/api-patterns/documentation.md +26 -0
  59. package/.agent/skills/api-patterns/graphql.md +41 -0
  60. package/.agent/skills/api-patterns/rate-limiting.md +31 -0
  61. package/.agent/skills/api-patterns/response.md +37 -0
  62. package/.agent/skills/api-patterns/rest.md +40 -0
  63. package/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
  64. package/.agent/skills/api-patterns/security-testing.md +122 -0
  65. package/.agent/skills/api-patterns/trpc.md +41 -0
  66. package/.agent/skills/api-patterns/versioning.md +22 -0
  67. package/.agent/skills/app-builder/SKILL.md +75 -0
  68. package/.agent/skills/app-builder/agent-coordination.md +74 -0
  69. package/.agent/skills/app-builder/feature-building.md +53 -0
  70. package/.agent/skills/app-builder/project-detection.md +34 -0
  71. package/.agent/skills/app-builder/scaffolding.md +118 -0
  72. package/.agent/skills/app-builder/tech-stack.md +40 -0
  73. package/.agent/skills/app-builder/templates/SKILL.md +39 -0
  74. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  75. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  76. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  77. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  78. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
  79. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  80. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  81. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
  82. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
  83. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
  84. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
  85. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  86. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
  87. package/.agent/skills/architecture/SKILL.md +57 -0
  88. package/.agent/skills/architecture/context-discovery.md +43 -0
  89. package/.agent/skills/architecture/examples.md +94 -0
  90. package/.agent/skills/architecture/pattern-selection.md +68 -0
  91. package/.agent/skills/architecture/patterns-reference.md +50 -0
  92. package/.agent/skills/architecture/trade-off-analysis.md +77 -0
  93. package/.agent/skills/bash-linux/SKILL.md +201 -0
  94. package/.agent/skills/behavioral-modes/SKILL.md +264 -0
  95. package/.agent/skills/brainstorming/SKILL.md +164 -0
  96. package/.agent/skills/brainstorming/dynamic-questioning.md +359 -0
  97. package/.agent/skills/clean-code/SKILL.md +200 -0
  98. package/.agent/skills/code-review-checklist/SKILL.md +125 -0
  99. package/.agent/skills/database-design/SKILL.md +54 -0
  100. package/.agent/skills/database-design/database-selection.md +43 -0
  101. package/.agent/skills/database-design/indexing.md +39 -0
  102. package/.agent/skills/database-design/migrations.md +50 -0
  103. package/.agent/skills/database-design/optimization.md +36 -0
  104. package/.agent/skills/database-design/orm-selection.md +30 -0
  105. package/.agent/skills/database-design/schema-design.md +56 -0
  106. package/.agent/skills/database-design/scripts/schema_validator.py +172 -0
  107. package/.agent/skills/deployment-procedures/SKILL.md +241 -0
  108. package/.agent/skills/doc.md +177 -0
  109. package/.agent/skills/documentation-templates/SKILL.md +194 -0
  110. package/.agent/skills/frontend-design/SKILL.md +418 -0
  111. package/.agent/skills/frontend-design/animation-guide.md +331 -0
  112. package/.agent/skills/frontend-design/color-system.md +307 -0
  113. package/.agent/skills/frontend-design/decision-trees.md +418 -0
  114. package/.agent/skills/frontend-design/motion-graphics.md +306 -0
  115. package/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
  116. package/.agent/skills/frontend-design/scripts/ux_audit.py +727 -0
  117. package/.agent/skills/frontend-design/typography-system.md +345 -0
  118. package/.agent/skills/frontend-design/ux-psychology.md +1118 -0
  119. package/.agent/skills/frontend-design/visual-effects.md +383 -0
  120. package/.agent/skills/game-development/2d-games/SKILL.md +119 -0
  121. package/.agent/skills/game-development/3d-games/SKILL.md +135 -0
  122. package/.agent/skills/game-development/SKILL.md +167 -0
  123. package/.agent/skills/game-development/game-art/SKILL.md +185 -0
  124. package/.agent/skills/game-development/game-audio/SKILL.md +190 -0
  125. package/.agent/skills/game-development/game-design/SKILL.md +129 -0
  126. package/.agent/skills/game-development/mobile-games/SKILL.md +108 -0
  127. package/.agent/skills/game-development/multiplayer/SKILL.md +132 -0
  128. package/.agent/skills/game-development/pc-games/SKILL.md +144 -0
  129. package/.agent/skills/game-development/vr-ar/SKILL.md +123 -0
  130. package/.agent/skills/game-development/web-games/SKILL.md +150 -0
  131. package/.agent/skills/geo-fundamentals/SKILL.md +155 -0
  132. package/.agent/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
  133. package/.agent/skills/i18n-localization/SKILL.md +154 -0
  134. package/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
  135. package/.agent/skills/intelligent-routing/SKILL.md +335 -0
  136. package/.agent/skills/lint-and-validate/SKILL.md +44 -0
  137. package/.agent/skills/lint-and-validate/scripts/lint_runner.py +184 -0
  138. package/.agent/skills/lint-and-validate/scripts/type_coverage.py +173 -0
  139. package/.agent/skills/mcp-builder/SKILL.md +176 -0
  140. package/.agent/skills/mobile-design/SKILL.md +394 -0
  141. package/.agent/skills/mobile-design/decision-trees.md +516 -0
  142. package/.agent/skills/mobile-design/mobile-backend.md +491 -0
  143. package/.agent/skills/mobile-design/mobile-color-system.md +420 -0
  144. package/.agent/skills/mobile-design/mobile-debugging.md +122 -0
  145. package/.agent/skills/mobile-design/mobile-design-thinking.md +355 -0
  146. package/.agent/skills/mobile-design/mobile-navigation.md +458 -0
  147. package/.agent/skills/mobile-design/mobile-performance.md +767 -0
  148. package/.agent/skills/mobile-design/mobile-testing.md +356 -0
  149. package/.agent/skills/mobile-design/mobile-typography.md +432 -0
  150. package/.agent/skills/mobile-design/platform-android.md +666 -0
  151. package/.agent/skills/mobile-design/platform-ios.md +561 -0
  152. package/.agent/skills/mobile-design/scripts/mobile_audit.py +670 -0
  153. package/.agent/skills/mobile-design/touch-psychology.md +537 -0
  154. package/.agent/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +311 -0
  155. package/.agent/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +241 -0
  156. package/.agent/skills/nextjs-react-expert/3-server-server-side-performance.md +489 -0
  157. package/.agent/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +263 -0
  158. package/.agent/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -0
  159. package/.agent/skills/nextjs-react-expert/6-rendering-rendering-performance.md +431 -0
  160. package/.agent/skills/nextjs-react-expert/7-js-javascript-performance.md +683 -0
  161. package/.agent/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +149 -0
  162. package/.agent/skills/nextjs-react-expert/SKILL.md +286 -0
  163. package/.agent/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
  164. package/.agent/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
  165. package/.agent/skills/nodejs-best-practices/SKILL.md +333 -0
  166. package/.agent/skills/parallel-agents/SKILL.md +194 -0
  167. package/.agent/skills/performance-profiling/SKILL.md +149 -0
  168. package/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
  169. package/.agent/skills/plan-writing/SKILL.md +152 -0
  170. package/.agent/skills/powershell-windows/SKILL.md +166 -0
  171. package/.agent/skills/python-patterns/SKILL.md +441 -0
  172. package/.agent/skills/red-team-tactics/SKILL.md +203 -0
  173. package/.agent/skills/rust-pro/SKILL.md +190 -0
  174. package/.agent/skills/seo-fundamentals/SKILL.md +135 -0
  175. package/.agent/skills/seo-fundamentals/scripts/seo_checker.py +215 -0
  176. package/.agent/skills/server-management/SKILL.md +161 -0
  177. package/.agent/skills/systematic-debugging/SKILL.md +114 -0
  178. package/.agent/skills/tailwind-patterns/SKILL.md +269 -0
  179. package/.agent/skills/tdd-workflow/SKILL.md +149 -0
  180. package/.agent/skills/testing-patterns/SKILL.md +178 -0
  181. package/.agent/skills/testing-patterns/scripts/test_runner.py +219 -0
  182. package/.agent/skills/vulnerability-scanner/SKILL.md +276 -0
  183. package/.agent/skills/vulnerability-scanner/checklists.md +131 -0
  184. package/.agent/skills/vulnerability-scanner/scripts/security_scan.py +459 -0
  185. package/.agent/skills/web-design-guidelines/SKILL.md +57 -0
  186. package/.agent/skills/webapp-testing/SKILL.md +187 -0
  187. package/.agent/skills/webapp-testing/scripts/playwright_runner.py +173 -0
  188. package/.agent/workflows/brainstorm.md +113 -0
  189. package/.agent/workflows/create.md +59 -0
  190. package/.agent/workflows/debug.md +103 -0
  191. package/.agent/workflows/deploy.md +176 -0
  192. package/.agent/workflows/enhance.md +63 -0
  193. package/.agent/workflows/orchestrate.md +242 -0
  194. package/.agent/workflows/plan.md +89 -0
  195. package/.agent/workflows/preview.md +80 -0
  196. package/.agent/workflows/restore-localize-compat.md +525 -0
  197. package/.agent/workflows/status.md +86 -0
  198. package/.agent/workflows/test.md +144 -0
  199. package/.agent/workflows/ui-ux-pro-max.md +295 -0
  200. package/AGENT_FLOW.md +609 -0
  201. package/CHANGELOG.md +68 -0
  202. package/LICENSE +21 -0
  203. package/README.md +260 -0
  204. package/bin/adapters/base.js +63 -0
  205. package/bin/adapters/codex.js +391 -0
  206. package/bin/adapters/gemini.js +137 -0
  207. package/bin/ag-kit.js +1336 -0
  208. package/bin/core/builder.js +80 -0
  209. package/bin/core/generator.js +59 -0
  210. package/bin/core/resource-loader.js +64 -0
  211. package/bin/core/transformer.js +208 -0
  212. package/bin/interactive.js +65 -0
  213. package/bin/utils/atomic-writer.js +97 -0
  214. package/bin/utils/git-helper.js +68 -0
  215. package/bin/utils/managed-block.js +65 -0
  216. package/bin/utils/manifest.js +241 -0
  217. package/bin/utils.js +82 -0
  218. package/docs/codex-rules-template.md +36 -0
  219. package/docs/mapping-spec.md +68 -0
  220. package/docs/multi-target-adapter.md +80 -0
  221. package/docs/official/README.md +53 -0
  222. package/docs/official/antigravity/agent-modes-settings.md +64 -0
  223. package/docs/official/antigravity/rules-workflows.md +96 -0
  224. package/docs/official/antigravity/skills.md +147 -0
  225. package/docs/official/codex/agents-md.md +119 -0
  226. package/docs/official/codex/config-advanced.md +358 -0
  227. package/docs/official/codex/config-basic.md +141 -0
  228. package/docs/official/codex/config-reference.md +223 -0
  229. package/docs/official/codex/config-sample.md +216 -0
  230. package/docs/official/codex/mcp.md +107 -0
  231. package/docs/official/codex/rules.md +79 -0
  232. package/docs/official/codex/skills.md +114 -0
  233. package/docs/official/sources-index.md +32 -0
  234. package/docs/operations.md +145 -0
  235. package/docs/terminology-style-guide.md +69 -0
  236. package/package.json +51 -0
  237. package/scripts/postinstall-check.js +112 -0
@@ -0,0 +1,537 @@
1
+ # 触控心理学参考(Touch Psychology Reference)
2
+
3
+ > 深入覆盖移动端触控交互、触控版 Fitts' Law、拇指热区、手势心理学与触感反馈(Haptics)。
4
+ > **这是移动端版的 ux-psychology.md —— 所有移动端工作必读。**
5
+
6
+ ---
7
+
8
+ ## 1. 触控版 Fitts' Law
9
+
10
+ ### 核心差异(The Fundamental Difference)
11
+
12
+ ```
13
+ DESKTOP(鼠标/触控板):
14
+ ├── 光标尺寸:1 像素(高精度)
15
+ ├── 视觉反馈:Hover 状态
16
+ ├── 误差成本:低(易重试)
17
+ └── 目标获取:快且精准
18
+
19
+ MOBILE(手指):
20
+ ├── 接触面积:约 7mm 直径(精度低)
21
+ ├── 视觉反馈:无 hover,仅点击
22
+ ├── 误差成本:高(反复点击很挫败)
23
+ ├── 遮挡:手指覆盖目标
24
+ └── 目标获取:更慢,需要更大目标
25
+ ```
26
+
27
+ ### Fitts' Law 公式(触控版)
28
+
29
+ ```
30
+ Touch acquisition time = a + b × log₂(1 + D/W)
31
+
32
+ Where:
33
+ ├── D = 目标距离
34
+ ├── W = 目标宽度
35
+ └── 触控下 W 必须远大于桌面端
36
+ ```
37
+
38
+ ### 最小触控尺寸(Minimum Touch Target Sizes)
39
+
40
+ | 平台(Platform) | 最小值(Minimum) | 推荐值(Recommended) | 适用(Use For) |
41
+ |------------------|------------------|-----------------------|-----------------|
42
+ | **iOS (HIG)** | 44pt × 44pt | 48pt+ | 所有可点元素 |
43
+ | **Android (Material)** | 48dp × 48dp | 56dp+ | 所有可点元素 |
44
+ | **WCAG 2.2** | 44px × 44px | - | 无障碍合规 |
45
+ | **关键操作** | - | 56-64px | 主要 CTA、破坏性操作 |
46
+
47
+ ### 视觉尺寸 vs 命中区(Visual Size vs Hit Area)
48
+
49
+ ```
50
+ ┌─────────────────────────────────────┐
51
+ │ │
52
+ │ ┌─────────────────────────┐ │
53
+ │ │ │ │
54
+ │ │ [ BUTTON ] │ ← 视觉:36px
55
+ │ │ │ │
56
+ │ └─────────────────────────┘ │
57
+ │ │ ← 命中区:48px(padding 扩展)
58
+ └─────────────────────────────────────┘
59
+
60
+ ✅ 正确:视觉可以更小,只要命中区 ≥ 44-48px
61
+ ❌ 错误:命中区与视觉尺寸一样小
62
+ ```
63
+
64
+ ### 规则应用(Application Rules)
65
+
66
+ | 元素(Element) | 视觉尺寸(Visual Size) | 命中区(Hit Area) |
67
+ |-----------------|--------------------------|---------------------|
68
+ | 图标按钮 | 24-32px | 44-48px(padding) |
69
+ | 文本链接 | 任意 | 高度 ≥ 44px |
70
+ | 列表项 | 全宽 | 高度 48-56px |
71
+ | 复选/单选 | 20-24px | 44-48px 命中区 |
72
+ | 关闭/X 按钮 | 24px | ≥ 44px |
73
+ | Tab Bar 项 | 图标 24-28px | Tab 宽度全占,iOS 高度 49px |
74
+
75
+ ---
76
+
77
+ ## 2. 拇指热区(Thumb Zone Anatomy)
78
+
79
+ ### 单手持机(One-Handed Phone Usage)
80
+
81
+ ```
82
+ 研究显示:49% 用户单手使用手机。
83
+
84
+ ┌─────────────────────────────────────┐
85
+ │ │
86
+ │ ┌─────────────────────────────┐ │
87
+ │ │ HARD TO REACH │ │ ← 顶部状态栏、导航
88
+ │ │ (requires stretch) │ │ 放:返回、菜单、设置
89
+ │ │ │ │
90
+ │ ├─────────────────────────────┤ │
91
+ │ │ │ │
92
+ │ │ OK TO REACH │ │ ← 内容区
93
+ │ │ (comfortable) │ │ 放:次级操作、内容
94
+ │ │ │ │
95
+ │ ├─────────────────────────────┤ │
96
+ │ │ │ │
97
+ │ │ EASY TO REACH │ │ ← Tab Bar、FAB 热区
98
+ │ │ (thumb's arc) │ │ 放:主 CTA
99
+ │ │ │ │
100
+ │ └─────────────────────────────┘ │
101
+ │ │
102
+ │ [ HOME ] │
103
+ └─────────────────────────────────────┘
104
+ ```
105
+
106
+ ### 拇指弧线(右手用户)
107
+
108
+ ```
109
+ Right hand holding phone:
110
+
111
+ ┌───────────────────────────────┐
112
+ │ STRETCH STRETCH OK │
113
+ │ │
114
+ │ STRETCH OK EASY │
115
+ │ │
116
+ │ OK EASY EASY │
117
+ │ │
118
+ │ EASY EASY EASY │
119
+ └───────────────────────────────┘
120
+
121
+ 左手用户是镜像。
122
+ → 需兼顾左右手或默认右手为主
123
+ ```
124
+
125
+ ### 布局放置建议(Placement Guidelines)
126
+
127
+ | 元素类型(Element Type) | 理想位置(Ideal Position) | 理由(Reason) |
128
+ |--------------------------|-----------------------------|---------------|
129
+ | **主 CTA** | 底部中间/右侧 | 拇指易达 |
130
+ | **Tab Bar** | 底部 | 符合自然位置 |
131
+ | **FAB** | 右下 | 右手易达 |
132
+ | **导航入口** | 顶部(需伸手) | 使用频率低 |
133
+ | **破坏性操作** | 左上 | 难触达 → 降误触 |
134
+ | **取消/关闭** | 左上 | 习惯 + 安全 |
135
+ | **确认/完成** | 右上或底部 | 习惯 |
136
+
137
+ ### 大屏手机(>6")
138
+
139
+ ```
140
+ 在大屏手机上,顶部 40% 变成“单手死区”。
141
+
142
+ 解决方案:
143
+ ├── Reachability(iOS)
144
+ ├── 下拉式界面(drawer 下拉)
145
+ ├── Bottom sheet 导航
146
+ ├── 悬浮操作按钮(FAB)
147
+ └── 用手势替代顶部操作
148
+ ```
149
+
150
+ ---
151
+
152
+ ## 3. 触控 vs 点击心理学(Touch vs Click Psychology)
153
+
154
+ ### 预期差异(Expectation Differences)
155
+
156
+ | 维度(Aspect) | Click(Desktop) | Touch(Mobile) |
157
+ |---------------|------------------|-----------------|
158
+ | **反馈时延** | 可等待 100ms | 期待即时(<50ms) |
159
+ | **视觉反馈** | Hover → Click | 立即点按反馈 |
160
+ | **容错** | 易重试 | 更挫败、易感“坏掉” |
161
+ | **精度** | 高 | 低 |
162
+ | **菜单** | 右键 | 长按 |
163
+ | **取消** | ESC | 滑走/点空白 |
164
+
165
+ ### 触控反馈要求(Touch Feedback Requirements)
166
+
167
+ ```
168
+ 点击 → 立即视觉反馈(< 50ms)
169
+ ├── 高亮态(背景色变化)
170
+ ├── 轻微缩放(0.95-0.98)
171
+ ├── Ripple(Android Material)
172
+ ├── 触感反馈确认
173
+ └── 绝对不能“无反应”
174
+
175
+ 加载 → 100ms 内提示
176
+ ├── 动作 > 100ms
177
+ ├── 显示 spinner/progress
178
+ ├── 按钮禁用(防连点)
179
+ └── 能做就用 Optimistic UI
180
+ ```
181
+
182
+ ### “胖手指”问题(The "Fat Finger" Problem)
183
+
184
+ ```
185
+ 问题:手指遮挡目标
186
+ ├── 用户看不到准确点击位置
187
+ ├── 反馈出现在手指下方
188
+ └── 错误率上升
189
+
190
+ 解决方案:
191
+ ├── 在触点上方显示反馈(tooltip)
192
+ ├── 精准任务提供偏移光标
193
+ ├── 文本选择提供放大镜
194
+ └── 足够大的目标让精度无关紧要
195
+ ```
196
+
197
+ ---
198
+
199
+ ## 4. 手势心理学(Gesture Psychology)
200
+
201
+ ### 手势可发现性问题(Gesture Discoverability Problem)
202
+
203
+ ```
204
+ 问题:手势不可见
205
+ ├── 用户必须自行发现/记住
206
+ ├── 无 hover/视觉提示
207
+ ├── 心智模型与点击不同
208
+ └── 很多用户永远不会发现手势
209
+
210
+ 解决方案:必须提供可见替代
211
+ ├── 左滑删除 → 同时提供删除按钮/菜单
212
+ ├── 下拉刷新 → 同时提供刷新按钮
213
+ ├── 双指缩放 → 同时提供缩放控制
214
+ └── 手势是捷径,而不是唯一入口
215
+ ```
216
+
217
+ ### 常见手势约定(Common Gesture Conventions)
218
+
219
+ | 手势(Gesture) | 通用语义(Universal Meaning) | 使用场景(Usage) |
220
+ |-----------------|-------------------------------|------------------|
221
+ | **Tap** | 选择、激活 | 主动作 |
222
+ | **Double tap** | 放大、点赞 | 快速操作 |
223
+ | **Long press** | 上下文菜单、选择模式 | 次级操作 |
224
+ | **Swipe horizontal** | 导航、删除、操作 | 列表行为 |
225
+ | **Swipe down** | 刷新、关闭 | 下拉刷新 |
226
+ | **Pinch** | 放大/缩小 | 地图、图片 |
227
+ | **Two-finger scroll** | 嵌套滚动 | 内嵌滚动区 |
228
+
229
+ ### 手势可感知性设计(Gesture Affordance Design)
230
+
231
+ ```
232
+ 滑动操作需要视觉提示:
233
+
234
+ ┌─────────────────────────────────────────┐
235
+ │ ┌───┐ │
236
+ │ │ ≡ │ Item with hidden actions... → │ ← 边缘提示(颜色露出)
237
+ │ └───┘ │
238
+ └─────────────────────────────────────────┘
239
+
240
+ ✅ 好:边缘轻微露色提示可滑动
241
+ ✅ 好:拖拽手柄图标(≡)暗示可排序
242
+ ✅ 好:Onboarding tooltip 解释手势
243
+ ❌ 坏:隐藏手势且无任何提示
244
+ ```
245
+
246
+ ### 平台手势差异(Platform Gesture Differences)
247
+
248
+ | 手势(Gesture) | iOS | Android |
249
+ |-----------------|-----|---------|
250
+ | **Back** | 左边缘滑动 | 系统返回键/手势 |
251
+ | **Share** | Action Sheet | Share Sheet |
252
+ | **Context menu** | 长按 / Force touch | 长按 |
253
+ | **Dismiss modal** | 下滑关闭 | 返回键或滑动 |
254
+ | **Delete in list** | 左滑后点删除 | 左滑即删或撤销 |
255
+
256
+ ---
257
+
258
+ ## 5. 触感反馈模式(Haptic Feedback Patterns)
259
+
260
+ ### 为什么触感重要(Why Haptics Matter)
261
+
262
+ ```
263
+ Haptics 带来的价值:
264
+ ├── 不看屏也能确认操作
265
+ ├── 更高级、更“真”的体验
266
+ ├── 无障碍收益(盲人用户)
267
+ ├── 降低误触
268
+ └── 提升情绪满足感
269
+
270
+ 没有 haptics:
271
+ ├── 体验廉价,像网页
272
+ ├── 用户不确定是否已触发
273
+ └── 错失体验加分项
274
+ ```
275
+
276
+ ### iOS 触感类型(iOS Haptic Types)
277
+
278
+ | 类型(Type) | 强度(Intensity) | 场景(Use Case) |
279
+ |-------------|-------------------|------------------|
280
+ | `selection` | Light | Picker 滚动、开关、选择 |
281
+ | `light` | Light | 轻动作、hover 替代 |
282
+ | `medium` | Medium | 标准点击确认 |
283
+ | `heavy` | Strong | 重要完成、落地动作 |
284
+ | `success` | Pattern | 任务成功完成 |
285
+ | `warning` | Pattern | 警告与提醒 |
286
+ | `error` | Pattern | 出错反馈 |
287
+
288
+ ### Android 触感类型(Android Haptic Types)
289
+
290
+ | 类型(Type) | 场景(Use Case) |
291
+ |-------------|------------------|
292
+ | `CLICK` | 标准点击反馈 |
293
+ | `HEAVY_CLICK` | 重要动作 |
294
+ | `DOUBLE_CLICK` | 确认动作 |
295
+ | `TICK` | 滚动/滑动反馈 |
296
+ | `LONG_PRESS` | 长按触发 |
297
+ | `REJECT` | 错误/无效操作 |
298
+
299
+ ### 触感使用准则(Haptic Usage Guidelines)
300
+
301
+ ```
302
+ ✅ 适合使用 haptics 的场景:
303
+ ├── 按钮点击
304
+ ├── Toggle 开关
305
+ ├── Picker/Slider 值变化
306
+ ├── 下拉刷新触发
307
+ ├── 成功操作完成
308
+ ├── 错误与警告
309
+ ├── 滑动操作达到阈值
310
+ └── 重要状态变化
311
+
312
+ ❌ 不适合使用 haptics 的场景:
313
+ ├── 每个滚动位置
314
+ ├── 每条列表项
315
+ ├── 后台事件
316
+ ├── 被动展示
317
+ └── 频率过高(触感疲劳)
318
+ ```
319
+
320
+ ### 触感强度映射(Haptic Intensity Mapping)
321
+
322
+ | 动作重要性(Action Importance) | 触感级别(Haptic Level) | 示例(Example) |
323
+ |-------------------------------|---------------------------|----------------|
324
+ | 轻操作/浏览 | Light / None | 滚动、Hover
325
+ | 标准操作 | Medium / Selection | 点击、切换
326
+ | 重要操作 | Heavy / Success | 完成、确认
327
+ | 关键/破坏性 | Heavy / Warning | 删除、支付
328
+ | 错误 | Error pattern | 操作失败
329
+
330
+ ---
331
+
332
+ ## 6. 移动端认知负荷(Mobile Cognitive Load)
333
+
334
+ ### 移动端与桌面差异(How Mobile Differs from Desktop)
335
+
336
+ | 因素(Factor) | Desktop | Mobile | 含义(Implication) |
337
+ |---------------|---------|--------|---------------------|
338
+ | **注意力** | 连续专注 | 频繁中断 | 设计应适配碎片化 |
339
+ | **环境** | 可控 | 随时随地 | 处理弱光/噪音 |
340
+ | **多任务** | 多窗口 | 单 App | 尽量一次完成任务 |
341
+ | **输入速度** | 快(键盘) | 慢(触控) | 减少输入、智能默认值 |
342
+ | **纠错** | 便捷(快捷键) | 困难 | 防错 + 易恢复 |
343
+
344
+ ### 降低移动端认知负荷(Reducing Mobile Cognitive Load)
345
+
346
+ ```
347
+ 1. 每屏只放一个主动作(ONE PRIMARY ACTION)
348
+ └── 下一步必须清晰
349
+
350
+ 2. 渐进披露(PROGRESSIVE DISCLOSURE)
351
+ └── 只展示当前需要的信息
352
+
353
+ 3. 智能默认值(SMART DEFAULTS)
354
+ └── 能预填就预填
355
+
356
+ 4. 分块(CHUNKING)
357
+ └── 长表单拆分步骤
358
+
359
+ 5. 识别优先于记忆(RECOGNITION over RECALL)
360
+ └── 给选项,不让用户记
361
+
362
+ 6. 上下文保留(CONTEXT PERSISTENCE)
363
+ └── 中断/后台保存状态
364
+ ```
365
+
366
+ ### 移动端米勒定律(Miller's Law for Mobile)
367
+
368
+ ```
369
+ 桌面:7±2
370
+ 移动:建议 5±1(干扰更大)
371
+
372
+ 导航:Tab Bar 最多 5 个
373
+ 选项:每层最多 5 个
374
+ 步骤:进度展示最多 5 步
375
+ ```
376
+
377
+ ### 移动端希克定律(Hick's Law for Mobile)
378
+
379
+ ```
380
+ 选择越多,决策越慢
381
+
382
+ 移动端影响更严重:
383
+ ├── 屏幕更小,整体难看全
384
+ ├── 需要滚动,已看内容易遗忘
385
+ ├── 中断更频繁
386
+ └── 决策疲劳更快
387
+
388
+ 解决方案:渐进披露
389
+ ├── 首屏只给 3-5 个选项
390
+ ├── 用 "More" 承接额外选项
391
+ ├── 按使用频率排序
392
+ └── 记住用户上次选择
393
+ ```
394
+
395
+ ---
396
+
397
+ ## 7. 触控无障碍(Touch Accessibility)
398
+
399
+ ### 运动障碍考虑(Motor Impairment Considerations)
400
+
401
+ ```
402
+ 运动障碍用户可能:
403
+ ├── 有抖动(需更大目标)
404
+ ├── 使用辅助设备(输入方式不同)
405
+ ├── 单手使用(触达受限)
406
+ ├── 需要更多时间(避免超时)
407
+ └── 更容易误触(需要确认)
408
+
409
+ 设计响应:
410
+ ├── 更大的触控目标(48dp+)
411
+ ├── 手势时间可调整
412
+ ├── 破坏性操作支持撤销
413
+ ├── 支持 Switch Control
414
+ └── 支持语音控制
415
+ ```
416
+
417
+ ### 触控间距标准(Touch Target Spacing, A11y)
418
+
419
+ ```
420
+ WCAG 2.2 Success Criterion 2.5.8:
421
+
422
+ 触控目标必须满足:
423
+ ├── 宽度 ≥ 44px
424
+ ├── 高度 ≥ 44px
425
+ ├── 相邻间距 ≥ 8px
426
+
427
+ 或满足以下条件:
428
+ ├── 行内文本(Inline)
429
+ ├── 用户可自行放大(User-controlled)
430
+ ├── 必要目标(Essential)
431
+ ```
432
+
433
+ ### 可达触控模式(Accessible Touch Patterns)
434
+
435
+ | 模式(Pattern) | 可达实现(Accessible Implementation) |
436
+ |----------------|----------------------------------------|
437
+ | Swipe actions | 提供菜单替代 |
438
+ | Drag and drop | 提供选择 + 移动选项 |
439
+ | Pinch zoom | 提供缩放按钮 |
440
+ | Force touch | 提供长按替代 |
441
+ | Shake gesture | 提供按钮替代 |
442
+
443
+ ---
444
+
445
+ ## 8. 触感中的情绪(Emotion in Touch)
446
+
447
+ ### 高级感来源(The Premium Feel)
448
+
449
+ ```
450
+ “高级触感”来自:
451
+ ├── 即时响应(< 50ms)
452
+ ├── 合理的 haptic 反馈
453
+ ├── 顺滑 60fps 动画
454
+ ├── 正确的阻尼与物理感
455
+ ├── 适度音效(场景合适时)
456
+ └── 对弹簧物理的细节关注
457
+ ```
458
+
459
+ ### 情绪化触控反馈(Emotional Touch Feedback)
460
+
461
+ | 情绪(Emotion) | 触控反馈(Touch Response) |
462
+ |----------------|---------------------------|
463
+ | Success | 成功 haptic + confetti/check |
464
+ | Error | 错误 haptic + 抖动动画 |
465
+ | Warning | 警告 haptic + 注意色 |
466
+ | Delight | 预期外的顺滑动画 |
467
+ | Power | 关键动作的重触感 |
468
+
469
+ ### 通过触控建立信任(Trust Building Through Touch)
470
+
471
+ ```
472
+ 触控中的信任信号:
473
+ ├── 一致行为(同操作=同反馈)
474
+ ├── 可靠反馈(不默默失败)
475
+ ├── 敏感操作更“安全”的手感
476
+ ├── 专业级动画(不抖)
477
+ └── 破坏性操作要确认
478
+ ```
479
+
480
+ ---
481
+
482
+ ## 9. 触控心理学清单(Touch Psychology Checklist)
483
+
484
+ ### 每个屏幕前(Before Every Screen)
485
+
486
+ - [ ] **所有触控目标 ≥ 44-48px?**
487
+ - [ ] **主 CTA 在拇指热区?**
488
+ - [ ] **破坏性操作有确认?**
489
+ - [ ] **手势有可见替代入口?**
490
+ - [ ] **关键操作有触感反馈?**
491
+ - [ ] **点击有即时视觉反馈?**
492
+ - [ ] **>100ms 动作有加载态?**
493
+
494
+ ### 发布前(Before Release)
495
+
496
+ - [ ] **最小设备测试?**
497
+ - [ ] **大屏单手测试?**
498
+ - [ ] **所有手势有可见替代?**
499
+ - [ ] **触感在真机可用?**
500
+ - [ ] **无障碍设置下测试触控目标?**
501
+ - [ ] **没有过小的关闭按钮/图标?**
502
+
503
+ ---
504
+
505
+ ## 10. 速查卡(Quick Reference Card)
506
+
507
+ ### 触控目标尺寸(Touch Target Sizes)
508
+
509
+ ```
510
+ iOS Android WCAG
511
+ Minimum: 44pt 48dp 44px
512
+ Recommended: 48pt+ 56dp+ -
513
+ Spacing: 8pt+ 8dp+ 8px+
514
+ ```
515
+
516
+ ### 拇指热区动作(Thumb Zone Actions)
517
+
518
+ ```
519
+ TOP: Navigation, settings, back(低频)
520
+ MIDDLE: Content, secondary actions(次级)
521
+ BOTTOM: Primary CTA, tab bar, FAB(高频)
522
+ ```
523
+
524
+ ### Haptic 选择(Haptic Selection)
525
+
526
+ ```
527
+ Light: Selection, toggle, minor
528
+ Medium: Tap, standard action
529
+ Heavy: Confirm, complete, drop
530
+ Success: Task done
531
+ Error: Failed action
532
+ Warning: Attention needed
533
+ ```
534
+
535
+ ---
536
+
537
+ > **记住(Remember)**:每一次触控都是用户与设备的对话。要让它自然、响应、尊重人手的真实物理条件,而不是假设“像鼠标一样精准”。