如何让AI生成符合你风格的代码,关于风格定制的深度实践

更新日期: 2026-03-31 阅读: 20 标签: AI

怎么让AI写界面的时候直接用MyTextView,而不是默认给你来个TextView?

这类问题,靠多补几句提示词通常没什么用。因为问题不在于AI听不听话,而在于它根本不知道你这个项目的默认写法是什么。

所以更有效的做法,不是每次临时提醒,而是把项目规则整理成一套skill,让AI在写代码前就先进入你的项目语境。


先简单说一下:SKILL.md、AGENTS.md、CLAUDE.md是什么关系

不用把这几个名字想得太复杂:

  • SKILL.md:写给AI的开发规则,重点是“这类代码应该怎么写”

  • AGENTS.md:更像项目协作说明,告诉AI这个仓库怎么工作、代码放哪、优先看什么

  • CLAUDE.md:某些特定AI工具会读取的规则文件,知道有这么个东西就够了

实际落地时,最值得认真写的还是skill。因为真正决定AI会不会写出MyTextView的,不是文件名,而是你有没有把规则、示例、校验写清楚。


skill不要一上来就写成百科全书

很多人一想到给AI写规范,就容易走进一个大坑:想先整理出一套完整到滴水不漏的项目规则,再开始用。结果往往是想得很多、写得很慢、迟迟没开始。

更实用的方式其实很简单:先写一套最小可用的skill,让AI先跑起来。

先把最痛的问题解决掉,比如:

  • 不要再生成TextView

  • 不要写死字符串

  • 不要重复造轮子

  • 不要绕过项目已有封装

skill最开始不用大而全,先小而准。


一个常见的skill目录可以怎么放

比如可以这样组织:

.ai/
  skills/
    android/
      SKILL.md
      examples.md
      checklist.md

这套结构很适合Android项目:

  1. SKILL.md:放规则本体,告诉AI哪些必须做、哪些禁止做、默认优先什么、遇到例外情况怎么办

  2. examples.md:放正反示例。规则只告诉AI“原则”,示例才告诉AI“长什么样”。很多时候AI之所以写偏,不是它没看规则,而是它不知道正确代码具体长什么样

  3. checklist.md:放生成后的自检清单,让AI在输出前自己再过一遍


先看最核心的:SKILL.md怎么写

原则就一句话:只写规则,不写空道理。

不要在里面写太多“为了提升代码一致性”“为了增强可维护性”这种大话。AI真正需要的是你到底要它怎么做。

一个最直接的实战例子

如果你最痛的点就是AI总写原生控件,那第一条skill就直接这么写:

## 基础控件使用规则

项目中已有统一基础控件封装,新增UI时必须优先使用项目控件。

强制要求:
- 文本显示使用 `MyTextView`,禁止使用 `TextView`
- 文本输入使用 `MyEditText`,禁止使用 `EditText`
- 图片显示使用 `MyImageView`,禁止使用 `ImageView`
- 按钮使用项目按钮控件,禁止使用系统 `Button`

例外情况:
- 第三方SDK强制要求原生控件
- 用户明确指定使用原生控件

默认情况下,一律优先使用项目控件。

这条规则有个很重要的特点:它不是建议,是动作要求。AI看这种内容,比看一堆抽象原则更容易执行。


再看examples.md怎么写

很多人只写规则,不写示例。结果就是AI虽然知道“要用项目控件”,但真正生成XML的时候,手一滑还是写成了TextView。

这时候示例就很重要。因为示例不是讲道理,是直接给模板。

## 正确示例:文本控件

```xml
<com.xxx.widget.MyTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/home_title" />
错误示例:禁止直接使用系统控件
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="首页" />

这里一举两得,顺手还把“不能写死字符串”也示范出来了。

再比如输入框:

## 正确示例:输入控件

```xml
<com.xxx.widget.MyEditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/search_hint" />
错误示例
<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="请输入内容" />

你会发现,examples的作用很像给AI发参考答案。规则告诉它方向,示例告诉它姿势。


checklist.md怎么写

这一层很多人最容易漏,但它其实特别好用。因为很多错误不是AI不会,而是它生成时没再检查一遍。

所以checklist最好写成这种风格:

## 输出前检查

在输出代码前,请逐项确认:

- 是否使用了 `MyTextView` / `MyEditText` / `MyImageView`
- 是否直接使用了 `TextView` / `EditText` / `ImageView`
- 是否存在写死字符串
- 是否优先复用了项目已有组件
- 是否遵循当前模块目录结构

如果存在不符合项,先修正,再输出最终代码。

这类写法的关键,不是“提醒”AI,而是让它把检查动作当成输出流程的一部分。很多时候,加一份checklist,生成结果会稳不少。


skill里除了控件规则,还可以写什么

当你把第一条“必须用MyTextView”跑顺之后,就可以继续往里补。最常见的几类内容有这些:

1. 复用规则

## 复用规则

实现新页面、新弹窗、新列表项前,先搜索项目中是否已有类似实现。

要求:
- 优先复用已有页面结构
- 优先复用已有Adapter / ViewHolder
- 优先复用已有Dialog / Popup
- 若已有实现可扩展,优先扩展,不要重复造轮子

2. 资源规则

## 资源使用规则

禁止在代码或XML中写死资源。

要求:
- 文案使用strings.xml
- 颜色使用color资源
- 尺寸使用dimen
- 不要硬编码magic number

3. 基础能力接入规则

## 基础能力接入规则

以下能力必须优先使用项目已有封装:
- 网络请求
- 图片加载
- 日志
- 埋点

禁止绕过现有封装自行实现。

4. 目录结构规则

## 目录结构规则

新增页面、组件、适配器、弹窗时,必须遵循项目当前目录结构。

要求:
- 页面代码放到对应feature模块
- 通用组件放到common/widget
- 工具类放到已有utils或对应基础模块

不要随意创建新的目录层级。

你不需要一次写完这些。哪条最痛,就先补哪条。


验证skill怎么写,别只停在“写完”

很多人把文件一放就结束了,然后说skill没效果。其实skill写完之后,最好立刻做一次验证。

最简单的验证方法就是找一个你最常见的开发场景,直接拿它试。

验证场景1:让AI写一个带标题和输入框的搜索栏XML。看它是不是用了MyTextView、用了MyEditText、有没有写死字符串。

验证场景2:让AI写一个RecyclerView item。看它有没有先参考已有item风格、有没有遵守资源规则、有没有乱造新的控件和工具类。

验证场景3:让AI写一个新页面。看它有没有按目录结构放代码、有没有优先复用已有组件、有没有绕过项目基础封装。

验证skill的关键不是看它“懂不懂”,而是看它“会不会在真实任务里照着做”。

如果没做到,不用推翻重写,直接补。比如你发现它总是漏掉目录结构,那就加一条目录规则,再在checklist里加一条目录检查。如果你发现它还是会偶尔写TextView,那就在examples里再补两组正反示例。这个过程不是一次定稿,更像连续调参。


最省力的方式:先让AI生成一版

很多人卡住的根源,是总觉得这套东西得自己从零整理。其实完全没必要。

更高效的顺序应该是:

第一步:先让AI帮你生成一套基础版。直接给它一句:“这是一个Android项目,请帮我生成一套skill目录,包含SKILL.md、examples.md、checklist.md。重点约束基础控件、资源使用、复用规则、目录结构。先写基础版,不用太完善。”这样你会先拿到一个可以用的雏形。

第二步:拿去真实写代码。不要停留在“看看文档”,直接让AI去写XML、自定义View、RecyclerView item、页面布局、功能模块。

第三步:记录它写偏的地方。比如还在写TextView、还在写死字符串、没复用现有实现、新建了不该建的工具类、目录放错位置。

第四步:把这些问题补回skill。发现什么问题,就补什么规则。规则补进SKILL.md,正反示例补进examples.md,输出前检查补进checklist.md。

慢慢地,这套东西就会越来越像你们项目自己的“AI开发习惯包”。


最后

所以,怎么让AI按你的风格写代码?

不是一开始就憋一份完美规范。而是先让AI生成一套大概的代码风格规则,先用起来,先在真实开发里暴露问题,再把这些问题按规范一点点补回去。

最后形成的,就不是一份泛泛的模板,而是一套真正贴着你项目、贴着你个人写法的skill。它会越来越懂:什么时候该用MyTextView、什么时候不能乱造轮子、什么时候必须走项目封装。

这套东西不是一次写出来的。它是在你一次次使用AI、一次次修规则的过程中,慢慢长出来的。等它长成之后,AI写出来的代码,就不只是“能跑”,而是会越来越像你们项目里原本的人写的。

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://fly63.com/article/detial/13543

相关推荐

手把手教你用扣子(Coze)打造AI工作流:3分钟轻松上手

工作流就像一条流水线,把完整任务拆分成多个小步骤,然后按照特定顺序和逻辑组合起来。我们日常生活中其实到处都是工作流的例子。只要是这种规律性的工作流程,都可以尝试用AI工作流来实现自动化。

热门 AI 编程工具有哪些?哪款更适合你?

在科技飞速发展的当下,AI 编程工具已成为广大程序员的得力助手。这些工具不仅能大幅提升编程效率,还能降低编程的难度。如果你还没用过这些工具,可能会在开发效率上落后于别人。

TypeScript开发AI应用,正成为越来越多人的选择

AI技术正在快速发展,越来越多的开发者开始构建基于大语言模型(LLM)、多智能体协作、浏览器端直接推理的新应用。在这个趋势下,TypeScript 凭借其优秀的类型检查、完善的工具支持和活跃的社区

Google Anti-Gravity:重新认识AI编程工具

Google随着Gemini 3悄悄发布的这个工具,目前所有用户都能免费使用(预览版),但使用额度消耗很快。趁着还能免费试用,我把最值得关注的5个功能整理出来。

AI 浪潮下的程序员生存法则:当工具进化,人类如何守住创造力高地

作为一名在代码世界摸爬滚打八年的程序员,我的工位曾堆满了各类技术书籍,如今屏幕上最常亮的却是 Copilot、ChatGPT 这些 AI 工具的界面。从 2023 年底被朋友 拽入 AI 大门

用好豆包AI的秘诀:这个万能指令公式真管用

很多人用豆包AI时总觉得效果不理想,不是内容太笼统,就是格式不对。其实问题往往出在指令上。指令写得好,AI才能准确理解你的需求。经过多次实践,我总结出一个万能指令公式,能大大提高AI输出的质量。

为AI桌面应用选择合适的技术方案:多角度对比分析

在规划AI应用开发时,我们经常面临技术选型的难题。特别是当应用需要深度整合本地电脑环境,实现自动化场景时,传统的Web应用往往无法满足需求。这时候,桌面客户端技术就成为更合适的选择。

VSCode 宣布改名!全面 AI 的时代到来!

这绝非临时起意,而是微软应对AI浪潮的主动出击。2025年初,Cursor、Claude Code等AI编辑器异军突起,分流传统编辑器市场份额。微软选择开源AI组件,既守住VS Code的社区基本盘,又靠协作迭代甩开封闭开发的桎梏,避免被新兴工具边缘化

TypeScript超越Python:AI时代开发者选择的新变化

近年来,Python一直是开发者心中的热门语言,在数据科学、机器学习和Web开发领域都占据重要位置。但最新的GitHub统计数据显示,TypeScript已经超越Python,成为平台上使用最广泛的语言之一。

五分钟,一句话,做一个AI智能体

“帮我做个每天自动收集AI新闻的智能体。”把这句话输入对话框,等上五分钟,一个功能完整的智能体就做好了。它能自己上网找最新资讯,整理重点内容,还会附上来源链接——整个过程不需要写一行代码。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!