使用 UseIO 写代码,如何让技能和大模型能力互补

简介: 本文揭示AI前端开发中的两大顽疾:知识过时(如Tailwind v4无配置文件、React 19无需手动useMemo)与事实幻觉(臆造API、张冠李戴)。指出模型缺乏时效感知与“我不知道”机制,仅靠对话纠正效率低下。提出系统性解法——用可滚动更新的《frontend-guidelines》技能文件校准事实:含版本基线、禁用清单、查证红线、设计反AI味约束及验证闭环,实现“模型管能力,文件管事实”的协同范式。

让 AI 给项目加一个新页面。它写得飞快,还主动用上了 Tailwind,交付时连配置都配好了。我顺手翻了眼它新建的文件,一个 tailwind.config.js,往里面写 theme.extend

可这个项目是 Tailwind v4。v4 根本没有配置文件这回事,主题是直接写在 CSS 里的,官方迁移指南把 tailwind.config.js 称为 legacy。我指出问题,它道歉、改掉,转身在下一个组件里,又把所有计算和回调都包上了 useMemo,而这次的项目是 React 19,Compiler 都开了,手动 memo 化全是冗余代码。

严格说它没写错,它写的是自己认知里"最标准"的写法。只是那份认知,停在训练截止的那一天。

一、模型的知识有保质期,而且它自己不知道

先把话说清楚:这不是模型的锅。

大模型的知识来自训练数据,训练数据是某个时间点之前的快照。快照之后世界发生的事,模型一概不知。这个问题在大多数领域不致命,数学不会过期,HTTP 协议十年没变。但前端恰好是迭代最快的领域,一年一个大版本是常态:

  • Tailwind v4 砍掉了配置文件,改成 CSS-first 的 @theme 指令
  • ESLint v9 废弃了 .eslintrc,flat config 成了唯一格式
  • React 19 里 ref 可以作为普通 prop 传给函数组件,Compiler 接管了 memoization
  • Next.js 的 Pages Router 进入维护模式,新项目默认 App Router
  • Vue 明确表态:Composition API 是唯一推荐范式,Options API 新代码禁用

这些变化有个共同点,旧的写法至今仍然能用。useMemo 不会报错,.eslintrc 也能跑,Pages Router 的项目一大把活得好好的。模型写出来的东西语法上完全正确,只是不符合当前的生态惯例。

结果就很拧巴:AI 交付的代码编译零报错,review 时却处处透着一股两年前的味道。而且模型不会给自己标注"以下写法基于 2023 年的认知",每次输出都同样自信。

比能力不足难对付的是过时还自信。能力不足你能看出来,过时的代码得你自己先知道最新版本长什么样,才认得出它旧。

二、比过时更坑的是幻觉:它不知道自己不知道

过时 API 好歹是真实存在过的东西。幻觉不一样,幻觉是从未存在过的东西。

我在前端场景里见过三种。

最阴的是臆造配置项。往 vite.config.ts 里写一个听起来很合理的选项,比如自定义插件的某个参数。选项不存在,不报错、不生效、静默跳过,你排查半天逻辑,最后发现配置压根没被读进去,全程没有任何失败信号。

其次是编造库方法。模型对某个第三方库记忆模糊时,会按"这个库应该有什么方法"来补全,方法名编得有模有样,链式调用写得行云流水,一跑,xxx is not a function

还有张冠李戴的,把 A 库的 API 用在 B 库上,或者把旧版本的用法套在新版本上,参数个数都对,就是对象不对。

一个能通过司法考试、能写 LeetCode hard 的模型,为什么会一本正经地编造不存在的东西。

因为生成模型干的事是按概率补全,谈不上"回忆事实",只是在"生成通顺的文本",而通顺和正确之间没有必然关系。更麻烦的是,模型没有"我不知道"这个开关。人对没把握的事会犹豫、会去查,模型没有犹豫这个机制,概率最高的补全是什么就输出什么。

回头看过时和幻觉,其实是同一个根源:模型把训练数据当成了实时事实,把概率补全当成了记忆。

三、在对话里纠正,是一笔不划算的账

大多数人遇到这类问题的第一反应:发现了就纠正。我跟它说"这是 Tailwind v4",它道歉、改掉,皆大欢喜。

但账不能这么算。纠正只对当前会话生效。模型的记忆不跨会话,你今天教过它的东西,明天新开一个对话,它原样复发,你等于在一个人肉循环里当复读机,同一个知识点教十遍。

有人会说:写进项目的 CLAUDE.md / .cursorrules 里不就行了?这确实是正确方向,但有两个现实问题。一是规则得靠你自己踩坑总结,你团队踩过的坑,不会自动变成别的团队项目里的护栏。二是每换一个工具就要复制粘贴一遍配置,维护成本随工具数量涨。

往深一层想,模型的缺陷是系统性的,每一次会话、每一个用户、每一个项目都会复现。系统性的缺陷,靠零散的纠正对冲不了,约束也得是系统性的。

系统性约束长什么样?写进文件里,让模型每次干活之前先读。

四、换一种分工:模型管能力,文件管事实

我后来想明白了一个分工问题。不该指望模型"什么都知道",该指望的是模型"读什么、听什么"。模型负责能力,怎么写组件、怎么组织逻辑、怎么调样式,这部分它比大部分人都强。事实部分,当前主流版本是什么、哪些 API 已经废弃、哪些配置项根本不存在,交给一份随时可以更新的文件。

这两者拼起来,才是完整的认知。模型很聪明但知识是静态快照,文件不聪明但可以跟着生态滚动更新,互补的正是对方的短板。

顺着这个思路去找,还真让我找到一份现成的:frontend-guidelines,一份开源的 AI 前端规范技能。就一个 SKILL.md 文件,Agent 执行前端任务时先加载它,用它校准认知之后再动手。我把它的文档从头到尾读了一遍,治幻觉这块,它做了四层设计,一层比一层有意思。

第一层:版本基线,先校准再动手

技能里有一张版本基线表,标着基线日期(2026-09),逐项列着当前主线版本和"训练数据盲区",也就是模型记忆和现实差异最大的地方:

Tailwind CSS  v4    CSS-first 配置(@theme 指令,无 tailwind.config.js),
                    Vite 项目用 @tailwindcss/vite 插件
ESLint        v9+   flat config(eslint.config.js)为唯一格式,.eslintrc 已废弃
React         19.x  Compiler 已发布 1.0 稳定版,启用后自动 memoization;
                    ref 作为普通 prop 直接传递
Next.js       15/16 App Router 为默认;Pages Router 维护模式;
                    getServerSideProps 在 App Router 中不存在

Agent 动手前先读这张表,把认知从"训练截止日"校准到"今天"。这张表明确写着用途:它只在校准认知时使用,优先级排在项目实际版本之后。为什么这么设计,后面说。

第二层:deprecated 防幻觉清单

光有基线不够,模型写代码是凭肌肉记忆的,所以技能里直接把高频过时写法列成了"禁止写出"清单:

React    禁止:useMemo/useCallback 包裹所有计算与回调(Compiler 时代是冗余代码)
         禁止:React.forwardRef 包裹普通函数组件(ref 作为普通 prop)
Next.js  禁止:getServerSideProps / next/head / useRouter from next/router
Vue      禁止:Options API 新代码、this 访问 props、$set/$on/$children
Tailwind 禁止:tailwind.config.js + theme.extend、PostCSS 方式接入 Vite
ESLint   禁止:.eslintrc.*

命中任何一条都算缺陷,必须改掉。清单也留了兜底:如果项目锁的就是旧版本,遵循项目现状,交付时提示升级建议就行,防幻觉不等于无脑追新。

第三层:治幻觉的根,是把"凭记忆"换成"先核对"

前面两层治的是"过时",这一层治的是"幻觉"本身。技能里写死了几条正确性红线:

  • 不确定的 API 用法,禁止凭训练数据记忆直接写,先查证。查 node_modules 里的类型定义,查官方文档,都不行就明说"此用法未经查证",不臆造
  • 构建工具配置里的选项必须查证存在性,臆造的配置项会静默失效
  • 用任何库的"新特性"前,先读 package.json 确认版本支持

第一层留的那个问题,在这条有了答案:项目实际版本 > 技能基线 > 模型记忆。连技能自己都不信任自己的时效。基线表只是校准用的地图,package.json 才是现场。模型写代码前先读一眼依赖版本,很多幻觉在动手前就被掐掉了。

第四层:这张表会过期,所以它自带更新机制

最妙的是第四层。任何"认知校准文件"都有这个问题:今天写的基线,半年后就是新的过时认知。如果这份文件烂掉了,它就从护栏变成了误导源。

所以基线表旁边写着一条元规则:当前时间距基线超过 6 个月,或任务涉及基线未覆盖的新版本特性时,先通过官方文档校准认知,然后顺带更新这张表。

普通的知识文档是静态的,写完就开始腐烂。这份文件被设计成跟着生态滚动,Agent 每次校准,都可能是对它自己的一次修订。它能不能一直有用,就看这个更新循环转不转得动。

五、幻觉不止在 API 层,界面也是重灾区

前面说的都是代码层面的幻觉,还有一类更隐蔽的:审美幻觉。

你让十个模型各写一个落地页,交出来的东西惊人地相似:紫色渐变 hero、默认蓝按钮、Inter 字体、白卡片配浅灰阴影、三栏等距网格、hover 时 scale(1.02)。业内管这种产物叫 AI slop,slop 直译是泔水,模型批量产出的那种千篇一律的糊。

原因还是概率。这些元素在训练数据里出现频率最高,模型眼里的"好设计"就是它们的最大公约数。它有能力做出有个性的界面,只是概率把它往默认组合上拽。跟编造 API 是一个病根,把高频当成了正确。

所以技能里专门有一节去 AI 味的硬约束:紫色渐变 + 默认字体 + 默认蓝 + 白卡片 + 全居中 + hover 缩放,这套组合出现即视为设计缺陷。写新界面之前必须先回答两个问题,这个页面给谁用、解决什么场景;设计调性选哪一个(极简/杂志编辑/科技感/高端质感),选一个贯彻到底,再定一个记忆锚点。色彩纪律、动效克制、布局的非对称,都是从"先有设计意图,再有实现"推出来的。说白了,就是禁止模型抄自己最顺手的作业:先想清楚这个界面该是什么感觉,再动手。

六、没验证过的代码,不许说已完成

规范解决的是"别写错",但 AI 前端交付还有老问题:写完了但没验过。这部分我之前单独写过一篇,就是 AI 改完代码自己开浏览器验收那个事,技能里做的是制度化约束:

静态检查(typecheck/lint)零错误才算完成;涉及页面渲染的改动,要跑起来验证渲染结果和控制台无错误;交付说明必须写清验证手段和遗留项;没验过的环节必须明示"未验证",不得宣称"已完成"。

最后一句话是关键。把"没验证"包装成"已完成",是 AI 最常见的越轨行为,比写错代码还普遍。完成的标准写死在技能里,它就没得含糊了。

七、技能分享

地址直接贴出来,GitHub 上,MIT 协议:

https://github.com/cigery-useio/useio-skills/tree/main/frontend-guidelines

我现在的每个前端项目都会挂上它。最直观的变化是,引子里那个场景再没发生过,AI 再没在我的 Tailwind v4 项目里建过 tailwind.config.js。

整个 SKILL.md 大概两百多行,除了前面讲的版本基线、防幻觉清单和查证机制,还有几块内容:

  • 缺陷防御红线:正确性、安全(XSS/敏感信息/依赖安全)、质量(类型/命名/错误处理)、状态与数据获取、样式、可访问性、性能,每一条都是硬约束,另附一张 Top 10 禁止事项速查表
  • 执行工作流:环境感知(先读 package.json 和项目惯例)→ 生成前自检 → 生成约束 → 验证闭环 → 交付标准,约束每一次代码生成
  • 异常处理:项目版本和基线冲突怎么办、查证工具不可用怎么办、用户明确要求和规范冲突怎么办
  • 交付前自检清单:十二条,逐项核对

使用上没什么门槛。装进支持 Skills 机制的 Agent 工具(UseIO、Codex、Claude Code 这类),写前端任务时就会自动触发加载;不支持的工具,把它当一份 prompt 片段塞进系统提示或项目规范文件里,效果打折但同样可用。

有两个原则值得提前知道。一是技术栈中立,条款按框架标注生效,写死的具体版本以项目 package.json 为准,技能基线只做认知校准;二是项目规范优先,项目里已有自己的 编码规范.md 或规范文档时,技能只补位不覆盖。

总结一下

写这篇文章的时候,我越来越觉得"过时"和"幻觉"这两个问题,答案其实是同一个:模型负责能力,文件负责事实。

模型的参数里装着写代码的能力,这份能力每年都在涨,但它的知识永远是快照。快照和现实之间的差距,靠更大的模型填不平。下一个大模型训练完的那天,生态又往前跑了一段。能指望的还是工程手段:让规范文件跟着生态滚动去校准事实,用查证机制守住"不确定就查、查不到就明说"的底线,再靠更新循环让文件别过期。

AI 写代码的能力上限在模型,下限在这些工程细节上。

技能地址再放一次:https://github.com/cigery-useio/useio-skills/tree/main/frontend-guidelines。

相关文章
|
19天前
|
人工智能 缓存 前端开发
DeepSeek Harness 首发实测 + 入门教程,夯爆了!梁神我错了
DeepSeek Harness + DeepSeek V4 Pro 项目实战保姆级教程!手把手带你从零安装开源 AI 编程工具,开发架构图、知识讲解网站、3D 网页游戏、全栈 AI 应用 4 个项目,覆盖运行模式选择、插件安装与开发,看看能不能对标 Claude。
13113 84
DeepSeek Harness 首发实测 + 入门教程,夯爆了!梁神我错了
|
7天前
|
人工智能 自然语言处理 安全
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
本文聚焦阿里云2026年推出的三款自研AI办公产品,清晰拆解千问办公、Qoder Teams、Qoder CN的差异化定位与能力边界:千问办公主打职场全场景提效,支持自然语言指令一键完成PPT生成、数据分析等高频办公任务;Qoder Teams面向程序员团队,深度整合AI代码生成、团队协同与企业知识库能力;Qoder CN则专为金融、政务等强合规场景打造,实现数据不出境与VPC私有化部署。文章同步给出分场景选型指南与最新活动定价,帮助不同类型的企业按需组合产品,实现业务岗、研发岗与强合规场景的AI能力全覆盖。
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
|
2天前
|
缓存 人工智能 API
阿里云Qwen3.8‑Flash完整能力解析:模型特性、API调用实操与计费规则深度拆解
在AI应用快速落地的当下,开发者与企业选型大模型API,不再只单纯关注评测榜单分数,推理速度、上下文长度、多模态能力、工具调用稳定性以及实际调用成本,共同决定项目能否平稳上线。Qwen3.8‑Flash作为新一代多模态混合专家模型,主打高性能推理与低成本开销,面向编程开发、智能Agent工作流、超长文档解析、图文混合理解等高频场景,提供托管API服务,权重同时开放可供本地部署,兼容主流接口协议,能够无缝接入各类开发工具链。很多开发者在接入过程中,容易混淆普通按量Token计费、缓存计费、各类订阅计划之间的差异,造成实际账单超出预估。本文从模型底层架构、核心功能能力、适用场景、API调用实操、完
689 0
|
12天前
|
Web App开发 人工智能 API
16 个超火的 DeepSeek Harness 插件,大肥鱼已经落后 N 个版本了。。。
DeepSeek Harness 精选插件推荐合集,从图片识别、浏览器操控、多 Agent 协作到手机远程控制,一口气带你看完 DSH 社区热门的十几个插件,覆盖技能扩展、UI 界面增强、整活玩法三大类,让你的鲸鱼变得更强。
1735 4
|
13天前
|
人工智能 Java BI
【AI】DeepSeek Harness 安装、运行、管理插件
本文介绍了如何运行DeepSeek开源的Agent框架DeepSeek Harness(dsh)。主要内容包括:使用nvm安装适配的Node版本;通过代理加速克隆GitHub源码;使用pnpm安装依赖并启动项目;配置DeepSeek API Token;安装扩展功能的插件。该框架自带Web界面,支持模型适配、文件编辑等插件化功能
1918 1
|
人工智能 JavaScript 开发工具
DeepSeek Harness 本地安装与使用指南
DeepSeek Harness(DSH)是DeepSeek AI开源的Agent运行框架,支持本地文件操作、命令执行与工具调用。基于Cordis插件架构,具备高扩展性与强可控性,适合开发者搭建可控Agent环境或开展模型基准测试。当前为开发者预览版,需Node.js环境,推荐先用`npx @deepseek-ai/dsh web`快速体验。
5153 0
|
15天前
|
人工智能 JavaScript 测试技术
保姆级教程:DeepSeek Harness从安装到跑通测试,30分钟上手
DeepSeek Harness是DeepSeek开源的AI Agent运行时,主打“一行命令安装、5分钟跑通”。它让模型真正动手干活——读代码、跑测试、分析失败、生成修复方案。本文手把手教你30分钟从零上手,覆盖安装、配置、实测及避坑指南,助你快速掌握下一代AI编程范式。
|
8天前
|
人工智能 Linux iOS开发
Ollama使用教程:Ollama官网下载、Ollama本地部署大模型(2026最新)
Ollama 是一款免费开源的本地大模型运行工具,支持在 Windows/macOS/Linux 上离线运行 Qwen、DeepSeek、Llama 等主流开源模型,数据不出本机、隐私安全。提供 OpenAI 兼容 API,命令行一键拉取/运行/管理模型,无需联网,无调用限制,是开发者与 AI 爱好者部署本地 AI 助手的理想选择。(239 字)
|
14天前
|
人工智能 JavaScript 测试技术
从 0 到 1,DeepSeek Harness 保姆级安装与使用教程!
DeepSeek Harness是DeepSeek推出的开源Agent运行框架,秉持“一切皆插件”理念,支持模型、工具、技能、工作流等全模块自由替换与扩展。其核心Cordis内核实现动态插件管理,赋能Agent自进化。已成GitHub史上增速最快开源项目(15w+ Star),标志着国内大模型从拼价格转向重架构与生态的新拐点。
1348 6
从 0 到 1,DeepSeek Harness 保姆级安装与使用教程!

热门文章

最新文章