#大模型#Vibe Coding#AI Agent#TypeScript

Vibe Coding 参考样例与反例:让 AI 学到约束而不是表面风格

给 AI 一个“照着写”的文件,常会连同偶然实现和旧缺陷一起复制。本文说明如何成对准备正例、反例、判定理由与适用边界,让示例成为需求证据而不是隐含模板。

本文要点

  • 主题聚焦:大模型、Vibe Coding、AI Agent、TypeScript
  • 适合人群:独立开发者、全栈工程师、AI 应用开发者
  • 核心价值:快速理解背景、实践路径、常见误区和工程建议
作者 @admin·发布于 2026年7月30日·更新于 2026年7月30日

参考样例是 Vibe Coding 中最强也最容易误用的上下文。把一个相似组件交给 AI,说“按这个风格写”,它通常会同时复制命名、数据流、错误处理和测试结构;其中哪些是团队规范,哪些只是旧任务的偶然选择,并没有被区分。若参考文件恰好绕过权限或依赖过时 API,复制得越像,错误越稳定。

多样例提示能帮助模型识别模式,但代码任务不能停留在“展示几个答案”。官方提示工程材料强调给出清晰指令和示例;工程现场还必须补上来源、适用条件与可执行判据。参考样例回答“可接受实现曾经长什么样”,需求与测试才回答“这次必须满足什么”。

正例必须附带选择理由

先从当前仓库寻找同层、同职责、同运行环境的实现。一个 React 表单和一个服务端任务都使用 TypeScript,并不代表它们是有效同类。记录样例路径、对应 commit、选择理由、应学习的特征和禁止复制的特征。这样 AI 不会把整个文件当作不可解释的模板。

yaml
id: example-success-form
path: src/features/profile/profile-form.tsx
revision: 41c5a70
learn:
  - 使用共享 schema 在提交边界验证
  - 错误信息通过现有消息键渲染
doNotCopy:
  - profile 专属字段
  - 旧页面的固定宽度布局
evidence: 对应交互测试覆盖成功和服务端拒绝

样例中的每个“应学习特征”都应能在 diff 或测试中识别。诸如“代码优雅”“和项目一致”无法验收,应该改写成“复用 parseForm”“错误不吞掉”“不新增另一套按钮组件”。Vibe Coding 实践给出了 spec、plan、迭代框架;这里的样例清单应成为 spec 的证据附件,而不是替代 spec。

反例要暴露具体失败机制

反例不是一段故意写得很差的代码,也不是告诉 AI“不要这样”。它应与正例共享大部分条件,只在关键决策上产生可观察失败。例如正例在服务端重新检查资源所有权,反例只隐藏前端按钮;攻击者直接请求接口时,后者返回了不该访问的数据。模型由此看到边界在哪里,而不是只记住语气。

每个反例至少包含输入、错误实现、预期失败、判定工具和修复方向。优先使用仓库真实回归、被拒 PR 或测试夹具,但先删除秘密和个人信息。若只能构造反例,要明确标为 synthetic,不能把它描述成真实事故。

yaml
id: counterexample-client-only-auth
pairedWith: example-owner-check
input: authenticated user requests another user's draft
badDecision: 只在页面隐藏编辑入口
expectedFailure: API 仍允许更新非本人资源
oracle: integration test returns 403 and leaves row unchanged

AI 生成代码的属性测试适合把反例提升成不变量:不仅测试一个他人 ID,还生成不同身份与资源组合。这样反例不会只教会 AI 针对某个固定值打补丁。

从样例中抽取规则,不复制结果

把正反例并排审阅,提取二者真正分叉的决策。常见维度包括:验证发生在哪个信任边界、错误是否保留原因、依赖是否走现有适配层、事务是否覆盖全部写入、组件是否遵循已有状态模型。提取后将规则写入任务验收,并让 AI 先复述规则,再提出实现计划。

对于结构化数据,可用 JSON Schema 一类声明式约束表达类型、必填字段和取值范围;但 schema 只验证结构,不能证明业务授权和副作用正确。不要因为样例能通过解析,就省略行为测试。AI 测试生成实战可以补齐边界候选,最终接受哪些测试仍由任务合同决定。

控制样例数量与冲突

样例不是越多越好。三个相互矛盾的旧实现会让 AI 选择最显眼而非最新的一个。先按当前依赖版本、模块归属和测试状态过滤,再保留能覆盖不同关键边界的少量样例。若仓库确实存在两套合法模式,要写出选择条件,例如“Server Component 使用 A,浏览器交互组件使用 B”,而不是让模型自己猜。

发现冲突时,记录 unresolved 并停止将它们当作规范。可以让 AI列出差异和调用方,但规范归属需要维护者或当前代码证据确认。旧教程、搜索结果和另一个分支的代码只能是候选材料,不能覆盖当前仓库规则。

防止样例污染改动范围

参考文件可能包含和任务无关的重构机会。要求计划逐项声明“复用了哪个原则”,而不是“复制了哪些段落”;编辑后比较新增依赖、公共 API、文件数量和格式变化。超出允许范围的相似改写应被移除或单独立项。编程 Agent 的改动验证门可以检查补丁证据,但 reviewer 还要专门寻找“为了像样例而改变行为”的 diff。

样例也有时效。绑定源 revision,并在源文件、测试或依赖版本变化后重新确认。一个长期提示里保存的代码片段如果脱离仓库更新,会逐渐变成反例却仍被标作正例。

最终可交付的样例集应是成对的小型证据库:正例说明可接受决策,反例展示边界被破坏后的结果,判定器把差异变成可执行验收,适用条件说明何时不要复用。这样的材料让 AI 迁移原则,而不是批量复制代码外观。

延伸阅读

Related

相关推荐