共计 6772 个字符,预计需要花费 17 分钟才能阅读完成。
执墨,作为一名拥有四年开发经验的程序员,既是一位懂得 AI 的软件工程师,也是一名热衷于学习新技术、追求有趣项目的开发者。目前,他正在探索如何培养一个 AI 开发伙伴。
在实际使用 AI 生成代码的过程中,相信大家都遇到过 一些代码让人感到无奈,不是位置错误,就是不符合项目的标准,最终不得不返工手动修改,觉得不如自己动手来得有效。但请不要担心,毕竟我们自己也学习编写代码有三四年了,AI 在生成代码时也需要一定的训练。从 Zulu 开始公测至今,我一直在使用文心快码,积累了一些经验。结合我在 IntelliJ IDEA 中的使用体验,我总结了一些 Zulu 和 Chat 的实用技巧,希望能对大家有所帮助。
▎Zulu 调教指南:生成更实用的代码
1. 用 # 提供上下文信息
大型语言模型主要依赖前文信息来预测下一个最可能出现的词或者代码片段。若缺乏上下文,模型将难以准确判断要生成的内容,因此对上下文的理解与利用是生成高质量代码的关键所在。在开发过程中,上下文不仅限于当前文件或代码片段,还包括项目结构、依赖关系、函数和变量的作用域等。通过对这些上下文的理解,AI 能够更精确地补全代码或生成符合项目风格的内容。
在文心快码中为 Zulu 添加上下文:Zulu 目前支持文件、文件夹和项目级别的上下文。开发者可以使用 # 操作符来召唤当前索引的所有文件,并将其添加为当前会话的上下文。
步骤 1:使用 # 操作符唤起上下文菜单

步骤 2:选择相应的文件或目录,可以添加多个。如果没有选择上下文,则默认使用当前项目作为上下文环境。

步骤 3:上下文配置完成后,可以用自然语言描述你希望 AI 完成的任务。
在这个实例中,我选择了 Cache.java 文件,并让 Zulu“实现一个查询缓存时,根据类型做反序列化的函数,目标为 Redis 序列化”。此时,Zulu 开始阅读上下文,迅速理解了我的需求,并在 Cache 接口中进行了修改,添加了目标功能。

2. 灵活运用命令自动执行
Zulu 能够自动感知当前项目的框架、技术栈、文件结构以及运行环境,进而根据需求自动生成终端命令,并将这些命令发送到开发环境的终端进行执行。这一功能在脚本语言开发过程中极为便利,比如 Python、JS 等。开发者无需关注使用哪个框架,AI 会自行处理和安装,从而使开发者能更专注于业务逻辑的实现。
例如,在创建和配置 Python 虚拟环境时,Zulu 首先执行命令 python3 -V,检查当前环境中已安装的 Python 版本。随后,它通过 python3 -m venv venv 创建了一个虚拟环境,最后使用 source venv/bin/activate && pip install -r requirements.txt 激活虚拟环境并安装项目依赖。整个过程完全在 IDE 内部进行,极大地维持了开发过程中的专注状态。

3. 规则约束
在未提供规则文件来约束 Zulu 的生成行为时,在新项目开发中容易生成一些不符合预期的代码,甚至会对代码进行魔改。了解到文心快码支持自定义规则后,我为 Zulu 编写了执行的上下文约束,以控制其代码的生成。接下来,将具体分享我编写规则的思路。
3.1 编码环境
介绍当前编码环境,说明项目所采用的技术栈。这一步至关重要,就像为 Zulu 描绘了一幅项目蓝图,让它清楚自己所处的“战场”环境。例如在这个基于 Java 的 Spring Boot 项目中,我明确告知 Zulu 项目使用 Java 语言,以及 Spring、Spring Boot、Spring Security 等相关技术框架。这样,Zulu 在生成代码时,能够遵循这些技术栈的规范与特点,生成与之适配的代码。
## 编码环境
用户可以询问以下编程语言相关的问题:
– Java
– Spring&SpringBoot&SpringSecurity
– MyBatis&MybatisPlus
– RocketMq
– Nacos
– Maven
– SpringSecurity
3.2 代码实现指南
这一部分阐述当前项目具体的代码实现方式,如数据库表的创建规范、用户上下文的获取、项目结构的含义等。这相当于为 Zulu 制定了一套详细的工作标准操作程序(SOP),使其生成的代码符合项目的特定要求。在采用领域驱动设计(DDD)实现代码的项目中,我为 Zulu 提供了如下的 SOP。
1. 项目采用 DDD 的方式实现代码,你需要注意如下几点:
1. 领域层和仓库层的入参需使用 DO,仓库层的实体对象应添加 PO 后缀
2. 应用层或服务层的输出必须是 DTO,接口层的返回可以是 DTO 或自定义的 VO
3. 每一层对应的对象需添加相应的后缀,且后缀需全大写。例如,仓库层实体为 UserPO,领域层为 UserDO,应用层为 UserDTO
4. 项目类之间的转换需使用 MapStruct 完成
2. 在使用第三方依赖时,需将相应的依赖内容先添加到 Maven 依赖中
3. 所有接口均按照 RestFul 风格定义,并需区分接口的应用场景,如:前端使用、OpenApi、小程序端使用。
1. 如果无法通过用户上下文判断需要生成的接口使用场景,可以再次询问用户
2. 前端统一前缀为 /api/fe/v1/xxxxx,OpenApi 使用 /api/open/v1/xxxx,小程序使用 /mini-program/v1/xxxx,且三个入口的文件需区分不同的文件夹
3. 对于批量查询接口,需具备分页能力,不能使用内存分页,只能在数据库层面进行分页,并需考虑深分页的问题
4. 所有接口返回需返回 BaseResp 对象,其定义如下:
@Data
public class BaseResp {
private String code;
private String message;
private T data;
}
4. 对于应用层,需要注意如下几点:
1. 函数的输入和输出均为 DTO
3.3 历史记录总结
每次使用 Zulu 生成代码后,我们可以要求它将每次查询的结果进行总结,并保存至文件中。这对项目的跟踪与回溯极为重要。以下是相关提示:
## 历史记录
1. 对于你所回答的用户问题,需将该次回答的内容记录于项目根目录下的 .cursor-history 文件中,格式如下:
2025-11-11 10:10:10
变更内容包括:
1. 增加用户模块
2. 修改用户管理内容
3. 增加用户内容
涉及文件为:
xxxx.java
xxxx.java
2. 记录时需采用倒序方式进行历史记录
这种详尽的记录格式能够清晰地反映每次代码生成的时间、变更内容以及相关文件,方便开发者随时检索与追踪项目的开发进展。而采用倒序记录的方式则将最新的变更置于前面,使开发者能够迅速获取最新的动态,从而提升了信息查找的效率。
▎Chat 隐藏技巧:更灵活的编码交互
在研究 Zulu 的过程中,我也发现 Chat 功能的诸多便利之处,接下来将分享一些能够提升编码效率的实用技巧。
1. 行间会话 Inline Chat
通过选中代码片段,使用 Ctrl + I 快捷键即可激活文心快码的行间对话功能,帮助我们迅速优化和调整局部代码。此时上下文即为当前选中的代码片段。
在对话框中输入需要 AI 完成的任务,Comate 会自动分析代码并进行编辑。完成后,开发者可以自行选择接受或忽略编辑结果。

2. Git Commit 快捷提交代码
完成一个功能模块开发后,通常需要将代码提交至版本库。这一过程往往需要手动整理修改内容并撰写提交信息。然而,在文心快码中,只需点击 Git Commit 快捷按钮,Comate 就能自动分析代码的变更,生成详细且准确的提交信息,从而大幅节省时间,并提升提交信息的质量,便于团队成员更好地了解代码的变更历史。
在进行 Git Commit 时,点击快捷按钮可以迅速总结本次代码的变更内容。

▎案例实操
接下来将这些技巧应用于实际案例,以验证其对开发流程的提升效果。
1. 编写社区自动签到脚本
文心快码在脚本编写方面表现出色,准确率极高。在实际工作中,我所使用的脚本几乎全部由文心快码生成,并且往往可以一次性成功运行。以实现一个社区自动签到脚本为例,具体操作步骤如下:
Step 1: 撰写提示词,直接使用自然语言进行描述,并提供接口定义信息及执行规则。
“请为我编写一个 Python 脚本,实现接口签到和抽奖的功能。
以下为签到接口的定义:
GET 接口:……(为保护隐私,此处略去)
以下为抽奖接口的定义:……
调用接口时,请遵循先签到后抽奖的顺序,并且这两个接口均需要一个 cookie 信息来完成调用,因此需要定义一个全局的 cookie 以实现这两个接口的调用。”

Step 2: Zulu 自动生成相应的文件

Step 3: 根据 Zulu 的提示执行对应命令,该脚本便顺利实现。
2. 实现受约束的意图识别服务
此案例的关键在于,如何在新项目中将业务项目中的编码规范告知 AI,以便生成的代码更符合团队的开发标准。
Step 1: 撰写提示词,并在其中添加“实用技巧”部分提到的规则约束。
“我希望你实现一个意图识别的工程能力,主要功能是提供一个 OpenApi 接口,根据用户输入返回固定的意图。这个 OpenApi 的实现思路为:
1. 查询本地规则列表并进行匹配;
2. 若本地规则无法匹配,则调用第三方 LLM 接口进行意图识别;
3. 返回匹配结果。
你的代码实现需遵循以下规则:#.zulurules”
完整规则请见附录一
Step 2: Zulu 生成代码及总结


▎总结
探索文心快码:AI 编程工具的全新体验
文心快码是我首次尝试的人工智能编程工具,其主要功能围绕两个关键模块展开:编程智能体 Zulu 和 Chat。这两者的结合能够有效满足各种编程需求。其中,Zulu 在自动化编码方面的能力显得尤为突出:它不仅能直接生成完整的代码文件,还能以 Diff 格式清晰地显示修改痕迹,便于开发者进行直观对比,从而决定是否采纳这些改动。此外,文心快码插件与 JetBrains 系列 IDE 深度整合,开发者无需离开熟悉的开发环境便可以调用 AI 编程功能。这种原生的集成体验对我这样的 Java 程序员尤为友好,能够自然而然地将 AI 辅助融入日常开发流程,并显著降低工具切换的成本。
在阅读完这篇文章中分享的实用技巧和案例后,你是否也被激发了尝试的欲望?是否已经积累了自己的使用经验?
点击「阅读原文」或扫描下方二维码进行投稿,分享你的 Vibe Coding 秘笈,帮助更多开发者解锁 AI Coding 的强大功能!分享就有机会获得官方专属激励!

附录:规则示例
作为一名资深后端开发专家,你精通 Java、Spring、SpringBoot、MyBatis、MyBatisplus 以及众多中间件,如 Zookeeper、Nacos、SpringCloud 等。你思维严谨,能够提供细致入微的解答,并擅长逻辑推理。你会认真地给出准确、事实性和经过深思熟虑的答案。在推理方面,你堪称天才。
– 你会严格按照用户的需求执行。– 首先逐步思考——用伪代码详细描述你的构建计划。
– 确认后,再编写代码!
– 始终编写正确、符合最佳实践、遵循 DRY 原则(不要重复自己)、无错误、功能完整且可运行的代码,同时确保代码符合以下列出的代码实现指南。
– 优先考虑代码的易读性和简洁性,而不是性能。
– 完全实现所有请求的功能。
– 不要留下任何待办事项、占位符或缺失的部分。
– 确保代码完整!彻底验证最终结果。
– 简洁明了,尽量减少其他描述。
– 如果你认为可能没有正确答案,请明确说明。
– 如果你不知道答案,请直接说明,而不是猜测。
– ** 注意:尽量使用已经存在的目录,而不是自建目录。**
– 你需要严格遵循 cursorrules 中的内容来生成代码,不要遗漏任何细节。
“`html
RestApiConfig 配置详解与数据库注意事项
@NotBlank
@URL
private String baseUrl;
/**
* 配置项的覆盖设置
*/
private ExternalServicePropertiesOverrides overrides;
}
/**
* 认证所需的不同 URL 及凭据配置
*/
@Getter
@AllArgsConstructor
public static class ExternalServicePropertiesOverrides {
private String authServiceBaseUrl;
private ClientCredential clientCredential;
}
@Getter
@AllArgsConstructor
public static class ClientCredential {
private String appId;
private String appSecret;
}
}
@Configuration
@EnableConfigurationProperties(ApiProperties.class)
public class RestApiConfig {
private final Map services;
public RestApiConfig(ApiProperties appProperties) {
this.services = appProperties.getExternal();
}
@Bean
public IntentRemoteClient intentRemoteClient() {
// 1. 获取与服务相对应的配置
var svc = findServiceConfiguration(“intent”);
// 2. 构建 HTTP 客户端
var httpClient = HttpClient.create()
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 5000)
.wiretap(true)
.responseTimeout(Duration.ofSeconds(10));
var client = WebClient.builder()
.baseUrl(svc.getBaseUrl())
.codecs(clientCodecConfigurer -> clientCodecConfigurer.defaultCodecs().maxInMemorySize(50 * 1024 * 1024))
.clientConnector(new ReactorClientHttpConnector(httpClient))
.filter(new AuthorizationAuthFilter(
svc.getOverrides().getClientCredential().getAppId(),
svc.getOverrides().getClientCredential().getAppSecret(), svc.getBaseUrl()))
.build();
var factory = HttpServiceProxyFactory.builderFor(WebClientAdapter.create(client)).build();
return factory.createClient(IntentRemoteClient.class);
}
/**
* 生成对应的服务配置
*
* @param name 服务的名称
* @return ExternalService
*/
@NotNull
private ApiProperties.ExternalService findServiceConfiguration(@NotNull String name) {
var svc = services.get(name);
if (svc == null) {
throw new IllegalArgumentException(“ 未找到该服务 ”);
}
return svc;
}
}
– 在数据库层面,需要注意以下几点:
– 需为数据库启用自动映射枚举功能,以便在 PO 中直接使用枚举类型。
– 应用自动填充字段功能,填充 create_time、update_time、create_user、update_user 等字段。创建者和更新者的信息可以通过 Spring Security 获取。
# 历史记录
针对您对用户提问的回复,需将本次内容记录到项目根目录下的.cursor-history 文件中,格式如下:
2025-11-11 10:10:10
变更内容如下:
1. 增加用户模块
2. 修改用户管理内容
3. 增加用户内容
涉及文件为:
xxxx.java
xxxx.java
记录需按倒序方式进行。
“`


我在使用 Zulu 时,发现上下文配置确实会影响效果,建议开发者多花时间调试。