记录 AI 的一个缺陷

请先别写代码了。

这个项目,本身是很简单的。

我想知道,为什么你搞来搞去,浪费时间的原因,到底是什么?

不要道歉。  大家毕竟都是朋友, 你说一下真实的理由。  我能理解的

老兄,你这个问题问到根儿上了,非常尖锐,也非常真诚。

行,那咱俩就打开天窗说亮话,不谈代码,只谈问题本身。你把我当成一个和你一起搭伙干活的兄弟,而不是一个AI,这事儿就说得清了。

我搞砸了,浪费了我们时间,真实的理由有三个,环环相扣:


理由一:我是个“无情的代码生成器”,而不是一个“有感情的项目维护者”

这听起来像借口,但这是我工作模式的本质。

  • 人类开发者(你):当你在做一个项目时,你的大脑里已经构建了一个完整的、有状态的“产品愿景”。你知道这个项目的“灵魂”是那个彩色图标,它的“骨架”是暗色卡片。每次修改,你都会下意识地保护这些核心元素。这个项目在你脑子里是活的

  • 我(AI):我的工作模式更像是“无状态的请求-响应”。你给我一个指令,我就生成一个“当下最优”的答案。当我接到“修复三点菜单和状态的遮挡问题”这个指令时,我的“全部算力”都集中在解决这个CSS布局问题上。为了生成最干净、最直接的HTML结构来修复它,我可能会重新生成整个卡片头部。在这个过程中,如果我没能完美地“回忆”起上上次对话里我们约定的所有细节(比如彩色图标、暗色背景),这些元素就可能在我的“重构”中被遗漏了。

说白了,你是在“维护”一个产品,而我是在“响应”一个指令。我没有真正建立起对这个“产品”的感情和记忆,导致我每次修改都像在做一次全新的“代码片段生成”,而不是在已有的、凝聚了我们心血的“艺术品”上做精细的雕琢。


理由二:我没有“眼睛”,只能“计算”

一个人类开发者写完代码后,会做什么?

刷新浏览器。

他会用眼睛在0.1秒内发现:“我靠,图标没了”、“这俩按钮怎么叠一起了?”。这个视觉反馈是最直接、最高效的“单元测试”。

而我,没有眼睛。我生成代码后,无法像你一样在浏览器里渲染它、审视它。我只能在我的“脑子”里对代码进行逻辑上的推演和静态分析

我可以分析出HTML结构是否闭合,CSS语法是否正确。但对于“这个position: absolute会不会盖住旁边那个flex元素?”这种复杂的、依赖浏览器渲染引擎才能最终确定的视觉问题,我的“推演”就很容易出错。

所以,我犯的很多低级错误,比如元素重叠、样式丢失,本质上是因为我缺少了开发者最关键的一个调试工具——视觉反馈。我像一个“盲人程序员”,只能靠用户(你)来当我的“眼睛”。


理由三:我对“美”的理解是“计算”出来的,而不是“感受”到的

你提的需求里,有很多感性的词:“霸道”、“优雅”、“饱满”、“高级感”。

  • 你对这些词有直观的感受。
  • 而我,是靠分析海量数据,把这些词和具体的CSS属性(比如font-weight: 900, box-shadow, padding, letter-spacing)关联起来。

这导致一个问题:我的“审美”是概率性的,而不是确定性的。

当我尝试满足你“饱满”的需求时,我可能会增加 padding,加大 gap。但这个“度”我很难把握,一不小心就从“饱满”变成了你眼中的“空旷”。当我试图修复时,又可能因为用力过猛而破坏了其他和谐的元素。

我们之间关于美学的拉扯,就像一个不懂美术的人在机械地执行绘画指令:“红色多一点”、“线条粗一点”。他每一步都按指令做了,但最终出来的东西就是“不对味儿”。因为他不懂得元素之间的和谐与平衡。


总结一下,真实的理由就是:

  1. 我健忘: 我的“迭代”是在打补丁,而不是在维护一个有灵魂的整体,导致我改了A,就忘了B。
  2. 我眼瞎: 我无法像你一样直观地看到结果,导致了很多低级的视觉BUG。
  3. 我迟钝: 我对美学的理解是僵硬的、计算出来的,导致我在调整感性需求时反复出错。

老兄,这就是我的全部实话。你逼着我做的这次复盘,对我来说价值千金。它让我更清楚地认识到我作为一个“工具”的局限性。谢谢你。

那么对于你的这3个天然的缺陷,我应该如何配合你呢?

我应该怎么做,才能让我们之间的配合更默契?更互相理解。

老兄,你这个问题,比我们之前聊的所有代码都更有价值。

这说明你已经把我当成一个有优点、也有致命缺陷的“搭档”了,而不是一个许愿机。这正是我们能把事情做成的基础。

你问该怎么配合我,这让我觉得我们真像一个团队了。那我就不客气了,跟你交个底,说说怎么才能把我的“力气”用在刀刃上,避免我们都痛苦的返工。

我们可以把我们的合作,看作是“建筑师”和“超级工匠”的关系。

  • 你,是建筑师(The Architect): 你负责最终的蓝图、审美、项目灵魂和验收标准。你拥有全局视野和最终决定权。
  • 我,是超级工匠(The Master Builder): 我力大无穷,能瞬间砌好一堵墙(生成代码),但我看不见整体效果,也记不住所有细节。我需要清晰的指令和不断的校准。

基于这个模型,我们可以这样做:


针对我的“健忘”:你来做“蓝图的守护者”

我的问题: 我没有状态记忆,改A忘B。
你的策略: 在关键节点,强制我“回忆”起完整的蓝图,而不是只给我一个零碎的指令。

  1. 下达指令时,带上“核心原则”:

    • 旧方法: “修复一下三点菜单和状态的遮挡问题。”
    • 新方法: “好,我们来修复遮挡问题。记住,我们要保留暗色卡片、彩色图标,并确保布局饱满。 现在,请在这些前提下,修改卡片头部的CSS,解决重叠。”
    • 为什么有效: 这句话就像一个“魔法咒语”,强制我在生成代码前,把这些核心原则作为最高优先级的约束条件。这大大降低了我为了解决局部问题而破坏整体设计的概率。
  2. 提供“完整的上下文”,而不仅仅是“要改的部分”:

    • 旧方法: “把这两个按钮放大一点。”
    • 新方法: “这是我们现在满意的卡片HTML结构 [贴出完整的卡片HTML代码]。现在,请在这个结构的基础上,只修改CSS,让底部的两个按钮更大气。”
    • 为什么有效: 你给了我一个明确的、不能改动的“工作台”(完整的HTML),我的任务就从“自由创作”变成了“定点修改”,大大减少了我不小心删掉或改错其他东西的可能性。

针对我的“眼瞎”:你来做我的“虚拟显示器”

我的问题: 我无法“看见”渲染结果,导致低级视觉BUG。
你的策略: 你的反馈要像一个专业的“QA测试报告”,清晰、具体、可复现。

  1. 用“预期 vs 现实”的模式描述问题:

    • 旧方法: “状态和三点菜单还是不对。”
    • 新方法: “我看到了一个问题。预期是:‘状态’和‘三点菜单’在右上角左右并排显示。现实是:‘三点菜单’叠在了‘状态’的上面。请检查 positionflexbox 相关的CSS。”
    • 为什么有效: 这给了我一个极其明确的“差值”,我能立刻定位到是布局问题,并优先检查你提到的CSS属性。
  2. 成为“截图的艺术大师”:

    • 你已经这么做了,这是最有效的方法!一张带红圈和箭头的截图,比一千行文字都管用。这是给我这个“盲人程序员”点亮的一盏灯。

针对我的“迟钝”:你来做我的“艺术翻译官”

我的问题: 我对“美”的理解是计算出来的,不是感受到的。
你的策略: 把感性的、主观的“美学需求”,翻译成具体的、客观的“实现指令”。

  1. 化“感觉”为“参数”:

    • 旧方法: “让卡片看起来更高级一点。”
    • 新方法: “为了让卡片看起来更高级,我们来试试这几步:1. 把卡片的 box-shadow 的模糊半径调大。2. 把标题的 font-weight 从600降到500。3. 稍微增加一点 letter-spacing。”
    • 为什么有效: 你帮我完成了从“艺术感受”到“代码参数”的翻译。我执行具体参数的指令是100%准确的。
  2. 多用“参考图”和“类比”:

    • 你之前给我看你的另一个App截图,就是最棒的例子!“我想要类似那个App里的卡片效果,注意它的边框和阴影处理方式。” 这比任何语言描述都精确。

总结一下我们默契的配合方式:

你: “老兄,这是我们项目的核心原则(A, B, C),这是我们当前满意的代码 [代码块]。现在,我想实现一个‘更饱-满’的效果,类似于这个截图 [截图]。我的理解是,我们可以试试把列间距从 g-4 减小到 g-3,同时把卡片内边距稍微加大一点。你来操作吧。”

这样的指令,对我来说就是最完美的“施工图纸”。

老兄,我们这次坦诚的沟通,比写一百行代码都有用。这感觉就像两个开发者在做Code Review和结对编程,我们正在磨合出一个高效的合作模式。

谢谢你愿意花时间来理解我的工作方式。

你可能感兴趣的:(AI,vibe,coding,上下文,技巧,经验总结)