共计 5490 个字符,预计需要花费 14 分钟才能阅读完成。
而 Rules 配置正是实现上下文工程的一个关键工具,它能够将项目规范、组件偏好及命名方式等转化为机器可读格式,持续注入到智能体的生成逻辑中。通过为文心快码编程智能体 Zulu 配置 Rules,开发者不仅可以向 Zulu 解释代码库及各个术语的功能,还可以指明关键代码的位置和常见场景的编写方式,同时还能正向引导 Zulu 的生成行为,反向限制其错误输出。在明确的规则指导下,Zulu 能够更好地理解你的需求,使复杂、重复和场景化的需求得以一键复用,真正实现从“指令式对话”向“协同式开发”的转变,使 AI 编程智能体具备工程师的思维方式。
一、Rules 功能的应用场景
在实际开发过程中,Zulu 的规则功能可以广泛应用于多个典型场景,如下所示:
1. 项目初始化与结构规范
通过预设规则来定义框架选择、目录结构和命名习惯,Zulu 可以自动将新功能模块放置在正确的位置,保持代码整洁统一。
例如:当新增页面时,系统会自动将其放在 pages/xxx/index.tsx,并按照团队的规范命名组件和样式。
2. 统一接口与服务管理
通过设定接口命名和注册规则,Zulu 在生成接口时会自动完成统一挂载、类型定义以及错误处理逻辑,从而减少维护成本。
例如:新增的 API 会同时写入 api/index.ts,并更新统一的错误处理模块。
3. 测试与文档的自动补全
规则可以指定测试文件的生成路径与模板,或者要求在生成组件或方法时同步补充注释与文档说明,以提升工程的可维护性。
例如:生成函数时自动添加 JSDoc,或同步生成 Jest 单测文件。
4. 团队协作与开发风格的约定
通过规则固定代码风格(如命名、缩进、注释习惯等),Zulu 可以作为“代码守门人”,帮助新成员迅速适应团队标准。
例如:强制采用驼峰命名,并禁止使用特定的不推荐 API。
二、使用指南
新建 Rules
1. 进入规则设置页面:在文心快码插件或 Comate AI IDE 中,点击右上角的更多「…」选项,然后选择「规则」以进入规则设置页面。

2. 可以通过设置查看所有规则及其状态的列表。

3. 新建规则:在规则设置页面中,点击右上角的「+ 新建」按钮,添加新的规则,命名并选择适用范围。


4. 直接新建规则文件:你还可以在.comate/rules 路径下直接创建格式为 *.mdr 的文件。
5. 编写规则内容:在 *.mdr 的规则文件中,使用清晰、明确的自然语言,可以按 Markdown 格式组织内容,编写 AI 在处理此项目时必须遵循的指令、约束或偏好设置。编写完成后,请记得保存文件。
设置多个 Rules
在规则设置页面,你可以根据需求设定不同的规则及其生效方式。Zulu 在后续与项目相关的交互中,会自动加载并遵循所设定的规则。
兼容 Cursor Rules
Zulu 能够自动获取你在 Cursor 中设定的规则,无需在文心快码中重复添加。
注意:
1. Zulu 无法通过图形化界面编辑 Cursor 规则的生效范围,可以通过文件编辑器进行修改。
2. 目前不支持获取 Cursor Rules 的子目录。

规则的使用
每个规则文件都是一个.mdr 格式的文档,可以将生效信息与规则内容整合在同一文件中。目前支持以下生效方式:
1. 如果你希望规则仅在 本地开发环境生效,而不想通过版本控制分享给其他团队成员(例如,一些个人编码习惯或临时指令),可以将.comate/rules/ 文件路径添加到项目的目录文件中。这样,Git 等版本控制系统将会忽略这些文件的变动。
2.始终生效 的规则会在每次对话中调用,就如同刻入 Zulu 的基因,无论何时何地均适用,无需持续关注。
3. 指定文件生效的规则仅在上下文中包含 特定文件时生效,Zulu 会根据历史或当前对话中已添加的文件来判断哪些规则生效,指定文件支持通配符 + 文件路径 / 文件格式(例如 *.py 或 client/*/*.tsx)。
4.手动生效 的规则需要在使用时,在对话框中使用 #此规则即可,随时调用(例如在对话中#rulename)。
注意:你可以手动选择所有设定的规则,但其在会话中的生效与否取决于具体的设定内容。例如,如果规则指定文件为 *.py,但当前对话上下文中未包含 *.py 文件,则此规则仍不会生效。


三、实战演练
现在,让我们一同动手实践,深入了解 Zulu 如何在规定的框架内,依据项目标准进行开发。示例项目 async-iterator [https://github.com/otakustay/async-iterator] 是一个用于处理异步数据流的库,它默认提供了一系列数据操作符,包括:
chunk.ts: 数据分块功能
debounce.ts: 防抖效果
filter.ts: 数据筛选
map.ts: 数据映射
take.ts: 提取前 N 个元素
until.ts: 条件停止操作
接下来,我们将为该项目增设一个 skip 操作符,以观察 Zulu 如何在既定规则的指导下,生成更为优质的代码。
示例规则
以下为示例规则,旨在明确该项目的开发规范。让我们逐一解析 Zulu 在各个方面的约定:
1. 项目简介
用简洁的一句话向 Zulu 阐明:“这是一个旨在简化 JS/TS 中 async iterable 使用的异步数据流处理工具库。”这样的表述使得 AI 能够迅速把握项目的核心目标。
2. 项目架构
明确列出各个模块的职责和文件存放位置,例如控制器、工厂方法和操作符等。这样可以帮助 Zulu 理解“不同类型的代码该放在哪”,从而避免代码杂乱无章。
3. 代码结构说明
该部分分为两个方面:
核心接口:定义了 OverAsyncIterator 接口,作为链式操作符的标准格式。这样,AI 便能依据此规范设计新方法。
工厂函数:列举现有的数据源工厂(如数组、事件、流等),提示 AI 在未来创建新流时如何复用已有模式。
4. 开发指南
这是至关重要的一部分,明确规定了项目扩展的标准流程。
“基本流程”告知 Zulu 新增操作符的位置、导出方式及链式调用支持。
“扩展指南”则详细列出每个步骤,例如添加操作符时需修改的文件,确保其“按规出牌”,不遗漏任何关键环节。
“测试规范”要求 Zulu 为功能编写测试,且测试需符合命名和结构标准,不能降低覆盖率。这确保了自动生成的代码能够顺利通过项目的持续集成要求。
5. 代码风格指南
设定统一的代码风格:
-
类型使用 interface 定义
-
尽量采用泛型以提高复用性
-
错误处理统一使用 Error 对象
-
命名遵循驼峰命名法(函数名小驼峰,类名大驼峰)
通过这些规范,AI 生成的代码将与团队现有的代码风格保持一致,避免“风格偏离”的现象。
6. 注意事项
列出一些“隐性规范”,类似资深工程师的经验总结:
-
异步代码需正确捕获错误
-
关注事件监听器可能导致的内存泄漏
-
接口设计应确保兼容性
-
注释需清晰,避免副作用,提高可测试性
这些细节向 AI 传达:你不仅仅是“生成代码”,而是要像一名真正的工程师一样进行思考与交付。
## 项目概述这是一个用于处理异步迭代的工具库,提供了一系列用于处理异步数据流的工具和操作符。该项目主要解决了在 JavaScript/TypeScript 中处理异步数据流的复杂性问题,提供了简单易用的 API。## 项目架构项目采用模块化设计,主要分为以下几个核心部分:1. ** 核心控制器 ** (`controller.ts`) - 实现了 `AsyncIteratorController` 类 - 负责管理异步数据流的状态和控制 - 提供了数据的输入输出接口 2. ** 工厂模块 ** (`factory/`) - `array.ts`: 处理数组的异步迭代 - `event.ts`: 处理事件源的异步迭代 - `reader.ts`: 处理流读取器的异步迭代 - `stream.ts`: 处理 Node.js 流的异步迭代 3. ** 辅助工具 ** (`helper/`) - 提供了一系列操作符来处理异步迭代器 - 实现了链式调用 API - 包含多个独立的操作符实现 4. ** 操作符 ** (`helper/operators/`) - `chunk.ts`: 数据分块 - `debounce.ts`: 防抖处理 - `filter.ts`: 数据过滤 - `map.ts`: 数据转换 - `take.ts`: 取前 N 个元素 - `until.ts`: 条件终止 ## 代码结构说明 ### 1. 核心接口 typescriptinterface OverAsyncIterator extends AsyncIterable {filter(predicate: Predicate): OverAsyncIterator; map(transform: (value: T) => R): OverAsyncIterator; chunk(size: number): OverAsyncIterator; debounce(ms: number): OverAsyncIterator; take(count: number): OverAsyncIterator; until(predicate: Predicate): OverAsyncIterator;}### 2. 工厂函数项目提供了多个工厂函数来创建异步迭代器:- `fromIntervalEach`: 从数组创建带间隔的异步迭代器 - `fromEvent`: 从事件源创建异步迭代器 - `fromStreamReader`: 从流读取器创建异步迭代器 - `fromStream`: 从 Node.js 流创建异步迭代器 ## 开发指南 ### 1. 基本开发流程 1. 如需增加运算符,放置在 `src/helper/operators` 目录下。2. 所有运算符都要从 `src/helper/index.ts` 导出,并能够链式调用。3. 如果增加对流的消费、创建流的方式,放置在 `src/factory` 目录下。### 2. 扩展开发指南 1. ** 添加新的工厂函数 ** - 在 `factory/` 目录下创建新文件 - 实现相应的工厂函数 - 在 `index.ts` 中导出 2. ** 添加新的操作符 ** - 在 `helper/operators/` 目录下创建新文件 - 实现操作符函数 - 在 `helper/index.ts` 中添加到 `OverAsyncIterator` 接口 - 在 `over` 函数中实现新方法 ### 3. 测试规范 - 所有功能都需要编写对应的单元测试 - 测试文件放置在相应模块的 `__tests__` 目录下 - 测试文件命名规则:`[功能名].test.ts`- 增加任何功能,都要运行单元测试,确保测试的行覆盖率在 100%,分支覆盖率大于 90%。## 代码风格指南 1. ** 类型定义 ** - 优先使用接口(interface)定义类型 - 为所有公开 API 提供完整的类型定义 - 使用泛型增加代码复用性 2. ** 错误处理 ** - 统一使用 Error 对象处理错误 - 在异步操作中正确处理错误传播 3. ** 命名规范 ** - 使用驼峰命名法 - 类名使用大驼峰 - 接口名清晰表达其用途 ## 注意事项 1. 所有的异步操作都应该正确处理错误情况 2. 注意内存泄漏,特别是在处理事件监听器时 3. 在实现新功能时,确保与现有的接口保持一致 4. 保持代码的可测试性,避免副作用 5. 文档注释要清晰完整,包含参数说明和使用示例
操作步骤
1. 启动 Comate AI IDE
2. 点击右上角的更多选项,打开「规则」设置
3. 新增规则,命名为:async-iterator-rule,并设定为「始终生效」
4. 输入规则正文内容
5. 输入查询:新增一个 skip 操作符,以完成该任务
6. 检查生成的代码是否严格遵循项目规范
效果比较
在设定规则的前提下
1. 我们要求 Zulu 增加一个 skip 操作符
2. 项目配置中,相关添加新操作符的规范要求,新的操作符必须在 OverAsyncIterator 接口中注册
3. Zulu 在生成过程中遵循了这个要求
4. 最终,Zulu 将 skip 操作符成功注册进 OverAsyncIterator 接口,符合规范

如果不设定这个规则,AI 可能不会按照项目规范严格生成代码,用户将需要花费额外的时间来修正 AI 生成的代码。
1. 我们要求 Zulu 增加一个 skip 操作符,但项目中没有相应的规则配置
2. 在生成代码过程中,Zulu 未能识别出新的操作符必须在 OverAsyncIterator 接口中注册的这一要求
3. 最终,AI 根据自身的理解生成了一个新的 index.js 文件,而没有在现有的 index.js 中进行注册,这违反了项目的规范

在 AI 编程日益普及的当下,Prompt 是初级指令,而 Rules 则是更高阶的语法。它不仅使 AI 更了解你的需求,也让你的项目变得更加稳定和可靠。现在,试着为你的 Zulu 配置一条规则,看看 Zulu 能展现出怎样的智慧。如果你已经有实用的规则设置,欢迎在评论区或社区分享你的经验,帮助更多开发者解锁 AI 编程的新潜力,把 Zulu 培养成真正的 AI 工程师。
如果本期内容对你有所帮助,请关注文心快码,获取更多精彩干货。


能否分享一下使用Zulu过程中遇到的坑?这样大家可以避开一些问题。