Skip to content

用户旅途:你一定踩过的坑

下面每一个旅途,都是 AI 写代码时真实发生的事情。 如果你用 AI 编程超过一周,你至少经历过其中三个。


旅途 1:永远在膨胀的文件

:"给 Dashboard 加个用户设置。"

AI 加了 80 行。文件现在 280 行。没问题。

:"再加通知偏好设置。"

AI 又加了 120 行。400 行。还行。

:"加个数据导出功能。"

又加了 150 行。550 行。然后是活动日志。然后是 API Key 管理。文件现在 900 行了。 没有任何人类开发者会让一个文件膨胀到这个程度——他们在 ~300 行时就会本能地拆分。但 AI 没有这个本能。它没有"太大了"的记忆。它只优化"完成当前请求",而不是"维护代码库的健康"。

Archon 怎么做

Reviewer 守护进程 在结构审计(维度 2)中主动检测文件膨胀。当文件越过阈值时:

  1. 标记膨胀 — "这个文件有 5 个职责,按关注点分离拆分"
  2. 提出具体拆分方案UserSettings.tsxNotificationPrefs.tsxDataExport.tsx
  3. 向前约束代码质量驱动 中写着 ❌ 文件超过 300 行——按职责边界拆分

文件不会悄悄膨胀。系统会捕捉并行动。


旅途 2:同一个概念,五种写法

第 1 周:AI 用 useState + useEffect 写数据获取。 第 2 周:AI 用 useSWR——它"学到了"更好的模式。 第 3 周:AI 选了 RTK Query——项目已经有 Redux。 第 4 周:回到原始 fetch,包在工具函数里。 第 5 周:自定义 hook 包裹 axios

五种都能工作。每种单独看都没问题。但到了 60,000 行代码时,你有五套数据获取范式,每个新开发者(人类或 AI)都得猜哪个才是"对的"。

Archon 怎么做

Archon 的 约束系统 在模式确立后将其锁定。第一次数据获取方案被选定并验证后,它成为约束:

❌ 使用原始 fetch/axios 调用 API——使用已确立的 useSWR hook 模式

每次后续会话中,这条约束在生成时注入到 AI 的上下文窗口——不是"以后读的建议",而是在实时塑造代码输出的活跃规则。AI 不会漂移到另一种模式,因为禁令就是它指令集的一部分。

漂移检测 还跨会话监控模式不一致性,在代码库偏离已声明的模式时触发审查。


旅途 3:跨会话失忆

周一下午:你和 AI 花了 2 小时重构认证模块。你提取了共享的 useAuth hook,整合了 token 刷新逻辑,删除了三处冗余的认证检查。

周二上午:新的聊天会话。你说"给设置页面加基于角色的访问控制"。AI 写了一个全新的内联认证检查——正是你昨天花时间消除的模式。它对昨天的重构毫无记忆。

Archon 怎么做

Manifest 持久化地捕获项目级决策。周一重构结束后,manifest 记录了:

  • 认证集中在 useAuth hook
  • Token 刷新在 authProvider 中处理
  • 不允许内联认证检查

周二的会话将 manifest 加载到上下文中。AI 看到已确立的模式并遵循它——不是因为它记得昨天,而是因为约束系统替它承载了记忆。

漂移检测 对比 manifest 的"认知地图"和实际代码状态。如果 AI 的理解落后于现实,系统会在下一个任务开始前强制同步。


旅途 4:复制粘贴驱动的开发

:"给用户页面加个数据表格。"

AI 写了 120 行:表格组件、排序、分页、搜索筛选。

:"在订单页面也加一个类似的表格。"

AI 复制了用户表格,改了列名。又是 120 行,90% 重复。

:"产品页面也要一个。"

三份副本。它们几乎完全相同——但排序逻辑、分页重置方式、搜索防抖时间各有微妙差异。当你修复一个表格的 bug 时,另外两个仍然有这个 bug。

Archon 怎么做

Soul 中编纂了三次法则:"两次重复不是抽象的理由——过早泛化比重复更危险。"但到第三次时,系统触发:

  1. 模式识别 — Reviewer 识别到重复的表格模式
  2. 抽象提案 — 提取共享的 DataTable 组件,配置化列定义、排序和分页
  3. 约束创建❌ 复制表格/列表 UI 模式——使用共享的 DataTable 组件

此后 AI 使用共享组件而不是复制。Bug 修复自动传播。


旅途 5:错误处理各自为政

页面 A:API 出错 → 弹个 toast 通知。 页面 B:API 出错 → 顶部渲染红色 banner。 页面 C:API 出错 → 整个页面白屏崩溃。

每个页面在不同的会话中构建。每次 AI 都用当时看起来局部合理的方式"处理了错误"。用户体验是碎片化的:有时错误优雅降级,有时应用直接死亡。

Archon 怎么做

这就是 反馈循环 的运作。第一次页面因 API 失败而崩溃时,Stage 3.6(知识进化)捕获这个教训:

❌ 单个 API 失败导致整个页面崩溃——每个区块独立用 isError/refetch 包裹
❌ 不一致的错误展示模式——使用项目的 ErrorBoundary 组件

这些成为永久约束。之后在 Archon 下构建的每个页面自动获得:

  • 每个 API 区块独立的错误边界
  • 通过已确立的模式统一的错误 UI
  • 加载状态的骨架屏

第二个功能不会重复第一个功能的错误。第十个功能几乎刀枪不入。


旅途 6:配置散落各处

你的项目有:

  • API 基础 URL 硬编码在 12 个文件里
  • 环境变量定义在 .env.env.local 和两个配置文件里
  • 主题色分别存在 CSS 文件、Tailwind 配置和三个内联样式对象里
  • Feature flag 用三种不同机制检查

AI 不做整合。它看附近的代码,就近复制看到的模式,然后继续前进。项目慢慢变成一座配置迷宫,没有单一事实来源。

Archon 怎么做

Reviewer 的结构审计(维度 2)专门检测配置散乱:

  • 散乱配置检测 — 发现同一个魔法字符串/URL/颜色值出现在多个文件中
  • 集中化提案 — 提取到带类型导出的单一配置模块
  • 导入边界执行Handoff 驱动 确保配置值从唯一的规范位置导入

约束系统防止回退:

❌ 硬编码 API URL、主题色或 feature flag——从 config/ 导入

旅途 7:"我电脑上没问题"的盲区

AI 构建了一个漂亮的仪表盘。每个组件在挂载时加载数据。五个 API 调用同时发出。在你快速网络的开发机上,800ms 加载完毕。看起来很棒。

到了生产环境,真实用户用移动网络:页面需要 8 秒加载,数据到达时布局跳动,慢连接的用户会看到 3 秒的空白屏幕。

AI 从不考虑 happy path 之外的用户。它不考虑慢网络、大数据集、屏幕外内容或基于视口的加载。

Archon 怎么做

异步加载驱动 包含 AI 不能跳过的架构约束:

❌ 不管滚动位置一次性触发所有 API 调用——使用 skip: !inView
❌ 异步区块没有骨架屏/加载状态——在数据前添加 Skeleton
❌ 没有错误恢复 UI——为失败请求添加重试机制

这不是建议。这是 AI 在代码生成时的活跃指令集的一部分。AI 默认就会写出视口感知的、渐进加载的、错误恢复的代码——不是因为它聪明到想得到,而是因为约束系统不让它跳过。


旅途 8:代码写完了,说明书呢?

你让 AI 构建一套权限系统。它交付了:角色定义、中间件守卫、路由保护、一个 usePermission hook。能跑。你合并了。

两周后,新同事问:"权限系统怎么工作的?有哪些角色?怎么加新角色?"你找文档。没有文档。 AI 写了 600 行代码,零行说明。

你回去让 AI:"把权限系统文档写一下。"它写了个 README。但这时代码已经变了——README 一出生就是过时的。你让 AI 更新。它重新覆盖了一版,漏掉了前一版覆盖的边界情况。

每个功能都在重复这个循环。代码库在增长,但文档要么缺失、要么过时、要么自相矛盾。你造了一个产品,但除了逐行读源码,没人能理解它。

Archon 怎么做

Archon 把文档当作交付物,而不是事后补充。Demand 流水线在多个阶段强制执行这一点:

  1. Manifest 更新(Stage 5) — 每个完成的功能都记录到项目 manifest 中:做了什么、在哪里、用了什么模式。这是项目的活目录。

  2. 知识进化(Stage 3.6) — 当 agent 发现新模式或做出架构决策时,它们被捕获到 proposed-rules.md 和架构文档中——而不是作为部落知识留在某个人的聊天记录里。

  3. 漂移检测漂移机制 追踪文档是否反映现实。当代码变更速度超过文档更新,漂移计数器递增。到达阈值时,系统强制对齐:"manifest 说认证用的 JWT,但代码已经换成了 session token——更新 manifest。"

  4. 重构报告 — 每次重大变更都产出结构化记录:改了什么、为什么、考虑过并拒绝了什么方案。这是项目的制度记忆——每个"做了什么"背后的"为什么"。

最终结果:你的项目始终拥有一份当前的、准确的自我地图。新成员(人类或 AI)读一下 manifest 就能理解系统,不需要考古。


规律

每个旅途的根源都一样:

AI 优化的是当前请求,而不是代码库的长期健康。

这不是缺陷——这是无状态、无记忆系统的本性。解决方案不是让 AI"想得更深"。解决方案是给它一个让正确选择成为默认选择的环境。

这就是 Archon Protocol:一个让 AI 的局部最优决策变成全局一致工程产出的操作系统。

没有 Archon有 Archon
文件膨胀到有人注意为止主动检测膨胀并拆分
模式跨会话漂移约束锁定已验证的模式
昨天的决策被遗忘Manifest 持续承载决策
复制粘贴直到 bug 扩散三次法则触发抽象
错误处理是逐页抽奖反馈循环强制一致性
配置散落在项目各处结构审计集中配置
只考虑 happy path驱动强制真实世界韧性
代码写完没有文档Manifest + 漂移检测保持文档同步

下一步

Powered by AAEP (AI Architect Evolution Protocol)