ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

华为云CodeArts代码智能体实战:从入门到避坑的完整笔记

华为云CodeArts代码智能体实战:从入门到避坑的完整笔记

我最近把华为云CodeArts(国内常叫“码道”)里的代码智能体翻来覆去折腾了好几遍,从最开始连入口都找不到,到后来能比较自然地在日常开发里用它写代码、补测试、做代码检视,中间踩了不少坑,也总结出一些实验室文档里不会写的操作细节。这篇笔记就是给像我一样从零开始、想把CodeArts代码智能体真正用起来的人准备的,全程按“它是什么、怎么上手、怎么用好、怎么避坑”的顺序来讲,不吹不黑,只说实际体验,并且会尽量把每一步操作路径写得足够细,方便你照着做。

这篇内容更适合谁看?如果你刚接触华为云CodeArts,听说过“代码智能体”这个概念,但还没在项目里真正用过;或者你已经在用代码补全工具,但只是当自动补全用,觉得它“不够聪明”;又或者你是团队里负责推代码质量管理的人,想研究AI辅助代码检视和修复这条路线——那这篇笔记正好对胃口。我会把完整的学习路径、真实操作记录、提示词写法和容易翻车的环节都摊开来讲。

1. 我为什么会盯上CodeArts代码智能体:先搞清楚它在解决什么问题

1.1 先说清楚CodeArts、码道、代码智能体这几个名词

很多新手一开始就懵在这几个名字上,我也是这么过来的。

华为云CodeArts是一个软件研发工具链的整体品牌,里面包含需求管理、代码托管、流水线、编译构建、部署、测试管理、代码检查、代码智能体等一堆服务。它不是一个单款软件,而是一整套DevOps平台,对标的是GitLab、Jira、Jenkins这种工具组合在一起的平台形态。“码道”是CodeArts中文社区的叫法,规范化文档里一般直接叫CodeArts,两者指的是同一个东西。

代码智能体是CodeArts里借助大模型做代码相关操作的AI助手,英文名叫CodeArts CodeGenie或者直接叫代码助手,在不同界面里可能显示为“CodeArts 盘古助手”、“CodeArts 代码智能体”、“CodeArts CodeArts Snap”等名字。我建议新手别被这些名字绕晕,你只需要知道一点:它是一个能生成代码、解释代码、生成单元测试、做代码检视并给出修复建议的AI编程助手。它不是搜索引擎,不是公式化的代码片段库,而是基于大模型理解你项目的上下文来给出代码内容的工具。

1.2 代码智能体到底能帮我干什么

我实际用下来,把它最核心的能力拆成五个方面。第一是代码生成,你给它一段自然语言描述,它返回可运行的代码,比如“写一个Spring Boot的登录接口,包括参数校验和Redis存储session”。第二是代码解释,你选中一段看不明白的代码,让它逐行解释,这对接手老项目特别有用。第三是单元测试生成,你选中一个方法,它会自动生成测试用例,覆盖正常分支、异常分支、边界情况。第四是代码检视与修复建议,它在CodeArts的代码检查服务里,可以对代码缺陷、安全隐患、逻辑问题给出定位和修复建议;现在“代码检视修复智能体”还被单独提出来宣传,说在企业级代码库上召回率达到91.3%这类指标(这个数字我先持保留态度,后面细说)。第五是注释生成和技术文档辅助,把一段没有注释的代码补上清晰的中文注释,甚至生成接口说明。

这五个能力意味着什么?用一句话概括:**代码智能体能把“写代码”这个环节的起点从空白页变成半成品,把你从敲代码的人变成审代码的人。**我写业务代码的时候,现在有一半以上的时间是花在描述清楚需求、检查它生成的代码、然后把不符合项目规范的代码改对,这个过程本质上更接近技术评审,而不是单纯的打字。

1.3 市面上那么多AI编程工具,为什么选CodeArts代码智能体

我看过不少人的疑问:我有ChatGPT、有GitHub Copilot、有通义灵码,为什么还要用CodeArts的代码智能体?

我从实际使用体验来回答。CodeArts代码智能体和通用AI编程工具最大的区别在于:它和CodeArts平台本身的代码托管、流水线、代码检查是打通的,不是独立的提词窗口。选中的代码、仓库的上下文、构建日志、检查报告,它都能直接调用。你用通用AI工具时,经常要自己把代码复制粘贴、把报错信息粘贴过去,然后再把生成的代码复制回来,这个“搬运”过程既浪费精力又容易出错。而CodeArts的体验是,在IDE里选中代码后右键调出代码智能体,在代码检查报告里直接让它定位缺陷和生成修复补丁,上下文是天然连续的。

另外,在企业数据安全这个维度上,CodeArts作为云服务,有租户隔离、企业级权限管理、操作审计这些合规能力。如果说GitHub Copilot适合个人开发者和小团队快速上手,那CodeArts代码智能体更适合已经有华为云基础设施、对数据合规要求比较明确的团队。这不是说它一定更好,而是“适合场景不同”,你选哪个取决于你团队的技术栈、数据隐私要求和现有工具链。

2. 零基础要怎么上手:账号注册到打开IDE的详细路径

2.1 注册华为云账号并开通CodeArts服务

第一步是注册华为云账号。直接用手机号就能注册,也能用华为账号免登,注册时选“个人开发者”就行,不需要先花一分钱。注册完成之后,登录华为云官网控制台。

在控制台首页顶部搜索框里输入“CodeArts”,会弹出几个相关服务,找到“CodeArts”“代码托管”“代码检查”——这三个你都会用到。点击进入后,如果是第一次使用,页面会提示开通服务。提醒一句:CodeArts本身有免费额度,但免费额度和你的账号实名认证状态有关系,有些功能要求完成企业或个人实名认证后才放开。零基础个人学习的话,做实名认证即可,不需要纠结企业认证的事,如果你只是自己在沙箱里玩,不接入企业内部数据,个人认证足够。

开通之后,顺手做两件事。第一,确认自己的区域(Region),华为云在国内有多个区域,CodeArts在不同区域的配额和服务版本略有差异,如果在某个区域找不到代码智能体入口,切换到北京四这样的主干区域一般就能看到。第二,去“CodeArts控制台”里找到“项目列表”,创建一个新项目,项目类型选“Scrum”或“DevOps”,名字随意,这是你后面所有操作的容器。

2.2 创建代码仓库并初始化一个空项目

创建好项目后,进入项目首页,默认会看到工作项、代码、构建、部署、测试等菜单。点“代码”,进入“代码托管”,创建一个仓库。仓库类型选择“普通仓库”就行,模板的话我建议新手选“空仓库”而不是某个语言模板,因为选模板反而会有一堆脚手架文件,干扰你对代码智能体生成内容的理解。

初始化方式有两种。一种是直接在网页端创建仓库,然后用命令行把本地项目推上去;另一种是直接用IDE里的登录插件拉仓库下来。我建议第一次走命令行流程,因为更能理解“本地代码和远程仓库同步”这个底层机制。

如果你的机器上还没有装Git,先把Git装好,Windows下装完记得检查PATH里有没有Git命令行工具。然后用你自己的HTTP地址克隆仓库到本地:

git clone https://codehub.devcloud.cn-north-4.huaweicloud.com/你的项目路径/你的仓库名.git

克隆时如果提示输入用户名密码,这里要说明一下:CodeArts的打卡验证不接受账号密码直接登录,要用“个人访问令牌”(Personal Access Token,简称PAT)。路径是:CodeArts控制台右上角“登录名/租户名”那里,进“个人设置”,找到“个人访问令牌”,生成一个带repo读写权限的Token,填到Git的密码框里就行。这一步能卡住很多人,我把自己当年绕了半小时的事直接帮你跳过去。

2.3 安装IDE插件,让代码智能体真正出现在你的编辑器里

仓库准备好后,接下来要把代码智能体接入让所有开发者都离不开的IDE。

CodeArts官方支持的主流IDE包括IntelliJ IDEA(Java系)、VS Code(全语言)、PyCharm(Python系)等。你去插件市场搜一下“Huawei Cloud CodeArts”,会找到对应插件。装好后首先要登录账号:打开IDE,侧边栏找到“CodeArts”或“Huawei Cloud”图标,点击登录,它会把授权URL给你,在浏览器里完成登录授权,授权完成后再回到IDE,顶部状态栏会出现“已连接”之类的提示。

然后你就可以做第一个测试:在任意一个代码文件里,找到光标处调出代码智能体的输入框,输入一句话描述,回车,看看它会不会生成代码。这一步也是我最建议新手先做的事,因为“在自己熟悉的编辑器里看到AI实时输出”的感觉,比看任何文档都直观。

需要特别强调的一点是,**代码智能体在IDE里默认只用你当前打开文件或当前选中代码的上下文,它不会自动把整个仓库都读进去。**这是它和某些工具“仓库级代码助手”路线的差异,也是很多新手误以为它“不够智能”的原因。实际上,你需要手动把相关的类、接口文件打开,或者选中代码片段让它分析,上下文越清晰,输出越准。这个特性在后面的实操部分还会反复提到。

3. 逐个过一遍核心功能:每个功能怎么用、怎么才能好用

3.1 代码生成:提示词质量决定了代码质量

代码生成是最常用的功能,但同一个“写一个用户登录接口”的需求,不同写法生成结果天差地别。

我的经验是,**提示词至少要包含三个要素:功能描述、技术栈、约束条件。**比如“给我写一个用户注册接口,用Spring Boot 2.7,使用MyBatis-Plus,用户密码要加密存储,参数要校验用户名有4-16个字符,邮箱格式合法,注册时重复用户名要返回错误码XXX”,这就比一句话“写一个注册接口”靠谱得多。

实操时可以多试这种结构化提示词:

生成一个用户注册接口: 1. 使用Spring Boot,Controller-Service-Mapper三层结构 2. 用户名唯一,重复时抛出BusinessException(code=1001, msg=用户名已存在) 3. 密码用BCrypt加密存储,不返回加密后的密码给前端 4. 入参DTO包括username, password, email 5. 返回结构统一为Result<T>,包含code, message, data

代码智能体会把这个拆解成可执行的接口代码。如果第一版输出不满意,不要重写,直接在生成结果的对话窗口里追加一句“把Controller改成返回ResponseEntity”或者“把DTO校验改成JSR-303注解”,它会基于已有生成结果做迭代修改,效率远高于重新生成。

还要提醒一点:**生成的代码不要不看完就直接粘贴。**尤其要检查依赖注入是否合理、异常处理是否完整、有没有把生成环境的模拟数据混进业务代码里。这不是AI能力问题,是你的审代码责任问题。

3.2 代码解释:接手老项目的第一把刀

代码解释功能我强烈推荐给所有要接手遗留系统的人。它有清晰的“解释模式”,你在IDEA里选中一段代码,右键“解释代码”,它会输出按行、按块拆解的逻辑说明,还会顺带标注出潜在风险点。

比如我实际接手过一个老项目,里面有段计算税率的代码,嵌套了几个if-else,中间还有两个方法互相调,看起来很绕。选中后让代码智能体解释,它直接指出来:这段代码对“金额为零时”没有做短路处理,会走到除数为零的分支。这个发现价值极大,因为人工肉眼看这段代码可能盯十分钟也看不出这个隐藏分支。

解释功能的使用技巧是一次选中不要太长,一个方法一个方法地来,最长不要超过200行。超过这个长度后,AI的解释就开始抓不住重点,而且上下文窗口限制会导致它“忘记”开头的内容。分段解释后,你在自己脑袋里再把分段的理解拼起来——这个拼接的过程就是真正的学习。

3.3 生成单元测试:覆盖正常和异常分支的关键技巧

单元测试生成是我认为目前代码智能体最有实用价值的功能之一,因为大多数人写业务代码时会懒于写测试,或者写测试时只写了happy path。

CodeArts代码智能体支持选中一个类或方法后右键选择生成单元测试,它会分析方法签名、依赖、分支,自动生成可编译的测试类。如果项目是JUnit5+Mockito的结构,它生成出来的风格非常接近人写的测试。

实测技巧是这样的:对含外部依赖的方法(数据库操作、Redis调用、远程HTTP调用),在提示词里写明“使用Mockito mock依赖”,它就会给你生成@Mock和@InjectMocks;如果你没写,它可能会尝试直接new真实依赖,编译都过不了。更关键的是,生成完测试后,你最好手动把刚才代码解释里识别出的“边界情况”写进测试里,比如空字符串、最大长度、并发写操作,这就是把AI的输出从“及格”提升到“优秀”的过程。

单测生成的输出也很适合用来学习:如果看不懂它生成的Mockito写法,直接把测试代码选中再让它“解释”,这一个来回下来,你对Mockito的掌握会比看书快很多。

3.4 代码检视与修复建议:比我想象中更有价值的功能

代码检视是CodeArts里代码智能体让我最惊喜的部分。在CodeArts的“代码检查”服务中,配置好检查规则集后,每次代码提交到仓库,会自动触发一次静态扫描,大模型会针对扫描出来的缺陷给出综合评判,并生成修复建议。

修复建议有两种落地方式。一种是在代码检查报告页面直接看到对每个问题的详细说明和建议代码片段;另一种是直接在IDE中运行代码检查,在线看到智能体建议并一键应用修复补丁。

我之前用了一段真实的业务代码做实验,在代码里故意埋了几个问题,比如未捕获的自定义异常、线程池使用不规范、MyBatis查询N+1风险项、硬编码的数据库超时时间。代码检视智能体找出了大概70%左右的真实问题,而且它的修复建议不是“模板化套话”,是能直接落地的补丁。它甚至会把修改前后的代码对比展示。但我也明确感受到它的局限:对“业务语义层面的问题”理解有限,比如一个本应先校验权限再查询数据的接口,如果代码按“先查再校验”的顺顺序写,机器很难发现这和业务逻辑相悖,因为“顺序错了”不违反代码规则。

顺便说“召回率91.3%”这个数字。我的理解是,这个指标大概率是基于华为云自己的专项评测集得出的,评测集里主要是已知缺陷、有确定标注的代码问题,和“真实评审中人类专家发现的那些模糊问题”有很大差距。所以你可以把它理解为“在规则明确的情况下AI能找得很准”,但别把它理解成“AI能替代人工CodeReview”——它能干掉大量低级问题,但最终业务正确性要靠人来顶住。

3.5 注释补全和文档生成:小功能大用处

最后说一下注释补全和接口文档生成。选中一个方法,让代码智能体“生成注释”,它会补上参数说明、返回值说明、异常说明,还能顺带补充方法的设计思路。对代码规范要求里有“关键方法必须有注释”的团队来说,这功能非常省事。

接口文档生成也很有用:选中一个Controller类,它会生成类似OpenAPI风格的接口描述,对后端开发是极友好的。但注意,这类的生成内容同样要人工核对一遍参数类型和约束描述,尤其是默认值和枚举值,AI有时会想当然填一个值。

4. 真实走一遍完整流程:从需求到代码入库

拿一个最常见的场景“用户注册”来完整走一遍,你会更清楚各个功能是怎么衔接的。

4.1 需求描述和提示词准备

我先在项目里建了一个新的需求工作项,标题是“用户注册接口”,描述写了三点:手机号和邮箱二选一注册、密码需要加密、注册成功之后发送欢迎短信(消息队列异步)。然后我打开本地IDE,新建一个RegisterController.java文件。

写提示词时,我没有只说“写注册接口”,而是把从CodeArts工作项里复制的需求描述、项目已有的基础结构(比如父包名com.example.demo)、已有工具类(比如Result类、MessageQueueService类)都整理进提示词里。这样做的原因是,代码智能体对单文件的生成能力很强,但对整个项目的结构感知有限,如果你不给它关键类的路径和名称,它会自己凭空创造一些类名,然后生成代码里有一堆不存在的import,编译直接失败。我自己就是被这点坑过好几次,所以现在养成了“先把项目中对应的实体类、工具类路径写清楚”的习惯。

4.2 先生成主流程代码,再迭代补充细节

第一轮提示词我这样写:

在包com.example.demo.controller下创建RegisterController,类上有@RestController注解,使用@RequestMapping("/api/register")。 注册接口接收RegisterRequest DTO,包括phone、email、password、code四个字段,字段校验: - phone和email不能都为空 - password长度8-20位,必须含字母和数字 - code是短信验证码,固定6位数字 调用UserService完成注册逻辑,注册成功后返回Result.success(...)

第一轮生成的Controller基本能用,但Service层还没写完整。接着我用“在Service实现类中补充如果phone已存在则抛BizException(1002, '该手机号已注册'),密码加密方式使用BCryptPasswordEncoder”来迭代。它就会在已有的UserServiceImpl基础上补充对应逻辑。

这里我展示一下实际生成的代码风格(简化版),你会发现它确实考虑到了参数校验和统一返回结构:

@RestController @RequestMapping("/api/register") public class RegisterController { private final UserService userService; public RegisterController(UserService userService) { this.userService = userService; } @PostMapping public Result<String> register(@RequestBody @Valid RegisterRequest request) { if (StringUtils.hasText(request.getPhone()) && StringUtils.hasText(request.getEmail())) { throw new BizException(1001, "手机号和邮箱只能填一个"); } userService.register(request); return Result.success("注册成功"); } }

这个代码比人写的差的点是:异常分支的语义不够精确,比如“二选一”和“必填一个”是两个不同的校验逻辑,它会混在一起;还有短信发送的异步调用,它默认你希望同步发送,直到你在提示词里明确“改成MQ异步”,它才会调用消息队列服务。

4.3 人工审查、代码检查、修复建议的闭环

代码生成后,我在IDE里先人工过了一遍,然后跑了CodeArts的“代码检查”。果然检视智能体很快给出了几个级别的提醒:

第一是“冗余判空”,Controller层的StringUtils.hasText判空和DTO的@NotBlank重复,建议去掉其中一个;第二是“魔法值”,1001这类错误码建议定义成常量而不是直接写在代码里;第三是“日志缺失”,注册这个操作属于核心业务操作,建议在Service层增加日志输出;第四是“事务缺失”,注册涉及用户表和短信记录表多步写操作,没有加@Transactional。

每个提醒都能一键在IDE里查看修复建议,我选择性采纳,比如去掉了重复判空、把错误码抽取到常量类、给注册方法加了@Transactional,但“用Slf4j打日志”这种本来我觉得无所谓的建议,采纳后也对团队有统一价值。这一个来回下来,代码质量确实比直接从AI生成后用要强不少。

4.4 提交入库、流水线、验证闭环

把这些修改提交到远端后,在CodeArts的流水线里跑了一次包含代码检查、编译构建、单元测试的流程。

单元测试这里有个体验:我提前用代码智能生成了测试类,检查跑下来用例数比团队往常平均水平高一截,而且异常分支覆盖也上来了。流水线跑到构建阶段,首次构建直接通过,没有出现“AI生成代码在我本地能跑但在云上编译不过”的尴尬。整个过程下来,我最大的感受是——只要提示词写得好、人工审查跟得上、代码检查再兜底,这套工具链真的能让“零基础到能写业务接口”的时间大幅缩短。

5. 实际项目中经常踩的坑和排查经验

5.1 提示词和上下文不够清晰,AI就开始“自由发挥”

最常见的翻车方式:只给一句“写个订单导出功能”,AI会自己脑补一个Excel工具类、一个OrderService、一个Controller,但我项目里根本没有OrderService这个类名,它的导出工具类也和项目的实际依赖不匹配,结果就是把AI生成的东西粘进去,一片编译报错。

排查和解决办法是:在提示词里主动点名“已经存在的类”。告诉它“OrderRepository已存在,包含findOrdersByCreateTime方法”“项目已使用EasyExcel版本3.1.2”“导出Controller路径是com.example.demo.controller”,这些上下文提供得越完整,AI的自由发挥空间就越小。如果不确定“它知道自己该用到哪个类”,先在一个简单的地方让它生成一次,看看它的输出里import了哪些文件,再决定是否要补充上下文。

5.2 生成的代码风格和项目现有规范不一致

每个团队都有自己的编码规范,比如有的用Lombok,有的禁掉Lombok;有的字段校验用注解,有的要求Service层手动校验。AI默认的编码风格更像“公共教程风格”,不会自动遵守你团队内部的私有规范。

这个问题的解决思路不是“靠AI自觉”,而是靠两个手段。第一,在提示词里放规范:团队规范如果是“禁止循环内查询数据库”,就把它写进提示词;第二,利用CodeArts里的代码检查规则文件,把团队规范固化下来,检查会自动筛出不符合规范的代码。AI负责生成,规则负责把关,两者配合后才能真正形成闭环。

5.3 代码检视误报、漏报的区分

代码检视智能体给出的检查结论不一定全对。我遇到过它把“并行流操作线程安全问题”的警告当成必改项,但这个业务场景里数据来源本身是线程安全的,可以不改。

排查经验是:把检查结果按“阻断级别”分类。必须改的是编译错误、安全漏洞(SQL注入、硬编码密钥、反序列化风险);建议改的是性能隐患、可读性问题;看情况改的才是风格类提醒。不要因为检查报告里有一堆“问题”就全盘接受,也不要因为有一两条误报就全盘否定。它的定位是“初审”,不是“终审”。

5.4 安全合规与数据隐私:哪些代码不能随便让它生成

这是最容易被初学者忽略的一点。如果你的项目涉及个人敏感信息,例如身份证号、手机号、银行账号、密钥,或者你们公司有明确的数据出域限制,那么直接把这些内容贴在AI提示词里是有风险的。云端的AI服务环境虽然做了租户隔离和数据加密,但“内部可接受”和“合规”是两个不同概念。

我的建议是在代码智能体上只做两类事:一是处理“脱敏后的模拟数据”,生产环境的真实数据先用test数据替代;二是对它生成的涉密代码做人工严格审查,确保没有把密钥以硬编码方式写进代码。CodeArts本身提供了企业级审计和权限管控,但最终防线永远是人。

5.5 代码智能体的边界:不能指望它做的事

代码智能体能帮的,是编码实施层面的“体力活”和“常规判断”,而有很多事是它做不了也不该让它做的。第一是跨模块的大型重构,涉及十几个文件联动、依赖关系复杂,模型生成速度快但正确性难以保证;第二是新技术的架构决策,比如“要不要上微服务”这种问题,给它的输入不足,答案没有灵魂;第三是业务规则的口语化描述转换为精确代码,它容易漏掉一些业务例外;第四是产品思维和交互体验,这部分终究需要人来判断。意识到边界后,你对它的期望值会合理很多,用起来反而更顺手。

6. 用好代码智能体之后,工作方式会发生什么变化

6.1 从“写代码的人”变成“审代码的人”

以前我写代码时,大部分时间在打字,脑子里想着“语法怎么写、框架怎么调”;用熟代码智能体后,时间结构完全反转:我花最多时间在“怎么把需求转换成AI能理解的描述”和“怎么把AI生成的代码改成能用的好代码”上。

这个变化在职业发展上有更深远的意义。过去“会写代码”是核心竞争力,现在“会描述问题、会审查方案、会快速学习”成了新的能力分水岭。零基础的人用代码智能体最值钱的地方,恰恰不是“帮我写代码”,而是“用它的输出验证我对编程的理解”——它给了你一个低成本试错、快速获得反馈的闭环。

6.2 团队协作时的效率交换

在团队里推代码智能体时,有一点要当心:共享的项目代码质量是团队底座,如果有人只是把AI生成的大段代码无脑提交,就会产生“AI污染仓库”的问题,代码风格割裂、命名混乱、架构偏离,比人随便写的还难收拾。

我的经验是,不要太勉强地全员推广,建议先在团队里选出两三个积极分子,用“结对”方式先跑通“AI生成—人工审校—代码检查—评审”这个循环,然后把成功的样例沉淀成团队的“提示词模板库”和“代码智能体使用规范”。这时候再给其他人开放,配合已有的把规范固化在CI流程里,就能避免变成拿把好枪乱扫。

6.3 技能树的更新:提问和验证比手打代码更重要

最后想对一个学习上很现实的建议:不要因为有了代码智能体就完全不看基本功。恰恰相反,零基础用户越应该把它的每一段生成结果都当成教材——“为什么这里要加事务?”“为什么这里要用枚举而不是字符串比较?”它能帮你快速看到优秀实践,但只有你理解这些实践背后的原理,你才能在工作场景下举一反三。

我个人对代码智能体的使用心得用一句话来说,就是它像一个随时待命、脾气超好、知识面极广的结对编程搭档,但前提是你得是个知道自己要什么、能接得住它产出的人。人机配合的双方,一方负责提供“正确的问题与评判”,另一方负责快速产出“可迭代的初稿”,这个组合才是真正高效的工作状态。

按照我现在的使用习惯,新项目里一个典型业务接口的开发时间已经压缩到以前的三分之一左右,同时代码检查的通过率、测试覆盖率都比以前更稳。最后分享一个小技巧:写提示词前,先把需求用一句话在白纸上写给自己看,如果这句话包含“什么人在什么场景下做什么事、有什么限制条件”,那这段提示词成功率高得多。如果自己都没想清楚,AI也只能帮你生成一份“漂亮但没灵魂”的代码。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进